जो तेज़ है; event.Invoke(args)
का उपयोग करके, या बस event(args)
पर कॉल करें। क्या फर्क पड़ता है? एक दूसरे की तुलना में तेज़ या धीमा है; या यह सिर्फ वरीयता का मामला है?घटना। इन्वोक (तर्क) बनाम घटना (तर्क)। कौन सा तेज़ है?
उत्तर
लेखन someDelegate(...)
someDelegate.Invoke(...)
के लिए एक कंपाइलर शॉर्टेंड है।
वे दोनों उसी प्रतिनिधि आईडी Invoke
विधि के लिए एक ही आईएल — callvirt
निर्देश के लिए संकलित करते हैं।
Invoke
विधि प्रत्येक ठोस प्रतिनिधि प्रकार के लिए कंपाइलर द्वारा उत्पन्न की जाती है।
इसके विपरीत, विधि, Delegate
प्रकार पर परिभाषित विधि, प्रतिनिधि को कॉल करने के लिए प्रतिबिंब का उपयोग करती है और धीमी है।
जब आप event(args)
पर कॉल करते हैं, तो सी # कंपाइलर इसे event.Invoke(args)
के लिए आईएल कॉल में बदल देता है। यह वही बात है - string
या System.String
का उपयोग करना।
दोनों तरीकों से बिल्कुल वही आईएल उत्पन्न करना समाप्त होता है, इसलिए उन्हें कॉल करने में कोई अंतर नहीं होता है।
कहा जा रहा है कि, यदि आपके पास प्रदर्शन समस्याएं हैं, तो इस तरह के बदलाव आपको बहुत मदद करने की संभावना नहीं रखते हैं। यदि आपके पास प्रदर्शन समस्याएं नहीं हैं, तो इस तरह के प्रश्न पूछने का कोई कारण नहीं है।
सी # 6.0, Invoke
में null-conditionals की शुरूआत के बाद से प्रतिनिधियों की थ्रेड-सुरक्षित नल-जांच को सरल बनाने के लिए उपयोग किया जा सकता है। कहाँ आपने पहले कुछ की तरह
var handler = event;
if (handler != null)
handler(args);
?.
के संयोजन और Invoke
आप बस लिखने के लिए अनुमति देता है क्या करना है जाएगा
event?.Invoke(args)
- 1. पुनरावर्ती घटना तर्क
- 2. Dispatchertimer.Tick घटना में एक अतिरिक्त तर्क भेज
- 3. कौन सा जावास्क्रिप्ट पुस्तकालयों में घटना प्रतिनिधिमंडल है?
- 4. सब्सक्राइबर विधि बनाम घटना
- 5. accdb बनाम एमडीबी। कौन सा तेज़/बेहतर है?
- 6. array_push() बनाम $ सरणी [] = .... सबसे तेज़ कौन सा है?
- 7. रेगेक्स बनाम मैनुअल तुलना। कौन सा तेज़ है?
- 8. OnNavigatedTo लोड घटना बनाम
- 9. घटना तर्क के साथ जावास्क्रिप्ट सेटटाइमआउट फ़ंक्शन कॉल?
- 10. अभिव्यक्ति बनाम Func तर्क
- 11. क्रोनबॉज या MySQL घटना?
- 12. numpy.max या अधिकतम? कौन सा तेज़ है?
- 13. कौन सा तेज़ है और क्यों?
- 14. कौन सा तेज़ है? तुलना या असाइनमेंट?
- 15. घटना
- 16. स्थितित्मक तर्क बनाम vs.s. कीवर्ड तर्क
- 17. पायथन सामान्य तर्क बनाम कीवर्ड तर्क
- 18. सी # घटना
- 19. AuthenticateRequest घटना
- 20. घटना लूप बनाम Multithread आईओ
- 21. घटना बाइंडिंग - jQuery बनाम जावास्क्रिप्ट
- 22. घटना
- 23. func_get_args बनाम स्पष्ट तर्क
- 24. विलुप्त घटना वी टिक घटना?
- 25. एक्शन <T> बनाम प्रतिनिधि घटना
- 26. सी # कस्टम घटना संचालकों
- 27. घटना, प्रतिनिधि या इंटरफेस?
- 28. एमवीसी व्यू बनाम एचटीएमएलहेपर बनाम सशर्त तर्क
- 29. कौन सा बेहतर है? निजी स्थिर बनाम निजी
- 30. BackgroundWorker RunWorker पूर्ण घटना
आप इसे खुद की कोशिश की? प्रोफाइल करें और देखें कि कौन सा बेहतर प्रदर्शन करता है? –
कुछ क्लाइंट होने पर कोई फर्क नहीं पड़ता है, लेकिन मुझे चिंता है कि जब मैं इसे स्केल करता हूं तो क्या हो सकता है। मुझे इसे अपने नए उत्पाद में प्रकाशित करने से पहले निर्णय लेना होगा, जब एक कंप्यूटर संभावित रूप से हजारों नेटवर्क कनेक्शन से निपटने में सक्षम हो सकता है। – IDWMaster
यह अच्छा होगा अगर कोई यह समझा सके कि दो तरीकों को लागू करने के तरीके में अंतर क्या है। – IDWMaster