पहली चीजें पहले: क्या आपको प्रोग्राम को अनुकूलित करने की आवश्यकता है? क्या आपको यह जानने के लिए मापा गया है कि आपको इसे कहां करने की आवश्यकता है? क्या यह इस समारोह में है?
आदिम प्रकारों के लिए दूसरी तुलना उतनी तेजी से एक ऑपरेशन जितनी हो जाती है। तुलना की उच्च लागत तत्व को उचित रजिस्टर में लोड कर रही है, और इसकी पहली तुलना के लिए आवश्यक है। एक बार यह तुलना निष्पादित हो जाने के बाद, मान पहले से ही एक रजिस्टर में है और दूसरा ऑपरेशन एक एकल प्रोसेसर निर्देश और शाखा गलतफहमी की संभावित लागत लेता है।
अभिन्न प्रकार मानते हुए, एल्गोरिदम के प्रोसेसर समय में लागत शायद रिकर्सिव कॉल की लागत का प्रभुत्व है यदि संकलक पूंछ-रिकर्सन ऑप्टिमाइज़ेशन करने में सक्षम नहीं है। यदि आपको वास्तव में इसे अनुकूलित करने की आवश्यकता है, तो सभी अनुकूलन झंडे के साथ संकलन करने का प्रयास करें और असेंबलर का विश्लेषण करने के लिए विश्लेषण करें कि पूंछ-रिकर्सन ऑप्टिमाइज़ेशन लागू किया जा रहा है या नहीं। यदि नहीं, तो मैन्युअल रूप से पुनरावृत्ति से पुनरावृत्त करने के लिए एल्गोरिदम को रूपांतरित करें।
इसमें दो प्रभाव होंगे: कोड अस्पष्ट करें (एक साफ समाधान को संशोधित करने से बचें जब तक कि आपको वास्तव में आवश्यकता न हो) और यह फ़ंक्शन कॉल से बचें।
आप सी ++ की बात कर रहे हैं, और प्रकार जटिल है और अतिभारित तुलना ऑपरेटरों महंगा, प्रदर्शन में सबसे तेजी से बढ़ावा एक compare
विधि है कि के लिए एक नकारात्मक संख्या वापस आ जाएगी लागू कर रहा है कर रहे हैं से कम, 0
बराबर के लिए , और एक सकारात्मक संख्या से अधिक है। फिर तुलना से पहले परिणाम का प्रीकंप्यूट करें और फिर पूर्णांक केवल जांच करें। इससे वास्तविक वस्तुओं के साथ वास्तविक वस्तुओं की एक प्रसंस्करण में एल्गोरिदम की समग्र लागत को हटा दिया जाएगा और आपको मूल धारणा में वापस सेट कर दिया जाएगा।
स्रोत
2010-08-17 07:53:38
हमेशा की तरह: क्या आपको प्रदर्शन के लिए एल्गोरिदम अस्पष्ट करने की आवश्यकता है? क्या यह महत्वपूर्ण कोड पथ में है? क्या इस विशिष्ट विधि का प्रदर्शन समग्र कार्यक्रम के प्रदर्शन को प्रभावित करता है? क्या यह अतिरिक्त तुलना के कारण है? मेरी शर्त यह है कि प्रोग्राम रनटाइम में अतिरिक्त तुलना का कोई प्रभाव नहीं पड़ता है। यदि आपको वास्तव में एल्गोरिदम अनुकूलित करने की आवश्यकता है, तो पहले उपाय करें, फिर सोचें कि आप क्या कर रहे हैं। मैं शर्त लगाता हूं कि पुनरावर्ती से पुनरावृत्त करने के लिए बदलना होगा ए) इसे कम पठनीय बनाओ (इसलिए केवल अगर इसे वास्तव में आवश्यक हो) और बी) तुलना की तुलना में रनटाइम की गति में सुधार करें। –
@ डेविड: इस मामले में, यह जानने के लिए एक महत्वपूर्ण अकादमिक प्रश्न की तरह लगता है, और अनुकूलन को लागू करने से एल्गोरिदम अधिक कैनोनिकल बन जाता है। – Potatoswatter
@ डेविड: मैं सिर्फ यह जानना चाहता था कि अगर अनुकूलन या जटिलता के बावजूद यह संभव है। @ पोटाटोस्वाटर: प्रश्न एडोब प्लेसमेंट पेपर में एक बार में पूछा गया था। तो मैं सिर्फ यह जानना चाहता था कि यह संभव है या नहीं। मैंने अब भी एक संभावित समाधान पोस्ट किया है, लेकिन अभी भी उत्सुक है। धन्यवाद Alok.Kr. –