在JMH(Java Microbenchmark Harness)中,我们可以使用:
@BenchmarkMode(Mode.AverageTime)
@Warmup(iterations = 10)
@Measurement(iterations = 10)
评估JVM热身后执行的平均时间。
此外,我们可以使用
@BenchmarkMode(Mode.SingleShotTime)
@Measurement(iterations = 1)
如何估测一个执行的"冷启动时间(cold start time)"?可是只执行一次基准测试可能会引入偏差,那么有没有方法可以评估JMH中冷启动的平均时间呢?
Warmup
确实是错误的,但Measurement
可能取决于您的测试内容。如果您想测量invokedynamic
的次数(在第一次调用时很昂贵)-您可能是正确的,但在上面的测试中,C1
编译器不会在100次调用中启动,因此我猜这也被视为“冷”处理。 - Eugene