summaryrefslogtreecommitdiff
path: root/test/benchmarks/src/scala/collection/parallel/benchmarks/arrays/ObjectAccess.scala
blob: 29251f371984ef6ae394c3562462a3181e54d083 (plain) (blame)
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package scala.collection.parallel.benchmarks.arrays


import scala.collection.parallel.benchmarks._



object ObjectAccess extends BenchCompanion {
  def collectionName = "array";
  def benchName = "access-obj";
  def apply(sz: Int, p: Int, what: String) = new ObjectAccess(sz, p, what)
  override def comparisons = List("any", "cast", "gencast", "manif", "unknown")
  override def defaultSize = 100000
}


class ObjectAccess(sz: Int, p: Int, what: String)
extends Resetting(Dummy(_), sz, p, what) with UnknownManif[Dummy] {
  def companion = ObjectAccess
  
  def runseq {}
  def runpar {}
  
  def runany = {
    var i = 0
    while (i < sz) {
      val d = anyarray(i).asInstanceOf[Dummy]
      Dummy.dummyOp(d)
      i += 1
    }
  }
  
  def runcast = {
    var i = 0
    while (i < sz) {
      val d = Arrays.apply(castarray, i).asInstanceOf[Dummy]
      i += 1
    }
  }
  
  def rungenericcast = {
    var i = 0
    while (i < sz) {
      val d = Arrays.genericApply(gencastarray, i)
      i += 1
    }
  }
  
  def runmanif = {
    var i = 0
    while (i < sz) {
      val d = manifarray(i)
      if (d.in < 0) i += 1
      i += 1
    }
  }
  
  def comparisonMap = collection.Map("any" -> runany _, "cast" -> runcast _, "gencast" -> rungenericcast _,
                                     "manif" -> runmanif _, "unknown" -> rununknown _)
  
}