std::list::sort() में अचानक टॉप-डाउन रणनीति पर स्विच क्यों?
विजुअल स्टूडियो में 2015 (वीएस2015), माइक्रोसॉफ्ट ने पारंपरिक से std::list::sort() की सॉर्टिंग रणनीति को बदल दिया बॉटम-अप मर्ज को टॉप-डाउन दृष्टिकोण के अनुसार क्रमबद्ध करें। इस परिवर्तन ने सूचियों की आंतरिक सरणी के उपयोग को समाप्त कर दिया और मूल सूची के भीतर क्रमबद्ध रन सीमाओं को ट्रैक करने के लिए पुनरावृत्तियों को अपनाया।
परिवर्तन के कारण
स्टीफ़न टी. लावेज़ टॉप-डाउन दृष्टिकोण के विकासकर्ता ने मेमोरी आवंटन से बचने और गैर-डिफ़ॉल्ट आवंटनकर्ताओं के निर्माण की आवश्यकता का हवाला दिया। VS2015 ने ऐसे एलोकेटर पेश किए जो अब डिफ़ॉल्ट रूप से रचनात्मक और स्टेटफुल नहीं थे, जो पिछले बॉटम-अप दृष्टिकोण का उपयोग करते समय समस्याएं उत्पन्न करते थे।
टॉप-डाउन दृष्टिकोण का कार्यान्वयन
शीर्ष -डाउन दृष्टिकोण एक पुनरावर्ती एल्गोरिदम का उपयोग करता है जो सूची को पुनरावर्ती रूप से आधे में विभाजित करता है जब तक कि यह आधार मामलों तक नहीं पहुंच जाता है जहां सूचियां खाली होती हैं या इसमें शामिल होता है एकल तत्व. फ़ंक्शन _सॉर्ट सूची को तीन खंडों में विभाजित करता है: बायां रन, दायां रन, और अंतिम इटरेटर। अपवाद सुरक्षा बनाए रखते हुए, मूल सूची के भीतर नोड्स को स्थानांतरित करने के लिए std::list::splice का उपयोग करके मर्ज तर्क निष्पादित किया जाता है।
प्रदर्शन संबंधी विचार
जबकि ऊपर से नीचे दृष्टिकोण मेमोरी आवंटन संबंधी चिंताओं को संबोधित करता है, यह मूल बॉटम-अप मर्ज सॉर्ट की तुलना में प्रदर्शन दंड के साथ आता है। बिखरे हुए नोड्स वाली बड़ी सूचियों के लिए, ऊपर से नीचे का दृष्टिकोण बढ़े हुए कैश मिस से ग्रस्त है, जिसके परिणामस्वरूप निष्पादन समय धीमा हो जाता है। ऐसे मामलों में, सूची को किसी सरणी या वेक्टर में ले जाना, उसे सॉर्ट करना और क्रमबद्ध सरणी या वेक्टर से एक नई सूची बनाना तेज़ हो सकता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3