我只是想知道,由于我在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

08-20 01:47