最近我在进行很多基准测试,偶然发现了一个非常令人不安/有趣/新奇的事情。通过进行更深入的研究(我自己都不敢相信),似乎Windows XP(以及可能所有其他版本)运行程序的速度比安全模式下慢三倍左右。
以这个小程序为例:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
long i,j,k;
printf ("Starting...\n");
k = 12;
for (i = 0; i < 20000; i++)
for (j = 100000; j > 0; j--)
k = k * 12;
printf ("Done... k =%d", k); // just using k here to prevent the whole block isn't optimized away.
return 0;
}
在我的2.4 GHz电脑上,在安全模式下执行需要约2.5秒,而在正常模式下执行需要约8秒。(ThreadPriority = TIMECRITICAL,ProcessClass = REALTIME)即使我在这个非常的Windows正常模式下编译和启动该代码时,它的执行速度更快(大约5.5秒)。
我还进行了大量的CPU周期测量,实际上,安全模式下的结果更像是根据处理的指令数量所期望的结果。
那么我错过了什么?有人能解决这个谜题吗?
感谢所有的指针和提示。 谢谢。
解决了!对不起,这个问题与我的糟糕的Alienware M15x有关,由于某种原因,它会降低到其CPU功率的1/3,除非您使用邪恶的工具(ThrottleStop.exe)将其恢复到正常速度。非常抱歉浪费你们的时间。 :(
100个周期,而在安全模式下则需要35个周期)。 - Roman Pfneudl