2014-11-16 10 views
1

我只是想知道這將是我的程序更快,因爲使用正弦和餘弦IM在浮點型變量,所以我決定這樣測試:sinf()比sin()更快在<math.h>?

int c; 
float a; 
float b = 0.5; 

/***********************/ 

glfwSetTime(0.0); 
time = glfwGetTime(); 
printf("\n%f", time); 

/***********************/ 

glfwSetTime(0.0); 
a = sinf(b); 
for (c = 0; c < 10000; c++) 
    sinf(b); 
time = glfwGetTime(); 
printf("\n%f, %f", time, a); 

/***********************/ 

glfwSetTime(0.0); 
a = sin(b); 
for (c = 0; c < 10000; c++) 
    sin(b); 
time = glfwGetTime(); 
printf("\n%f, %f", time, a); 

/***********************/ 

while (1); 

這是我得到的輸出:

0.000001 
0.000505, 0.479426 
0.000300, 0.479426 

問題是一樣的,爲什麼使用sin()與float比使用正確函數sinf()更快?謝謝 !

+1

你的編譯器應該優化掉兩個循環(也可能是兩個罪呼叫過於)如果您打開優化。如果你不這樣做,那麼你的測試並不是很有趣 - 非優化代碼的性能並沒有得到優化。 – Mat

+1

機器或C運行時僅支持sin(double)並不少見。所以你要付出額外的費用才能將浮點數轉換爲double和back :)你不能忽略這樣的細節。 –

回答