sinf()比<math.h>中的sin()更快?</math.h>

时间:2014-11-16 16:35:55

标签: c time sin

我只是想知道我的程序会更快,因为我在浮点变量中使用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()更快?谢谢!

1 个答案:

答案 0 :(得分:1)

sinf的某些实现只是对sin的简单调用,具有float之前和之后的转换。可能是你的情况。

例如,请参阅:http://code.metager.de/source/xref/gnu/octave/gnulib-hg/lib/sinf.c