Chromium Code Reviews| Index: bench/PDFBench.cpp |
| diff --git a/bench/PDFBench.cpp b/bench/PDFBench.cpp |
| index 8b9eb520dcb0bbb84e6711fce11a22ff2b914e7a..e43fba05e3ec4aff742bfa2426189b7e32ee9d44 100644 |
| --- a/bench/PDFBench.cpp |
| +++ b/bench/PDFBench.cpp |
| @@ -7,13 +7,10 @@ |
| #include "Benchmark.h" |
| #include "Resources.h" |
| -#include "SkImage.h" |
| -#include "SkPixmap.h" |
| #include "SkData.h" |
| - |
| -#if SK_SUPPORT_PDF |
| - |
| +#include "SkImage.h" |
| #include "SkPDFBitmap.h" |
| +#include "SkPixmap.h" |
| namespace { |
| struct NullWStream : public SkWStream { |
| @@ -23,13 +20,7 @@ struct NullWStream : public SkWStream { |
| size_t fN; |
| }; |
| -static void test_pdf_image_serialization(SkImage* img) { |
| - SkAutoTUnref<SkPDFObject> object( |
| - SkPDFCreateBitmapObject(img, nullptr)); |
| - if (!object) { |
| - SkDEBUGFAIL(""); |
| - return; |
| - } |
| +static void test_pdf_object_serialization(SkPDFObject* object) { |
| // SkDebugWStream wStream; |
| NullWStream wStream; |
| SkPDFSubstituteMap substitutes; |
| @@ -44,6 +35,16 @@ static void test_pdf_image_serialization(SkImage* img) { |
| } |
| } |
| +static void test_pdf_image_serialization(SkImage* img) { |
| + SkAutoTUnref<SkPDFObject> object( |
| + SkPDFCreateBitmapObject(img, nullptr)); |
| + if (!object) { |
| + SkDEBUGFAIL(""); |
| + return; |
| + } |
| + test_pdf_object_serialization(object); |
| +} |
| + |
| class PDFImageBench : public Benchmark { |
| public: |
| PDFImageBench() {} |
| @@ -113,8 +114,36 @@ private: |
| SkAutoTUnref<SkImage> fImage; |
| }; |
| +/** Test calling DEFLATE on a 78k PDF command stream. Used for measuring |
| + alternate zlib settings, usage, and library versions. */ |
| +class PDFCompressionBench : public Benchmark { |
| +public: |
| + PDFCompressionBench() {} |
| + virtual ~PDFCompressionBench() {} |
| + |
| +protected: |
| + const char* onGetName() override { return "PDFCompression"; } |
| + bool isSuitableFor(Backend backend) override { |
| + return backend == kNonRendering_Backend; |
| + } |
| + void onDelayedSetup() override { |
| + fRandomText.reset(GetResourceAsStream("pdf_command_stream.txt")); |
| + } |
| + void onDraw(int loops, SkCanvas*) override { |
| + SkASSERT(fRandomText); |
| + if (!fRandomText) { return; } |
| + while (loops-- > 0) { |
| + SkAutoTUnref<SkPDFObject> object( |
| + new SkPDFSharedStream(fRandomText->duplicate())); |
| + test_pdf_object_serialization(object); |
| + } |
| + } |
| + |
| +private: |
| + SkAutoTDelete<SkStreamAsset> fRandomText; |
|
mtklein
2016/02/24 19:59:44
Funny name now.
hal.canary
2016/02/24 22:07:16
fixed
|
| +}; |
| + |
| } // namespace |
| DEF_BENCH(return new PDFImageBench;) |
| DEF_BENCH(return new PDFJpegImageBench;) |
| - |
| -#endif // SK_SUPPORT_PDF |
| +DEF_BENCH(return new PDFCompressionBench;) |