From 137209f9f4b6ee08ca59a135909185cb0caf6d91 Mon Sep 17 00:00:00 2001 From: "bsalomon@google.com" Date: Tue, 14 Aug 2012 17:19:08 +0000 Subject: [PATCH] Make SkTArray consider only the new count and reserve when determining how much to alloc Review URL: http://codereview.appspot.com/6459084 git-svn-id: http://skia.googlecode.com/svn/trunk@5084 2bbb7eff-a529-9590-31e7-b0007b416f81 --- include/core/SkTArray.h | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/include/core/SkTArray.h b/include/core/SkTArray.h index 577e860..01fc142 100644 --- a/include/core/SkTArray.h +++ b/include/core/SkTArray.h @@ -331,13 +331,11 @@ private: int newCount = fCount + delta; int newAllocCount = fAllocCount; - if (newCount > fAllocCount) { - newAllocCount = SkMax32(newCount + ((newCount + 1) >> 1), - fReserveCount); - } else if (newCount < fAllocCount / 3) { - newAllocCount = SkMax32(fAllocCount / 2, fReserveCount); + if (newCount > fAllocCount || newCount < (fAllocCount / 3)) { + // whether we're growing or shrinking, we leave at least 50% extra space for future + // growth (clamped to the reserve count). + newAllocCount = SkMax32(newCount + ((newCount + 1) >> 1), fReserveCount); } - if (newAllocCount != fAllocCount) { fAllocCount = newAllocCount; -- 2.7.4