我在C++中編寫了這個小程序來檢查CPU負載情況。x64性能與x86相比
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>
int main()
{
double x = 1;
int t1 = GetTickCount();
srand(10000);
for (unsigned long i = 0; i < 10000000; i++)
{
int r = rand();
double l = sqrt((double)r);
x *= log(l/3) * pow(x, r);
}
int t2 = GetTickCount();
printf("Time: %d\r\n", t2-t1);
getchar();
}
我在win7 x64上編譯了x86和x64。
由於某種原因,當我運行x64版本時,它在大約3秒內完成運行
但是當我使用x86版本嘗試它時,它花了48(!!!)秒。
我嘗試了很多次,總是得到類似的結果。
什麼可能導致這種差異?
什麼編譯器?什麼優化? – GManNickG 2012-04-25 14:39:23
我也可能在最後打印'x',以確保優化器不會決定它可以丟棄'x * ='計算線。 – Rup 2012-04-25 14:40:27
我正在使用vs2010 express與「Microsoft Visual C++ 2010 Service Pack 1:Windows SDK 7.1編譯器更新」。我在調試模式下將其編譯爲無優化。 – Idov 2012-04-25 14:41:19