Skip to content

Instantly share code, notes, and snippets.

@rkuhn
Created December 9, 2012 20:13
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rkuhn/4246790 to your computer and use it in GitHub Desktop.
Save rkuhn/4246790 to your computer and use it in GitHub Desktop.
too simple benchmark
Welcome to Scala version 2.10.0-RC5 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_07).
Type in expressions to have them evaluated.
Type :help for more information.
scala> system=ActorSystem("repl",ConfigFactory.parseString("pinned{type=PinnedDispatcher;executor=thread-pool-executor}").withFallback(config))
[DEBUG] [12/09/2012 21:23:23.535] [run-main] [EventStream(akka://repl)] logger log1-Logging$DefaultLogger started
[DEBUG] [12/09/2012 21:23:23.535] [run-main] [EventStream(akka://repl)] Default Loggers started
system: akka.actor.ActorSystem = akka://repl
scala> case class Add(x: Int)
defined class Add
scala> case object GetAndReset
defined module GetAndReset
scala> def now=System.currentTimeMillis
now: Long
scala> import akka.pattern.ask
import akka.pattern.ask
scala> def time(a: ActorRef) {val start=now; (0 to 3000000).par.foreach(_ => a ! Add(100)); Await.result(a ? GetAndReset, 1 minute); println("time taken (ms): " + (now - start))}
time: (a: akka.actor.ActorRef)Unit
scala> actor(new Act {var c=0L; become { case Add(x) => c += x; case GetAndReset => sender ! c; c = 0 } })
res2: akka.actor.ActorRef = Actor[akka://repl/user/$a]
scala> time(res2)
time taken (ms): 1298
scala> time(res2)
time taken (ms): 1810
scala> time(res2)
time taken (ms): 1591
scala> time(res2)
time taken (ms): 920
scala> time(res2)
time taken (ms): 1182
scala> time(res2)
time taken (ms): 1618
scala> time(res2)
time taken (ms): 1533
scala> system.actorOf(Props(new Actor{var c=0L;def receive={case Add(x) => c += x; case GetAndReset => sender ! c; c = 0}}).withDispatcher("pinned"))
res10: akka.actor.ActorRef = Actor[akka://repl/user/$b]
scala> time(res10)
time taken (ms): 988
scala> time(res10)
time taken (ms): 928
scala> time(res10)
time taken (ms): 838
scala> time(res10)
time taken (ms): 804
scala> time(res10)
time taken (ms): 968
scala> time(res10)
time taken (ms): 1070
scala> time(res10)
time taken (ms): 1102
scala> time(res10)
time taken (ms): 511
scala> time(res10)
time taken (ms): 504
scala> time(res10)
time taken (ms): 593
system = ActorSystem("repl",ConfigFactory.parseString("pinned{type=PinnedDispatcher,executor=thread-pool-executor}").withFallback(config))
case class Add(x: Int)
case object GetAndReset
def now=System.currentTimeMillis
import akka.pattern.ask
def time(a: ActorRef) {
val start=now
(0 until 3000000).par.foreach (_ => a ! Add(100))
println(Await.result(a ? GetAndReset, 1 minute))
println("time taken (ms): " + (now - start))
}
val simple = actor(new Act {
var c=0L
become {
case Add(x) => c += x
case GetAndReset => sender ! c; c = 0
}
})
val pinned = system.actorOf(Props(new Actor{
var c=0L
def receive = {
case Add(x) => c += x
case GetAndReset => sender ! c; c = 0
}
}).withDispatcher("pinned"))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment