diff options
author | Florin Malita <fmalita@chromium.org> | 2018-06-14 12:50:43 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-06-14 18:13:19 +0000 |
commit | fc792b8718cc30e9da62c9559b23c1baac3166bb (patch) | |
tree | bdef20bc660ce8c13d47b72fe1c31a7031ad5746 /modules/skjson/src/SkJSONBench.cpp | |
parent | 00f4df90229456d6cf68cdadc40d54bc3afe64f9 (diff) |
[skjson] Size-constrained input API
Pass an explicit input size instead of requiring a C string.
Thanks to mtklein's clever trick, this has no measurable perf impact.
Change-Id: I64f210a9f653a78b05ab6b58fa34479504aa35ff
Reviewed-on: https://skia-review.googlesource.com/134940
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
Diffstat (limited to 'modules/skjson/src/SkJSONBench.cpp')
-rw-r--r-- | modules/skjson/src/SkJSONBench.cpp | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/modules/skjson/src/SkJSONBench.cpp b/modules/skjson/src/SkJSONBench.cpp index 4be3b972ab..b9c3664306 100644 --- a/modules/skjson/src/SkJSONBench.cpp +++ b/modules/skjson/src/SkJSONBench.cpp @@ -25,27 +25,21 @@ protected: bool isSuitableFor(Backend backend) override { return backend == kNonRendering_Backend; } void onPerCanvasPreDraw(SkCanvas*) override { - if (auto stream = SkStream::MakeFromFile(kBenchFile)) { - SkASSERT(stream->hasLength()); - fCStringData = SkData::MakeUninitialized(stream->getLength() + 1); - auto* data8 = reinterpret_cast<uint8_t*>(fCStringData->writable_data()); - SkAssertResult(stream->read(data8, stream->getLength()) == stream->getLength()); - data8[stream->getLength()] = '\0'; - - } else { + fData = SkData::MakeFromFileName(kBenchFile); + if (!fData) { SkDebugf("!! Could not open bench file: %s\n", kBenchFile); } } void onPerCanvasPostDraw(SkCanvas*) override { - fCStringData = nullptr; + fData = nullptr; } void onDraw(int loops, SkCanvas*) override { - if (!fCStringData) return; + if (!fData) return; for (int i = 0; i < loops; i++) { - skjson::DOM dom(static_cast<const char*>(fCStringData->data())); + skjson::DOM dom(static_cast<const char*>(fData->data()), fData->size()); if (dom.root().is<skjson::NullValue>()) { SkDebugf("!! Parsing failed.\n"); return; @@ -54,7 +48,7 @@ protected: } private: - sk_sp<SkData> fCStringData; + sk_sp<SkData> fData; using INHERITED = Benchmark; }; |