From cc1dd99ae75549ea58170cb13bcc8636625a46c6 Mon Sep 17 00:00:00 2001 From: Gaurav Shah Date: Fri, 12 Feb 2010 11:21:18 -0800 Subject: SHA* digest function speed test. BUG=1210 TEST=This is a test, Review URL: http://codereview.chromium.org/596079 --- tests/sha_benchmark.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 tests/sha_benchmark.c (limited to 'tests/sha_benchmark.c') diff --git a/tests/sha_benchmark.c b/tests/sha_benchmark.c new file mode 100644 index 00000000..bc712ada --- /dev/null +++ b/tests/sha_benchmark.c @@ -0,0 +1,55 @@ +/* Copyright (c) 2010 The Chromium OS Authors. All rights reserved. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include +#include + +#include "sha.h" +#include "timer_utils.h" +#include "utility.h" + +#define NUM_HASH_ALGORITHMS 3 +#define TEST_BUFFER_SIZE 4000000 + +/* Table of hash function pointers and their description. */ +typedef uint8_t* (*Hashptr) (const uint8_t*, int, uint8_t*); +typedef struct HashFxTable { + Hashptr hash; + char* description; +} HashFxTable; + +HashFxTable hash_functions[NUM_HASH_ALGORITHMS] = { + {SHA1, "SHA1"}, + {SHA256, "SHA256"}, + {SHA512, "SHA512"} +}; + +int main(int argc, char* argv[]) { + int i; + double speed; + uint32_t msecs; + uint8_t* buffer = (uint8_t*) Malloc(TEST_BUFFER_SIZE); + uint8_t* digest = (uint8_t*) Malloc(SHA512_DIGEST_SIZE); /* Maximum size of + * the digest. */ + ClockTimerState ct; + + /* Iterate through all the hash functions. */ + for(i = 0; i < NUM_HASH_ALGORITHMS; i++) { + StartTimer(&ct); + hash_functions[i].hash(buffer, TEST_BUFFER_SIZE, digest); + StopTimer(&ct); + + msecs = GetDurationMsecs(&ct); + speed = ((TEST_BUFFER_SIZE / 10e6) + / (msecs / 10e3)); /* Mbytes/sec */ + + fprintf(stderr, "%s Time taken = %u ms, Speed = %f Mbytes/sec\n", + hash_functions[i].description, msecs, speed); + } + + Free(digest); + Free(buffer); + return 0; +} -- cgit v1.2.1