我有一个 C 代码,当我尝试计算第一次执行的小块处理代码的时间时。它给了我 30 毫秒,当我关闭 exe 文件并再次运行它时,它给了我 1 毫秒,这个时间是计算时间,每次运行程序计算值都与上一次不同,如果我关闭电脑并打开它,它第一次执行时给我 30 毫秒,所有其他执行时给我 1 毫秒 我怎样才能同时获得,我释放所有使用的内存并运行另一个程序来覆盖内存但问题没有解决直到我重新启动 PC 任何帮助
start_time=clock();
Encryption();
end_time=clock();
cpu_time_used_totlal_enc +=(double) (end_time-start_time) / CLOCKS_PER_SEC;
最佳答案
这个问题叫做“预热”:当你想对一些代码进行性能测试时,你需要运行代码几次(比如,10 次)。然后你运行它 100'000 次并测量它花费的时间并将它除以 100'000 得到平均值。除非运行时间至少为一分钟,否则对运行时间的单一测量是无用的。
预热问题的原因是现代操作系统和语言会使用各种技巧来使您的代码执行得更快。例如,对 Encryption()
的调用实际上可能会调用共享库中的函数。
这些库是延迟加载的,即在您的代码实际调用函数时第一次加载。加载后,操作系统会将其保存在缓存中,因为有可能有人会再次需要它。
这就是为什么应用程序的前几次运行与接下来的 10,000 次运行的运行时间完全不同。
关于c - 当我第二次运行该程序时,它没有给我正确的执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16568305/