我编写了一个C程序,将温度从华氏度转换为摄氏度。当我运行程序时,我注意到当循环即将结束时,执行速度急剧增加(这不应该按照我的代码)。我尝试用不同的值初始化循环以及更改循环的结尾,但行为仍然保持不变。
我正在附加图像并发布执行速度视频的链接。
我提供了视频,您可以看到当循环越过399999时,执行速度会提高,并且在图像中您可以看到编译器的一些详细信息/版本。
请告诉我为什么会这样。 谢谢。
Link to the video of execution speed
我的代码:-
// Program to convert temperature from
// fahrenheit scale to celsius scale.
#include <stdio.h>
main()
{
float faren, celsius;
for(faren=200000; faren<=900000; faren = faren+20)
{
celsius = (5.0/9.0)*(faren-32);
printf("%.f\t%3.5f\n",faren, celsius);
}
}
答案 0 :(得分:1)
这只是您的操作系统为此过程分配更多的CPU时间。
从基本意义上讲,我的意思是非常基础,您的操作系统(在本例中为Windows)设置了具有给定持续时间的计时器,持续时间结束后它将更改当前进程并切换到下一个进程。这就是为什么您感觉自己的计算机正在一起做几件事,并且可以听音乐和浏览网络。 (此持续时间非常短,具体取决于操作系统)
每当操作系统看到某个进程在给定的持续时间内未完成时,它只会增加该进程的持续时间,因此,下一次该进程将有更多的时间完成。
现在,当操作系统发现您的进程(正在运行的程序)在第一个持续时间之后尚未完成时,下一次它将增加该进程的持续时间,从而使CPU在该进程上花费更多的时间。
这将导致您的程序(由于它是一个简单的C / C ++程序,因此对CPU时钟没有任何限制)会在一段时间后加速。