以下计划
#include <stdio.h>
int main() {
static char a[1 << 28] = {1};
printf("%d\n", a[0]);
return 0;
}
在Windows 7 x64上编译为此可执行文件
19/06/2015 21:57 268,519,936 a.exe
运行需要5.6秒,即使连续多次运行以确保它已缓存在内存中。
我原本希望Windows在开始时读取整个可执行文件(在这种情况下,机器能够以每秒数百兆字节的速度进行流读取)或仅在需要的部分中读取页面(在这种情况下)应该只阅读几千字节);无论哪种方式,该程序应该在几分之一秒内运行。如果你调整数组大小,运行时与可执行文件的大小成正比,所以Windows的行为就好像它正在读取整个可执行文件,但是通过一些非常慢的方法。
这种行为的原因是什么,有什么可以做的吗?
答案 0 :(得分:1)
事实证明,延迟是Microsoft防病毒程序在每次运行时扫描可执行文件。禁用该文件的保护会将时间减少到47毫秒。