首先,这与微基准测试的用处无关。我很清楚他们的目的:在一个非常具体的案例中指出性能特征和比较以突出一个方面。这是否应该对你的工作产生任何影响是另一回事。
几年前,有人(我认为是 Heinz Kabutz?)指出,每个值得花时间查看其结果的基准测试都必须运行至少几分钟并且需要运行至少 3 次,而第一次运行是总是被丢弃。这是为了解释 JVM 的预热以及环境中的不一致(后台进程、网络流量……)和测量不准确。这对我来说很有意义,我的个人经历也暗示了类似的事情,所以我总是采用这种策略。
但是,我注意到许多人(例如Jeff)编写的基准测试只运行几毫秒(!)并且只运行一次。我知道近年来短期基准测试的准确性有所提高,但我仍然觉得它很奇怪。不应该每个微基准测试至少运行一秒钟并运行至少 3 次以获得一些有用的输出吗?还是现在这条规则已经过时了?