微基准标记需要运行多久?

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

几年前,有人(我认为亨氏Kabutz?)指出,每个值得花时间观察其结果的基准必须运行至少几分钟,并且需要至少运行三次,而第一次运行是总是被丢弃。 这是为了解决JVM的变暖以及环境中的不一致(后台进程,网络流量......)和测量不准确性。 这对我有意义,我的个人经历表明了类似的东西,所以我总是采用这种策略。

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


根据我的经验,您需要:

  • 运行多次(并放弃第一个结果 - 虚拟机和其他效果)
  • 如果您正在查看计算密集型代码,请花费最少的时间
  • 运行足够长的时间以减少循环和定时功能的成本
  • 理想情况下在一个操作系统时间片(通常为10毫秒)内运行, 或者在一个时间片内运行,例如运行约5毫秒或约500毫秒。
  • 我只倾向于使用计算密集型代码 - 如果您有不同的配置文件(例如内存密集型或大量I / O),那么时序策略可能需要不同。

    链接地址: http://www.djcxy.com/p/31687.html

    上一篇: How long does a microbenchmark need to run?

    下一篇: Why is "if not someobj:" better than "if someobj == None:" in Python?