Ver Mensaje Individual
  #3 (permalink)  
Antiguo 08/07/2016, 00:45
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 7 meses
Puntos: 204
Respuesta: ¿Se puede optimizar el siguiente codigo?

Un hash de digamos 64 caracteres mas una ruta de digamos 500 caracteres, en 70.000 líneas nos daría un consumo aproximado de 38MB (que será menos si conviertes el hash a entero), no veo qué problema puede presentar leer dos ficheros de esas características en memoria y realizar la ordenación directamente en memoria, como te está proponiendo enrieto.

Para ordenar desde el fichero puedes optar por crearte un índice en memoria que te indique en qué posición empieza cada línea del fichero a ordenar e iterar sobre dicho índice. Usar el índice te permite ir al inicio de cada registro directamente sin tener que hacer cálculos repetitivos. Cada vez que ordenas un elemento eliminas dicha entrada del índice (o lo marcas como usado) y te ahorras futuras comprobaciones sobre dicho elemento.

Opciones hay bastantes unas más rápidas pero más complejas de implementar y otras más lentas pero con una algorítmica más sencilla.

Un saludo.
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.