गो की स्लाइस क्षमता में कमी: विचार करने योग्य मुद्दा
गो में बड़े डेटासेट के साथ काम करते समय, यह आश्चर्य होना स्वाभाविक है कि क्या कोई है एक स्लाइस की क्षमता को कम करके मेमोरी उपयोग को अनुकूलित करने का तरीका। अन्य भाषाओं में, realloc() जैसा फ़ंक्शन हमें किसी सरणी के आवंटित मेमोरी आकार को बदलने की अनुमति देता है। हालाँकि, गो में स्लाइस के लिए एक समतुल्य तंत्र का अभाव है।
गो में, एपेंड() फ़ंक्शन का उपयोग आमतौर पर स्लाइस को बढ़ाने के लिए किया जाता है। हालाँकि, जब इसका उपयोग स्लाइस के आकार को कम करने के लिए किया जाता है, तो यह वास्तव में क्षमता को कम नहीं करता है। इसके बजाय, यह वांछित आकार के साथ एक नया स्लाइस बनाता है और तत्वों की प्रतिलिपि बनाता है। जब हम बड़े स्लाइस के आकार को काफी कम कर देते हैं तो इससे अनावश्यक मेमोरी खपत हो सकती है।
गो में एक प्रभावी "रियललोक" करने के लिए, आप निम्नलिखित कोड का उपयोग कर सकते हैं:
a = append([]T(nil), a[:newSize]...)
यह स्निपेट शून्य बैकिंग ऐरे के साथ एक नया स्लाइस बनाता है और पहले newSize तत्वों को जोड़ता है इसके मूल टुकड़े का। यदि कंपाइलर यह निर्धारित करता है कि पुराने बैकिंग ऐरे की अब आवश्यकता नहीं है, तो वह इसे कचरा एकत्रित कर देगा। हालाँकि, यह ध्यान रखना महत्वपूर्ण है कि यह C में realloc() के मामले में गारंटीकृत इन-प्लेस आकार परिवर्तन नहीं है। नकल करने वाले तत्वों के कारण प्रदर्शन जुर्माना। इस तकनीक का उपयोग करते समय मेमोरी खपत और प्रदर्शन के बीच व्यापार-बंद का मूल्यांकन करना महत्वपूर्ण है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3