Шаг приращения установщика Actionscript 3.0 - PullRequest
0 голосов
/ 19 января 2012
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;

Причина, по которой это нужновопрос в том, что я читал а ++ быстрее, чем а = а + 1 ;.Будет ли применяться тот же принцип даже при использовании геттеров и сеттеров?

Ответы [ 2 ]

3 голосов
/ 19 января 2012

Обычно они не переводятся одинаково, поскольку в виртуальной машине нет специального кода операции, чтобы выполнить эту операцию, виртуальная машина должна будет выполнить следующие операции:

  • считать значение переменной врегистр
  • увеличивает регистр
  • возвращает значение

, теперь оно короче и менее подвержено ошибкам при записи __instance.variable++, чем второй способ.1013 * И наоборот, когда вы увеличиваете локальную переменную, выполняя var++, существует специальная операция (inclocal или inclocal_i (я обозначаю целое число)), которая будет напрямую увеличивать значение регистра, чтобы он мог быть немного быстрее.1016 * Вот список примеров кода операции AVM2: http://www.anotherbigidea.com/javaswf/avm2/AVM2Instructions.html

0 голосов
/ 19 января 2012

Насколько я знаю, между этими двумя нет постепенной разницы ..

Я читал, что ++ быстрее, чем a = a + 1;

На самом деле это ваше утверждение является парадоксом. Потому что компиляторы (в данном случае компилятор C) и интерпретаторы рассматривают a ++ как a = a + 1, поэтому даже если вы пишете a ++. Это не будет иметь большого значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...