diff options
| author | Leandro Augusto Fogolin Pereira <leandro@zorg.(none)> | 2009-01-02 18:20:26 -0200 | 
|---|---|---|
| committer | Leandro Augusto Fogolin Pereira <leandro@zorg.(none)> | 2009-01-02 18:20:26 -0200 | 
| commit | 0f1fa248136d96dd53df55c393e460daa68e64fa (patch) | |
| tree | e147709268b49cbfaaaa4cc79ef2cda2316cf898 | |
| parent | 1ed9b3b12f9de4bf06b23297e68ec85d83e76cc5 (diff) | |
Don't use processor cores if we don't have data to process on them
| -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); | 
