ประสิทธิภาพการสะท้อนแสงจะขึ้นอยู่กับการใช้งาน (ควรทำการแคชซ้ำ ๆ เช่น: entity.GetType().GetProperty("PropName")
) เนื่องจากภาพสะท้อนส่วนใหญ่ที่ฉันเห็นในแต่ละวันใช้เพื่อเติมข้อมูลเอนทิตีจากตัวอ่านข้อมูลหรือโครงสร้างชนิดพื้นที่เก็บข้อมูลอื่น ๆ ฉันตัดสินใจที่จะเปรียบเทียบประสิทธิภาพการทำงานของการสะท้อนเมื่อมันถูกใช้เพื่อรับหรือตั้งค่าคุณสมบัติวัตถุ
ฉันคิดการทดสอบที่ฉันคิดว่ามีความยุติธรรมเพราะมันเก็บสายที่เกิดขึ้นซ้ำทั้งหมดและเฉพาะเวลาที่โทร SetValue หรือ GetValue จริง ซอร์สโค้ดทั้งหมดสำหรับการทดสอบประสิทธิภาพอยู่ใน bitbucket ที่: https://bitbucket.org/grenade/accessortest https://bitbucket.org/grenade/accessortestการตรวจสอบข้อเท็จจริงยินดีต้อนรับและสนับสนุน
ข้อสรุปที่ฉันได้มาคือมันไม่สามารถนำไปปฏิบัติได้จริงและไม่มีการปรับปรุงประสิทธิภาพที่เห็นได้ชัดเจนเพื่อลบการสะท้อนกลับในชั้นการเข้าถึงข้อมูลที่ส่งคืนน้อยกว่า 100,000 แถวต่อครั้งเมื่อการใช้การสะท้อนนั้นทำได้ดี
กราฟข้างต้นแสดงให้เห็นถึงผลลัพธ์ของการวัดประสิทธิภาพมาตรฐานขนาดเล็กของฉันและแสดงให้เห็นว่ากลไกที่มีประสิทธิภาพสูงกว่าการสะท้อนกลับทำได้เพียงสังเกตเห็นได้ชัดหลังจากเครื่องหมาย 100,000 รอบ DAL ส่วนใหญ่จะกลับมาหลายร้อยหรือหลายพันแถวต่อครั้งและในระดับเหล่านี้การสะท้อนก็ทำได้ดี