(为什么).Net 中的反射如此昂贵? [复制]

2023-12-24

可能的重复:
反思的“成本”是多少? https://stackoverflow.com/questions/224232/what-is-the-cost-of-reflection

有没有人对普遍接受的口头禅有一个很好的解释reflection == bad performance?

例如,与直接访问所有属性相比,迭代类型的属性集合并从该类型的实例中提取所有属性值的成本有多高?一个数量级?二?它取决于什么?这是可以预测的吗?幕后发生了什么?

EDIT:感谢到目前为止的回答。我查看了您提供的一些链接,与直接访问相比,关于属性反射的估计似乎存在巨大差距:从慢 2.5 倍到慢 200 倍。

这对我来说似乎不太合理。你们中的一些人提到了 .Net 更高版本中的性能改进,因此让我们将我的问题缩小到 .Net 4.0。有人对此有任何基准吗?


最好的答案是,普遍接受的口头禅并不像看起来那么简单。reflection == bad performance主要起源于.NET 1.0和1.1,并没有承认更高版本中的性能改进。

客观地说,我曾多次测试基于反射的解决方案与基于非反射的解决方案,但获胜者并不总是其中之一。反射就是它的本质,它是如何工作的,它不是一致地更快或更慢,并且它(与基本上所有编程方法一样)不能被视为灵丹妙药或始终要避免的东西。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(为什么).Net 中的反射如此昂贵? [复制] 的相关文章

随机推荐