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;) |