As3 - How to clear an array efficiently?
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
精彩评论