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,同样的原则也适用吗?
答案 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,所以即使你编写了一个++。它不会产生巨大的差异。