aboutsummaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
authorGravatar mtklein <mtklein@chromium.org>2014-10-09 18:22:41 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2014-10-09 18:22:41 -0700
commit092dab98220110e7244ccbbb851efa8ad621ab88 (patch)
tree108d88a67b2a08327444f0573382f7f7ac4ad005 /include
parent232f6b0f90a02bcdac0c5931d5f9cfd08003b10c (diff)
Use BBH reserve hook to preallocate space for tiles.
Before getting too far into changing how SkTileGrid stores its tiles, I figured I'd better see how much I can tweak out the existing format. Cleverly, that way any improvements I make by changing the format will look that much less impressive. This CL looks like it will be a 5-15% win in time spent recording, with no effect on playback. This CL also shrinks the tiles to fit exactly when we're done inserting, using newly added SkTDArray::shrinkToFit(). It's quite cheap to run (maybe taking back 1-2% from those 5-15% wins), and means we'll lug around about 15% fewer bytes in the tile grids. Note though this strategy temporarily uses up to 30% more memory while building the tile grid. For our largest SKPs, that's maybe 75-100K extra. BUG=skia: Committed: https://skia.googlesource.com/skia/+/52455cbc02d7f480d988ae7cdacc11ad69078c2c CQ_EXTRA_TRYBOTS=tryserver.skia:Canary-Chrome-Ubuntu13.10-Ninja-x86_64-ToT-Trybot Review URL: https://codereview.chromium.org/639823005
Diffstat (limited to 'include')
-rw-r--r--include/core/SkTDArray.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/include/core/SkTDArray.h b/include/core/SkTDArray.h
index 92f297c31a..8e8b4923e3 100644
--- a/include/core/SkTDArray.h
+++ b/include/core/SkTDArray.h
@@ -347,6 +347,11 @@ public:
}
#endif
+ void shrinkToFit() {
+ fReserve = fCount;
+ fArray = (T*)sk_realloc_throw(fArray, fReserve * sizeof(T));
+ }
+
private:
#ifdef SK_DEBUG
enum {