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++がa= a+1;よりも速いことを読んだからです。ゲッターとセッターを使用する場合でも同じ原則が適用されますか?

4

2 に答える 2

3

この操作を実行するための特別なオペコードがVM内にないため、通常は同じ方法で変換されません。VMは次の操作を実行する必要があります。

  • 変数値をレジスタに読み込みます
  • レジスタをインクリメントします
  • 値を戻す

今では、2番目の方法よりも短く、書き込みエラーが少なくなっています__instance.variable++

逆に、ローカル変数をインクリメントするvar++と、レジスタの値を直接インクリメントする特別な操作(inclocalまたはinclocal_i(整数を表す))が存在するため、少し速くなります。

ここにAVM2オペコードの例のリストがあります: http ://www.anotherbigidea.com/javaswf/avm2/AVM2Instructions.html

于 2012-01-19T19:32:23.593 に答える
0

私の知る限り、これら2つの間に段階的な違いはありません。

私はa++がa=a+1よりも速いことを読みました。

実際、あなたのこの声明はパラドックスです。コンパイラ(この場合はCコンパイラ)と解釈はa++をa= a + 1と見なすため、a++を記述しても。大きな違いはありません。

于 2012-01-19T19:34:27.497 に答える