जब अनुकूलन समय से पहले नहीं होता है और इसलिए बुराई नहीं है?


75

"समय से पहले अनुकूलन सभी बुराई की जड़ है" कुछ ऐसा है जो लगभग हम सभी ने सुना / पढ़ा है। मैं उत्सुक हूं कि किस तरह का अनुकूलन समय से पहले नहीं होता है, यानी सॉफ़्टवेयर डेवलपमेंट के हर चरण में (उच्च स्तर का डिज़ाइन, विस्तृत डिज़ाइन, उच्च स्तर का कार्यान्वयन, विस्तृत कार्यान्वयन आदि) हम किस सीमा तक अनुकूलन कर सकते हैं, इसके बिना हम अंधेरे पक्ष को पार कर सकते हैं।



जवाबों:


116

जब आप इसे अनुभव से दूर कर रहे हैं? बुराई नहीं। "हर बार हमने एक्स किया है, हमने एक क्रूर प्रदर्शन को प्रभावित किया है। आइए इस बार एक्स को पूरी तरह से अनुकूलित या टालने की योजना बनाएं।"

जब यह अपेक्षाकृत दर्द रहित होता है? बुराई नहीं। "इसे फू या बार के रूप में लागू करने में सिर्फ उतना ही काम लगेगा, लेकिन सिद्धांत रूप में, बार को बहुत अधिक कुशल होना चाहिए। चलो इसे बार करें।"

जब आप भद्दे एल्गोरिदम से बच रहे हैं जो बहुत पैमाने पर होगा? बुराई नहीं। "हमारी टेक लीड कहती है कि हमारा प्रस्तावित पथ चयन एल्गोरिथ्म तथ्यात्मक समय में चलता है; मुझे यकीन नहीं है कि इसका क्या मतलब है, लेकिन वह सुझाव देती है कि हम इस पर विचार करने के लिए भी सेपुकू करें। चलो कुछ और विचार करें।"

बुराई बहुत सारा समय और ऊर्जा को हल करने की समस्याओं को खर्च करने से आती है जो आपको नहीं पता कि वास्तव में मौजूद हैं। जब समस्याएँ निश्चित रूप से मौजूद होती हैं, या जब प्रेत-समस्याएँ हल हो सकती हैं, तो बुराई दूर हो जाती है।


स्टीव 314 और मैथ्यू एम। उन टिप्पणियों में अंक बढ़ाते हैं जिन पर विचार किया जाना चाहिए। मूल रूप से, "पीड़ारहित" अनुकूलन की कुछ किस्में केवल इसके लायक नहीं हैं क्योंकि तुच्छ प्रदर्शन उन्नयन जो वे पेश करते हैं वह कोड अवरोध के लायक नहीं है, वे वृद्धि को दोहरा रहे हैं संकलक पहले से ही प्रदर्शन कर रहा है, या दोनों। बहुत चालाक-बाई-आधे गैर-सुधार के कुछ अच्छे उदाहरणों के लिए टिप्पणियाँ देखें।


22
कभी-कभी, एक प्रेत समस्या को आसानी से हल करना अभी भी हल्के से बुराई है, क्योंकि इससे कोड को बनाए रखने के लिए कठिन पढ़ने में मुश्किल हो सकती है। बहुत कठिन नहीं है (या यह एक आसान समाधान नहीं होगा), लेकिन शायद कभी-कभी अभी भी प्रासंगिक है। एक उदाहरण एक चतुर बिटकॉइन ट्रिक का उपयोग हो सकता है जिसे कुछ लोग पहचान नहीं पाएंगे, और जो संकलक शायद वैसे भी लागू होगा यदि यह उपयोगी है।
स्टीव ३१

26
मैं स्टीव के साथ यहां सहमत हूं, कभी-कभी "अनुकूलन" बस इसके लायक नहीं है, खासकर क्योंकि संकलक बहुत अच्छे हैं। उदाहरण ? यदि iअहस्ताक्षरित है, तो उसके i / 2द्वारा प्रतिस्थापित किया जा सकता है i >> 1। यह तेज है। लेकिन यह भी अधिक गूढ़ है (हर कोई प्रभाव नहीं देखेगा, यहां तक ​​कि जो लोग समय खो सकते हैं)। लेकिन इसका सबसे बुरा यह है कि संकलक इसे वैसे भी करेगा, इसलिए स्रोत कोड को क्यों रोकें?);
मैथ्यू एम।

