首页 新闻 会员 周边

反射为什么会造成性能丢失

0
悬赏园豆:10 [待解决问题]

使用反射为什么会存在性能问题。面试的时候面试官说反射会造成大量资源占用具体是怎么回事呢?

lihelin的主页 lihelin | 初学一级 | 园豆:51
提问于:2016-09-20 11:25
< >
分享
所有回答(7)
0

反射要去倒元数据中用字符串匹配找到对应的入口点。

Daniel Cai | 园豆:10424 (专家六级) | 2016-09-20 11:30
0

这面试官是看书的吧,面试你一个毕业生的也就能问问这种问题了。所以你也去看面试宝典就好了。

爱编程的大叔 | 园豆:30839 (高人七级) | 2016-09-20 11:31

不是的。应用上我都能搞定~问完之后问我底层了 真不太了解

支持(0) 反对(0) lihelin | 园豆:51 (初学一级) | 2016-09-20 11:33

@lihelin: 反射确实是基础知识,你应用懂的话,需要看一下,然后面试官估计就不如你了,

反射的性能损失对于大部分的场景可以忽略不计,

只有收入特别高的人(比如月入100K以上)或者毕业生才Care 反射的性能损失。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30839 (高人七级) | 2016-09-20 11:35

@爱编程的大叔: 然后他跟我说了一些 反射会导致占用资源和内存释放这一块的问题

基础的反射性能那些我都知道的。资源与内存占用这一块是怎么回事您知道吗~

支持(0) 反对(0) lihelin | 园豆:51 (初学一级) | 2016-09-20 11:42

@lihelin: 他胡说八道,或者你传达有误,我哪里知道。

基础知识你多看看书,尽信书和尽信人都不好,自己多看多想,不要迷信权威或者面试官。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30839 (高人七级) | 2016-09-20 11:46
0

反射对性能会有一些影响,大多数情况下可以忽略不计。

空明流光 | 园豆:106 (初学一级) | 2016-09-20 11:33
0

你不用反射,直接就是代码,当然比用反射快点,就好比一座山,如果本来就有路(不用反射)当然比没有路,你自己先开拓一条路(反射)快了,至于说“大量资源占用”就不知道什么意思了

顾晓北 | 园豆:10844 (专家六级) | 2016-09-20 11:34
1

下次有人问你反射,你就问:你公司用的什么框架开发啊?

如果是webform和mvc或是.core。

你就问,微软的框架里面用这么多反射,你是怎么对框架进行优化的啊?

如果对方答没有,你就鄙视他。。。

路过秋天 | 园豆:4787 (老鸟四级) | 2016-09-20 15:12
0

确实 只知道反射会影响点性能 但是很多书上都没讲为什么 !

 

狂扁小朋友 | 园豆:10 (初学一级) | 2016-09-20 18:49
1

对反射的性能损失最大的出现在GetType()和GetMethod()这几个操作上面,因为是通过字符串遍历程序集寻找的,没有直接调用的快,至于说耗性能,我想说,大概跟你从一堆字符串里面查子串差不多的效果。只要你不一万次循环里面每次都GetType...这些东西,就没有性能问题,至于说Invoke/SetValue之类的成员操作,性能和你直接操作是一样的。总的来说,反射确实不如直接写性能来得好,因为直接写那个耗时非常非常小,有时候几个或者几十个CPU周期就差不多了,而你遍历字符串,虽然可能就几毫秒或者几毫秒都不到,但是,依然比前者高出几个数量级。然后事实上,好多东西的对比只拿数量级来对比是有失分寸的,不过这也造成了好多人喜欢拿这个吹牛逼的原因。用反射可以省去几百行代码,减少多种现在开发以及将来维护人工编码可能产生的Bug,而代价就是多用几毫秒甚至几毫秒不到的时间。那么 ,这又算得了什么呢?

ensleep | 园豆:1682 (小虾三级) | 2016-09-21 22:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册