Ver Mensaje Individual
  #9  
Antiguo 22-12-2010
Bauhaus1975 Bauhaus1975 is offline
Miembro
 
Registrado: may 2005
Ubicación: Málaga
Posts: 135
Reputación: 19
Bauhaus1975 Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Y si sabes cuántos valores vas a poner en el array, ¿por qué no lo haces de primera hora?, ejemplo: SetLength(listaArray,16384); y luego liberas la memoria.
No sé cómo lo hace delphi en estos casos, pero si tienes un array de n elementos y lo vas a redimensionar... puede que simplemente lo aumente de tamaño o puede ser que cree uno nuevo con el nuevo tamaño, pase los valores del viejo al nuevo, borre el viejo y ya tienes todo en el nuevo.
En este último caso todo el proceso será mucho más lento que en el primer caso y necesitarás el doble de memoria, que lo enlentecerá mucho más todavía.
Una simple propuesta la tuya, que puede ser parte de la solución (cuánto cuesta a veces simplificar). Realmente conozco a priori la longitud de las listas, esto es 3 elevado a |T|.
Así que voy a tratar de definir una vez la longitud, y revisar el uso de la lista de Arrays. Por otra parte voy a implementar una función para recorrer la lista de punteros y liberar uno a uno los nodos, pues he leido que de no ser así no voy a estar haciendo bien las cosas.

Cuando haya probado estos cambios os cuento como fue.
Gracias de nuevo y un saludo.
Responder Con Cita