SNOWFLAKES DRAWING PAPER

[AS3] Object 와 Array 명시적 테스트 본문

개발/FLEX/AS3/AIR/BlazeDS

[AS3] Object 와 Array 명시적 테스트

눈송2 2010. 10. 6. 22:07

갑자기 궁금해서 Object 와 Array 명시적으로 설정하고 값 가져오는 속도 테스트를 해봤다
Array가 Object를 상속해서 만든 클래스 이기때문에 Array가 느릴거라는 생각을 가지고 걍~ 해봤다^^
그런데 별 차이가 없었다는....
분명 회사에서 테스트를 할때는 Array가 늦는 결과를 몇번 확인을 했는데
집에서 다시 테스트를 했는데 별차이가 없네...ㅎㅎ

# 결과

1차
-obj set: 16
-obj get: 906
-arr set: 0
-arr set: 187

2차
-obj set: 0
-obj get: 1031
-arr set: 0
-arr set: 1063

3차
-obj set: 16
-obj get: 1141
-arr set: 15
-arr set: 1141

4차
-obj set: 16
-obj get: 1125
-arr set: 15
-arr set: 1141

5차
-obj set: 16
-obj get: 1109
-arr set: 0
-arr set: 1079

6차
-obj set: 16
-obj get: 1046
-arr set: 0
-arr set: 1079

7차
-obj set: 0
-obj get: 1078
-arr set: 0
-arr set: 1094


package {
import flash.display.Sprite;
public class ObjectVSArray extends Sprite {
    private var arr:Array;
    private var obj:Object;
public function ObjectVSArray() {
       var objRet:Object = chk("obj");
       var arrRet:Object = chk("arr");
       trace(
               "\r-obj set: " + objRet.setTime.toString() +
               "\r-obj get: " + objRet.getTime.toString() +
               "\r-arr set: " + arrRet.setTime.toString() +
               "\r-arr set: " + arrRet.getTime.toString()
       );
}
private function chk(mode:String):Object {
       var ret:Object = {};
       var sDT:Number = new Date().getTime();
       var i:int;
       var len:int = 50000;
       var setTime:Number;
       var getTime:Number;
       switch (mode) {
               case "obj":
                       obj = {};
                       for (i=0;i<len;i++) {
                               obj[i"test";
                       }
                       ret.setTime = new Date().getTime() - sDT;

                       sDT = new Date().getTime();
                       for (i=0;i<len;i++) {
                               traceobj[i] );
                       }
                       ret.getTime = new Date().getTime() - sDT;
                       obj = null;
               break;
               case "arr":
                       arr = [];
                       for (i=0;i<len;i++) {
                               arr[i"test";
                       }
                       ret.setTime = new Date().getTime() - sDT;

                       sDT = new Date().getTime();
                       for (i=0;i<len;i++) {
                               tracearr[i] );
                       }
                       ret.getTime = new Date().getTime() - sDT;
                       arr = null;
               break;
       }
       return ret;
}
}// end class
}// end package


Comments