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 /hardinfo2/benchmark.c | |
parent | 1ed9b3b12f9de4bf06b23297e68ec85d83e76cc5 (diff) |
Don't use processor cores if we don't have data to process on them
Diffstat (limited to 'hardinfo2/benchmark.c')
-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); |