Created
December 9, 2012 20:13
-
-
Save rkuhn/4246790 to your computer and use it in GitHub Desktop.
too simple benchmark
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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