2010-09-23 18 views
11

Tengo una aplicación Java multiproceso con uso intensivo de CPU y estoy buscando formas de medir su rendimiento en tiempo de ejecución (útil para la automatización). Probé algunas opciones¿Cómo medir el rendimiento de una aplicación Java?

System.currentTimeMillis(); 
System.nanoTime(); 
ThreadMXBean.getThreadCPUTime(); 

Las dos primeras miden el tiempo real. El último mide el tiempo de CPU para solo un hilo. Quiero medir el tiempo de CPU para todos los hilos generados por el proceso.

Antes de resucitar una máquina vieja y dedicarla a esta tarea, me gustaría ver qué opciones tengo ahora.

Ejecuto Linux y una solución dependiente de plataforma es aceptable, pero menos deseable.

+2

Consulte "Teoría y práctica de Java: compilación dinámica y medición del rendimiento" en http://www.ibm.com/developerworks/java/library/j-jtp12214/. Es un comentario, no una respuesta :-) – Istao

+0

Echa un vistazo a la fuente de este complemento - JTop: http://blogs.oracle.com/alanb/entry/two_fine_demos –

Respuesta

11

Probar perf4j: http://perf4j.codehaus.org/ Recomiendo usarlo junto con AOP, pero no es obligatorio. Ver http://perf4j.codehaus.org/devguide.html#Using_Spring_AOP_to_Integrate_Timing_Aspects para más detalles sobre AOP.

+0

Estoy bastante seguro de que perf4j mide el tiempo real y no el tiempo de CPU. Aunque me gustan los gráficos. – Alexandru

+0

@Alexandru Creo que estos fueron los requisitos. Al menos esto es lo que entiendo de la pregunta ... –

+0

Tienes razón, no estaba lo suficientemente claro. El problema con el tiempo real es que los tiempos de ejecución cambian si busco StackOverflow – Alexandru

2

Intente habilitar la JVM con Dtrace. Tiene muchas sondas de rendimiento que lo ayudan a obtener lo que quiera.

+0

¿No está Dtrace disponible solo en Solaris? – Alexandru

+0

Dtrace está disponible para openSolaris y Freebsd. Una cosa que se puede hacer es obtener la aplicación java en cualquiera de los sistemas operativos solo para realizar un funcionamiento y obtener los números. – gaurav

+0

Dtrace también está disponible en Mac OS X. Pero las sondas Dtrace habilitadas en Mac OS X JVM pueden diferir de las habilitadas para Solaris. – mattbh

Cuestiones relacionadas