Eu escrevi um programa java que gera todas as permutações repetitivas com base nos caracteres e no comprimento fornecido.
Quando executo meu código no Eclipse, ele gera um arquivo com 1.000.000 de permutações em apenas 15 segundos. No entanto, se eu executar o programa na mesma máquina no prompt de comando usando "permutação java", são necessários 1 minuto e 35 segundos para gerar as mesmas permutações de 1 milhão.
Por que é isso? E existe alguma maneira de obter esse tipo de desempenho sem usar o eclipse?
Editar: Resultados Java VisualVM adicionados
www.craftboom.co.uk/jvm.png - O uso da CPU é maior quando executado no eclipse. O uso da CPU e da memória parece cair para 0 ocasionalmente no shell o_O
EDIT2: Acontece que é um problema de impressão na tela. Não mencionei isso no meu post original, mas o programa imprime cada permutação no console. Comentei isso e salvei em um arquivo. Agora, executando igualmente rápido no shell e no eclipse. :-)
Obrigado a todos pelas respostas.
fonte
Respostas:
Tempos de execução mais longos indicam um problema de memória. Você troca para o disco ou tem muito mais coleta de lixo do que dentro do Eclipse (porque você tem um heap menor).
Execute usando um criador de perfil e veja onde o tempo é gasto. Para Java, inicie com jvisualvm no JDK.
fonte
Verifique as configurações em eclipse.ini em sua instalação (ela conterá configurações da JVM). É possível que eles estejam configurando a JVM para fazer um uso mais eficiente do que quando você executa o programa.
http://wiki.eclipse.org/Eclipse.ini
http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html
fonte