हिम तेंदुए में पेश की जाने वाली वस्तुओं को अवरुद्ध करने वाली चीजों में से एक ऐसी स्थितियों के लिए अच्छी है जो पहले कॉलबैक के साथ संभाली गई थीं। वाक्यविन्यास चारों ओर संदर्भ पारित करने के लिए बहुत साफ है। हालांकि, मैंने इस तरह से ब्लॉक का उपयोग करने के प्रदर्शन के प्रभाव पर कोई जानकारी नहीं देखी है। क्या, यदि कोई है, तो मुझे ब्लॉक का उपयोग करते समय प्रदर्शन त्रुटियों को देखना चाहिए, खासकर सी-स्टाइल कॉलबैक के प्रतिस्थापन के रूप में?ब्लॉक और कॉलबैक के बीच प्रदर्शन अंतर क्या है?
उत्तर
ब्लॉक रनटाइम बहुत तंग दिखता है। ब्लॉक डिस्क्रिप्टर और फ़ंक्शंस को आवंटित आवंटित किया जाता है, इसलिए वे आपके प्रोग्राम के कामकाजी सेट को बढ़ा सकते हैं, लेकिन आप संलग्न स्कोप से संदर्भित चर के लिए केवल "भुगतान" करते हैं। गैर-वैश्विक ब्लॉक अक्षर और __block
किसी भी शाखा के बिना ढेर पर चर का निर्माण किया जाता है, इसलिए आप उससे अधिक मंदी में भागने की संभावना नहीं रखते हैं। ब्लॉक को कॉल करना सिर्फ result = (*b->__FuncPtr)(b, arg1, arg2)
है; यह result = (*callback_func_ptr)(callback_ctx, arg1, arg2)
से तुलनीय है।
यदि आप ब्लॉक के बारे में सोचते हैं, "कॉलबैक जो अपनी खुद की संदर्भ संरचना लिखते हैं और आपके लिए बदसूरत पैकिंग, मेमोरी प्रबंधन, कास्टिंग और डिफ्रेंसिंग को संभालते हैं," मुझे लगता है कि आपको पता चलेगा कि ब्लॉक रनटाइम पर एक छोटी सी लागत है और प्रोग्रामिंग समय में एक बड़ी बचत।
आप this blog post और this one देख सकते हैं। ब्लॉक को ऑब्जेक्टिव-सी ऑब्जेक्ट्स के रूप में कार्यान्वित किया जाता है, सिवाय इसके कि उन्हें स्टैक पर रखा जा सकता है, इसलिए उन्हें malloc
'डी होना जरूरी नहीं है (यदि आप किसी ब्लॉक के संदर्भ को बनाए रखते हैं, तो इसे ढेर पर कॉपी किया जाएगा) । इस प्रकार वे अधिकतर उद्देश्य-सी ऑब्जेक्ट्स से बेहतर प्रदर्शन करेंगे, लेकिन एक साधारण कॉलबैक की तुलना में थोड़ा सा प्रदर्शन होगा - मुझे लगता है कि यह 95% समय की समस्या नहीं होनी चाहिए।
- 1. प्रदर्शन के बीच कोई अंतर और प्रदर्शन ब्लॉक
- 2. हुक और कॉलबैक के बीच क्या अंतर है?
- 3. पर्यवेक्षकों और कॉलबैक के बीच बड़ा चित्र अंतर क्या है?
- 4. इवेंट हैंडलर और कॉलबैक के बीच अंतर
- 5. एनएसआईएनवोकेशन और ब्लॉक के बीच क्या अंतर है?
- 6. HttpModule और Global.aspx के बीच प्रदर्शन अंतर क्या है?
- 7. क्या डीबग और रिलीज के बीच कोई (प्रदर्शन) अंतर है?
- 8. डीवी के रूप में अंतर और प्रदर्शन के साथ एक स्पैन के बीच अंतर: ब्लॉक
- 9. ++ iterator और iterator ++ के बीच प्रदर्शन अंतर?
- 10. हैंडल और धागे के बीच क्या अंतर है?
- 11. ब्लॉक-स्तर बॉक्स और प्रिंसिपल ब्लॉक-स्तरीय बॉक्स के बीच क्या अंतर है?
- 12. इन दो सी ++ कोड ब्लॉक के बीच क्या अंतर है?
- 13. क्या जावाक डीबग के बीच में कोई प्रदर्शन अंतर है?
- 14. ओरेकल और पोस्टग्रेएसक्यूएल के बीच प्रदर्शन अंतर कितना बड़ा है?
- 15. # {} $ {} और% {} के बीच क्या अंतर है?
- 16. [अपरिभाषित] और [,] के बीच क्या अंतर है?
- 17. $ और $$ के बीच क्या अंतर है?
- 18. के बीच क्या अंतर है:। और: आर !?
- 19. भिन्नता और '-' के बीच क्या अंतर है?
- 20. "$^एन" और "$ +" के बीच क्या अंतर है?
- 21. file_get_contents और fread बीच क्या अंतर है
- 22. क्लाइंट कॉलबैक और अजाक्स पेज विधियों के बीच अंतर - एएसपी.नेट
- 23. ब्लॉक कॉलबैक
- 24. त्रुटि हैंडलिंग ब्लॉक में रेज़्यूम और गोटो के बीच अंतर
- 25. के बीच क्या अंतर है?
- 26. अंतर और कहां के बीच क्या अंतर है?
- 27. ब्लॉक परिभाषा - ब्रेसिज़ और डू-एंड के बीच अंतर?
- 28. प्रतिनिधि उदाहरण और विधि सूचक के बीच क्या अंतर है?
- 29. जावा में, this.method() और विधि() के बीच क्या अंतर है?
- 30. String.matches और Matcher.matches के बीच क्या अंतर है?
माइक एश पोस्ट पर अच्छी कॉल। – Don
कॉलबैक की तुलना में ब्लॉक के साथ कैप्चरिंग तंत्र का उल्लेख करने के लिए एक बात भी है। –