フロートをゼロと比較するとひどい失速があるプラットフォームで作業しています。最適化として、次のコードが使用されているのを見てきました。
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)。signed int へのキャストは役に立ちますか? 単純なハーネスでのテストでは、問題は検出されませんでした。
どんな洞察でも良いでしょう。