2010-02-15 2 views
2

그래서 내가 사용과 같은 값 객체가있는 경우에 비해actionscript에서 더 빠른 일반 오브젝트 또는 강력한 유형의 오브젝트는 무엇입니까?

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

느리다? 클럭 사이클보다 훨씬 더 비싼 개발자 시간을 많이 절약 - 당신은 속성 이름을 오타하지 않도록

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

답변

6
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가) UntypedObject ({})에 비해 약 3-3.5x 빠르다는 것을 보여 주지만, 당신이 이제까지 일상에서 알 것 아무것도 없다. 더 나은/고급 테스트를 실행하려면 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

는 더 중요한 것은 어떤 속도 장점보다 강력한 입력하면 컴파일 타임 유형 검사를 제공합니다.

그렇지만 정적 유형 지정은 속도 이점도 가지고 있습니다.

관련 문제