可能重复:
如何在 Java 中编写正确的微基准测试?
假设我有两种算法,我如何找出哪一种具有更高的性能?
我的意思是我可以在数学上证明它,但如果我使用一些库,这可能会变得乏味。我从来没有学会如何在没有数学的情况下进行正确的基准测试。
可能重复:
如何在 Java 中编写正确的微基准测试?
假设我有两种算法,我如何找出哪一种具有更高的性能?
我的意思是我可以在数学上证明它,但如果我使用一些库,这可能会变得乏味。我从来没有学会如何在没有数学的情况下进行正确的基准测试。
快速的方法是使用testing.Benchmark
:你只需编写类似的东西
object Bench extends testing.Benchmark {
// initialize your data here
def run() {
// code to benchmark here
}
}
您使用类似的东西运行它scala Bench 5 1000000
(或直接从您的 IDE,编辑运行配置),它为您提供 5 组 1000000 次重复该run()
方法的时间。您可以比较每组的时间并检查它是否一致(由于 JVM 预热,第一组通常较慢)。
有关使用 Java 微基准测试框架 Caliper 的更严格的方法,请参阅此博客文章: http: //www.decodified.com/scala/2011/04/19/microbenchmarking-scala-code。