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を参照してください。