diff options
Diffstat (limited to 'modules/benchmark/cryptohash.c')
| -rw-r--r-- | modules/benchmark/cryptohash.c | 49 | 
1 files changed, 29 insertions, 20 deletions
| diff --git a/modules/benchmark/cryptohash.c b/modules/benchmark/cryptohash.c index 6150f3ef..6daef545 100644 --- a/modules/benchmark/cryptohash.c +++ b/modules/benchmark/cryptohash.c @@ -1,10 +1,10 @@  /* - *    HardInfo - Displays System Information - *    Copyright (C) 2003-2007 Leandro A. F. Pereira <leandro@hardinfo.org> + *    HardInfo - System Information and Benchmark + *    Copyright (C) 2003-2007 L. A. F. Pereira <l@tia.mat.br>   *   *    This program is free software; you can redistribute it and/or modify   *    it under the terms of the GNU General Public License as published by - *    the Free Software Foundation, version 2. + *    the Free Software Foundation, version 2 or later.   *   *    This program is distributed in the hope that it will be useful,   *    but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -20,7 +20,14 @@  #include "sha1.h"  #include "benchmark.h" -void inline md5_step(char *data, glong srclen) +/* if anything changes in this block, increment revision */ +#define BENCH_REVISION 2 +#define BENCH_DATA_SIZE 65536 +#define CRUNCH_TIME 5 +#define BENCH_DATA_MD5 "c25cf5c889f7bead2ff39788eedae37b" +#define STEPS 250 + +inline void md5_step(char *data, glong srclen)  {      struct MD5Context ctx;      guchar checksum[16]; @@ -30,7 +37,7 @@ void inline md5_step(char *data, glong srclen)      MD5Final(checksum, &ctx);  } -void inline sha1_step(char *data, glong srclen) +inline void sha1_step(char *data, glong srclen)  {      SHA1_CTX ctx;      guchar checksum[20]; @@ -40,15 +47,15 @@ void inline sha1_step(char *data, glong srclen)      SHA1Final(checksum, &ctx);  } -static gpointer cryptohash_for(unsigned int start, unsigned int end, void *data, gint thread_number) +static gpointer cryptohash_for(void *in_data, gint thread_number)  {      unsigned int i; -    for (i = start; i <= end; i++) { +    for (i = 0;i <= STEPS; i++) {          if (i & 1) { -            md5_step(data, 65536); +            md5_step(in_data, BENCH_DATA_SIZE);          } else { -            sha1_step(data, 65536); +            sha1_step(in_data, BENCH_DATA_SIZE);          }      } @@ -59,22 +66,24 @@ void  benchmark_cryptohash(void)  {      bench_value r = EMPTY_BENCH_VALUE; -    gchar *tmpsrc, *bdata_path; - -    bdata_path = g_build_filename(params.path_data, "benchmark.data", NULL); -    if (!g_file_get_contents(bdata_path, &tmpsrc, NULL, NULL)) { -        g_free(bdata_path); -        return; -    } +    gchar *test_data = get_test_data(BENCH_DATA_SIZE); +    if (!test_data) return;      shell_view_set_enabled(FALSE);      shell_status_update("Running CryptoHash benchmark..."); -    r = benchmark_parallel_for(0, 0, 5000, cryptohash_for, tmpsrc); +    gchar *d = md5_digest_str(test_data, BENCH_DATA_SIZE); +    if (!SEQ(d, BENCH_DATA_MD5)) +        bench_msg("test data has different md5sum: expected %s, actual %s", BENCH_DATA_MD5, d); + +    r = benchmark_crunch_for(CRUNCH_TIME, 0, cryptohash_for, test_data); +    r.revision = BENCH_REVISION; +    snprintf(r.extra, 255, "r:%d, d:%s", STEPS, d); + +    g_free(test_data); +    g_free(d); -    g_free(bdata_path); -    g_free(tmpsrc); +    r.result /= 10; -    r.result = 312.0 / r.elapsed_time; //TODO: explain in code comments      bench_results[BENCHMARK_CRYPTOHASH] = r;  } | 
