小白提问#局部变量和成员变量按理论哪个取值更快些呢

SS-雨 2018-01-03 10:51:03

局部变量和成员变量按理论哪个取值更快些呢,想多了解些原理,非常感谢
...全文
264 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
秋的红果实 2018-01-03
  • 打赏
  • 举报
回复
个人观点 成员变量是和方法一起加载到内存的,在方法调用前,已经分配了内存 方法内的局部变量,是在方法调用时才分配内存的,要慢些
ourhouzi 2018-01-03
  • 打赏
  • 举报
回复
局部变量是在栈里面 成员变量是在堆里面 理论上是局部变量快点,但是这个差距几乎可以忽略
  • 打赏
  • 举报
回复
这个不都是直接对应地址么,只有作用域之分,哪有快慢之分……
wanghui0380 2018-01-03
  • 打赏
  • 举报
回复
就问题来说,局部寻址快一点,因为局部寻址通常被编译成直接将某个地址的值放到寄存器,而非静态的成员变量首先拿到的是对象基地址,然后根据成员和方法表得到偏移量,在相对寻址到值。 当然这种玩意本身其实不是程序员关心的,因为程序员的核心任务是高效,稳定。就跟下围棋一样,一开始就在计算半目的棋手,连业余段位都谈不上,因为棋盘上还有N多一手10目棋,你看都不看,时时刻刻觉着我比对手快半目??何以为!!!
wanghui0380 2018-01-03
  • 打赏
  • 举报
回复
博客园看多了。就喜欢如此。 少看博客园。多写代码,要么先验,要么后验,不关怎么样都的验。不是谁说不准like,你就不like,不准goto你就不goto,不准string+string你就一行string+string都不写 就你本身的问题而已,无论怎么编译代码都是端基址+偏移量。你说呢?至于楼上说方法间传递,无论怎么样都是先压栈,不过是值对象压值,引用对象压引用的区别
正怒月神 2018-01-03
  • 打赏
  • 举报
回复
局部变量速度快一些。 但是这个问题貌似没有什么特别的意义
xuzuning 2018-01-03
  • 打赏
  • 举报
回复
作用域不同,用途不同,没有可比性 你不可能会因为局部变量寻址短些而放弃使用成员变量(属性、字段) 把变量在方法间传递,也是不小的内存开销

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