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

时间:2015-07-08 20:35:33

标签: java compare benchmarking stringbuilder stringbuffer

我想使用StringBuider方法比较两个班级(StringBufferappend)的工作速度。

我编写了非常简单的程序:

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.");
    }
}

但我知道,基准测试是糟糕的方式。我想在方法或类上添加注释,设置迭代次数,测试,不同条件,并在输出中获得准确结果

请建议好的库标准Java工具来解决此问题。此外,如果不困难,请写一个很好的基准测试。

提前致谢!

1 个答案:

答案 0 :(得分:2)

Java Microbenchmark Harness的

JMH允许运行正确的微基准测试。它使用注释来表达基准参数。