Possible Duplicate:
How costly is .NET reflection?
我现在有一种编程心态,认为反射是我最好的朋友.我经常使用它来动态加载允许"松散实现"而不是严格接口的内容,以及许多自定义属性.
使用反射的"真正"成本是多少?
对于频繁反射的类型来说,缓存反射是否值得,比如我们自己的预LINQ DAL对象代码对所有属性到表定义进行缓存反射?
缓存内存占用是否会超过反射CPU使用率?
Possible Duplicate:
How costly is .NET reflection?
我现在有一种编程心态,认为反射是我最好的朋友.我经常使用它来动态加载允许"松散实现"而不是严格接口的内容,以及许多自定义属性.
使用反射的"真正"成本是多少?
对于频繁反射的类型来说,缓存反射是否值得,比如我们自己的预LINQ DAL对象代码对所有属性到表定义进行缓存反射?
缓存内存占用是否会超过反射CPU使用率?
反射需要加载并处理大量类型元数据.这可能会导致更大的内存开销和更慢的执行.根据this article,属性修改大约慢2.5x-3x,方法调用慢3.5x-4x.
下面是一篇优秀的MSDN article篇文章,概述了如何加快反射速度,以及开销在哪里.如果你想了解更多,我强烈建议你阅读.
还有一个复杂的因素,反射可能会增加代码的复杂性,这使得代码更加混乱,因此难以处理.有些人,比如Scott Hanselman人,相信通过反思,你经常制造出比你解决的问题更多的问题.如果你的团队大多是初级开发人员,情况尤其如此.
如果需要很多动态行为,那么最好查看DLR(动态语言运行时).随着新变化的到来.NET 4.0您可能想看看是否可以将其中的一部分合并到您的解决方案中.VB和C增加了对动态的支持,使得使用动态代码非常优雅,创建自己的动态对象非常简单.
祝你好运
编辑:我在斯科特的网站上做了更多的搜索,在反思中找到了这podcast个.我没听过,但可能值得一段时间.