Ho un programma java che legge molti dati di input da un database, lo manipola, quindi scrive i dati su un altro database (usando driver ODBC, Excel e accesso ai database, su un nuovo computer con Windows 7). Il programma impiega circa 17 minuti per essere eseguito da Eclipse, ma quando ho creato un file .jar eseguibile ci vogliono 10 minuti in più per l'esecuzione (27 totali).Perché il mio file .jar è più lento del programma in eclissi?
I due motivi che ho trovato finora per i file jar lenti (cercando SO e Google) sono che sono compressi e che richiede molto più tempo per scrivere al prompt dei comandi (o al log degli errori) rispetto al console in eclissi. Ho provato a creare un file jar non compresso e ha accelerato solo di circa 10 secondi (il che poteva essere del tutto casuale, poiché i tempi di esecuzione variano comunque di circa 30 secondi). Ho solo circa 10 comandi System.out.println()
nel programma, quindi non dovrebbe rallentarlo molto.
Qualche idea su cosa sta causando un funzionamento molto più lento e se è possibile accelerarlo di nuovo? Fammi sapere se ci sono altri dettagli che potrebbero essere rilevanti che dovrei includere. Grazie!
Hai provato a rimuovere completamente tutti i comandi System.out.println()? La stampa sulla console consuma molta velocità. –
Suggerisco di utilizzare la libreria logger o log4j per stampare i messaggi di registro e puoi usare il timestamp per vedere quale parte del codice sta creando il collo di bottiglia. Questa non è una soluzione concreta, ma dovrebbe aiutare a restringere il problema. – user845279
D'accordo con @Lai Xin Chu. Ma se è difficile rimuovere tutte le stampe basta eseguire il programma e reindirizzare STDOUT su file. Non credo che la console di Eclipse possa funzionare più lentamente della shell. – AlexR