blob: afccece88a580c9fecdf9bd154a0ae027ad3ecfc (
plain) (
tree)
|
|
/** benchmark for testing equality.
* Mix: == between non-numbers ith Object.equals as equality: 66%
* 50% of these are tests where eq is true.
* == between boxed integers: 17%
* == between boxed characters: 5%
* == between boxed bytes: 5%
* == between boxed longs: 5%
* == between boxed shorts: < 1%
* == between boxed floats: < 1%
* == between boxed doubles: < 1%
* In all cases 50% of the tests return true.
*/
object eqeq extends testing.Benchmark {
def eqeqtest[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) == elems(j)) sum += 1
j += 1
}
i += 1
}
sum
}
val obj1 = new Object
val obj2 = new Object
def run() {
var sum = 0
sum += eqeqtest(x => if (x == 0) obj1 else obj2, 2000)
sum += eqeqtest(x => x, 1000)
sum += eqeqtest(x => x.toChar, 550)
sum += eqeqtest(x => x.toByte, 550)
sum += eqeqtest(x => x.toLong, 550)
sum += eqeqtest(x => x.toShort, 100)
sum += eqeqtest(x => x.toFloat, 100)
sum += eqeqtest(x => x.toDouble, 100)
assert(sum == 2968750)
}
}
|