প্রতিবিম্ব কর্মক্ষমতা বাস্তবায়নের উপর নির্ভর করবে (পুনরাবৃত্ত কলগুলি ক্যাশে করা উচিত যেমন entity.GetType().GetProperty("PropName")
:)। যেহেতু আমি প্রতিদিন ভিত্তি করে দেখি বেশিরভাগ প্রতিবিম্বটি ডেটা পাঠক বা অন্যান্য সংগ্রহস্থল ধরণের কাঠামোগত সত্তাগুলি সঞ্চিত করতে ব্যবহৃত হয় আমি যখন কোনও বস্তুর বৈশিষ্ট্য পেতে বা সেট করতে ব্যবহৃত হয় তখন বিশেষভাবে প্রতিচ্ছবিতে পারফরম্যান্সকে বেঞ্চমার্ক করার সিদ্ধান্ত নিয়েছিলাম।
আমি একটি পরীক্ষা তৈরি করেছি যা আমি ন্যায্য বলে মনে করি যেহেতু এটি সমস্ত পুনরাবৃত্তি কল এবং কেবল সেটওয়ালু বা গেটভ্যালু কলকে কেবলমাত্র ক্যাশ করে। পারফরম্যান্স পরীক্ষার জন্য সমস্ত উত্স কোডটি এখানে বিটবাকেটে রয়েছে: https://bitbucket.org/grenade/accessortest । যাচাই-বাছাই স্বাগত এবং উত্সাহিত হয়।
আমি যে উপসংহারে এসেছি তা হ'ল এটি ব্যবহারিক নয় এবং প্রতিচ্ছবি বাস্তবায়নটি ভালভাবে সম্পন্ন হওয়ার সাথে সাথে এমন একটি ডেটা অ্যাক্সেস লেয়ারের প্রতিফলন অপসারণের লক্ষণীয় পারফরম্যান্সের উন্নতি সরবরাহ করে না যা প্রতি সময়ে প্রতিচ্ছবি বাস্তবায়ন ভালভাবে সম্পন্ন হওয়ার সাথে সাথে 100,000 সারি থেকেও কম ফিরে আসে।
উপরের গ্রাফটি আমার সামান্য বেঞ্চমার্কের আউটপুট প্রদর্শন করে এবং দেখায় যে প্রতিরোধগুলি প্রতিফলনকে ছাড়িয়ে যায় এমন পদ্ধতিগুলি কেবলমাত্র 10,000,000 চক্রের চিহ্নের পরে লক্ষণীয়ভাবে এটি করে। বেশিরভাগ ডালগুলি একসাথে কেবল কয়েক শতাধিক বা সম্ভবত কয়েক হাজার সারি ফেরত দেয় এবং এই স্তরে প্রতিবিম্বটি কেবল সূক্ষ্ম সম্পাদন করে।