diff options
| author | Leandro Pereira <leandro@hardinfo.org> | 2017-07-02 22:12:10 -0700 | 
|---|---|---|
| committer | Leandro Pereira <leandro@hardinfo.org> | 2017-07-02 22:12:38 -0700 | 
| commit | e9d69db8341ee7452ce4e8f8dc54e972b0390bfe (patch) | |
| tree | 4b0304f6c9b0e4c68d599dfb7587a744650e8486 /modules/benchmark | |
| parent | 03313957df7968ac0e7bf724f4d8484378aabb68 (diff) | |
Add zlib benchmark
Diffstat (limited to 'modules/benchmark')
| -rw-r--r-- | modules/benchmark/zlib.c | 71 | 
1 files changed, 71 insertions, 0 deletions
| diff --git a/modules/benchmark/zlib.c b/modules/benchmark/zlib.c new file mode 100644 index 00000000..eeec9d0e --- /dev/null +++ b/modules/benchmark/zlib.c @@ -0,0 +1,71 @@ +/* + *    HardInfo - Displays System Information + *    Copyright (C) 2017 Leandro A. F. Pereira <leandro@hardinfo.org> + * + *    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. + * + *    This program is distributed in the hope that it will be useful, + *    but WITHOUT ANY WARRANTY; without even the implied warranty of + *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + *    GNU General Public License for more details. + * + *    You should have received a copy of the GNU General Public License + *    along with this program; if not, write to the Free Software + *    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA + */ + +#include <glib.h> +#include <stdlib.h> +#include <zlib.h> + +#include "benchmark.h" + +static gpointer zlib_for(unsigned int start, unsigned int end, void *data, gint thread_number) +{ +    char *compressed; +    uLong bound = compressBound(bound); +    unsigned int i; + +    compressed = malloc(bound); +    if (!compressed) +        return NULL; +     +    for (i = start; i <= end; i++) {  +        char uncompressed[65536]; +        uLong compressedBound = bound; +        uLong destBound = sizeof(uncompressed); + +        compress(compressed, &compressedBound, data, 65536); +        uncompress(uncompressed, &destBound, compressed, compressedBound); +    } + +    free(compressed); +     +    return NULL; +} + +void +benchmark_zlib(void) +{ +    gdouble elapsed = 0; +    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; +    }      +     +    shell_view_set_enabled(FALSE); +    shell_status_update("Running Zlib benchmark..."); +         +    elapsed = benchmark_parallel_for(0, 50000, zlib_for, tmpsrc); +     +    g_free(bdata_path); +    g_free(tmpsrc); + +    gdouble marks = (50000. * 65536.) / (elapsed * 840205128.); +    bench_results[BENCHMARK_ZLIB] = marks; +} | 
