From 9c457ad27b35022e36d62b6fe1a6aee530213cf6 Mon Sep 17 00:00:00 2001 From: Mike Reed Date: Thu, 15 Dec 2016 14:11:37 -0500 Subject: speedup dynamicwstream - move bytesWritten calculation to query the tail, allowing write() to be faster since it doesn't have to update anything extra per-write. - enforce that all blocks are multiple-of-4 bytes big - update the minimum block size to 4K Before: 30ms After: 23ms for non-4-bytes writes 13ms for 4-bytes writes BUG=skia: Change-Id: Id06ecad3b9fe426747e02accf1393595e3356ce3 Reviewed-on: https://skia-review.googlesource.com/6087 Reviewed-by: Mike Klein Commit-Queue: Mike Reed --- bench/StreamBench.cpp | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) (limited to 'bench/StreamBench.cpp') diff --git a/bench/StreamBench.cpp b/bench/StreamBench.cpp index 0650a999bb..e89b207ac5 100644 --- a/bench/StreamBench.cpp +++ b/bench/StreamBench.cpp @@ -9,10 +9,11 @@ #include "SkStream.h" class StreamBench : public Benchmark { - SkString fName; + SkString fName; + const bool fTestWrite4; public: - StreamBench() { - fName.printf("wstream"); + StreamBench(bool testWrite4) : fTestWrite4(testWrite4) { + fName.printf("wstream_%d", testWrite4); } bool isSuitableFor(Backend backend) override { @@ -23,11 +24,18 @@ protected: const char* onGetName() override { return fName.c_str(); } void onDraw(int loops, SkCanvas* canvas) override { + const char t3[] = { 1, 2, 3 }; + const char t5[] = { 1, 2, 3, 4, 5 }; for (int i = 0; i < loops*100; ++i) { SkDynamicMemoryWStream stream; - for (int j = 0; j < 100000; ++j) { - stream.write32(j); - stream.write32(j+j); + for (int j = 0; j < 10000; ++j) { + if (fTestWrite4) { + stream.write32(j); + stream.write32(j+j); + } else { + stream.write(t3, 3); + stream.write(t5, 5); + } } } } @@ -38,4 +46,5 @@ private: /////////////////////////////////////////////////////////////////////////////// -DEF_BENCH(return new StreamBench;) +DEF_BENCH(return new StreamBench(false);) +DEF_BENCH(return new StreamBench(true);) -- cgit v1.2.3