From cfcb1bef94a8cfb565d9450b38f57d4f5c83790a Mon Sep 17 00:00:00 2001 From: "bungeman@google.com" Date: Thu, 31 Jan 2013 19:47:48 +0000 Subject: Add SHA1 and MD5 to utils. https://codereview.appspot.com/7071055/ git-svn-id: http://skia.googlecode.com/svn/trunk@7496 2bbb7eff-a529-9590-31e7-b0007b416f81 --- bench/ChecksumBench.cpp | 68 +++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 63 insertions(+), 5 deletions(-) (limited to 'bench/ChecksumBench.cpp') 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(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(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(fData), sizeof(fData)); + } + } break; + case kCityHash64: { + for (int i = 0; i < N; i++) { + volatile uint64_t result = SkCityHash::Compute64(reinterpret_cast(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); -- cgit v1.2.3