微基准测试需要运行多长时间?

时间:2010-05-18 13:04:00

标签: microbenchmark

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

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

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

1 个答案:

答案 0 :(得分:0)

根据我的经验,您需要:

  • 多次运行(并丢弃第一个结果 - 虚拟机和其他效果)
  • 如果您正在查看计算密集型代码,请最少时间
  • 运行时间足以降低循环和计时功能的成本
  • 理想地在一个OS时间片(通常为10ms)内运行多于一个时间片,例如,运行~5 ms或~500 ms。

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