2つのアルゴリズムがあるとしましょう。どちらがパフォーマンスが高いかを確認するにはどうすればよいですか?
つまり、数学的に証明することはできますが、いくつかのライブラリを使用すると、面倒になる可能性があります。私は数学なしで正しいベンチマークを行う方法を学びませんでした。
2つのアルゴリズムがあるとしましょう。どちらがパフォーマンスが高いかを確認するにはどうすればよいですか?
つまり、数学的に証明することはできますが、いくつかのライブラリを使用すると、面倒になる可能性があります。私は数学なしで正しいベンチマークを行う方法を学びませんでした。
簡単な方法は を使用することtesting.Benchmark
です: 次のように書くだけです
object Bench extends testing.Benchmark {
// initialize your data here
def run() {
// code to benchmark here
}
}
これscala Bench 5 1000000
は、メソッドの 1000000 回の繰り返しの 5 セットのタイミングを提供しますrun()
。各セットのタイミングを比較して、一貫性があることを確認できます (通常、最初のセットは JVM のウォームアップにより遅くなります)。
Java マイクロベンチマーク フレームワークである Caliper を使用したより厳密なアプローチについては、ブログ投稿http://www.decodified.com/scala/2011/04/19/microbenchmarking-scala-codeを参照してください。