使用反射为什么会存在性能问题。面试的时候面试官说反射会造成大量资源占用具体是怎么回事呢?
反射要去倒元数据中用字符串匹配找到对应的入口点。
这面试官是看书的吧,面试你一个毕业生的也就能问问这种问题了。所以你也去看面试宝典就好了。
不是的。应用上我都能搞定~问完之后问我底层了 真不太了解
@lihelin: 反射确实是基础知识,你应用懂的话,需要看一下,然后面试官估计就不如你了,
反射的性能损失对于大部分的场景可以忽略不计,
只有收入特别高的人(比如月入100K以上)或者毕业生才Care 反射的性能损失。
@爱编程的大叔: 然后他跟我说了一些 反射会导致占用资源和内存释放这一块的问题
基础的反射性能那些我都知道的。资源与内存占用这一块是怎么回事您知道吗~
@lihelin: 他胡说八道,或者你传达有误,我哪里知道。
基础知识你多看看书,尽信书和尽信人都不好,自己多看多想,不要迷信权威或者面试官。
反射对性能会有一些影响,大多数情况下可以忽略不计。
你不用反射,直接就是代码,当然比用反射快点,就好比一座山,如果本来就有路(不用反射)当然比没有路,你自己先开拓一条路(反射)快了,至于说“大量资源占用”就不知道什么意思了
下次有人问你反射,你就问:你公司用的什么框架开发啊?
如果是webform和mvc或是.core。
你就问,微软的框架里面用这么多反射,你是怎么对框架进行优化的啊?
如果对方答没有,你就鄙视他。。。
确实 只知道反射会影响点性能 但是很多书上都没讲为什么 !
对反射的性能损失最大的出现在GetType()和GetMethod()这几个操作上面,因为是通过字符串遍历程序集寻找的,没有直接调用的快,至于说耗性能,我想说,大概跟你从一堆字符串里面查子串差不多的效果。只要你不一万次循环里面每次都GetType...这些东西,就没有性能问题,至于说Invoke/SetValue之类的成员操作,性能和你直接操作是一样的。总的来说,反射确实不如直接写性能来得好,因为直接写那个耗时非常非常小,有时候几个或者几十个CPU周期就差不多了,而你遍历字符串,虽然可能就几毫秒或者几毫秒都不到,但是,依然比前者高出几个数量级。然后事实上,好多东西的对比只拿数量级来对比是有失分寸的,不过这也造成了好多人喜欢拿这个吹牛逼的原因。用反射可以省去几百行代码,减少多种现在开发以及将来维护人工编码可能产生的Bug,而代价就是多用几毫秒甚至几毫秒不到的时间。那么 ,这又算得了什么呢?