सबसे पहले, छोटी चीजें पसीना न करें। गिनती बनाम गिनती की तरह विवरण आमतौर पर समय चलने में पूरी तरह से अप्रासंगिक होते हैं। मनुष्य कोड में क्षेत्रों को तलाशने में कुख्यात रूप से खराब हैं जिन्हें आगे बढ़ने की आवश्यकता है। एक प्रोफाइलर का प्रयोग करें। लूप के किसी भी भाग पर थोड़ा या कोई ध्यान न दें जो दोहराया नहीं जाता है, जब तक कि प्रोफाइलर अन्यथा कहता न हो। याद रखें कि आंतरिक लूप में जो लिखा गया है उसे आंतरिक लूप में जरूरी नहीं है, क्योंकि आधुनिक कंपाइलर अनावश्यक पुनरावृत्ति से बचने के बारे में बहुत ही स्मार्ट हैं।
कहा जा रहा है, आधुनिक CPUs पर अनलॉकिंग लूप से बहुत सावधान रहें। वे जितना कठिन हो उतना बेहतर होगा, वे कैश में फिट होंगे। पिछले साल मैंने एक उच्च प्रदर्शन अनुप्रयोग में काम किया था, मैंने सीधे लाइन कोड के बजाय लूप का उपयोग करके प्रदर्शन में काफी सुधार किया, और जितना संभव हो उतना कस कर उन्हें बढ़ाया। (हाँ, मैंने प्रोफाइल किया; सवाल में कार्य रन का 80% लिया।मैं भी ठेठ इनपुट से अधिक बार बेंचमार्क, तो मैं परिवर्तन में मदद की थी।)
इसके अलावा, करने वाला है कि कुशल कोड के पक्ष में विकसित करने में कोई बुराई नहीं है। सी ++ में, आप पहले से वेतन वृद्धि का उपयोग कर की आदत में मिलता है (++ i) के बजाय बाद वेतन वृद्धि (i ++) पाश चर बढ़ाने के लिए करना चाहिए। यह आमतौर पर कोई फर्क नहीं पड़ता, लेकिन एक महत्वपूर्ण अंतर कर सकता है, यह कोड को कम पठनीय या लिखने योग्य नहीं बनाता है, और चोट नहीं पहुंचाएगा।
स्रोत
2008-11-12 18:43:56
@monoxide से उत्तर देखें। यह भाषा अज्ञेयवादी टैग नहीं किया जाना चाहिए और मुझे लगता है कि अगर आपको पता है कि कौन सी भाषा/कंपाइलर वे अनुकूलित करने की कोशिश कर रहे हैं तो आपको बेहतर जवाब मिलेंगे। –
सहमत हैं, ऑप्टिमाइज़ेशन भाषा विशिष्ट है, और जिस तरीके से आप सवाल करते हैं, वैसे ही आप एक विशेष मंच को लक्षित करने के लिए नीचे आते हैं (ओप टाइम्स अलग-अलग सीपीयू के लिए अलग-अलग होते हैं) – Oskar
टैग की आवश्यकता है-स्पष्टीकरण – Sklivvz