Use BBH reserve hook to preallocate space for tiles.
authormtklein <mtklein@chromium.org>
Fri, 10 Oct 2014 01:22:41 +0000 (18:22 -0700)
committerCommit bot <commit-bot@chromium.org>
Fri, 10 Oct 2014 01:22:41 +0000 (18:22 -0700)
commit092dab98220110e7244ccbbb851efa8ad621ab88
tree108d88a67b2a08327444f0573382f7f7ac4ad005
parent232f6b0f90a02bcdac0c5931d5f9cfd08003b10c
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
include/core/SkTDArray.h
src/core/SkTileGrid.cpp
src/core/SkTileGrid.h