19
@ लॉरी: मैंने ऐसा नहीं किया, इसलिए मुझे लगता है कि यह एक अच्छा उदाहरण है।
जोरिस मेय्स

18
मेरे विचार में, अनुकूलन, यहां तक ​​कि सरल लोगों को भी बुराई माना जाना चाहिए, यदि वे कोड के रीडाबिली / अनुरक्षण को प्रभावित करते हैं और वास्तविक प्रदर्शन माप पर आधारित नहीं हैं।
बार्ट वैन इनगेन शनाउ

14
@ मैथ्यू: उन्हें सिखाओ क्या? गन्दी और अनावश्यक तरकीबें? क्यों? यदि प्रोफाइलिंग से पता चलता है कि i/2यह वास्तव में एक गर्म स्थान है और यह (अविश्वसनीय है, लेकिन मान i>>1लेते हैं) इसे और तेज़ बनाता है, तो इसे करें, और इस पर टिप्पणी करें कि इस रूपरेखा ने दिखाया कि यह तेज़ है। अगर यह वास्तव में कहीं भी आवश्यक है (जो मुझे संदेह है, चूंकि, मैथ्यू ने कहा, संकलक को स्वयं ऐसा करने के लिए पर्याप्त स्मार्ट होना चाहिए), नौसिखिया कुछ सीखेंगे, अगर यह (जो कि संभावना नहीं है), तो आप प्लग क्यों करना चाहते हैं अनावश्यक लोकगीतों के साथ उनके सिर?
sbi

38

एप्लिकेशन कोड केवल उतना ही अच्छा होना चाहिए जितना आवश्यक हो, लेकिन लाइब्रेरी कोड जितना संभव हो उतना अच्छा होना चाहिए, क्योंकि आप कभी नहीं जानते कि आपकी लाइब्रेरी का उपयोग कैसे किया जा रहा है। इसलिए जब आप लाइब्रेरी कोड लिख रहे हों, तो उसे सभी पहलुओं में अच्छा होना चाहिए, प्रदर्शन, मजबूती या अन्य किसी भी श्रेणी में।

इसके अलावा, आपको प्रदर्शन के बारे में सोचने की ज़रूरत है जब आप अपना एप्लिकेशन डिज़ाइन करते हैं और जब आप एल्गोरिदम चुनते हैं । यदि यह प्रदर्शन करने के लिए डिज़ाइन नहीं किया गया है, तो हैकरी की कोई भी डिग्री इसे बाद में प्रदर्शन योग्य नहीं बना सकती है और कोई भी माइक्रो-ऑप्टिमाइज़ेशन एक बेहतर एल्गोरिथ्म को आगे नहीं बढ़ाएगा।


5
लाइब्रेरी कोड को दस्तावेज़ करना चाहिए कि क्या वह "जितना संभव हो उतना अच्छा" बनने की कोशिश कर रहा है, या इसका उद्देश्य क्या है। उपयोगी होने के लिए कोड की बिल्कुल आवश्यकता नहीं है, बशर्ते कि उपभोक्ता केवल उचित होने पर इसका उपयोग करें।
सुपरकैट

1
क्षमा करें, लेकिन "सभी पहलुओं में अच्छा है" संदिग्ध रूप से अतिरंजना की तरह लगता है। इसके अलावा, यह शायद यथार्थवादी नहीं है - जीवन हमेशा व्यापार के बारे में है।
सालेके

1
डिजाइन चरण पर जोर देने के लिए +1; यदि आप जानबूझकर इसके लाभों का वजन कर रहे हैं, तो यह समय से पहले नहीं है।
नाथन तुग्गी

इसके विपरीत, यदि आप कभी नहीं जानते कि आपकी लाइब्रेरी का उपयोग कैसे किया जा रहा है, तो आप यह नहीं जानते हैं कि इसे बेहतर बनाने के लिए समय व्यतीत करने का कोई व्यवसायिक मूल्य है। तो यह शायद ही कोई तर्क है।
रेमकोगर्लिच

25

किस प्रकार का अनुकूलन [है] समय से पहले नहीं

ज्ञात मुद्दों के परिणामस्वरूप आने वाला प्रकार।


17

जब अनुकूलन समय से पहले नहीं होता है और इसलिए बुराई नहीं है?

