0
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++ is faster than a = a+1;. 即使使用 getter 和 setter 也适用相同的原则吗?

4

2 回答 2

3

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

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

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

相反,当您增加一个局部变量时,var++它存在一个特殊操作(inclocal 或 inclocal_i(i 代表整数)),它将直接增加寄存器的值,因此它可以稍微快一点。

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

于 2012-01-19T19:32:23.593 回答
0

据我所知,这两者之间没有逐渐的区别..

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

实际上,您的这种说法是一个悖论。因为编译器(在这种情况下为 C 编译器)和解释将 a++ 视为 a=a+1 ,所以即使您编写 a++。它不会有很大的不同。

于 2012-01-19T19:34:27.497 回答