Цитата:
|
Обычно each-циклы не рекомендуют использовать из-за того, что не гарантируется порядок обхода. А по скорости ни разу не встречал таких рекомендаций.
|
Да. Но он там говорил именно о скорости работы, поэтому меня это и заинтересовало. Так как я всегда был уверен что for in и for each in гораздо быстрее упорядоченных циклов
Вот цитата Дэниэла
Цитата:
Loops
When working with loops that are repeated very often or are deeply nested, it's better to avoid “for each”; the classic “for i” yields a better performance. Furthermore, beware that the loop condition is executed once per loop, so it's faster to save it into an extra variable.
|
Цитата:
Сообщение от i.o.
Результаты в DEBUG и RELEASE версиях плеера могут сильно отличаться. Судя по трейсам использовался именно дебажный вариант
|
Блин, а ведь верно. Я даже не подумал) Туплю.
Сделал релизный тест, и мои изначальные ожидания оправдались с лихвой.
Вот для релиза:

Код AS3:
public function MathCrap() {
var tf:TextField = new TextField();
tf.width = 800;
tf.height = 600;
addChild(tf);
var number:Number = -14;
var i:int = 0;
var result:Number = 0;
var time:int = 0;
time = getTimer();
for (i = 0; i < 10000000; i++) {
result = Math.abs(number);
}
tf.appendText("Math.abs() " + (getTimer() - time) + "\n");
time = getTimer();
for (i = 0; i < 10000000; i++) {
result = abs(number);
}
tf.appendText("Inline abs " + (getTimer() - time) + "\n");
tf.appendText("CEIL >>>");
number = 1.5;
time = getTimer();
for (i = 0; i < 10000000; i++) {
result = Math.ceil(number);
}
tf.appendText("Math.ceil() " + (getTimer() - time) + "\n");
time = getTimer();
for (i = 0; i < 10000000; i++) {
result = ceil(number);
}
tf.appendText("Inline ceil " + (getTimer() - time) + "\n");
}
[Inline]
public static function abs(value:Number):Number {
return value > 0 ? value : -value;
}
[Inline]
public static function ceil(value:Number):int {
return int(value) + 1;
}

Код AS3:
Math.abs() 528
Inline abs 85
CEIL >>>Math.ceil() 549
Inline ceil 55
То то же
Никогда не думал, что придется настолько заморачиваться с оптимизацией приложений)