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()를 사용하는 것보다 빠른 이유는 무엇입니까? 감사 !
귀하의 컴파일러는 두 루프를 멀리 최적화해야 (그리고 아마도 모두 죄가 너무 호출) :
예를 들어 참조하십시오. 그렇지 않다면, 테스트는별로 흥미롭지 않습니다. 최적화되지 않은 코드의 성능은 최적화되지 않았습니다. – Mat기계 또는 C 런타임이 sin (double) 만 지원하는 경우는 드뭅니다. 따라서 float을 double과 back로 변환하려면 추가 비용을 지불해야합니다. 이와 같은 세부 사항은 생략 할 수 없습니다. –