• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 /*
3  * Copyright 2011 Google Inc.
4  *
5  * Use of this source code is governed by a BSD-style license that can be
6  * found in the LICENSE file.
7  */
8 #include "Benchmark.h"
9 #include "SkBitmap.h"
10 #include "SkCommandLineFlags.h"
11 #include "SkImageDecoder.h"
12 #include "SkOSFile.h"
13 #include "SkString.h"
14 #include "sk_tool_utils.h"
15 
16 DEFINE_string(decodeBenchFilename, "resources/CMYK.jpeg", "Path to image for DecodeBench.");
17 
18 class DecodeBench : public Benchmark {
19     const SkColorType fPrefColorType;
20     SkString          fName;
21 public:
DecodeBench(SkColorType ct)22     DecodeBench(SkColorType ct) : fPrefColorType(ct) {
23         SkString fname = SkOSPath::SkBasename(FLAGS_decodeBenchFilename[0]);
24         fName.printf("decode_%s_%s", sk_tool_utils::colortype_name(ct), fname.c_str());
25     }
26 
isSuitableFor(Backend backend)27     virtual bool isSuitableFor(Backend backend) SK_OVERRIDE {
28         return backend == kNonRendering_Backend;
29     }
30 
31 protected:
onGetName()32     virtual const char* onGetName() {
33         return fName.c_str();
34     }
35 
onDraw(const int loops,SkCanvas *)36     virtual void onDraw(const int loops, SkCanvas*) {
37         for (int i = 0; i < loops; i++) {
38             SkBitmap bm;
39             SkImageDecoder::DecodeFile(FLAGS_decodeBenchFilename[0], &bm, fPrefColorType,
40                                        SkImageDecoder::kDecodePixels_Mode);
41         }
42     }
43 
44 private:
45     typedef Benchmark INHERITED;
46 };
47 
48 DEF_BENCH( return new DecodeBench(kN32_SkColorType); )
49 DEF_BENCH( return new DecodeBench(kRGB_565_SkColorType); )
50 DEF_BENCH( return new DecodeBench(kARGB_4444_SkColorType); )
51