यह कहना मुश्किल है कि अच्छाई और बुराई क्या है। किसका अधिकार है? अगर हम प्रकृति को देखें, तो ऐसा लगता है कि हम "अस्तित्व" की एक व्यापक परिभाषा के साथ अस्तित्व के लिए प्रोग्राम किए गए हैं, जिसमें हमारे जीन से लेकर वंश तक शामिल हैं।

इसलिए मैं कहूंगा कि कम से कम हमारे बुनियादी कार्यों और प्रोग्रामिंग के अनुसार, यह अनुकूलन बुराई नहीं है जब यह प्रजनन के लक्ष्य के साथ संरेखित हो। दोस्तों के लिए, गोरे, वालियां, लाल-सिर, कई प्यारे हैं। लड़कियों के लिए, लड़के होते हैं, और उनमें से कुछ ठीक दिखाई देते हैं।

शायद हमें उस उद्देश्य के लिए अनुकूलन करना चाहिए, और वहाँ यह एक प्रोफाइलर का उपयोग करने में मदद करता है। प्रोफाइलर आपको हॉटस्पॉट्स और वे क्यों होते हैं, के बारे में विस्तृत जानकारी देने के लिए आपकी आशाओं और समय को अधिक प्रभावी ढंग से प्राथमिकता देगा। यह आपको प्रजनन और उसकी खोज के लिए अधिक खाली समय देगा।


3
यह देखने के लिए ताज़ा है कि कोई व्यक्ति इस पुराने चेस्टनट के लिए ताज़ा ले आए। यह सब नथ की पूरी बोली को पढ़ना है, न कि केवल एक वाक्य, एह?
रॉबर्ट हार्वे

1
@RobertHarvey मेरे पास वहां एक छोटा सा पालतू जानवर है - चूंकि बहुत से लोग बस एक वाक्य उद्धृत करते हैं, और बहुत महत्वपूर्ण संदर्भ जानकारी प्रक्रिया में खो जाने के कारण समाप्त हो जाती है। मुझे यकीन नहीं है कि यह एक महान जवाब है क्योंकि मुझे एक टैड रैंटी मिला है। :-D

14

पूर्ण उद्धरण को परिभाषित करता है जब अनुकूलन समय से पहले नहीं है:

एक अच्छे प्रोग्रामर को इस तरह के तर्क से शालीनता में नहीं लिया जाएगा, वह महत्वपूर्ण कोड को ध्यान से देखने के लिए बुद्धिमान होगा; लेकिन उसके बाद ही कोड की पहचान की गई है । [जोर मेरा]

आप कई तरीकों से महत्वपूर्ण कोड की पहचान कर सकते हैं: महत्वपूर्ण डेटा संरचनाएं या एल्गोरिदम (जैसे कि भारी या परियोजना का "कोर") प्रमुख अनुकूलन दे सकते हैं, कई मामूली अनुकूलन को प्रोफाइलर्स के माध्यम से पहचाना जाता है, और इसी तरह।


6
हाँ ... यह सब ठीक है और अच्छा है कि जब कोई रैंडम फ़ंक्शन कॉल लेता है, तो 90% से दाढ़ी करें, लेकिन शायद आप उस कोड को देखकर एक बड़ा प्रभाव प्राप्त करेंगे जहां आपका ऐप वास्तव में अपने समय का 80% खर्च करता है और एक शेविंग करता है कुछ प्रतिशत वहाँ।

11

आपको हमेशा अपने अनुभवों के आधार पर सभी मामलों में "अच्छा पर्याप्त" समाधान चुनना चाहिए।

अनुकूलन कह रहा है कि "वास्तव में इसे और अधिक तेज बनाने के लिए" इसे और अधिक जटिल कोड लिखने के लिए संदर्भित करता है "वास्तव में यह जानने से पहले कि यह आवश्यक है, इसलिए कोड को आवश्यक से अधिक जटिल बना देता है। जटिलता वह है जो चीजों को कठिन बनाती है, इसलिए यह अच्छी बात नहीं है।

इसका मतलब है कि आपको एक सुपर कॉम्प्लेक्स नहीं चुनना चाहिए "डिस्क को नियमित रूप से स्वैप करने के लिए पारदर्शी रूप से स्वैप करके 100 जीबी फाइलें सॉर्ट कर सकते हैं" जब एक साधारण सॉर्ट करेगा, लेकिन आपको पहले स्थान पर सरल सॉर्ट के लिए एक अच्छा विकल्प भी बनाना चाहिए। ब्लाइंड बबल सॉर्ट चुनना या "सभी प्रविष्टियों को यादृच्छिक रूप से चुनें और देखें कि क्या वे क्रम में हैं। दोहराएं।" शायद ही कभी अच्छा होता है।


