为什么C#中的反射性能很差?

yma*_*man 0 c# reflection

可能重复:
反射真的很慢吗?

人们经常告诉我,反思的表现很差,但为什么呢?我搜索了有关反射的细节,想知道它的机制和"表现不佳"的秘密,但没有任何用处.有人可以告诉我关键或一些信息吗?越详细越好.

Han*_*ant 7

两个方面.首先是找到元数据,第二次查找它时速度很快.您第一次倾向于支付少量页面错误以将数据从程序集中获取到RAM中.之后缓存.你倾向于第一次关心(或测量).

第二个是直接调用方法或访问字段或属性非常快.它通常不会花费超过一个或两个cpu周期.当方法可以内联或字段访问可以与另一个指令重叠时包括none.反思总是与之相比较差,需要数百条指令.

当其他代码花费大量时间时,反射是一种合适的解决方案,因此反射成本是一个很小的因素.其中包括涉及文件格式和dbase映射等I/O的任何内容.和人类时代运行的代码,如设计师和编译器.