"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > गो में स्लाइस क्षमता की कमी क्यों होती है और इसे कैसे दूर किया जाए?

गो में स्लाइस क्षमता की कमी क्यों होती है और इसे कैसे दूर किया जाए?

2024-12-10 को प्रकाशित
ब्राउज़ करें:657

Why Does Go Lack Slice Capacity Shrinkage and How to Overcome It?

गो की स्लाइस क्षमता में कमी: विचार करने योग्य मुद्दा

गो में बड़े डेटासेट के साथ काम करते समय, यह आश्चर्य होना स्वाभाविक है कि क्या कोई है एक स्लाइस की क्षमता को कम करके मेमोरी उपयोग को अनुकूलित करने का तरीका। अन्य भाषाओं में, realloc() जैसा फ़ंक्शन हमें किसी सरणी के आवंटित मेमोरी आकार को बदलने की अनुमति देता है। हालाँकि, गो में स्लाइस के लिए एक समतुल्य तंत्र का अभाव है।

गो में, एपेंड() फ़ंक्शन का उपयोग आमतौर पर स्लाइस को बढ़ाने के लिए किया जाता है। हालाँकि, जब इसका उपयोग स्लाइस के आकार को कम करने के लिए किया जाता है, तो यह वास्तव में क्षमता को कम नहीं करता है। इसके बजाय, यह वांछित आकार के साथ एक नया स्लाइस बनाता है और तत्वों की प्रतिलिपि बनाता है। जब हम बड़े स्लाइस के आकार को काफी कम कर देते हैं तो इससे अनावश्यक मेमोरी खपत हो सकती है।

गो में एक प्रभावी "रियललोक" करने के लिए, आप निम्नलिखित कोड का उपयोग कर सकते हैं:

a = append([]T(nil), a[:newSize]...)

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

विज्ञप्ति वक्तव्य यह लेख यहां पुनर्मुद्रित है: 1729661835 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.कॉम से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3