Use stack allocation for Android data in SkScalerContext::MakeRec().
authorjvanverth <jvanverth@google.com>
Tue, 8 Jul 2014 18:15:48 +0000 (11:15 -0700)
committerCommit bot <commit-bot@chromium.org>
Tue, 8 Jul 2014 18:15:48 +0000 (11:15 -0700)
In a perfvis run on the "Boogie" test page, descriptorProc() during
detachCache() was taking .721 ms, and 20% of that was the flatten() in
MakeRec(). Changing this to a smaller stack allocation reduces the time
for descriptorProc() to .556 ms.

R=reed@google.com, bsalomon@google.com

Author: jvanverth@google.com

Review URL: https://codereview.chromium.org/372323003

src/core/SkPaint.cpp

index 4c4d2489a20a36fa19c479bb8c104ee05b34afb5..62db71445ee160c6917ff8f6cd103c21f47a845e 100644 (file)
@@ -1850,7 +1850,8 @@ void SkPaint::descriptorProc(const SkDeviceProperties* deviceProperties,
     }
 
 #ifdef SK_BUILD_FOR_ANDROID
-    SkWriteBuffer androidBuffer;
+    char buffer[128];
+    SkWriteBuffer androidBuffer(buffer, sizeof(buffer));
     fPaintOptionsAndroid.flatten(androidBuffer);
     descSize += androidBuffer.bytesWritten();
     entryCount += 1;