gpt4 book ai didi

language-agnostic - 应该使用哪个指标作为基准?

转载 作者:行者123 更新时间:2023-12-04 12:52:24 26 4
gpt4 key购买 nike

当我对某些代码进行基准测试时,无论是在一组固定的输入数据上,还是在随机性不影响控制流的随机输入上:用于评估代码性能的最佳指标是什么?

我一直在多次运行中使用最小运行时间,因为任何与最小运行时间的偏差都是由于 CPU 忙于处理无关的事情,但我找不到任何可靠的来源确认这是最佳实践。其他明显的选择是平均或中值运行时间。 (最大值似乎很奇怪,因为它可能会被无关的 CPU 峰值所支配。)有没有更好的方法来理解从多次运行中收集的统计数据?

正如paxdiablo指出的那样,如果我可以直接测量CPU时间那将是理想的。但是当我只能对挂墙时间进行基准测试时我该怎么办?

正如我所说,我无法找到任何可靠的信息,但也许我只是没有找到正确的 Google 关键字,所以如果您能指出我现有的任何内容,那将是一个很大的帮助。另外,如果这个问题对 SO 来说太笼统,请随时将其迁移到 Programmers.SE。

最佳答案

如果您正在对 CPU 时间进行基准测试,则某些系统会为您提供与耗时或墙时间无关的 CPU 使用率。

你是对的,挂机时间可能会因系统正在执行的操作而异,但这通常不会影响 CPU 时间。

例如,time Linux(和其他类 UNIX 操作系统)中的实用程序报告如下:

pax> time sleep 1

real 0m1.001s
user 0m0.000s
sys 0m0.000s

真正的时间是墙上的时间,一秒多一点。 usersys time 是使用 CPU 所花费的时间,在这种情况下是最少的,因为进程正在等待 sleep 完成(该操作几乎不需要 CPU 时间)。

如果您有此功能,那么您应该使用它。

如果您没有这样的设施,那么您可能必须使用统计方法,例如最小化其他进程的 CPU 使用率并运行您自己的进程数百次以形成一个体面的图片。

您是否采用平均值或最小值(或去除异常值后的平均值等奇怪的东西)将取决于您遵循的统计学派。如果如您所说,您确定任何变化都不是由工作负载本身引起的,那么您应该选择最小值。

确保其他负载最小化很重要。如果您有一个流氓进程占用了 97% 的 CPU grunt,则与大部分空闲的系统相比,最小值将大大向上倾斜(这就是为什么 CPU 时间比挂墙时间好得多的原因)。

关于language-agnostic - 应该使用哪个指标作为基准?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24980500/

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