From 0f1fa248136d96dd53df55c393e460daa68e64fa Mon Sep 17 00:00:00 2001 From: Leandro Augusto Fogolin Pereira Date: Fri, 2 Jan 2009 18:20:26 -0200 Subject: Don't use processor cores if we don't have data to process on them --- hardinfo2/benchmark.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'hardinfo2') diff --git a/hardinfo2/benchmark.c b/hardinfo2/benchmark.c index b804a0cb..1018f395 100644 --- a/hardinfo2/benchmark.c +++ b/hardinfo2/benchmark.c @@ -95,12 +95,21 @@ gdouble benchmark_parallel_for(guint start, guint end, temp = module_call_method("devices::getProcessorCount"); n_cores = temp ? atoi(temp) : 1; g_free(temp); - - iter_per_core = (end - start) / n_cores; + + while (1) { + iter_per_core = (end - start) / n_cores; + + if (iter_per_core == 0) { + DEBUG("not enough items per core; disabling one"); + n_cores--; + } else { + break; + } + } DEBUG("processor has %d cores; processing %d elements (%d per core)", n_cores, (end - start), iter_per_core); - + g_timer_start(timer); for (iter = start; iter < end; iter += iter_per_core) { ParallelBenchTask *pbt = g_new0(ParallelBenchTask, 1); -- cgit v1.2.3