一尘不染

.NET反射的“成本”是多少?[重复]

c#

这个问题已经在这里有了答案

7年前关闭。

可能的重复:
.NET反射的成本是多少?

我目前的编程思想是反思是我最好的朋友。我经常使用它来动态加载允许“宽松实现”而不是严格接口的内容,以及许多自定义属性。

使用反射的“实际”成本是多少?

对于频繁反映的类型进行缓存反映是否值得付出努力,例如在表定义的所有属性上使用我们自己的LINQ DAL前对象代码吗?

缓存内存占用量是否会超过反射CPU的使用量?


阅读 284

收藏
2020-05-19

共1个答案

一尘不染

反射需要加载并处理大量类型的元数据。这会导致更大的内存开销和较慢的执行。根据本文,属性修改的速度要慢2.5到3倍,而方法调用的速度要慢3.5到4倍。

这是一篇很棒的MSDN文章,概述了如何使反射更快以及开销在哪里。如果您想了解更多信息,我强烈建议您阅读。

反射还会增加代码的复杂性,这会使代码更加混乱,因此很难使用。像斯科特·汉塞尔曼(Scott
Hanselman)
这样的人相信,通过反思,您经常遇到的问题比您解决的更多。如果您的团队主要是初级开发人员,则尤其如此。

如果您需要大量动态行为,则最好研究一下DLR(动态语言运行时)。随着.NET
4.0中的新更改,您可能需要查看是否可以将其中的某些内容合并到解决方案中。VB和C#对动态的附加支持使动态代码的使用非常优雅,并且可以很直接地创建自己的动态对象。

祝好运。

编辑:我在斯科特(Scott)的网站上做了更多的戳记,并在反思中发现了这个播客。我没有听过,但也许值得。

2020-05-19