[gecode-users] Saving memory with IntVarArrays
Guido Tack
tack at ps.uni-sb.de
Mon Mar 2 08:09:25 CET 2009
Malcolm Ryan wrote:
> Currently, I create an IntVarArray as:
>
> vars = IntVarArray(space, N);
>
> and then incrementally create variables as:
>
> vars[t] = IntVar(space, domainSet);
>
> My question is: does this actually save memory? I assume that creating
> the array created N 'uninitialised' IntVars. Are these variables
> significantly smaller than initialised IntVars? Or is this a false
> saving?
An IntVar is just a container for a pointer to an "IntVar
implementation". An uninitialized IntVar therefore is much smaller
than an actual IntVar.
> Would I be better to create a smaller IntVarArray and replace
> it with an incrementally longer one as variables are created?
You can grow IntVarArrays incrementally using the add method (they are
resized automatically). That way you may save some more memory, and
all the IntVars in the array are initialized at all times. Otherwise
you can't e.g. call update on the array, you always have to update the
variables individually, right?
Cheers,
Guido
More information about the gecode-users
mailing list