3

मेरे अंगूठे का सामान्य नियम: यदि आप सुनिश्चित नहीं हैं कि आपको अनुकूलन की आवश्यकता होगी, तो मान लें कि आप नहीं हैं। लेकिन जब आपको अनुकूलन करने की आवश्यकता हो तब इसे ध्यान में रखें। कुछ मुद्दे हैं जिन्हें आप सामने वाले के बारे में जान सकते हैं। इसमें आमतौर पर अच्छे एल्गोरिदम और डेटा संरचनाओं को चुनना शामिल है। उदाहरण के लिए, यदि आपको किसी संग्रह में सदस्यता की जांच करने की आवश्यकता है, तो आप सुनिश्चित कर सकते हैं कि आपको किसी प्रकार के सेट डेटा संरचना की आवश्यकता होगी।


3

मेरे अनुभव में, विस्तृत कार्यान्वयन चरण में उत्तर कोड को प्रोफाइल करने में निहित है। यह जानना महत्वपूर्ण है कि तेजी से बढ़ने की क्या जरूरत है और क्या तेजी से स्वीकार करना है।

यह जानना भी महत्वपूर्ण है कि वास्तव में प्रदर्शन की अड़चन कहां है - कोड के एक भाग का अनुकूलन करना जो अभ्यस्त चलाने के लिए कुल समय का केवल 5% लेता है।

चरण 2 और 3 गैर-समयपूर्व अनुकूलन का वर्णन करते हैं:

  1. इसे काम करने लायक बनाओ
  2. परीक्षा। पर्याप्त तेजी नहीं? इसे प्रोफाइल करें
  3. चरण 2 से डेटा का उपयोग करते हुए, कोड के सबसे धीमे वर्गों को अनुकूलित करें।

आप चरण 0 को भूल गए, जो है: एप्लिकेशन को ठीक से आर्किटेक्ट करें ताकि आप शुरू से ही उचित प्रदर्शन की उम्मीद कर सकें।
रॉबर्ट हार्वे

मैं केवल विस्तृत कार्यान्वयन चरण के बारे में बोल रहा था।
गोर्गी कोसेव

1
मैं चरण # 3 पर सवाल उठाता हूं - बहुत बार सबसे अच्छा जवाब एक अलग दृष्टिकोण का पता लगाना होता है, इसलिए आप पहली बार में कोड की धीमी गति से नहीं कर रहे हैं।
लोरेन Pechtel

1
सही डेटा संरचनाएँ चुनें।
जसकॉन

3

यह उन चीजों को चुनते समय अनुकूलन नहीं है जिन्हें बदलना मुश्किल है जैसे: हार्डवेयर प्लेटफॉर्म।

डेटा संरचनाओं को चुनना एक अच्छा उदाहरण है - कार्यात्मक और गैर-कार्यात्मक (प्रदर्शन) दोनों आवश्यकताओं को पूरा करने के लिए महत्वपूर्ण है। आसानी से बदला नहीं गया है और फिर भी यह आपके ऐप में बाकी सब कुछ चला देगा। आपकी डेटा संरचनाएं एल्गोरिदम उपलब्ध हैं जो बदलते हैं आदि।


3

मुझे इस प्रश्न का उत्तर देने का केवल एक तरीका पता है, और वह है प्रदर्शन ट्यूनिंग में अनुभव प्राप्त करना। इसका मतलब है कि - कार्यक्रम लिखें, और उनके लिखे जाने के बाद , उनमें स्पीडअप खोजें, और इसे पुनरावृत्त करें। यहाँ एक उदाहरण है।

यहां वह गलती है जो ज्यादातर लोग करते हैं: वे वास्तव में इसे चलाने से पहले कार्यक्रम को अनुकूलित करने का प्रयास करते हैं। यदि उन्होंने प्रोग्रामिंग में एक कोर्स लिया है (एक प्रोफेसर से जो वास्तव में बहुत व्यावहारिक अनुभव नहीं है) तो उनके पास बड़े-ओ रंगीन चश्मे होंगे, और वे सोचेंगे कि यह सब क्या है । यह सभी समान समस्या है, पूर्व अनुकूलन। **

