From 3ee6b3653f8c25d7d6b19b9f5d4af7fa082146a8 Mon Sep 17 00:00:00 2001 From: Iulian Dragos Date: Thu, 18 Jun 2009 17:19:55 +0000 Subject: Specialization landed in trunk. --- test/files/pos/spec-funs.scala | 63 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 test/files/pos/spec-funs.scala (limited to 'test/files/pos/spec-funs.scala') diff --git a/test/files/pos/spec-funs.scala b/test/files/pos/spec-funs.scala new file mode 100644 index 0000000000..5fea5e9560 --- /dev/null +++ b/test/files/pos/spec-funs.scala @@ -0,0 +1,63 @@ +trait AbsFunction1[@specialized -T, @specialized +U] { + def apply(x: T): U +} + +final class IntTest { + + val niters = 10000 + + def transF(xs: Array[Int], f: AbsFunction1[Int, Int]) = { + var i = 0 + var s = 0 + while (i < xs.length) { + xs(i) = f(xs(i)) + 1 + i += 1 + } + } + + def run() { + val xs = new Array[Int](10000) + val f = new AbsFunction1[Int, Int] { + def apply(x: Int): Int = x * x + } + for (j <- 0 until niters) { + transF(xs, f) + } + var acc = 0 + for (i <- 0 until xs.length) acc += xs(i) + println(acc) + } +} + +final class ClosureTest { + + val niters = 10000 + + def transF(xs: Array[Int], f: Int => Int) = { + var i = 0 + var s = 0 + while (i < xs.length) { + xs(i) = f.apply(xs(i)) + 1 + i += 1 + } + } + + def run() { + val xs = new Array[Int](10000) +// val f = (x: Int) => x * x + for (j <- 0 until niters) { + transF(xs, x => x * x) + } + var acc = 0 + for (i <- 0 until xs.length) acc += xs(i) + println(acc) + } +} + +object TestInt extends testing.Benchmark { + def run() = (new IntTest).run() +} + +object TestClosure extends testing.Benchmark { + def run() = (new ClosureTest).run() +} -- cgit v1.2.3