summaryrefslogtreecommitdiff
path: root/test/files/bench/equality/eq.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2009-11-15 14:17:48 +0000
committerMartin Odersky <odersky@gmail.com>2009-11-15 14:17:48 +0000
commit046bbed8b7afdb13af1b3f35daf44b72d3a7936d (patch)
treec544987163a119190436d80d5b18bc6a939f8373 /test/files/bench/equality/eq.scala
parent0c373e49859b872e339a3e86216d0f2d7c471454 (diff)
downloadscala-046bbed8b7afdb13af1b3f35daf44b72d3a7936d.tar.gz
scala-046bbed8b7afdb13af1b3f35daf44b72d3a7936d.tar.bz2
scala-046bbed8b7afdb13af1b3f35daf44b72d3a7936d.zip
Added benchmarks with results for equality.
Diffstat (limited to 'test/files/bench/equality/eq.scala')
-rwxr-xr-xtest/files/bench/equality/eq.scala34
1 files changed, 34 insertions, 0 deletions
diff --git a/test/files/bench/equality/eq.scala b/test/files/bench/equality/eq.scala
new file mode 100755
index 0000000000..8ac5b5ef5c
--- /dev/null
+++ b/test/files/bench/equality/eq.scala
@@ -0,0 +1,34 @@
+object eq extends testing.Benchmark {
+
+ def eqtest[T](creator: Int => T, n: Int): Int = {
+ val elems = Array.tabulate[AnyRef](n)(i => creator(i % 2).asInstanceOf[AnyRef])
+
+ var sum = 0
+ var i = 0
+ while (i < n) {
+ var j = 0
+ while (j < n) {
+ if (elems(i) eq elems(j)) sum += 1
+ j += 1
+ }
+ i += 1
+ }
+ sum
+ }
+
+ val obj1 = new Object
+ val obj2 = new Object
+
+ def run() {
+ var sum = 0
+ sum += eqtest(x => if (x == 0) obj1 else obj2, 2000)
+ sum += eqtest(x => x, 1000)
+ sum += eqtest(x => x.toChar, 550)
+ sum += eqtest(x => x.toByte, 550)
+ sum += eqtest(x => x.toLong, 550)
+ sum += eqtest(x => x.toShort, 100)
+ sum += eqtest(x => x.toFloat, 100)
+ sum += eqtest(x => x.toDouble, 100)
+ assert(sum == 2958950)
+ }
+}