배열(Array)을 벡터(Vector)로 변환하는 것을 테스트 해봤습니다. 인터넷에서 검색해보면 거의 for나 for in을 사용해서 변환을 시키더군요. 그래서 Function.apply()를 사용하면 어떨까 하고 시험해 봤는데, apply 가 압도적인 속도를 보여주고, 코드 또한 간결하네요.
아래 코드로 테스트 해보면 대충 for는 80ms, for in은 90ms, apply는 15ms 정도의 속도를 보여줍니다. Function.apply()를 가끔 사용하긴 하는데, 이렇게 빠른지는 오늘 처음 알았네요.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | import flash.utils.getTimer; // original array var arr:Array = new Array(); for(var i:uint=0; i<1000000; i++){ arr.push(i); } // vector var vec:Vector.<int> = new Vector.<int>(); var n:int = getTimer(); // for /*var len:uint = arr.length; for(i=0; i<len; i++){ vec.push(arr[i]); }*/ // for in /*var num:uint; for each(num in arr) { vec.push(num); }*/ // Function.apply vec.push.apply(null, arr); trace(getTimer() - n); trace(vec.length); |
Recent Comments