aboutsummaryrefslogtreecommitdiff
path: root/hardinfo2/arch/common/zlib.h
diff options
context:
space:
mode:
Diffstat (limited to 'hardinfo2/arch/common/zlib.h')
-rw-r--r--hardinfo2/arch/common/zlib.h54
1 files changed, 31 insertions, 23 deletions
diff --git a/hardinfo2/arch/common/zlib.h b/hardinfo2/arch/common/zlib.h
index c334c083..f79678b3 100644
--- a/hardinfo2/arch/common/zlib.h
+++ b/hardinfo2/arch/common/zlib.h
@@ -16,10 +16,13 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
-static void
-benchmark_zlib(void)
+static gpointer
+parallel_zlib(unsigned int start, unsigned int end, void *data)
{
GModule *libz;
+ gint i;
+ glong srclen = 65536;
+
static gulong (*compressBound) (glong srclen) = NULL;
static gint (*compress) (gchar *dst, glong *dstlen,
const gchar *src, glong srclen) = NULL;
@@ -30,7 +33,7 @@ benchmark_zlib(void)
libz = g_module_open("/usr/lib/libz.so", G_MODULE_BIND_LAZY);
if (!libz) {
g_warning("Cannot load ZLib: %s", g_module_error());
- return;
+ return NULL;
}
}
@@ -38,19 +41,33 @@ benchmark_zlib(void)
|| !g_module_symbol(libz, "compressBound", (gpointer) & compressBound)) {
g_module_close(libz);
- return;
+ return NULL;
}
}
- shell_view_set_enabled(FALSE);
+ for (i = start; i <= end; i++) {
+ gchar *dst;
+ glong dstlen = compressBound(srclen);
+
+ dst = g_new0(gchar, dstlen);
+ compress(dst, &dstlen, data, srclen);
+ g_free(dst);
+ }
+
+ return NULL;
+}
+
- int i;
+static void
+benchmark_zlib(void)
+{
GTimer *timer = g_timer_new();
gdouble elapsed = 0;
- gchar src[65536], *tmpsrc;
- glong srclen = 65536;
+ gchar *tmpsrc;
gchar *bdata_path;
+ shell_view_set_enabled(FALSE);
+
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);
@@ -59,24 +76,15 @@ benchmark_zlib(void)
shell_status_update("Compressing 64MB with default options...");
- for (i = 0; i <= 1000; i++) {
- g_timer_start(timer);
-
- gchar *dst;
- glong dstlen = compressBound(srclen);
-
- dst = g_new0(gchar, dstlen);
- compress(dst, &dstlen, src, srclen);
-
- g_timer_stop(timer);
- elapsed += g_timer_elapsed(timer, NULL);
- g_free(dst);
-
- shell_status_set_percentage(i/10);
- }
+ g_timer_start(timer);
+ benchmark_parallel_for(0, 1000, parallel_zlib, tmpsrc);
+ g_timer_stop(timer);
+
+ elapsed = g_timer_elapsed(timer, NULL);
g_timer_destroy(timer);
g_free(bdata_path);
+ g_free(tmpsrc);
bench_results[BENCHMARK_ZLIB] = 65536.0 / elapsed;
}