轻量级微基准测试库,带有图形输出功能(Java)

3
有没有一个好的Java库可以帮助编写良好的微基准测试,以减轻工作量?我想要的是能够提供(最小化麻烦)文本(CSV或HTML,随您选择)输出结果和可能总结结果的图表。理想情况下,它应该是与JUnit或等效物相容性很好,并且应该简单地配置具有可变参数的基准测试。
我看过japex,但发现它太重了(25 MB的库需要包含吗?!),而且说实话,使用起来非常麻烦。文档几乎不存在,还要处理ant、XML和路径等等。
2个回答

4
我们来自Google Collections团队,正在构建一些满足您需求的东西。这里是测量foo()执行时间的代码:

public class Benchmark1 extends SimpleBenchmark {
  public void timeFoo(int reps) {
    for (int i = 0; i < reps; i++) {
      foo();
    }
  }
}

API和工具本身都不是特别稳定。我们甚至还没有准备好接收错误报告或功能请求!如果我还没有把你吓跑,那么我邀请你试试Caliper


即使在早期,我就能看出这比japex好多了。我会试用一下,并且可能会编写我的基准测试,以便在完成后轻松适应它。再次证明,任何Sun能做到的事情,Google的程序员都可以在他们的20%时间内做得更好? - BobMcGee
1
是对Japex的沮丧让我们首次开始了开发Caliper之路。 :) - Kevin Bourrillion
我正要做同样的事情...很高兴我问了这个问题,因为你的版本比我的更优雅。我仍然需要适应一些东西来考虑所有不同的参数(也许更多地为我的特定情况格式化输出——以可变字节数运行的MB/s,而不是特定的重复大小)。但仍然可以节省大量时间!非常巨大的时间节省! - BobMcGee

1
Oracle现在拥有JMH。它不仅由JIT团队成员编写(他们将消除编写良好微基准测试的大部分繁重工作),而且还具有其他很棒的功能,比如可插拔分析器(包括打印您的热点代码汇编和每行CPU时间的分析器)。
它会输出表格,但不确定是否支持图形。基准测试可以配置可变参数,并且文档相当不错。
它易于设置和使用。我已经将其集成到JUnit中,但开发人员提供了一个Maven原型来入门。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接