60869a42a1
CodecBench: Add new class for timing using SkCodec. DecodingBench: Include creating a decoder inside the loop. This is to have a better comparison against SkCodec. SkCodec's factory function does not necessarily read the same amount as SkImageDecoder's, so in order to have a meaningful comparison, read the entire stream from the beginning. Also for comparison, create a new SkStream from the SkData each time. Add a debugging check to make sure we have an SkImageDecoder. Add include guards. nanobench.cpp: Decode using SkCodec. When decoding using SkImageDecoder, exclude benches where we decoded to a different color type than requested. SkImageDecoder may decide to decode to a different type, in which case the name is misleading. TODOs: Now that we ignore color types that do not match the desired color type, we should add Index8. This also means calling the more complex version of getPixels so CodecBench can support kIndex8. BUG=skia:3257 Review URL: https://codereview.chromium.org/1044363002
43 lines
1020 B
C++
43 lines
1020 B
C++
/*
|
|
* Copyright 2015 Google Inc.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
* found in the LICENSE file.
|
|
*/
|
|
|
|
#ifndef DecodingBench_DEFINED
|
|
#define DecodingBench_DEFINED
|
|
|
|
#include "Benchmark.h"
|
|
#include "SkBitmap.h"
|
|
#include "SkData.h"
|
|
#include "SkImageDecoder.h"
|
|
#include "SkImageInfo.h"
|
|
#include "SkRefCnt.h"
|
|
#include "SkString.h"
|
|
|
|
/*
|
|
*
|
|
* This benchmark is designed to test the performance of image decoding.
|
|
* It is invoked from the nanobench.cpp file.
|
|
*
|
|
*/
|
|
class DecodingBench : public Benchmark {
|
|
public:
|
|
DecodingBench(SkString path, SkColorType colorType);
|
|
|
|
protected:
|
|
const char* onGetName() override;
|
|
bool isSuitableFor(Backend backend) override;
|
|
void onDraw(const int n, SkCanvas* canvas) override;
|
|
void onPreDraw() override;
|
|
|
|
private:
|
|
SkString fName;
|
|
SkColorType fColorType;
|
|
SkAutoTUnref<SkData> fData;
|
|
SkBitmap fBitmap;
|
|
typedef Benchmark INHERITED;
|
|
};
|
|
#endif // DecodingBench_DEFINED
|