SoloCodigo
Programación General => Java => Mensaje iniciado por: beafasa en Jueves 5 de Agosto de 2004, 12:23
-
Hola:
Tengo que pasar los datos de un fichero a una tabla. Las lineas del fichero siguen el mismo formato que es: c1|c2|c3|c4 separadas por la |. Entonces estoy usando la clase StringTokenizer para poder obtener cada parte y luego ya meterlo en la tabla. El problema es que necesito que vaya mas rapido, por que le fichero se espera que tenga unos 2 millones de lineas y me tardaria unas 33 horas segun lo tengo. Y se supone que tiene que poder ejecutarse por la noche.
Alguien sabe como podria optimizarlo? He usado el metodo executeBatch y ha mejorado el tiempo pero necesito mas. Se podria utilizar algo en vez de StringTokenizer que me hiciera que fuera mas rapido?
Muchas gracias
-
Habría que ver cómo tienes el código y todo eso, pero te comento varias ideas.
- Para leer el fichero utiliza algo que use BufferedInputStream. Si lees un fichero sin Buffered, cada vez que lees se realiza una lectura real en disco. Si utilizas el Buffered, se lee de golpe un cacho grande de fichero. El resultado es una lectura más rápida.
- Si tu separador siempre es |, posiblemente sea más rápido si los buscas tú con un bucle que usar el StringTokenizer.
- Otro consejo. Los StringBuffer son más rápidos en general que los String.
De todas formas, yo creo que lo más determinante en tiempo, si no lo estás usando ya, es el BufferedInputStream o si no, leer tú varios kBytes de fichero de golpe (de una sola lectura) y luego ir analizándolos.
Se bueno.
-
Muchas gracias por tu ayuda