From 8168128b0f3aa96f877dd2221eed763c7a7efda8 Mon Sep 17 00:00:00 2001 From: Tom Conkling Date: Thu, 19 Jun 2008 20:10:06 +0000 Subject: [PATCH] small optimization for the DisplayUtil.sortDisplayChildren common case git-svn-id: svn+ssh://src.earth.threerings.net/nenya/trunk@546 ed5b42cb-e716-0410-a449-f6a68f950b19 --- src/as/com/threerings/flash/DisplayUtil.as | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/as/com/threerings/flash/DisplayUtil.as b/src/as/com/threerings/flash/DisplayUtil.as index 0aafbe8c..3f06d1c7 100644 --- a/src/as/com/threerings/flash/DisplayUtil.as +++ b/src/as/com/threerings/flash/DisplayUtil.as @@ -43,22 +43,30 @@ public class DisplayUtil container :DisplayObjectContainer, comp :Function = null) :void { var numChildren :int = container.numChildren; - // put all children in an array - var children :Array = new Array(numChildren); + + // since it's likely this function will be called frequently on the same + // DisplayObjectContainer, keep the Array around so that we're not + // re-allocating memory more often than we need to + if (_sortDisplayChildrenArray.length != numChildren) { + _sortDisplayChildrenArray = new Array(numChildren); + } + var ii :int; for (ii = 0; ii < numChildren; ii++) { - children[ii] = container.getChildAt(ii); + _sortDisplayChildrenArray[ii] = container.getChildAt(ii); } // stable sort the array - ArrayUtil.stableSort(children, comp); + ArrayUtil.stableSort(_sortDisplayChildrenArray, comp); // set their new indexes for (ii = 0; ii < numChildren; ii++) { - container.setChildIndex(DisplayObject(children[ii]), ii); + container.setChildIndex(DisplayObject(_sortDisplayChildrenArray[ii]), ii); } } + private static var _sortDisplayChildrenArray :Array = []; + /** * Call the specified function for the display object and all descendants. *