我只是想知道,由于我在float变量中使用sin和cos,所以我决定用这种方式测试它:
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()比使用适当的函数sinf()更快?谢谢!
最佳答案
sinf
的一些实现只是对sin
的简单调用,可以前后转换到float
。可能是你的情况。
例如,请参见:http://code.metager.de/source/xref/gnu/octave/gnulib-hg/lib/sinf.c