我正在使用JMH运行微基准来评估不同Java算法实现的性能。然而,根据英特尔CPU涡轮增压器运行的天气情况,我观察到吞吐量不一致。由于根据环境条件激活涡轮增压,有时它会被激活用于某些台架测试而不是其他测试。因此,一些结果显示更好的吞吐量仅仅是因为涡轮增压被激活而不是因为其更好的效率。
所以,我试图通过用@GroupThreads(threadsNumber)
和threadsNumber
注释所有测试来避免涡轮增压的影响等于可用处理器的数量,从而期望完全充满所有处理器并在整个基准执行期间激活turbo boost。
这是一种正确的方法吗?是否有更可靠的替代方案来避免涡轮增压的影响?
已更新:根据@Andreas answer,另一种方法是在BIOS或操作系统设置中关闭turbo boost。但是,由于CPU时钟频率可能会发生变化,我认为这还不足以将其关闭,因为CPU速度变化也会影响基准测试。所以,保持它可能更可靠,强制运行turbo boost并将所有线程设置为基准。
哪一种更好的方法可以避免涡轮增压的影响?