开发者

As3 - How to clear an array efficiently?

开发者 https://www.devze.com 2022-12-19 14:59 出处:网络
I\'ve been looking to clear 开发者_JS百科an array in ActionScript 3. Some method suggest : array = []; (Memory leak?)

I've been looking to clear 开发者_JS百科an array in ActionScript 3.

Some method suggest : array = []; (Memory leak?)

Other would say : array.splice(0);

If you have any other, please share. Which one is the more efficient?

Thank you.


array.length = 0 or array.splice() seems to work best for overall performance.

array.splice(0); will perform faster than array.splice(array.length - 1, 1);


For array with 100 elements (benchmarks in ms, the lower the less time needed):

// best performance (benchmark: 1157)
array.length = 0;
// lower performance (benchmark: 1554)
array = [];
// even lower performance (benchmark: 3592)
array.splice(0);


There is a key difference between array.pop() and array.splice(array.length - 1, 1) which is that pop will return the value of the element. This is great for handy one liners when clearing out an array like:

while(myArray.length > 0){
     view.removeChild(myArray.pop());
}


I wonder, why you want to clear the Array in that manner? clearing all references to that very array will make it available for garbage collection. array = [] will do so, if array is the only reference to the array. if it isn't then you maybe shouldn't be emtpying it (?)

also, please note that`Arrays accept Strings as keys. both splice and lenght operate solely on integer keys, so they will have no effect on String keys.

btw.: array.splice(array.length - 1, 1); is equivalent to array.pop();


array.splice(0,array.length);

this has always worked pretty well for me but I haven't had a chance to run it through the profiler yet

0

精彩评论

暂无评论...
验证码 换一张
取 消