2014-11-16 8 views
1

난 그냥 메신저 내가 이런 식으로 테스트하기로 결정 있도록 플로트 변수에 죄와 COS를 사용하기 때문에 더 빠른 내 프로그램에 어떻게 될지 궁금 해서요 :<math.h>에서 sinf()보다 sin()이 빠릅니까?

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) 만 지원하는 경우는 드뭅니다. 따라서 float을 double과 back로 변환하려면 추가 비용을 지불해야합니다. 이와 같은 세부 사항은 생략 할 수 없습니다. –

답변