gpt4 book ai didi

jmh - 为什么 JMH @Measurement(和 @Warmup)指定固定时间而不是固定数量的操作?

转载 作者:行者123 更新时间:2023-12-04 20:39:40 25 4
gpt4 key购买 nike

我已经将其视为微基准测试中的潜在陷阱之一。如果您指定@Measurement(或@Warmup)将运行固定的时间量,这意味着,当比较不同的运行(例如,不同的平台、不同版本的 VM 等)时,您将获得更少的“苹果对苹果”比较,因为运行不会做同样的工作!

如果一次运行执行得更快,那么它将在给定时间内执行更多操作。这引入了可能会扭曲结果的混杂因素:更多的​​动态优化机会、缓存差异、每个操作的不同统计数据等。

另一方面,如果您指定固定数量的操作,则每次运行都在执行完全相同的工作量,从而提高对结果的信心。

那么,JMH 使用这种指定固定时间量而不是固定操作次数的方法的原因是什么?是否有一些重要的原因插入了我错过的这个设计决定?我已经在 J​​MH 文档和在线讨论中进行了搜索,但我一直无法找到这个问题的答案。

最佳答案

固定数量可能是一个糟糕的选择。假设我们选择 10,000,这足以预热代码。如果操作时间很短,这可能不足以获得最佳结果,但如果需要 10 秒,则 10 次运行将需要 12 天才能获得结果。运行一个固定的时间你至少知道需要多长时间。

在实际使用中,您可能会运行代码一段已知的时间,而不是固定的迭代次数。

关于jmh - 为什么 JMH @Measurement(和 @Warmup)指定固定时间而不是固定数量的操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52044630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com