File: eq.scala

package info (click to toggle)
scala 2.11.12-6
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 62,924 kB
  • sloc: javascript: 28,808; java: 13,415; xml: 3,135; sh: 1,620; python: 756; makefile: 38; awk: 36; ansic: 6
file content (34 lines) | stat: -rw-r--r-- 795 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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)
  }
}