gpt4 book ai didi

language-agnostic - 如何以可靠的方式测量执行一段代码所花费的时间?

转载 作者:行者123 更新时间:2023-12-02 03:52:07 25 4
gpt4 key购买 nike

关于如何测量执行时间的问题已在 SO 上被多次询问,请参阅 herehere例如。然而,这些问题主要集中在使用哪些计时功能上。

我感兴趣的是如何使结果可重现。例如,由于多任务处理,测试代码的执行可能会被一些影响结果的后台进程中断。为了克服这个问题,我看到一些基准测试进行了多次运行并取得了最佳时间(除了在一个循环中多次运行代码之外)。

关于如何使结果更可靠和可重现,还有其他建议或想法吗?

最佳答案

首先,您可能希望将要加速测试的代码与对您不想测试的代码的调用分开。特别要确保这样的代码不会执行文件 IO、显示输出、日志记录、控制台输出等。(当然,除非您测试 IO 代码本身)

您还可以预先加载进行测试运行所需的所有数据,这样就不会测量数据加载。

好的技巧是尽可能少地进行测试。如果您可以追踪到那几行最不同的代码,那么您就可以找到一种方法将它们与其余代码分开进行测试。甚至可能将它们复制/粘贴到专为此目的精心设计的新函数中。

如果你真的打算做高清计时你也可以尝试使用操作系统提供的功能进入实时或高优先级CPU模式。

在某些情况下,您可能希望查看生成的低级机器代码,然后使用来自 CPU 制造商(或 VM 实现)的引用数据来计算相关代码将占用多少“cpu-ticks”。由于许多 cpu/vm 指令的执行时间取决于流水线/操作数/cpu 模型/等,即使这种方法也能提供近似值。

因此,最好的建议是为您的测量正确设置误差范围。通常,当我开始对某些代码进行时间测试时,我个人会考虑这 10%。然后这个值可以(通常)减少。但它永远不会是 0%。因此,当您的程序输出“执行时间:%i ns”时,您可以(而且可能应该)始终打印“+- X ns”。

关于language-agnostic - 如何以可靠的方式测量执行一段代码所花费的时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14014324/

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