1
我的当前设置:控制数量江铃控股
public void launchBenchmark() throws Exception {
Options opt = new OptionsBuilder()
.include(this.getClass().getName())
.mode(Mode.Throughput) //Calculate number of operations in a time unit.
.mode(Mode.AverageTime) //Calculate an average running time per operation
.timeUnit(TimeUnit.MILLISECONDS)
.warmupIterations(1)
.measurementIterations(30)
.threads(Runtime.getRuntime().availableProcessors())
.forks(1)
.shouldFailOnError(true)
.shouldDoGC(true)
.build();
new Runner(opt).run();
}
我怎么能知道/控制(如果可能)按基准进行操作的数量?
设置预热时间和测量时间是否很重要?
谢谢。
啊我看到设置适当的值。你对迭代时间有很好的建议吗?例如如果我知道每个操作会花费x时间。那么我应该为每次迭代设置多少时间? – Xitrum
这取决于。使用默认设置,JIT使用C1在10k迭代后编译为本机,并在30k后使用C2。所以你应该设置迭代次数和迭代时间,以确保JIT已经使用C2编译器编译了所有内容,否则你的基准测试会报告不正确的统计数据。如果您将这些值设置得过高,则只会浪费时间,但不会产生其他负面影响。 –
此外,迭代时间必须足够大以补偿一些抖动,但它又取决于操作需要多长时间。例如,如果一个单独的操作需要100ms,那么至少需要几秒的迭代时间,但如果需要一个纳秒 - >那么100ms就足够了 –