我想知道如果我可以关闭JIT,为什么应该使用JMH进行基准测试?
JMH是否没有抑制通过禁用JIT可以避免的优化?

最佳答案

TL; DR;通过在同一条赛道上骑自行车来评估一级方程式赛车的性能。

这个问题很奇怪,特别是如果您问自己一个简单的后续问题。在与您的生产环境完全不同的条件下运行基准测试有什么意义?换句话说,以解释模式运行获得的知识如何应用于现实世界?

这里的问题不是黑白的:您需要在现实世界中进行优化,并且需要将它们分解到一些精心选择的位置以进行良好的实验设置。这就是JMH正在做的事情:它提供了构建实验设置的方法。 JMH samples很好地解释了错综复杂的情况。

而且,基准测试不仅仅是与编译器抗争。很多非编译器(和非JVM!)问题need to be addressed。当然,它可以手工完成(JMH并不是神奇的,它只是由人类编写的工具),但是您将花费大部分时间预算解决简单的问题,而没有时间解决真正重要的问题。特定于您的实验的

关于java - 如果可以关闭JIT,为什么还要使用JMH?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30145526/

10-09 07:22