A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Optimization of the lmm_variable_t mallocator
[simgrid.git]
/
src
/
surf
/
maxmin.c
diff --git
a/src/surf/maxmin.c
b/src/surf/maxmin.c
index
d2bd685
..
014457b
100644
(file)
--- a/
src/surf/maxmin.c
+++ b/
src/surf/maxmin.c
@@
-109,7
+109,6
@@
static void lmm_var_free(lmm_system_t sys, lmm_variable_t var)
{
lmm_variable_disable(sys, var);
{
lmm_variable_disable(sys, var);
- free(var->cnsts);
xbt_mallocator_release(sys->variable_mallocator, var);
}
xbt_mallocator_release(sys->variable_mallocator, var);
}
@@
-163,18
+162,20
@@
XBT_INLINE void lmm_constraint_free(lmm_system_t sys,
static void *lmm_variable_mallocator_new_f(void)
{
static void *lmm_variable_mallocator_new_f(void)
{
- return xbt_new(s_lmm_variable_t, 1);
+ lmm_variable_t var = xbt_new(s_lmm_variable_t, 1);
+ var->cnsts = NULL; /* will be created by realloc */
+ return var;
}
static void lmm_variable_mallocator_free_f(void *var)
{
}
static void lmm_variable_mallocator_free_f(void *var)
{
+ xbt_free(((lmm_variable_t) var)->cnsts);
xbt_free(var);
}
static void lmm_variable_mallocator_reset_f(void *var)
{
xbt_free(var);
}
static void lmm_variable_mallocator_reset_f(void *var)
{
- /* memset to zero like calloc */
- memset(var, 0, sizeof(s_lmm_variable_t));
+ /* lmm_variable_new() initializes everything */
}
lmm_variable_t lmm_variable_new(lmm_system_t sys, void *id,
}
lmm_variable_t lmm_variable_new(lmm_system_t sys, void *id,
@@
-190,10
+191,8
@@
lmm_variable_t lmm_variable_new(lmm_system_t sys, void *id,
var = xbt_mallocator_get(sys->variable_mallocator);
var->id = id;
var->id_int = Global_debug_id++;
var = xbt_mallocator_get(sys->variable_mallocator);
var->id = id;
var->id_int = Global_debug_id++;
- var->cnsts = xbt_
new0(s_lmm_element_t, number_of_constraints
);
+ var->cnsts = xbt_
realloc(var->cnsts, number_of_constraints * sizeof(s_lmm_element_t)
);
for (i = 0; i < number_of_constraints; i++) {
for (i = 0; i < number_of_constraints; i++) {
- /* Should be useless because of the
- calloc but it seems to help valgrind... */
var->cnsts[i].element_set_hookup.next = NULL;
var->cnsts[i].element_set_hookup.prev = NULL;
var->cnsts[i].active_element_set_hookup.next = NULL;
var->cnsts[i].element_set_hookup.next = NULL;
var->cnsts[i].element_set_hookup.prev = NULL;
var->cnsts[i].active_element_set_hookup.next = NULL;
@@
-203,17
+202,22
@@
lmm_variable_t lmm_variable_new(lmm_system_t sys, void *id,
var->cnsts[i].value = 0.0;
}
var->cnsts_size = number_of_constraints;
var->cnsts[i].value = 0.0;
}
var->cnsts_size = number_of_constraints;
- var->cnsts_number = 0; /* Should be useless because of the
- calloc but it seems to help valgrind... */
+ var->cnsts_number = 0;
var->weight = weight;
var->bound = bound;
var->value = 0.0;
var->weight = weight;
var->bound = bound;
var->value = 0.0;
-
+ var->mu = 0.0;
+ var->new_mu = 0.0;
var->func_f = func_f_def;
var->func_fp = func_fp_def;
var->func_fpi = func_fpi_def;
var->func_f = func_f_def;
var->func_fp = func_fp_def;
var->func_fpi = func_fpi_def;
+ var->variable_set_hookup.next = NULL;
+ var->variable_set_hookup.prev = NULL;
+ var->saturated_variable_set_hookup.next = NULL;
+ var->saturated_variable_set_hookup.prev = NULL;
+
if (weight)
xbt_swag_insert_at_head(var, &(sys->variable_set));
else
if (weight)
xbt_swag_insert_at_head(var, &(sys->variable_set));
else