Actionscript 3.0 getter setter增量

时间:2012-01-19 18:40:16

标签: actionscript-3 increment getter-setter decrement

private var _variable:int;

public function set variable(val:int):void{

        _variable = val;

}
public function get variable():int{

     return _variable

}

现在,如果我必须增加变量......哪一个是更优化的方式?

__instance.variable++;

__instance.variable = __instance.variable + 1;

提出这个问题的原因是,我读过一个++比a = a + 1更快;即使使用getter和setter,同样的原则也适用吗?

2 个答案:

答案 0 :(得分:3)

通常不会以相同的方式翻译它们,因为VM中没有特殊操作码来执行此操作,VM必须执行以下操作:

  • 将变量值读入寄存器
  • 递增寄存器
  • 放回价值

现在它比第二种方式更短,更不容易出错__instance.variable++

相反,当你增加一个执行var++的局部变量时,它存在一个特殊的操作(inclocal或inclocal_i(我代表整数)),它将直接递增寄存器的值,因此它可以稍快一些。 / p>

这里列出了AVM2操作码的示例: http://www.anotherbigidea.com/javaswf/avm2/AVM2Instructions.html

答案 1 :(得分:0)

据我所知,这两者之间并没有逐渐的差异。

  

我读过a ++比a = a + 1更快;

实际上你的陈述是一个悖论。 因为编译器(在这种情况下是C编译器)和解释将++视为a = a + 1,所以即使你编写了一个++。它不会产生巨大的差异。