4
import scala.collection.JavaConverters._
8
object Test extends App {
10
def bench(label: String)(body: => Unit): Long = {
11
val start = System.nanoTime
13
0.until(10).foreach(_ => body)
15
val end = System.nanoTime
17
//println("%s: %s ms".format(label, (end - start) / 1000.0 / 1000.0))
22
def benchJava(values: java.util.Collection[Int]) = {
24
val set = new java.util.HashSet[Int]
30
def benchScala(values: Iterable[Int]) = {
32
val set = new scala.collection.mutable.HashSet[Int]
38
def benchScalaSorted(values: Iterable[Int]) = {
39
bench("Scala Set sorted") {
40
val set = new scala.collection.mutable.HashSet[Int]
42
set ++= values.toArray.sorted
46
def benchScalaPar(values: Iterable[Int]) = {
47
bench("Scala ParSet") {
48
val set = new scala.collection.parallel.mutable.ParHashSet[Int] map { x => x }
54
val values = 0 until 50000
55
val set = scala.collection.mutable.HashSet.empty[Int]
60
for (x <- 0 until 5) {
69
val javaset = benchJava(set.asJava)
70
val scalaset = benchScala(set)
71
val scalaparset = benchScalaPar(set)
73
assert(scalaset < (javaset * 8), "scalaset: " + scalaset + " vs. javaset: " + javaset)
74
assert(scalaparset < (javaset * 8), "scalaparset: " + scalaparset + " vs. javaset: " + javaset)