Java性能优化-掌握JMH( 二 )

buildData(int count){ List list = new ArrayList<>(count); for(int i=0;i因为MyBenchmark包含了一个main方法,我们可以直接在IDE里直接运行这个方法,有如下输出
# Warmup: 3 iterations, 1 s each# Measurement: 3 iterations, 5 s each# Threads: 1 threads, will synchronize iterations# Benchmark mode: Throughput, ops/time以上输出来自于我们的配置,第一行表示预热3次,每次执行1秒,第二行表示运行3次,每次运行5秒,这部分的运行结果计入统计 。第三行表示1个线程执行,第四行统计性能数据纬度是Throughput,吞吐量
紧接着会运行testObjectKey方法,有如下输出
# Benchmark: com.ibeetl.code.ch01.test.MyBenchmark.testObjectKey# Run progress: 0.00% complete, ETA 00:00:36# Fork: 1 of 1objc[68658]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/bin/java and /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined.# Warmup Iteration 1: 1288302.671 ops/s# Warmup Iteration 2: 3061587.202 ops/s# Warmup Iteration 3: 1094970.828 ops/sIteration 1: 2491836.097 ops/sIteration 2: 2780362.118 ops/sIteration 3: 3621313.883 ops/s这里的Fork表示子进程,我们只配置里一个,因此只有一个进程的执行结果,该进程包含预热3次,每次1秒,以及运行3次,每次运行5秒,执行完testObjectKey方法后,会自动打印一个汇总信息
Result: 939996.216 ±(99.9%) 2012646.237 ops/s [Average] Statistics: (min, avg, max) = (813154.364, 939996.216, 1013607.616), stdev = 110319.932 Confidence interval (99.9%): [-1072650.021, 2952642.453]统计结果给出了多次测试后的最小值,最大值和均值,以及标准差 (stdev),置信区间(Confidence interval)

标准差(stdev)反映了数值相对于平均值得离散程度,置信区间是指由样本统计量所构造的总体参数的估计区间 。在统计学中,一个概率样本的置信区间(


推荐阅读