2010-01-05 20 views
3

是否有一个好的Java库可用于编写出色的微基准?我正在考虑一些可以提供(最小麻烦)提供文本(CSV或HTML,可以选择)的结果输出,也可能是图表总结结果。理想情况下,它应该与JUnit或等价物配合良好,并且应该很容易配置带有可变参数的基准。具有图形输出的轻量级微基准库(Java)

我看过Japex,但发现它太重量级(25 MB库包括?!),坦率地说,这只是一个痛苦的工作。几乎不存在的文档,蚂蚁,XML和路径...

回答

4

我们来自Google Collections小组的一些人在早期的建立东西,满足您的需求。下面是测量foo()需要多长时间的代码:

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

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

+0

即使在早期,我可以看到这比japex好得多。我会把它作为一个旋转,并可能写我的基准,很容易适应这一点,当它完成。 证明(再一次)Sun可以做什么,谷歌的编码人员可以在20%的时间内做得更好? – BobMcGee 2010-01-05 06:08:50

+1

这是令人沮丧的是,首先让我们开始了卡钳开发的道路。 :) – 2010-01-05 18:11:12

+0

我正要做同样的事情......让我很高兴我问了这个问题,因为你的版本比我的会更优雅。 我仍然不得不适应一些事情来说明所有不同的参数(也许格式输出多一点为我的具体情况 - 可变数量的字节MB/s运行,而不是具体的重复大小)。但是,仍然节省大量时间!海量! – BobMcGee 2010-01-06 01:03:24

1

Oracle现在拥有JMH。它不仅由JIT团队的成员编写(他将完成编写优秀微基准的大部分工作),而且还具有其他整洁的功能,例如可插入的配置文件(包括那些可以打印每个热点的程序集在线CPU时间)。

它打印出表格。不确定图表。基准可以用可变参数配置。文档相当不错。

这很容易建立起来。我已经将它与JUnit集成在一起,但开发人员提供了一个Maven原型来开始。