aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Mike Reed <reed@google.com>2016-12-14 12:34:06 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2016-12-14 18:34:30 +0000
commit49282296b6b1ca4e49be2441d83a3e0aad65b319 (patch)
tree733e91f2c5db90974a59355f8616522e7eccc8d6
parent7a1cc6766d07f343923587deaf14e1a3965c2b8f (diff)
add tests/bench for dynamicwstream
BUG=skia: Change-Id: I5a995b63b1a2975cce8101717777eaa6fc12af21 Reviewed-on: https://skia-review.googlesource.com/6035 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Mike Reed <reed@google.com>
-rw-r--r--bench/StreamBench.cpp41
-rw-r--r--gn/bench.gni1
-rw-r--r--tests/StreamTest.cpp3
3 files changed, 45 insertions, 0 deletions
diff --git a/bench/StreamBench.cpp b/bench/StreamBench.cpp
new file mode 100644
index 0000000000..0650a999bb
--- /dev/null
+++ b/bench/StreamBench.cpp
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2016 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "Benchmark.h"
+#include "SkStream.h"
+
+class StreamBench : public Benchmark {
+ SkString fName;
+public:
+ StreamBench() {
+ fName.printf("wstream");
+ }
+
+ bool isSuitableFor(Backend backend) override {
+ return backend == kNonRendering_Backend;
+ }
+
+protected:
+ const char* onGetName() override { return fName.c_str(); }
+
+ void onDraw(int loops, SkCanvas* canvas) override {
+ for (int i = 0; i < loops*100; ++i) {
+ SkDynamicMemoryWStream stream;
+ for (int j = 0; j < 100000; ++j) {
+ stream.write32(j);
+ stream.write32(j+j);
+ }
+ }
+ }
+
+private:
+ typedef Benchmark INHERITED;
+};
+
+///////////////////////////////////////////////////////////////////////////////
+
+DEF_BENCH(return new StreamBench;)
diff --git a/gn/bench.gni b/gn/bench.gni
index 8041c34842..d6252927c9 100644
--- a/gn/bench.gni
+++ b/gn/bench.gni
@@ -111,6 +111,7 @@ bench_sources = [
"$_bench/SKPAnimationBench.cpp",
"$_bench/SKPBench.cpp",
"$_bench/SkRasterPipelineBench.cpp",
+ "$_bench/StreamBench.cpp",
"$_bench/SortBench.cpp",
"$_bench/StrokeBench.cpp",
"$_bench/SwizzleBench.cpp",
diff --git a/tests/StreamTest.cpp b/tests/StreamTest.cpp
index b330745fb8..d1fd75105a 100644
--- a/tests/StreamTest.cpp
+++ b/tests/StreamTest.cpp
@@ -352,6 +352,7 @@ DEF_TEST(StreamPeek_BlockMemoryStream, rep) {
SkRandom rand(kSeed << 1);
uint8_t buffer[4096];
SkDynamicMemoryWStream dynamicMemoryWStream;
+ size_t totalWritten = 0;
for (int i = 0; i < 32; ++i) {
// Randomize the length of the blocks.
size_t size = rand.nextRangeU(1, sizeof(buffer));
@@ -359,6 +360,8 @@ DEF_TEST(StreamPeek_BlockMemoryStream, rep) {
buffer[j] = valueSource.nextU() & 0xFF;
}
dynamicMemoryWStream.write(buffer, size);
+ totalWritten += size;
+ REPORTER_ASSERT(rep, totalWritten == dynamicMemoryWStream.bytesWritten());
}
std::unique_ptr<SkStreamAsset> asset(dynamicMemoryWStream.detachAsStream());
sk_sp<SkData> expected(SkData::MakeUninitialized(asset->getLength()));