सामान्य तौर पर, किसी समस्या का सबसे महत्वपूर्ण समाधान वह होता है जो वास्तव में मौजूद होता है और मामलों के लिए मान्य होता है क्योंकि वे आपकी समस्या के लिए मौजूद होते हैं। दूसरे शब्दों में, समय से पहले अनुकूलन से बचें जब तक कि आप वास्तव में नहीं जानते हैं कि आपके पास अक्षम कोड है, या कुशल कोड है जिसे तेज करने की आवश्यकता है।
इसके अलावा, यह न भूलें कि आपके आवेदन का सबसे अच्छा समाधान सामान्य मामला समाधान नहीं हो सकता है। मामला और बिंदु, कुछ साल पहले एक प्रोफेसर ने हमारी कक्षा को एक समस्या दी जिसमें हम किसी दिए गए प्रकार के पहले 10 नंबरों को प्रिंट करने के लिए थे (क्षमा करें, मेरी स्मृति मुझे टाइप करने में विफल रहती है, लेकिन यह अधिक असामान्य संख्या में से एक थी। कक्षाएं) और हमें यह सुनिश्चित करने के लिए जांचने के लिए एक परीक्षण दिया गया था कि नंबर दिया गया प्रकार था। यह समस्या थी जो हमें दी गई थी और हमें बताया गया था कि अगले दिन इसका पूरा श्रेय प्राप्त करने वाले सबसे कुशल समाधान के कारण है। निम्नलिखित व्याख्यान में प्रोफेसर ने परिणामों को संक्षेप में प्रस्तुत किया:
- कुछ छात्रों ने एक सरल लूप का उपयोग किया और यह सुनिश्चित करने के लिए कि नंबर सही थे या नहीं, यह जांचने के लिए प्रदान किया गया फॉर्मूला, धीमी गति से लेकिन काम पूरा कर लिया, O (n ^ 3)
- अन्य छात्रों ने अपना शोध किया और एक सूत्र पाया कि जाँच का बेहतर काम यह सुनिश्चित करने के लिए था कि एक दी गई संख्या वैध थी, ये कार्यक्रम बहुत तेज़ी से चले, O (n ^ 2)।
- एक छात्र ने मूल्यों को उत्पन्न करने के लिए धीमे सूत्र का उपयोग किया और फिर उन्हें अपने कोड में एक स्थिर सरणी में कॉपी किया और उस सामग्री को प्रदर्शित किया, O (n)।
प्रोफेसर द्वारा अंतिम समाधान को सबसे कुशल माना गया था। यह बताता है कि समस्या वास्तव में समस्या को पूरी तरह से समझने और केवल बाहर जाने और सबसे कुशल समाधान खोजने की कवायद थी।
ऊपर का मुद्दा यह है कि जब यह एक कुशल समाधान खोजने की समस्या आती है तो आमतौर पर यह सुनिश्चित करने के लिए समय बिताने के लिए बेहतर होता है कि आप वास्तव में समझें कि समस्या क्या है, कोड लिखने और कोड को अनुकूलित करने का प्रयास करने से पहले। यदि आप एक निरंतर सरणी में संदर्भ मानों के एक सेट को स्टोर कर सकते हैं तो आप कुछ फैंसी एल्गोरिदम को लिखने की कोशिश करने की तुलना में प्रदर्शन के दृष्टिकोण से बेहतर कर सकते हैं।
इसी तरह, यह मत भूलो कि अधिकांश अनुप्रयोगों के लिए, केवल वे लोग जो अक्षम कोड को देखते हैं (जब यह अक्षम की आवश्यकता नहीं है!) स्वयं डेवलपर्स हैं। यदि आप साफ कोड लिखते हैं जो केवल वही करता है जो उसे करने की आवश्यकता होती है, तो संभावना यह है कि आपके प्रोग्राम के साथ काम करते समय उपयोगकर्ताओं के प्रदर्शन के मुद्दों को नोटिस करने के लिए अधिकांश समय नहीं होता है और जब वे सिर्फ उन हिस्सों का अनुकूलन करते हैं जिनका वे उल्लेख करते हैं आप।