खोज…


आवंटन प्रदर्शन

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

स्टैक से आवंटन और डीलॉलेटिंग एक बहुत ही कुशल संचालन है, हालांकि तुलना में ढेर आवंटन महंगा है। प्रदर्शन के लिए डिजाइन करते समय, आपको इसे ध्यान में रखना चाहिए।

क्लास:

class MyClass {

    let myProperty: String

}

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

structs:

struct MyStruct {

    let myProperty: Int

}

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

स्ट्रिंग्स और गुणों वाली कक्षाओं के बारे में चेतावनी

जबकि संरचनाएं आम तौर पर कक्षाओं की तुलना में शेपर होती हैं, आपको उन गुणों से सावधान रहना चाहिए जो कि कक्षाएं हैं:

struct MyStruct {

    let myProperty: MyClass

}

यहां, संदर्भ गिनती और अन्य कारकों के कारण, प्रदर्शन अब एक वर्ग के समान है। इसके अलावा, यदि संरचना में एक से अधिक संपत्ति एक वर्ग है, तो प्रदर्शन प्रभाव इससे भी अधिक नकारात्मक हो सकता है यदि संरचना इसके बजाय एक वर्ग थी।

इसके अलावा, जब स्ट्रिंग्स संरचनात्मक होते हैं, तो वे आंतरिक रूप से अपने पात्रों को ढेर पर संग्रहीत करते हैं, इसलिए अधिकांश संरचनाओं की तुलना में अधिक महंगे होते हैं।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow