Java 中的基准测试(比较两个 类)

Benchmarking in Java (comparing two classes)

我想使用 append 方法比较两个 classes(StringBuiderStringBuffer)的工作速度。

而且我写了非常简单的程序:

public class Test {
    public static void main(String[] args) {
        try {
            test(new StringBuffer("")); // StringBuffer: 35117ms.
            test(new StringBuilder("")); // StringBuilder: 3358ms.
        } catch (IOException e) {
            System.err.println(e.getMessage());
        }
    }
    private static void test(Appendable obj) throws IOException {
        long before = System.currentTimeMillis();
        for (int i = 0; i++ < 1e9; ) {
            obj.append("");
        }
        long after = System.currentTimeMillis();
        System.out.println(obj.getClass().getSimpleName() + ": " +
                          (after - before) + "ms.");
    }
}

但我知道,这 不好的方式 进行基准测试。我想把注释放在方法或 class 上,设置迭代次数、测试、不同的条件和输出以获得 准确的结果

请指教一个好的库标准的Java工具来解决这个问题。另外,如果不难,写一个好的benchmarking。

提前致谢!

JMH,Java Microbenchmark Harness,允许 运行 正确的微基准。它使用注释来表达基准参数。