aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
authorGravatar Hal Canary <halcanary@google.com>2017-03-14 15:52:12 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-03-15 12:54:49 +0000
commitdabe8acb7f89806dc6808d3ce913dc3d190c7e81 (patch)
treecfee448aacc53c700eede1d39c664614d3f5a19e /tests
parent63954c9944a5eed4527e0ed368f4e501faf2c625 (diff)
SkDynamicMemoryWStream::detachAsData more memory efficent
I did some testing with very large datasets, and the difference in max RSS is measurable and significant. Change-Id: I6bb2f795d5b4f6ebdba42c3089dc85a278355d48 Reviewed-on: https://skia-review.googlesource.com/9686 Commit-Queue: Hal Canary <halcanary@google.com> Reviewed-by: Ben Wagner <bungeman@google.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/StreamTest.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/tests/StreamTest.cpp b/tests/StreamTest.cpp
index 2e476a1858..8b5b2ae05a 100644
--- a/tests/StreamTest.cpp
+++ b/tests/StreamTest.cpp
@@ -410,6 +410,26 @@ static void stream_copy_test(skiatest::Reporter* reporter,
}
}
+DEF_TEST(DynamicMemoryWStream_detachAsData, r) {
+ const char az[] = "abcdefghijklmnopqrstuvwxyz";
+ const unsigned N = 40000;
+ SkDynamicMemoryWStream dmws;
+ for (unsigned i = 0; i < N; ++i) {
+ dmws.writeText(az);
+ }
+ REPORTER_ASSERT(r, dmws.bytesWritten() == N * strlen(az));
+ auto data = dmws.detachAsData();
+ REPORTER_ASSERT(r, data->size() == N * strlen(az));
+ const uint8_t* ptr = data->bytes();
+ for (unsigned i = 0; i < N; ++i) {
+ if (0 != memcmp(ptr, az, strlen(az))) {
+ ERRORF(r, "detachAsData() memcmp failed");
+ return;
+ }
+ ptr += strlen(az);
+ }
+}
+
DEF_TEST(StreamCopy, reporter) {
SkRandom random(123456);
static const int N = 10000;