_localArray.length = 0; // Reset the array to empty
Yesterday I was coding on a rather large application at work and I needed to reset an array I had that was stored as a member variable. My gut instinct was to just take the Array variable and set its length = 0. Although this worked I wasn't sure if it was the best way to reset an array in ActionScript 3. So I asked my friend Guy Wyatt and he sent me this performance benchmark using 100,000 iterations in an Array as a test to see the time it took to clear out this Array using various techniques.
Resetting an empty array over 100,000 iterations in a while(i--) loop
length = 0: 15 ms
splice: 157 ms
new: 145 ms
So it looks like my gut instinct was right to set the length to 0 to reset my Array. I know this isn't the most glamorous blog post but I do think it is important to think about these things while coding a large Flex application. Every little bit of optimization is crucial and can over all help yield a better functioning application.
Follow Up:
It's worth noting that after some digging the Flex Framework's ArrayCollection removes all of the items from an array using this code in the ArrayList.as class:
/**
* Remove all items from the list.
*/
public function removeAll():void
{
if (length > 0)
{
var len:int = length;
for (var i:int = 0; i < len; i++)
{
stopTrackUpdates(source[i]);
}
source.splice(0, length);
internalDispatchEvent(CollectionEventKind.RESET);
}
}
I'm not sure if this is the recommended way of doing things for clearing items from an Array but it appears setting length to 0 works and also takes less time.


Just the other day I was doing a very basic photo gallery in Flex and ran into weird issues with the Image component when I tried to resize the image width and height properties. I kept getting the bounding box of the original image size but the image itself would scale down. You can see by the image above what I'm talking about. It took a little while to finally realize that by using the scaleX and scaleY properties on the image, it got resized and so did the bounding box of the image container in my Flex application. I'm not sure if this is common but it seemed to work for me in this situation. If you have a better way then please let me know. Also 