किसी ने कहा: पहले इसे ठीक करो, फिर इसे जल्दी करो। वे सही थे।

लेकिन अब किकर के लिए: यदि आपने ऐसा कुछ बार किया है, तो आप उन मूर्खतापूर्ण चीजों को पहचानते हैं जो आपने पहले की गति की समस्याओं का कारण बनते हैं, इसलिए आप सहज रूप से उनसे बचें। (आपकी कक्षा संरचना को बहुत भारी बनाने, सूचनाओं के साथ झूलते हुए, अपने समय की लागत के साथ फ़ंक्शन कॉल के भ्रमित आकार, सूची आगे बढ़ती है ...) आप सहज रूप से इन से बचते हैं, लेकिन अनुमान लगाते हैं कि यह कैसा दिखता है- अनुभवी: समय से पहले अनुकूलन!

तो इन मूर्खतापूर्ण बहस पर और पर :)

** एक और बात वे कहते हैं कि आपको इसके बारे में अधिक चिंता करने की ज़रूरत नहीं है, क्योंकि कंपाइलर बहुत अच्छे हैं, और मशीनें आजकल बहुत तेज़ हैं। (KWWI - आयरन के साथ इसे मार डालो।) कोई घातीय हार्डवेयर या सिस्टम स्पीडअप (बहुत स्मार्ट हार्ड-वर्किंग इंजीनियरों द्वारा किया गया) है जो संभवतः घातीय सॉफ्टवेयर मंदी (इस तरह से सोचने वाले प्रोग्रामर द्वारा किए गए) के लिए क्षतिपूर्ति कर सकते हैं।


2

जब आवश्यकताओं या बाजार विशेष रूप से इसके लिए पूछता है।

उदाहरण के लिए प्रदर्शन सबसे अधिक वित्तीय अनुप्रयोगों में एक आवश्यकता है क्योंकि कम विलंबता महत्वपूर्ण है। ट्रेडेड इंस्ट्रूमेंट की प्रकृति के आधार पर, अनुकूलन उच्च-स्तरीय भाषा में गैर-लॉकिंग एल्गोरिदम का उपयोग करके निम्न-स्तर की भाषा और यहां तक ​​कि चरम पर भी जा सकता है - हार्डवेयर में ही ऑर्डर मैचिंग एल्गोरिदम को लागू करना (उदाहरण के लिए FPGA का उपयोग करना) )।

अन्य उदाहरण कुछ प्रकार के एम्बेडेड उपकरण होंगे। उदाहरण के लिए ABS ब्रेक लें; सबसे पहले सुरक्षा है, जब आप ब्रेक मारते हैं तो कार को धीमा करना चाहिए। लेकिन प्रदर्शन भी है, जब आप ब्रेक मारते हैं तो आप कोई देरी नहीं चाहेंगे।


0

यदि आप प्रदर्शन के कारण सिस्टम के "सॉफ्ट फेल" (यह काम करता है लेकिन यह अभी भी बेकार है) में नहीं है, तो अधिकांश लोग अनुकूलन को समय से पहले कहेंगे।

वास्तविक दुनिया उदाहरण।

  • अगर मेरा बबल सॉर्ट चलने में 20ms लगता है, तो इसे 1ms क्विकॉर्ट के लिए अनुकूलित करना 2000% प्रदर्शन वृद्धि होने के बावजूद किसी भी सार्थक तरीके से समग्र उपयोगिता को बढ़ाने वाला नहीं है।

  • यदि कोई वेब पेज लोड होने में 20s लेता है और हम इसे 1s तक घटा देते हैं, तो इससे वेबसाइट की उपयोगिता 0 से बढ़कर अनंत तक पहुंच सकती है। मूल रूप से कुछ है जो टूट गया था क्योंकि यह बहुत धीमा था, अब उपयोगी है।


यह ध्यान रखना महत्वपूर्ण है कि यदि आपके प्रोग्राम के दौरान आपके सॉर्ट को 1000 बार कहा जाता है, तो 20ms से 1ms तक अनुकूलन एक बड़ी बात है।
बीफस्टर

0

किस प्रकार का अनुकूलन समय से पहले नहीं है?

एक अनुकूलन जो आपके आवेदन के साथ एक ज्ञात प्रदर्शन समस्या को ठीक करता है, या एक अनुकूलन जो आपके आवेदन को अच्छी तरह से परिभाषित स्वीकृति मानदंडों को पूरा करने की अनुमति देता है।

