O Eclipse executa meu programa java 6 vezes mais rápido ... Posso obter esse desempenho sem usá-lo?

8

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.

Lambert
fonte
3
Eclipse não deveria ser mais lento?
Dinâmico
1
você pode nos mostrar como iniciar o programa fora do eclipse?
Winston Ewert
1
Eu simplesmente lançá-lo com um @echo arquivo .bat off permutações java
Lambert
2
Certifique-se de que ambas as ativações usem o mesmo ambiente de tempo de execução. Descubra o que o Eclipse usa e atribua-o como um parâmetro -vm no início da linha de comandos. O ambiente de tempo de execução que o Eclipse usa ao iniciar é configurado em 'Executar-> Executar configurações ...', selecione o que você usa (provavelmente em 'Aplicativos Java' e procure na guia JRE.
Ozan
5
Relacionado a stackoverflow.com/questions/7206123/… ?
Patrick Hughes

Respostas:

9

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
Eu executei o jvisualvm, que mostrou que o programa não usa mais de 20mb do tamanho do heapsize no shell ou no eclipse.
Lambert
Adicionado meus resultados aqui: craftboom.co.uk/jvm.png Parece que o uso da CPU é maior quando executado no eclipse. Ambos CPU e uso de memória parecem cair para 0 ocassionally no shell o_O
Lambert
Acontece que foi porque eu estava imprimindo cada permutação no console .. problema resolvido. Obrigado pela sua resposta
Lambert
Portanto, o problema era a lentidão do seu console. Sempre desconsidere a saída do console ao cronometrar.
7

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

jmq
fonte
Obrigado pela resposta, no entanto, tentei iniciar meu programa com os mesmos argumentos fornecidos para o eclipse. Ainda o mesmo resultado: /
Lambert