add bench for building the font cache

git-svn-id: http://skia.googlecode.com/svn/trunk@2590 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
reed@google.com 2011-11-02 21:02:57 +00:00
parent 11b4d8a251
commit 6e5a45c038
2 changed files with 55 additions and 0 deletions

54
bench/FontScalerBench.cpp Normal file
View File

@ -0,0 +1,54 @@
/*
* Copyright 2011 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include "SkBenchmark.h"
#include "SkCanvas.h"
#include "SkGraphics.h"
#include "SkPaint.h"
#include "SkRandom.h"
#include "SkString.h"
extern bool gSkSuppressFontCachePurgeSpew;
class FontScalerBench : public SkBenchmark {
SkString fName;
SkString fText;
public:
FontScalerBench(void* param) : INHERITED(param) {
fName.set("fontscaler");
fText.set("abcdefghijklmnopqrstuvwxyz01234567890");
}
protected:
virtual const char* onGetName() { return fName.c_str(); }
virtual void onDraw(SkCanvas* canvas) {
SkPaint paint;
this->setupPaint(&paint);
bool prev = gSkSuppressFontCachePurgeSpew;
gSkSuppressFontCachePurgeSpew = true;
// this is critical - we want to time the creation process, so we
// explicitly flush our cache before each run
SkGraphics::SetFontCacheUsed(0);
for (int ps = 9; ps <= 24; ps += 2) {
paint.setTextSize(SkIntToScalar(ps));
canvas->drawText(fText.c_str(), fText.size(),
0, SkIntToScalar(20), paint);
}
gSkSuppressFontCachePurgeSpew = prev;
}
private:
typedef SkBenchmark INHERITED;
};
///////////////////////////////////////////////////////////////////////////////
static SkBenchmark* Fact(void* p) { return SkNEW_ARGS(FontScalerBench, (p)); }
static BenchRegistry gReg(Fact);

View File

@ -22,6 +22,7 @@
'../bench/BlurBench.cpp',
'../bench/ChromeBench.cpp',
'../bench/DecodeBench.cpp',
'../bench/FontScalerBench.cpp',
'../bench/GradientBench.cpp',
'../bench/MathBench.cpp',
'../bench/MatrixBench.cpp',