可能的重复:
.NET 反射的成本有多高?
我目前的编程心态是反思是我最好的朋友。我经常使用它来动态加载内容,允许“松散实现”而不是严格的接口,以及许多自定义属性。
使用反射的“实际”成本是多少?
对于频繁反射的类型是否值得付出努力来缓存反射,例如我们自己的针对表定义的所有属性的前 LINQ DAL 对象代码?
缓存内存占用是否会超过反射 CPU 使用量?
反射需要加载大量的类型元数据然后进行处理。这可能会导致更大的内存开销和更慢的执行速度。根据本文属性修改速度大约慢 2.5 倍到 3 倍,方法调用速度慢 3.5 倍到 4 倍。
这里有一个优秀的MSDN 文章概述如何使反射更快以及开销在哪里。如果您想了解更多信息,我强烈建议您阅读。
反射还可以增加代码的复杂性,使其变得更加混乱,从而难以使用。有些人,比如斯科特·汉塞尔曼相信通过使用反思,你常常会制造出比解决的问题更多的问题。如果您的团队主要是初级开发人员,情况尤其如此。
如果您需要大量动态行为,您最好研究一下 DLR(动态语言运行时)。随着 .NET 4.0 中出现的新变化,您可能想看看是否可以将其中的一些变化合并到您的解决方案中。 VB 和 C# 增加的对动态的支持使得使用动态代码变得非常优雅,并且可以相当直接地创建您自己的动态对象。
祝你好运。
编辑:我又浏览了斯科特的网站,发现了这个podcast关于反思。我没有听过,但可能值得一听。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)