close Warning: Can't synchronize with repository "(default)" (/var/svn/tolp does not appear to be a Subversion repository.). Look in the Trac log for more information.

Opened 12 years ago

Last modified 11 years ago

#1707 new defect

Uso de RAM en TOL: Función Select

Reported by: Pedro Gea Owned by: Víctor de Buen Remiro
Priority: high Milestone: Mantainance
Component: Kernel Version: 3.1
Severity: critical Keywords:
Cc:

Description

La función Select parece que, de alguna manera, deja vinculada su selección al conjunto del cual la obtuvo.

Por ejemplo, el siguiente código:

Set For(1, 2000, Set (Real i) {
  Set range = Range(1, 2000, 1);
  Select(range, Real (Real k) { k==1 })
});

incrementa la RAM en 215 MB.

Mientras que:

Set For(1, 2000, Set (Real i) {
  Set range = Range(1, 2000, 1);
  Copy(Select(range, Real (Real k) { k==1 }))
});

lo hace en apenas 1 MB.

Es cierto, que el conjunto de elementos seleccionados han de permanecer tras la selección, pero no todo el conjunto sobre el que se hace la selección como parece que está ocurriendo.

Change History (2)

comment:1 Changed 12 years ago by Pedro Gea

Véase #1712.

comment:2 Changed 11 years ago by Pedro Gea

(In [5979]) Refs #1707, #1712
Se introduce un método (ForgetArgs()) en BTmpObject que nos permita deshacernos de los argumentos almacenados (por las derivadas de BTmpContens) una vez que es el calculado el contenido (contens_) del objeto.

Note: See TracTickets for help on using tickets.