aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeandro Augusto Fogolin Pereira <leandro@zorg.(none)>2009-01-02 18:20:26 -0200
committerLeandro Augusto Fogolin Pereira <leandro@zorg.(none)>2009-01-02 18:20:26 -0200
commit0f1fa248136d96dd53df55c393e460daa68e64fa (patch)
treee147709268b49cbfaaaa4cc79ef2cda2316cf898
parent1ed9b3b12f9de4bf06b23297e68ec85d83e76cc5 (diff)
Don't use processor cores if we don't have data to process on them
-rw-r--r--hardinfo2/benchmark.c15
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);