Цитата:
Сообщение от nuToH
//сарказм.
вот цикл для профи:
один вызов геттера length, супербыстрая математика!
 Код AS3:
for (var i:int = arr.length; (i=~-i)^-1; ) {
trace(arr[i]);
}
|
Чёта он ни разу не супербыстрый....

Код AS3:
t = getTimer();
for (i = 1000000; (i=~-i)^-1; ) {
}
tf.appendText(getTimer() - t + "\n"); // 8 мс
t = getTimer();
for (i = 0; i < 1000000; i++) {
}
tf.appendText(getTimer() - t + "\n"); // 3 мс
Классический вариант более чем в два раза быстрее.
P.S.
Хотя стоп, туплю... Если у нас getter, а не константа то картина несколько другая:

Код AS3:
t = getTimer();
for (i = arr.length; (i=~-i)^-1; ) {
}
tf.appendText(getTimer() - t + "\n"); // 7
t = getTimer();
for (i = 0; i < arr.length; i++) {
}
tf.appendText(getTimer() - t + "\n"); // 7
Как можно заметить - результаты равны.
НО, если сделать так (ниже), то получается вообще самый-самый быстрый вариант:

Код AS3:
t = getTimer();
for (i = arr.length; i >= 0; i--) {
}
tf.appendText(getTimer() - t + "\n"); // 2 мс