是不同机器,但物理配置是一样的。
先禁止了pagefile,发现的确有所改善,但仍然是windows2003下更快。
今天在2008上装了一个vs2010,编译出64位的程序,发现如下现象
windows2003 32位程序速度最快,
windows2008 64位程序速度中间,
windows2008 32位程序速度最慢。
为了排除内存预定提交以及缺页交换这些问题,我把程序修改了下
#define NUM 1024 * 1024 * 10
int *a = 0; int *b = 0; int *c = 0; int TestSimple(int num) { int i = 0; int k = 1; int j = 2; int ret = 0; for (int count = 0; count < 30; count ++) { for (int ii = 0; ii < num; ii ++) { int ik = i * num + k; int jk = k * num + j; a[ii] = ik; b[ii] = jk; c[ii] = a[ii] * b[ii]; ret = c[ii] + ret; } } return ret; } int TestInit() { a = new int[NUM]; b = new int[NUM]; c = new int[NUM]; for (int i = 0; i < 1024 * 10; i ++) { a[i * 1024] = 0; b[i * 1024] = 0; c[i * 1024] = 0; } return 0; }
int _tmain(int argc, char* argv[]) { printf("Hello World!\n"); TestInit(); int aa = TestSimple(NUM); printf("aa %d\n", aa); return 0; }
|