पहचाने जाने के बाद, फिक्स को स्थापित करने के लिए कुछ समय लिया जाना चाहिए और प्रदर्शन लाभ को मापा जाना चाहिए।

(यानी यह नहीं है - "मुझे लगता है कि कोड का यह बिट ऐसा लगता है जैसे यह धीमा हो सकता है, मैं इसके बदले वाई का उपयोग करने के लिए एक्स बदलूंगा और यह तेज हो जाएगा")।

मुझे समय से पहले "अनुकूलन" का बहुत सामना करना पड़ा है जिसने अंततः कोड को धीमा कर दिया है - इस उदाहरण में, मैं समय से पहले 'के माध्यम से नहीं सोचा' का अर्थ ले रहा हूं। अनुकूलन से पहले और बाद में प्रदर्शन को बेंचमार्क किया जाना चाहिए और केवल उस कोड को रखा जाना चाहिए जो वास्तव में प्रदर्शन को बेहतर बनाता है।


0

"समय से पहले अनुकूलन सभी बुराई की जड़ है" कुछ ऐसा है जो लगभग हम सभी ने सुना / पढ़ा है

सच। दुर्भाग्य से यह भी सभी समय के सबसे दुर्भावनापूर्ण (दुर्भावनापूर्ण) प्रोग्रामिंग उद्धरणों में से एक है। चूंकि डोनाल्ड नुथ ने मेमे को गढ़ा है, यह उद्धरण से कुछ मूल संदर्भ जोड़ने के लायक है:

हमें छोटी क्षमताओं के बारे में भूलना चाहिए, समय के 97% के बारे में कहना चाहिए: समय से पहले अनुकूलन सभी बुराई की जड़ है। फिर भी हमें उस महत्वपूर्ण 3% में अपने अवसरों को पारित नहीं करना चाहिए। ... एक अच्छा प्रोग्रामर ... महत्वपूर्ण कोड को ध्यान से देखने के लिए बुद्धिमान होगा; लेकिन उसके बाद ही कोड की पहचान की गई है। ... माप उपकरणों का उपयोग करने वाले प्रोग्रामर का सार्वभौमिक अनुभव यह रहा है कि उनके सहज अनुमान विफल हो जाते हैं

ध्यान दें कि नूथ ने विशेष रूप से रनटाइम में निष्पादन की गति के बारे में बात की थी ।

..प्रोग्रामर्स के बारे में सोचने या उनके कार्यक्रमों के गैर-महत्वपूर्ण हिस्सों की गति के बारे में सोचने या सोचने में बहुत समय बर्बाद होता है ।

इसके अलावा, उन्होंने 1974 में लेख लिखा था जब किसी भी मशीन संसाधन जहां प्रीमियम और नकारात्मक सहसंबंध निष्पादन की गति और कार्यक्रम की स्थिरता (उच्च गति - कम बनाए रखने योग्य) के बीच शायद अब से अधिक मजबूत था।

ठीक है, आपके प्रश्न का उत्तर देने के लिए, डोनाल्ड नथ के अनुसार, अनुकूलन समय से पहले नहीं है यदि यह एक गंभीर प्रदर्शन अड़चन को ठीक करता है जिसे पहचान लिया गया है (आदर्श रूप से प्रोफाइलिंग के दौरान मापा और पिनपॉइंट किया गया है)।

जैसा कि मैंने पहले कहा, "समय से पहले अनुकूलन" सबसे दुर्भावनापूर्ण रूप से दुरुपयोग की गई यादों में से एक है, इसलिए उत्तर उन चीजों के कुछ उदाहरणों के बिना पूरा नहीं होगा जो समय से पहले अनुकूलन नहीं हैं लेकिन कभी-कभी इस तरह से बंद हो जाते हैं:

  • अड़चनें जो नग्न आंखों के साथ दिखाई देती हैं और बड़े एन के साथ डेटाबेस में ओ (एन ^ 2) राउंडट्रिप्स की संख्या से पहले पेश होने से बचा जा सकता है जहां ओ (1) विकल्प मौजूद है

इसके अलावा रनटाइम निष्पादन की गति से संबंधित नहीं हैं:

  • विचारशील अग्रिम डिजाइन

  • स्थिर टाइपिंग (!)

  • आदि / मानसिक प्रयासों के किसी भी रूप

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.