diff options
author | 2017-03-14 15:52:12 -0400 | |
---|---|---|
committer | 2017-03-15 12:54:49 +0000 | |
commit | dabe8acb7f89806dc6808d3ce913dc3d190c7e81 (patch) | |
tree | cfee448aacc53c700eede1d39c664614d3f5a19e /tests | |
parent | 63954c9944a5eed4527e0ed368f4e501faf2c625 (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.cpp | 20 |
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; |