Tengo un programa java que lee muchos datos de entrada de una base de datos, los manipula y luego escribe datos en otra base de datos (usando controladores ODBC, Excel y bases de datos de acceso, en una nueva máquina con Windows 7). El programa tarda unos 17 minutos en ejecutarse desde Eclipse, pero cuando creé un archivo .jar ejecutable, toma 10 minutos adicionales para ejecutarse (27 en total).¿Por qué mi archivo .jar se ejecuta más lento que el programa en eclipse?
Las dos razones que he encontrado hasta ahora para archivos jar lentos (al buscar SO y google) es que están comprimidos y que lleva mucho más tiempo escribir en el símbolo del sistema (o registro de errores) que consola en eclipse. Traté de crear un archivo jar sin comprimir y solo se aceleró unos 10 segundos (lo que podría haber sido completamente aleatorio, ya que los tiempos de ejecución varían en aproximadamente 30 segundos). Solo tengo unos 10 comandos System.out.println()
en el programa, por lo que no debería ralentizarlo demasiado.
¿Alguna idea sobre qué está causando que se ejecute mucho más lento, y si hay alguna manera de acelerarlo? Avíseme si hay algún otro detalle que pueda ser relevante que deba incluir. ¡Gracias!
¿Ha intentado eliminar por completo todos los comandos System.out.println()? La impresión en la consola consume mucha velocidad. –
Sugiero usar la biblioteca logger o log4j para imprimir mensajes de registro y puede usar la marca de tiempo para ver qué parte de su código está creando el cuello de botella. Esta no es una solución concreta, pero debería ayudar a reducir el problema. – user845279
De acuerdo con @Lai Xin Chu. Pero si es difícil eliminar todas las impresiones, simplemente ejecute su programa y redireccione STDOUT al archivo. No creo que la consola de Eclipse pueda funcionar más lento que el shell. – AlexR