我正在一个平台上工作,当将浮点数与零进行比较时,它会出现严重的停顿。作为优化,我看到使用了以下代码:
inline bool GreaterThanZero( float value )
{
const int value_as_int = *(int*)&value;
return ( value_as_int > 0 );
}
查看生成的程序集,停顿消失了,功能更高效。
这行得通吗?我很困惑,因为 IEEE 技巧的所有优化都使用 SIGNMASKS 和大量 AND/OR 操作(例如https://www.lomont.org/papers/2005/CompareFloat.pdf )。强制转换为带符号的 int 有帮助吗?在简单的线束中进行测试没有发现任何问题。
任何见解都会很好。