कहें कि मेरे प्रोग्राम में वास्तव में प्रदर्शन-महत्वपूर्ण लूप था जहां मुझे यह जांचने की आवश्यकता है कि कोई बिंदु आयताकार के अंदर था या नहीं, लेकिन मुझे लगता है कि निचले सीमाएं हमेशा 0 होने जा रही हैं, (x >= 0 && y >= 0 && x < width && y < height)
हस्ताक्षर किए गए पूर्णांक पर हस्ताक्षरित पनिंग टाइप कर सकते हैं> = तुलना की आवश्यकता को समाप्त कर सीमाओं की जांच तेजी से कर सकते हैं?
मैं द्वारा पहले दो तुलना को खत्म कर सके प्रकार punning, अहस्ताक्षरित पूर्णांकों के लिए x और y (या सी ++ में एक union
reinterpret_cast<>()
की तरह कुछ के साथ उदाहरण के लिए) के बाद से संकेत बिट किसी भी नकारात्मक संख्या एक unsigned int
बड़ा पर्याप्त में बदल जाएगा गारंटी होगी सीमाओं की जांच में विफल होने के लिए? यदि हां, तो आप इसे C++ या किसी अन्य भाषा में कार्यान्वित करने के बारे में कैसे जाएंगे? क्या आप ऐसा करके कोई प्रदर्शन सुधार प्राप्त कर सकते हैं?
संभावित रूप से एक डुप्लिकेट: http://stackoverflow.com/questions/2711522/what-happens-if-i-assign-a-negative-value-to-an-unsigned-variable –
परिवर्तित करने के लिए 'static_cast' का उपयोग करें पूर्णांक प्रकार। आप यह देखने के लिए असेंबली की तुलना करने का प्रयास कर सकते हैं कि संकलक स्वचालित रूप से इसे अनुकूलित करता है या नहीं। –
@ जेरेमीफ्रिसनर मैं नहीं कहूंगा - * यह * प्रश्न * उस * उत्तर के बारे में बहुत जागरूक प्रतीत होता है। –