Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在使用 JMH 运行一些基准测试,并且每次迭代都会得到繁忙的吞吐量值,有时会有 +/- 50% 的差异。(i7 4770K、Windows 7 x64、Java 1.8u31、JMH 0.9 - 无法升级)。由于装箱和拆箱整数以及大量使用同步块,基准测试会产生大量垃圾。将迭代运行时间从 1 秒增加到 5 秒会产生较小的方差。
我的问题是:
如果您可以使用 0.9.1+ 版本,您应该查看perfasm添加到 JMH 的分析器。它允许您将代码的汇编映射到每条指令所花费的时间。但是,它需要您使用 Linux 机器,因为它使用了该perf命令。
perfasm
perf
除此之外,您的基准测试允许进行相当多的优化,但我认为这是有意的。您不会通过黑洞消耗最终结果,而是选择在某些处理之间消耗数据位。这种方法很容易出错,因此我建议您真正查看无论如何生成的汇编代码,这样您就可以知道您正在测量的实际是什么!