私は私のCPU時間(プロファイラによる)の10%を中心に、合計で、取り_ftol2_sse、より速いオプションはありますか?
int myNumber = (int)(floatNumber);
の多くを呼び出すコードを持っています。私はそのままにしておくこともできますが速くオプションがある場合、私は疑問に思うので、私は周りに検索しようとした、と
http://devmaster.net/forums/topic/7804-fast-int-float-conversion-routines/ http://stereopsis.com/FPU.html
私はそこに与えられたReal2Int()関数を実装しようとしたつまずいしかし、それは私に間違った結果をもたらし、遅くなります。今、私は疑問に思っています。フロア値を整数に変換するより高速な実装があるのでしょうか、それともSSE2バージョンは速いですか?私が見つけたページはちょっと戻ってきたので、ちょうど時代遅れかもしれないし、新しいSTLはこれより速い。
現在の実装ではありません:私が見つけた
013B1030 call _ftol2_sse (13B19A0h)
013B19A0 cmp dword ptr [___sse2_available (13B3378h)],0
013B19A7 je _ftol2 (13B19D6h)
013B19A9 push ebp
013B19AA mov ebp,esp
013B19AC sub esp,8
013B19AF and esp,0FFFFFFF8h
013B19B2 fstp qword ptr [esp]
013B19B5 cvttsd2si eax,mmword ptr [esp]
013B19BA leave
013B19BB ret
関連質問:
Fast float to int conversion and floating point precision on ARM (iPhone 3GS/4)
を両方が古い、またはARMベースなので、私はそこにいるのだろうかこれを行う現在の方法。最高のコンバージョンは起こらないものであると言われていますが、私はそれを持つ必要があるため、不可能です。
x64コードで完璧です。これはもっと速く動作します! – SinisterMJ