Что быстрее простые объекты или строго типизированные объекты в ActionScript? - PullRequest
2 голосов
/ 16 февраля 2010

Так же

public var user:Object = {}; 
user["firstName"] = "Bill";
user["lastName"] = "Cosby";

медленнее, чем если бы у меня был объект значения типа User?

var user:User = new User();
user.firstName = "Bill";
user.lastName = "Cosby";

Ответы [ 2 ]

6 голосов
/ 16 февраля 2010
public function speedTest():void               
{            
    var typedObjects:Array = [];
    var dynamicObjects:Array = [];
    var typedObject:User;
    var dynamicObject:Object;
    var i:int = 0;
    var n:int = 10000;
    for (i; i < n; i++)
    {
        dynamicObject = {};
        dynamicObjects.push(dynamicObject);
        typedObject = new User();
        typedObjects.push(typedObject);
    }
    // typed
    var time:int = getTimer();
    i = 0;
    n = 10000;
    for (i; i < n; i++)
    {
        typedObject = typedObjects[i];
        typedObject.firstName = "Bill";
        typedObject.lastName = "Cosby";
    }
    var end:int = getTimer() - time;
    trace("TypedObject Time: ", end/1000, "sec");

    // untyped
    time = getTimer();
    i = 0;
    n = 10000;
    for (i; i < n; i++)
    {
        dynamicObject = dynamicObjects[i];
        dynamicObject["firstName"] = "Bill";
        dynamicObject["lastName"] = "Cosby";
    }
    end = getTimer() - time;
    trace("DynamicObject Time: ", end/1000, "sec");
}   

Простой тест скорости показывает, что TypedObject (User) примерно в 3-3,5 раза быстрее, чем UntypedObject ({}), но вы ничего такого не заметите в повседневной жизни. Попробуйте Grant Skinner's Performance Test Harness , чтобы выполнить несколько улучшенных / расширенных тестов:).

3 простых пробных прогона:

TypedObject Time:  0.002 sec
DynamicObject Time:  0.007 sec
TypedObject Time:  0.002 sec
DynamicObject Time:  0.006 sec
TypedObject Time:  0.002 sec
DynamicObject Time:  0.006 sec

Вердикт: набрано быстрее, чем нетипизированное.

6 голосов
/ 16 февраля 2010

Что важнее, чем преимущества в скорости, строгая типизация дает вам проверку типов во время компиляции, поэтому вы не печатаете имена свойств - экономя время developer , что намного дороже, чем тактовые циклы.

Хотя да, статическая типизация также имеет преимущества в скорости.

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