我有代碼調用了很多_ftol2_sse,有更快的選擇嗎?
int myNumber = (int)(floatNumber);
(根據分析器),它佔用了,在總,圍繞我的CPU時間的10%。雖然我可以在那離開它,我不知道是否有更快的選擇,所以我試圖圍繞搜索和偶然
http://devmaster.net/forums/topic/7804-fast-int-float-conversion-routines/ http://stereopsis.com/FPU.html
我試圖實現給那裏的Real2Int()函數,但它給了我錯誤的結果,並且運行速度較慢。現在我想知道,有更快的實現將double/float值設置爲整數,還是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 2013-03-06 15:09:53