Eclipse ejecuta mi programa Java 6 veces más rápido ... ¿Puedo lograr este rendimiento sin usarlo?

8

He escrito un programa java que genera todas las permutaciones repetitivas basadas en los caracteres y la longitud dada.

Cuando ejecuto mi código en Eclipse, genera un archivo con 1,000,000 de permutaciones en solo 15 segundos. Sin embargo, si ejecuto el programa en la misma máquina en el símbolo del sistema usando "permutación de Java". Tardo 1 minuto y 35 segundos en generar las mismas permutaciones de 1M.

¿Por qué es esto? ¿Y de todos modos puedo obtener este tipo de rendimiento sin usar eclipse?

Editar: se agregaron resultados de Java VisualVM

www.craftboom.co.uk/jvm.png: el uso de la CPU es mayor cuando se ejecuta en eclipse. El uso de CPU y memoria parece caer a 0 ocasionalmente en el shell o_O

EDIT2: Resulta que es un problema al imprimir en la pantalla. No lo mencioné en mi publicación original, pero el programa imprime cada permutación en la consola ... Comentó eso y lo guardó en un archivo en su lugar ... ahora se ejecuta igualmente rápido tanto en shell como en eclipse. :-)

Gracias a todos por las respuestas.

Lambert
fuente
3
¿No debería ser Eclipse más lento?
Dinámico
1
¿Puedes mostrarnos cómo inicias el programa fuera de eclipse?
Winston Ewert
1
Simplemente lo lanzo con un archivo .bat @echo fuera de las permutaciones de Java
Lambert
2
Asegúrese de que ambos lanzamientos utilicen el mismo entorno de tiempo de ejecución. Descubra el que usa Eclipse y dele como parámetro -vm en el inicio de la línea de comandos. El entorno de tiempo de ejecución que utiliza Eclipse cuando se inicia el inicio se configura en 'Ejecutar-> Ejecutar configuraciones ...', seleccione el que usa (probablemente en 'Aplicaciones Java' y busque en la pestaña JRE.
Ozan
55
Relacionado con stackoverflow.com/questions/7206123/… ?
Patrick Hughes

Respuestas:

9

Los tiempos de ejecución más largos indican un problema de memoria. O cambia al disco o tiene muchas más recolecciones de basura que dentro de Eclipse (porque tiene un montón más pequeño).

Ejecute con un generador de perfiles y vea dónde pasa el tiempo. Para Java, comience con jvisualvm en el JDK.


fuente
Ejecuté jvisualvm que mostró que el programa no usa más de 20mb del tamaño de pila en el shell o el eclipse.
Lambert
Agregué mis resultados aquí: craftboom.co.uk/jvm.png Parece que el uso de la CPU es mayor cuando se ejecuta en eclipse. El uso de la CPU y la memoria parece caer a 0 ocasionalmente en el shell o_O
Lambert
Resulta que fue porque estaba imprimiendo cada permutación en la consola ... problema resuelto. Gracias por su respuesta
Lambert
Entonces, el problema era la lentitud de su consola. Siempre ignore la salida de la consola al momento.
7

Compruebe la configuración en eclipse.ini en su instalación (contendrá la configuración de JVM). Es posible que estén configurando la JVM para hacer un uso más eficiente de la misma que cuando ejecutas el programa.

http://wiki.eclipse.org/Eclipse.ini

http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html

jmq
fuente
Gracias por la respuesta, sin embargo, he intentado iniciar mi programa con los mismos argumentos dados para eclipse. Sigue siendo el mismo resultado: /
Lambert