diff options
author | commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-07-24 18:45:27 +0000 |
---|---|---|
committer | commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-07-24 18:45:27 +0000 |
commit | cae5d8d5705081cb4d22af7a30be0f01bffce745 (patch) | |
tree | a1a008a6f2a4cc347f4c50b1a2d6538d714c0949 /include | |
parent | 588f3d3896ce84a00ba0b229a4fe8fff2bf67516 (diff) |
Start from scratch on a faster SkFlatDictionary.
This is like codereview.chromium.org/19276003, except it fits in better with the existing code, doesn't leak memory, and because it's back using SkChunkFlatController it's a little faster too, now a win across the board:
Slowdown bench
-1.59% desk_youtubetvbrowse.skp
-2.56% desk_googlehome.skp
-6.40% tabl_androidpolice.skp
-6.45% desk_youtubetvvideo.skp
-6.91% tabl_googlecalendar.skp
...
-29.70% desk_yahoogames.skp
-32.17% desk_googlespreadsheet.skp
-32.23% mobi_wikipedia.skp
-37.16% desk_chalkboard.skp
-41.57% desk_pokemonwiki.skp
Overall slowdown: -22.74%
running bench [640 480] picture_record_recurring_paint_dictionary NONRENDERING: cmsecs = 9.92
running bench [640 480] picture_record_unique_paint_dictionary NONRENDERING: cmsecs = 22.16
running bench [640 480] picture_record_dictionaries NONRENDERING: cmsecs = 9.18
BUG=
R=tomhudson@google.com, reed@google.com, scroggo@google.com
Author: mtklein@google.com
Review URL: https://chromiumcodereview.appspot.com/19564007
git-svn-id: http://skia.googlecode.com/svn/trunk@10328 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'include')
-rw-r--r-- | include/core/SkWriter32.h | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/include/core/SkWriter32.h b/include/core/SkWriter32.h index 51044ab00e..82cf346c8e 100644 --- a/include/core/SkWriter32.h +++ b/include/core/SkWriter32.h @@ -46,10 +46,17 @@ public: // return the current offset (will always be a multiple of 4) uint32_t bytesWritten() const { return fSize; } - // DEPRECATED: use byetsWritten instead + // DEPRECATED: use bytesWritten instead TODO(mtklein): clean up uint32_t size() const { return this->bytesWritten(); } - void reset(); + // Returns true if we've written only into the storage passed into constructor or reset. + // (You may be able to use this to avoid a call to flatten.) + bool wroteOnlyToStorage() const { + return fHead == &fExternalBlock && this->bytesWritten() <= fExternalBlock.fSizeOfBlock; + } + + void reset(); + void reset(void* storage, size_t size); // size MUST be multiple of 4 uint32_t* reserve(size_t size) { @@ -63,8 +70,6 @@ public: return block->alloc(size); } - void reset(void* storage, size_t size); - bool writeBool(bool value) { this->writeInt(value); return value; |