java benchmark
基准测试jmh
mvn clean install
java -jar target/benchmarks.jar JMHSample_01`
(4)main方法里头运行
public static void main(String[] args) throws RunnerException {
Options opt = new OptionsBuilder()
.include(JMHSample_01_HelloWorld.class.getSimpleName())
.forks(1)
.build();
new Runner(opt).run();
}
三、参数说明
1、Mode.Throughput
在有时限的迭代里头,该方法能被调用多少次
2、Mode.AverageTime
方法平均执行时间
3、Mode.SampleTime
对方法执行时间进行采样计算
4、Mode.SingleShotTime
方法的单次调用时间/一次批处理的总调用时间
注意点:
从@State对象读取测试输入并返回计算的结果,方便JMH对冗余代码进行消除;
如果是测试方法的性能,则避免通过在方法内循环(重复执行方法内原来代码),这样造成方法方法调用次数的减少,结果不准确,应该把循环调用放在方法外头。
http://ou.zhencong.me/技术记录/java-microbenchmark-harness.html
http://daniel.mitterdorfer.name/articles/2014/benchmarking-hello-jmh/
深入了解LongAdder(英文)
使用JMH对多线程代码进行基准测试(英文)
使用JMH对多线程代码进行基准测试(英文)