当我第二次运行程序时,它没有给我正确的执行时间

Mou*_*lah 1 c time execution

我有一个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;
Run Code Online (Sandbox Code Playgroud)

Aar*_*lla 6

这个问题叫做"预热":当你想对某些代码进行性能测试时,你需要多次运行代码(比方说,10次).然后你运行它100'000次并测量它需要多长时间并将其除以100'000以获得平均值.除非运行时间至少为一分钟,否则对运行时的单次测量是无用的.

预热问题的原因是现代操作系统和语言会采用各种技巧来使代码执行得更快.例如,调用Encryption()可能实际上调用共享库中的函数.

这些库是懒惰加载的,即它是在代码实际调用函数时第一次加载的.加载后,操作系统会将其保留在缓存中,因为有人可能会再次需要它.

这就是为什么应用程序的前几次运行与下一次10'000运行完全不同的运行时间.