Всегда думал, что если в цикле обращаться к свойству композитносозданного объекта,
то лучше это значение сохранить в локальную переменную. Думал, что обратится к локальной переменной быстрее, чем к свойству, путь к которому состоит из нескольких ссылок.
А начал проверять и все оказалось наоборот.
Вот результаты при чтении -

Код AS3:
package
{
import flash.display.Sprite;
import flash.utils.getTimer;
public class TestSpeed4 extends Sprite
{
public function TestSpeed4()
{
var array:Array = [];
for (var i:int = 0; i < 500; i++)
{
array[i] = 0;
}
var value:ValueClass = new ValueClass();
var boolean:Boolean;
var valueValue:int = value.value;
for (var j:int = 0; j < 100000; j++)
{
var length:int = array.length;
while (length--)
{
boolean = array[length] > value.value;// 12 000
boolean = array[length] > valueValue;// 13 000
}
}
time = testSpeed();
trace(time-now, now);
}
private var time:Number = 0;
private var now:Number = 0;
private function testSpeed():Number
{
return getTimer();
}
}
}
А вот при записи ( тут я даже локальную переменную не присваивал свойству другого объекта,а то разница и была бы опять в секунду ) -

Код AS3:
package
{
import flash.display.Sprite;
import flash.utils.getTimer;
public class TestSpeed4 extends Sprite
{
public function TestSpeed4()
{
var value:ValueClass = new ValueClass();
var valueValue:int = value.value;
for (var j:int = 0; j < 100000; j++)
{
var length:int = 500;
while (length--)
{
value.value += 1;// 11 000
valueValue += 1;// 11 100;
}
}
time = testSpeed();
trace(time-now, now);
}
private var time:Number = 0;
private var now:Number = 0;
private var _target:Sprite;
private function testSpeed():Number
{
return getTimer();
}
}
}
Не уверен в правильности вопроса, но - как после компиляции, выглядит ссылки на свойства других объектов, если операции с локальными свойствами занимают больше времени?