l'essentiel est invisible pour les yeux

Wednesday, March 04, 2009

[Scala] Sala用ベンチマーク測定ライブラリBenchmarkSuite

BenchmarkSuite - Scalaのベンチマークライブラリ
ページ中段BenchmarkSuiteよりGitHubへリンクしています。

Jarファイルは、BenchmarkSuite-1.0.jarから。

知ってるんだから。Scalaに標準のベンチマークライブラリscala.testing.Benchmark...が、測定したい対象の度にBenchmarkクラスを継承して実装しないといけないなど、APIがかなり硬派! LLでなまった体には正直キツイです。そこで、コードブロックを対象にベンチマークを測定するライブラリが、BenchmarkSuiteです。現在の所、実行時間のみ計測できるとてもシンプルなライブラリです。

使い方は、次の通りです。Benchmark.runに引数を一つ持つブロックを渡し、ブロック引数に対して、reportメソッドを呼ぶだけです。ラベルや実行回数を指定できます。


import org.scalalites.benchmark.Benchmark

Benchmark.run("Benchmark of ack:") { b =>
def ack(x: Int, y: Int): Int = x match {
case 0 => y + 1
case _ => y match { case 0 => ack(x - 1, 1); case _ => ack(x - 1, ack(x, y - 1))}
}
// run over the test named "ack(3, 2) x 50" 50 times
b.report("ack(3, 4) x 10", 10) { ack(3, 4) }

// If you don't pass second argument run benchmark once.
b.report("ack(3, 2)") { ack(3, 2) }
}

// Output
// Benchmark of ack:
// ack(3, 4) x 10 : 4.730000 sec (avg. 0.473000 sec)
// ack(3, 2) x 1 : 0.029000 sec


[Scala] Released Scala’s BenchmarkSuite Library(for English users)