2011-11-14 17:30:08 +00:00
|
|
|
/*
|
|
|
|
* 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 "SkThread.h"
|
|
|
|
|
|
|
|
class MutexBench : public SkBenchmark {
|
|
|
|
enum {
|
|
|
|
N = SkBENCHLOOP(80),
|
|
|
|
M = SkBENCHLOOP(200)
|
|
|
|
};
|
|
|
|
public:
|
|
|
|
MutexBench(void* param) : INHERITED(param) {
|
2012-09-17 10:49:30 +00:00
|
|
|
fIsRendering = false;
|
2011-11-14 17:30:08 +00:00
|
|
|
}
|
|
|
|
protected:
|
|
|
|
virtual const char* onGetName() {
|
|
|
|
return "mutex";
|
|
|
|
}
|
|
|
|
|
2013-03-05 18:50:01 +00:00
|
|
|
virtual void onDraw(SkCanvas*) {
|
2011-11-14 17:30:08 +00:00
|
|
|
for (int i = 0; i < N; i++) {
|
2012-01-26 21:26:40 +00:00
|
|
|
SK_DECLARE_STATIC_MUTEX(mu);
|
2011-11-14 17:30:08 +00:00
|
|
|
for (int j = 0; j < M; j++) {
|
|
|
|
mu.acquire();
|
|
|
|
mu.release();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private:
|
|
|
|
typedef SkBenchmark INHERITED;
|
|
|
|
};
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
static SkBenchmark* Fact(void* p) { return new MutexBench(p); }
|
|
|
|
|
|
|
|
static BenchRegistry gReg01(Fact);
|