是否有可能推出速度更快的modf版本

Mr.*_*Boy 5 c++ floating-point optimization math.h

在我正在分析的应用程序中,我发现在某些情况下,此功能可以占用总执行时间的10%.

正在使用MSVC++ 2008编译器,以供参考......我不记得modf是否映射到单个指令,或者是否有可能使其更快.

另见这里关于sqrt函数的类似问题

与sqrt不同,我真的不知道modf是如何工作的.有装配操作吗?例如,您可以这样做:

modf(float input,int &intPart, float &floatPart)
{
 intPart= (int)input;
 floatPart= input - intPart;
}
Run Code Online (Sandbox Code Playgroud)

但我认为这会导致施法/转换等处罚,快速实施如何运作?

Jam*_*mes 1

modf确实应该是一个非常快的函数,所以问题可能是它仍然是一个函数(即,没有被内联)。您可以尝试使用库中完全相同的代码,但在标头中的内联静态函数中,以允许编译器内联它。

当函数内联时,如果您始终只使用尾数/指数之一,则编译器应该足够聪明,只发出代码来计算该部分,从而进一步加快速度。

如果您仍然对自己的浮点格式感兴趣,请查看维基百科上的浮点格式