प्रतिबिंब प्रदर्शन कार्यान्वयन पर निर्भर करेगा (दोहराव वाले कॉल कैश किए जाने चाहिए उदाहरण: entity.GetType().GetProperty("PropName")
)। चूंकि अधिकांश प्रतिबिंब मैं दिन-दर-दिन आधार पर देखता हूं, डेटा पाठकों या अन्य भंडार प्रकार संरचनाओं से इकाइयों को पॉप्युलेट करने के लिए उपयोग किया जाता है, इसलिए मैंने ऑब्जेक्ट गुणों को प्राप्त करने या सेट करने के लिए उपयोग किए जाने पर विशेष रूप से प्रतिबिंब पर प्रदर्शन को बेंचमार्क करने का निर्णय लिया है।
मैंने एक परीक्षण तैयार किया जो मुझे लगता है कि यह उचित है क्योंकि यह सभी दोहराने वाली कॉलों को कैश करता है और केवल वास्तविक सेटवैल्यू या गेटवाल्लू कॉल को कैश करता है। प्रदर्शन परीक्षण के लिए सभी स्रोत कोड बिटबकेट में हैं: https://bitbucket.org/grenade/accessortest। जांच का स्वागत है और प्रोत्साहित किया जाता है।
निष्कर्ष यह है कि यह व्यावहारिक नहीं है और यह डेटा पहुंच परत में प्रतिबिंब को हटाने के लिए ध्यान देने योग्य प्रदर्शन सुधार प्रदान नहीं करता है जो प्रतिबिंब कार्यान्वयन अच्छी तरह से किया जाता है जब एक समय में 100,000 से कम पंक्तियों को वापस कर रहा है ।
ग्राफ़ के ऊपर मेरी छोटी बेंचमार्क के उत्पादन को दर्शाता है और पता चलता है कि तंत्र कि प्रतिबिंब मात, केवल 100,000 चक्र चिह्न के बाद इतना काफ़ी है। अधिकांश डीएएल केवल एक समय में कई सौ या शायद हजारों पंक्तियां लौटाते हैं और इन स्तरों पर प्रतिबिंब ठीक प्रदर्शन करता है।
आप इस प्रश्न को भी देखना चाहते हैं। http://stackoverflow.com/questions/224232/what-is-the-cost-of-reflection – smaclell
fastflect.codeplex.com पर एपीआई का उपयोग करें। यह गेटर्स/सेटर्स/इनवॉकर्स और कुछ अन्य सामानों के लिए 500x की तरह प्रतिबिंब बढ़ाएगा। स्रोत और जानकारी यह कैसे काम करती है, यह भी है यदि आपको इसे विस्तारित करने की आवश्यकता है। –
2014 में यह जानकारी कैसे जांचती है? इन 4 वर्षों में कुछ भी बदल गया? – Arnthor