diff options
author | halcanary <halcanary@google.com> | 2016-04-11 19:41:48 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-04-11 19:41:48 -0700 |
commit | cbc060a70007bcdcc180d74b552f30104c88a805 (patch) | |
tree | 8c1c9a9ca0796e27d1c8dc1e979acf522204dfd9 /bench/PDFBench.cpp | |
parent | 74b8d323323c8533e3e5cc7719e0bd127aacd829 (diff) |
SkWStream::writeText inlined.
Motivation: This function is used throughout SkPDF.
Note that the compiler can usually inline the result of strlen() for literal strings.
Before:
out/Release/nanobench -m WStreamWriteText -q
Timer overhead: 24.2ns
! -> high variance, ? -> moderate variance
micros bench
6.10 WStreamWriteText nonrendering
After:
out/Release/nanobench -m WStreamWriteText -q
Timer overhead: 23.9ns
! -> high variance, ? -> moderate variance
micros bench
2.51 WStreamWriteText nonrendering
PDF runtime change: -0.8% ±0.04%.
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1844343004
Review URL: https://codereview.chromium.org/1844343004
Diffstat (limited to 'bench/PDFBench.cpp')
-rw-r--r-- | bench/PDFBench.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/bench/PDFBench.cpp b/bench/PDFBench.cpp index 9da745c280..df6873c596 100644 --- a/bench/PDFBench.cpp +++ b/bench/PDFBench.cpp @@ -17,6 +17,7 @@ #include "SkPDFUtils.h" #include "SkPixmap.h" #include "SkRandom.h" +#include "SkStream.h" namespace { struct NullWStream : public SkWStream { @@ -190,9 +191,26 @@ struct PDFShaderBench : public Benchmark { } }; +struct WStreamWriteTextBenchmark : public Benchmark { + std::unique_ptr<SkWStream> fWStream; + WStreamWriteTextBenchmark() : fWStream(new NullWStream) {} + const char* onGetName() override { return "WStreamWriteText"; } + bool isSuitableFor(Backend backend) override { + return backend == kNonRendering_Backend; + } + void onDraw(int loops, SkCanvas*) override { + while (loops-- > 0) { + for (int i = 1000; i-- > 0;) { + fWStream->writeText("HELLO SKIA!\n"); + } + } + } +}; + } // namespace DEF_BENCH(return new PDFImageBench;) DEF_BENCH(return new PDFJpegImageBench;) DEF_BENCH(return new PDFCompressionBench;) DEF_BENCH(return new PDFScalarBench;) DEF_BENCH(return new PDFShaderBench;) +DEF_BENCH(return new WStreamWriteTextBenchmark;) |