मैं कोड है जो जो अप (प्रोफाइलर के अनुसार) मेरी 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() दी समारोह को लागू करने की कोशिश की पर ठोकर खाई , लेकिन यह मुझे गलत परिणाम देता है, और धीमा चलता है। अब मुझे आश्चर्य है, क्या फर्श डबल/फ्लोट वैल्यू को पूर्णांक में तेज कार्यान्वयन हैं, या एसएसई 2 संस्करण जितना तेज़ हो जाता है? जिन पृष्ठों को मैंने पाया वह थोड़ा सा समय है, इसलिए यह पुराना हो सकता है, और इस पर नया एसटीएल तेज है।
वर्तमान कार्यान्वयन करता है:
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)
दोनों के बाद से पुराने हैं, या एआरएम आधारित, मैं कर रहे हैं आश्चर्य है कि वहाँ हैं ऐसा करने के मौजूदा तरीके। ध्यान दें कि यह कहता है कि सबसे अच्छा रूपांतरण ऐसा नहीं होता है, लेकिन मुझे इसे प्राप्त करने की आवश्यकता है, इसलिए यह संभव नहीं होगा।
सही, x64 कोड के साथ यह बहुत तेज़ काम करता है! – SinisterMJ