tôi có mã trong đó kêu gọi rất nhiều_ftol2_sse, có các tùy chọn nhanh hơn không?
int myNumber = (int)(floatNumber);
mà chiếm, trong tổng số, khoảng 10% thời gian CPU của tôi (theo hồ sơ). Trong khi tôi có thể để nó ở đó, tôi tự hỏi, nếu có những lựa chọn nhanh hơn, vì vậy tôi đã cố gắng tìm kiếm xung quanh, và stumbled khi
http://devmaster.net/forums/topic/7804-fast-int-float-conversion-routines/ http://stereopsis.com/FPU.html
tôi đã cố gắng thực hiện() chức năng Real2Int cho có nhưng nó cho tôi kết quả sai và chạy chậm hơn. Bây giờ tôi tự hỏi, có triển khai nhanh hơn để sàn đôi/phao giá trị để số nguyên, hoặc là phiên bản SSE2 nhanh như nó được? Các trang tôi tìm thấy ngày trở lại một chút, do đó, nó có thể chỉ là lỗi thời, và STL mới hơn là nhanh hơn lúc này.
Việc thực hiện không:
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
câu hỏi liên quan tôi thấy:
Fast float to int conversion and floating point precision on ARM (iPhone 3GS/4)
Kể từ khi cả hai đều cũ, hoặc là ARM dựa, tôi tự hỏi nếu có cách hiện tại để làm điều này. Lưu ý rằng nó nói rằng chuyển đổi tốt nhất là một trong những điều không xảy ra, nhưng tôi cần phải có nó, do đó sẽ không thể.
hoàn hảo, với mã x64 hoạt động nhanh hơn rất nhiều! – SinisterMJ