【问题标题】:How long does a microbenchmark need to run?微基准测试需要运行多长时间?
【发布时间】:2011-02-20 21:31:45
【问题描述】:

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

几年前,有人(我认为是 Heinz Kabutz第一次运行总是被丢弃。这是为了解释 JVM 的预热以及环境中的不一致(后台进程、网络流量……)和测量不准确。这对我来说很有意义,我的个人经历也表明了类似的情况,所以我总是采用这种策略。

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

【问题讨论】:

    标签: microbenchmark


    【解决方案1】:

    根据我的经验,您需要:

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

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

    【讨论】:

      猜你喜欢
      • 2020-03-18
      • 1970-01-01
      • 2017-07-07
      • 2014-04-21
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多