aboutsummaryrefslogtreecommitdiffhomepage
path: root/bench/ChecksumBench.cpp
diff options
context:
space:
mode:
authorGravatar bungeman@google.com <bungeman@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-01-31 19:47:48 +0000
committerGravatar bungeman@google.com <bungeman@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-01-31 19:47:48 +0000
commitcfcb1bef94a8cfb565d9450b38f57d4f5c83790a (patch)
tree8b6aeb7ace8795f02d39ba02c39ebd0a21a5c1c5 /bench/ChecksumBench.cpp
parentcb9b4a5ce66abdd8b3fca48769744e63422099f7 (diff)
Add SHA1 and MD5 to utils.
Diffstat (limited to 'bench/ChecksumBench.cpp')
-rw-r--r--bench/ChecksumBench.cpp68
1 files changed, 63 insertions, 5 deletions
diff --git a/bench/ChecksumBench.cpp b/bench/ChecksumBench.cpp
index 31160c7ad0..2d0b542f7c 100644
--- a/bench/ChecksumBench.cpp
+++ b/bench/ChecksumBench.cpp
@@ -7,7 +7,18 @@
#include "SkBenchmark.h"
#include "SkCanvas.h"
#include "SkChecksum.h"
+#include "SkCityHash.h"
+#include "SkMD5.h"
#include "SkRandom.h"
+#include "SkSHA1.h"
+
+enum ChecksumType {
+ kChecksum_ChecksumType,
+ kMD5_ChecksumType,
+ kSHA1_ChecksumType,
+ kCityHash32,
+ kCityHash64
+};
class ComputeChecksumBench : public SkBenchmark {
enum {
@@ -16,9 +27,10 @@ class ComputeChecksumBench : public SkBenchmark {
N = SkBENCHLOOP(100000),
};
uint32_t fData[U32COUNT];
+ ChecksumType fType;
public:
- ComputeChecksumBench(void* param) : INHERITED(param) {
+ ComputeChecksumBench(void* param, ChecksumType type) : INHERITED(param), fType(type) {
SkRandom rand;
for (int i = 0; i < U32COUNT; ++i) {
fData[i] = rand.nextU();
@@ -28,13 +40,51 @@ public:
protected:
virtual const char* onGetName() {
- return "compute_checksum";
+ switch (fType) {
+ case kChecksum_ChecksumType: return "compute_checksum";
+ case kMD5_ChecksumType: return "compute_md5";
+ case kSHA1_ChecksumType: return "compute_sha1";
+ case kCityHash32: return "compute_cityhash32";
+ case kCityHash64: return "compute_cityhash64";
+ default: SK_CRASH(); return "";
+ }
}
virtual void onDraw(SkCanvas* canvas) {
- for (int i = 0; i < N; i++) {
- (void) SkChecksum::Compute(fData, sizeof(fData));
+ switch (fType) {
+ case kChecksum_ChecksumType: {
+ for (int i = 0; i < N; i++) {
+ volatile uint32_t result = SkChecksum::Compute(fData, sizeof(fData));
+ }
+ } break;
+ case kMD5_ChecksumType: {
+ for (int i = 0; i < N; i++) {
+ SkMD5 md5;
+ md5.update(reinterpret_cast<uint8_t*>(fData), sizeof(fData));
+ SkMD5::Digest digest;
+ md5.finish(digest);
+ }
+ } break;
+ case kSHA1_ChecksumType: {
+ for (int i = 0; i < N; i++) {
+ SkSHA1 sha1;
+ sha1.update(reinterpret_cast<uint8_t*>(fData), sizeof(fData));
+ SkSHA1::Digest digest;
+ sha1.finish(digest);
+ }
+ } break;
+ case kCityHash32: {
+ for (int i = 0; i < N; i++) {
+ volatile uint32_t result = SkCityHash::Compute32(reinterpret_cast<char*>(fData), sizeof(fData));
+ }
+ } break;
+ case kCityHash64: {
+ for (int i = 0; i < N; i++) {
+ volatile uint64_t result = SkCityHash::Compute64(reinterpret_cast<char*>(fData), sizeof(fData));
+ }
+ } break;
}
+
}
private:
@@ -43,6 +93,14 @@ private:
///////////////////////////////////////////////////////////////////////////////
-static SkBenchmark* Fact0(void* p) { return new ComputeChecksumBench(p); }
+static SkBenchmark* Fact0(void* p) { return new ComputeChecksumBench(p, kChecksum_ChecksumType); }
+static SkBenchmark* Fact1(void* p) { return new ComputeChecksumBench(p, kMD5_ChecksumType); }
+static SkBenchmark* Fact2(void* p) { return new ComputeChecksumBench(p, kSHA1_ChecksumType); }
+static SkBenchmark* Fact3(void* p) { return new ComputeChecksumBench(p, kCityHash32); }
+static SkBenchmark* Fact4(void* p) { return new ComputeChecksumBench(p, kCityHash64); }
static BenchRegistry gReg0(Fact0);
+static BenchRegistry gReg1(Fact1);
+static BenchRegistry gReg2(Fact2);
+static BenchRegistry gReg3(Fact3);
+static BenchRegistry gReg4(Fact4);