Created
June 3, 2015 13:17
-
-
Save yawnt/b5e01fa887dc6d5b65fd to your computer and use it in GitHub Desktop.
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
import java.util.concurrent.ConcurrentLinkedQueue | |
/* | |
* ConcurrentLinkedQueue is used in `Mailbox.scala` | |
* to hold incoming messages for actors | |
*/ | |
case class Envelope(a: Int) | |
class MessageQueue { | |
val queue = new ConcurrentLinkedQueue[Envelope]() | |
def enqueue(handle: Envelope) = queue add handle | |
def dequeue(): Envelope = queue.poll() | |
} | |
class OtherMessageQueue extends ConcurrentLinkedQueue[Envelope] { | |
def enqueue(handle: Envelope) = this add handle | |
def dequeue(): Envelope = this.poll() | |
} | |
object Main extends App { | |
override def main(args: Array[String]): Unit = { | |
val start = System.currentTimeMillis() | |
1 to 25 foreach { _ => | |
/* val queue2 = new MessageQueue */ | |
/* 0 to 10000000 foreach { n => queue2 enqueue Envelope(n) } */ | |
/* 0 to 10000000 foreach { n => queue2.dequeue() } */ | |
/* val queue3 = new OtherMessageQueue */ | |
/* 0 to 10000000 foreach { n => queue3 add Envelope(n) } */ | |
/* 0 to 10000000 foreach { n => queue3.poll() } */ | |
val queue1 = new ConcurrentLinkedQueue[Envelope]() | |
0 to 10000000 foreach { n => queue1 add Envelope(n) } | |
0 to 10000000 foreach { n => queue1.poll() } | |
} | |
val end = System.currentTimeMillis() | |
println(s"TIME: ${end - start}") | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment