在scala中进行基准测试

Mai*_*ein 5 benchmarking scala

可能重复:
如何在Java中编写正确的微基准测试?

假设我有两种算法,如何找出哪种算法具有更高的性能?

我的意思是我可以在数学上证明它,但如果我使用一些库,这可能会变得乏味.我没有学过如何在没有数学的情况下做正确的基准.

Lui*_*hys 6

快速的方法是使用testing.Benchmark:你只需写一些类似的东西

object Bench extends testing.Benchmark {
  // initialize your data here
  def run() {
    // code to benchmark here
  }
}
Run Code Online (Sandbox Code Playgroud)

您可以使用类似的东西运行scala Bench 5 1000000(或直接从您的IDE运行,编辑运行配置),这可以为您提供5组1000000次重复run()方法的计时.您可以比较每个集合的时间并检查它是否一致(由于JVM预热,第一个集合通常较慢).

有关使用Caliper(Java微基准测试框架)的更严格方法,请参阅此博客文章:http://www.decodified.com/scala/2011/04/19/microbenchmarking-scala-code.

  • 如果它的文档提到为什么它被弃用或者你应该用它代替它将会很棒... (16认同)
  • `testing.Benchmark`现在已在Scala 2.10中弃用 (4认同)