diff options
Diffstat (limited to 'hardinfo2')
| -rw-r--r-- | hardinfo2/benchmark.c | 15 | 
1 files changed, 12 insertions, 3 deletions
| 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); | 
