In lmm_update_modified_set, don't visit variables twice.
Note: the constraints may be ordered differently in
modified_constraint_set, and the timings may vary a bit.
If it is really important, the following patch fixes that:
--- a/src/surf/maxmin.c
+++ b/src/surf/maxmin.c
@@ -790,10 +790,8 @@ static void lmm_update_modified_set_rec(lmm_system_t sys,
lmm_variable_t var = elem->variable;
s_lmm_element_t *cnsts = var->cnsts;
int i;
- if (var->visited == sys->visited_counter)
- continue;
- var->visited = sys->visited_counter;
- for (i = 0; i < var->cnsts_number; i++) {
+ for (i = 0; var->visited != sys->visited_counter
+ && i < var->cnsts_number ; i++) {
if (cnsts[i].constraint != cnst
&& !xbt_swag_belongs(cnsts[i].constraint,
&sys->modified_constraint_set)) {
@@ -801,6 +799,7 @@ static void lmm_update_modified_set_rec(lmm_system_t sys,
lmm_update_modified_set_rec(sys, cnsts[i].constraint);
}
}
+ var->visited = sys->visited_counter;
}
}