反思真的很慢,我不应该在它有意义时使用它吗?

Pro*_*ame 18 .net c# vb.net oop reflection

可能重复:
.NET反射的代价是多少?

我遇到的问题的"优雅"解决方案是使用属性将类及其属性与另一个类相关联.问题是,要将它转换为另一个,我必须使用反射.我正在考虑将其托管在云端的服务器端应用程序.

我听过很多关于"反射很慢,不使用它"的隆隆声,慢得多慢?它是如此占用CPU密集度,以至于它会大大增加我的CPU时间,以至于我真的要为我决定在云端架构底部使用反射付出代价吗?

Dan*_*ker 29

万一你没有看到原始问题的更新:当你反思找到支持某个属性的所有类型时,你就有了使用缓存的绝佳机会.这意味着您不必在运行时多次使用反射.

要回答一般性问题,反射比原始编译方法调用慢,但它比访问数据库或文件系统要快得多,实际上所有Web服务器都会一直执行这些操作.

  • +1用于缓存结果.如果您将反射看作就像从文件系统中读取信息一样,那么您就不会出错 - 做到这一点,但不是经常发生. (2认同)

yfe*_*lum 16

它比文件系统访问快许多倍.

它比网络上的数据库访问快许多倍.

它比向浏览器发送HTTP响应快许多倍.


Esk*_*ola 8

可能你甚至都不会注意到它.在考虑优化之前始终先进行分析.