यह संदर्भ-निर्भर होगा।
"फिक्सिंग एक द्विघात रनटाइम प्रदर्शन बग" आम तौर पर मैं जो देखता हूं। हालांकि, चाहे वह फिक्सिंग (एक कोड परिवर्तन) के लिए संदर्भ-निर्भर हो।
ध्यान रखें कि डेटाबेस समय जटिलता में सुधार करने के लिए बहुत सारे उपकरण प्रदान करते हैं। उदाहरण के लिए, किसी डेटाबेस से शीर्ष एन परिणाम प्राप्त करने के लिए, बस इतना कहें। जब अक्षम कुंडली को अंतर्निर्मित अनुकूलित कॉल में परिवर्तित किया जाता है, तो स्पष्टीकरण अतिश्योक्तिपूर्ण लगता है।
जिस कारण से मैं एक कोड समीक्षा (चर्चा) के लायक होने के लिए द्विघात रनटाइम के साथ एक एल्गोरिथ्म पर विचार करता हूं क्योंकि यह धीमा है, क्योंकि यह सापेक्ष है (घातीय की तुलना में द्विघात तेज है), लेकिन क्योंकि मानव अंतर्ज्ञान (जैसे आपके ग्राहक, या) साथी प्रोग्रामर) एक सॉफ्टवेयर कार्यक्षमता के साथ सहज रूप से असहज होते हैं जो रोज़मर्रा की ज़िंदगी से उम्मीदों के मिश्रण के कारण रैखिक क्रम से बहुत दूर हो जाते हैं।
सॉफ्टवेयर प्रदर्शन के बारे में ग्राहकों की बहुत सारी शिकायतें इन दो श्रेणियों में आती हैं:
संपूर्ण प्रणाली (सॉफ्टवेयर और हार्डवेयर) अनुमानित उपयोग के आधार पर निर्दिष्ट की गई थी। पिछले हफ्ते, सब कुछ ठीक चलता है, एक निश्चित कार्यक्षमता 5 सेकंड से कम समय लेती है। इस हफ्ते, एक अद्यतन स्थापित करने के बाद, एक ही कार्यक्षमता 1 मिनट से अधिक समय लेती है।
- यह पहले के बेंचमार्क प्रदर्शन के साथ तुलना है। ग्राहक भविष्य के प्रदर्शन को मानव समय-पैमाने (सेकंड से मिनट तक) के पूर्ण यार्डस्टिक में रखता है।
मैंने सिस्टम को 100 नौकरियां दीं। किसी एकल कार्य के लिए लगने वाले समय की तुलना में इसे 400x प्रक्रिया करने में समय क्यों लग रहा है?
- ग्राहक प्रसंस्करण समय को रैखिक होने की उम्मीद करता है। वास्तव में, ग्राहक समझ नहीं सकता है या स्वीकार नहीं करता है कि ऐसे कार्य मौजूद हैं जो रैखिक की तुलना में धीमे हैं।
इस कारण से, ग्राहक निष्पादन समय को बग होने पर विचार करेगा यदि दोनों सत्य हैं:
- रैखिक की तुलना में धीमी
- ध्यान देने योग्य (यानी मानव समय सीमा के भीतर (सेकंड या मिनट से अधिक) विशिष्ट कार्य आकार दिए गए हैं)
वैध तर्क जो बताते हैं कि द्विघात रनटाइम एल्गोरिथ्म एक समस्या उत्पन्न नहीं करता है (यानी कोड परिवर्तन के लायक नहीं है):
- आमतौर पर इस द्विघात रनटाइम फ़ंक्शन द्वारा संभाले गए कार्य का आकार कुछ हद तक बंधा हुआ है
- विशिष्ट आकार सीमा को देखते हुए, वास्तविक (पूर्ण) निष्पादन समय अभी भी खारिज किए जाने के लिए काफी छोटा है
- यदि कोई उपयोगकर्ता वास्तव में एक कार्य प्रस्तुत करने की कोशिश करता है जो ध्यान देने योग्य है, तो उपयोगकर्ता को लंबे समय तक चलने के बारे में एक चेतावनी मिलेगी।
- सिस्टम के उपयोगकर्ता सभी विशेषज्ञ हैं, इसलिए वे जानते हैं कि वे क्या कर रहे हैं। उदाहरण के लिए, एपीआई के उपयोगकर्ताओं को एपीआई प्रलेखन पर बढ़िया प्रिंट पढ़ना चाहिए।
विशिष्ट अनुप्रयोग विकास के लिए उपयोगी बहुत सारे एल्गोरिदम वास्तव में रैखिक की तुलना में धीमे होते हैं (ज्यादातर ओ (एन लॉग एन), जैसे कि छंटाई में), इसलिए बड़े पैमाने पर सॉफ़्टवेयर वास्तव में समाधान करने की कोशिश करेंगे, जो केवल प्रासंगिक भाग को छांट कर करते हैं। डेटा, या हिस्टोग्राम (सांख्यिकीय) फ़िल्टरिंग तकनीकों का उपयोग करें जो समान प्रभाव प्राप्त करता है।
यह सॉफ़्टवेयर ग्राहकों पर लागू होता है, लेकिन यदि आप किसी सॉफ़्टवेयर लाइब्रेरी या API फ़ंक्शन के उपयोगकर्ताओं को "ग्राहक" मानते हैं, तो उत्तर अभी भी लागू होगा।