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.
fuente
Respuestas:
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
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
fuente