1

首先,这与微基准测试的用处无关。我很清楚他们的目的:在一个非常具体的案例中指出性能特征和比较以突出一个方面。这是否应该对你的工作产生任何影响是另一回事。

几年前,有人(我认为是 Heinz Kabutz?)指出,每个值得花时间查看其结果的基准测试都必须运行至少几分钟并且需要运行至少 3 次,而第一次运行是总是被丢弃。这是为了解释 JVM 的预热以及环境中的不一致(后台进程、网络流量……)和测量不准确。这对我来说很有意义,我的个人经历也暗示了类似的事情,所以我总是采用这种策略。

但是,我注意到许多人(例如Jeff)编写的基准测试只运行几毫秒(!)并且只运行一次。我知道近年来短期基准测试的准确性有所提高,但我仍然觉得它很奇怪。不应该每个微基准测试至少运行一秒钟并运行至少 3 次以获得一些有用的输出吗?还是现在这条规则已经过时了?

4

1 回答 1

0

根据我的经验,您需要:

  • 运行多次(并丢弃第一个结果 - VM 和其他效果)
  • 如果您正在查看计算密集型代码,请花最少的时间
  • 运行足够长的时间以降低循环和计时功能的成本
  • 理想情况下,在一个操作系统时间片(通常为 10 毫秒)内运行运行不止一个时间片,例如运行约 5 毫秒或约 500 毫秒。

我只倾向于使用计算密集型代码 - 如果您有不同的配置文件(例如内存密集型或大量 I/O),那么时序策略可能需要不同。

于 2010-05-18T13:40:26.853 回答