2010-09-23 12 views
11

Ho un'applicazione Java multi-threaded intensiva della CPU e sto cercando modi per misurare le sue prestazioni in fase di esecuzione (utile per l'automazione). Ho provato alcune opzioniCome misurare le prestazioni di un'applicazione Java?

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

Le prime due misure in tempo reale. L'ultima misura il tempo della CPU per un solo thread. Voglio misurare il tempo CPU per tutti i thread generati dal processo.

Prima di resuscitare una vecchia macchina e dedicarla a questa attività, vorrei vedere quali opzioni ho ora.

Eseguo Linux e una soluzione dipendente dalla piattaforma è accettabile, ma meno desiderabile.

+2

Vedere "Teoria e pratica Java: compilazione dinamica e misurazione delle prestazioni" all'indirizzo http://www.ibm.com/developerworks/java/library/j-jtp12214/. È un commento, non una risposta :-) – Istao

+0

Dai un'occhiata alla fonte di questo plugin - JTop: http://blogs.oracle.com/alanb/entry/two_fine_demos –

risposta

11

Provare perf4j: http://perf4j.codehaus.org/ Si consiglia di utilizzarlo insieme all'AOP, ma non è obbligatorio. Vedere http://perf4j.codehaus.org/devguide.html#Using_Spring_AOP_to_Integrate_Timing_Aspects per ulteriori dettagli su AOP.

+0

Sono abbastanza sicuro che perf4j misura il tempo reale e non il tempo della CPU. Mi piacciono i grafici però. – Alexandru

+0

@Alexandru Credo che questo fosse il requisito. Almeno questo è quello che capisco dalla domanda ... –

+0

Hai ragione, non ero abbastanza chiaro. Il problema con il tempo reale è che i tempi di esecuzione cambiano se sfoglio StackOverflow – Alexandru

2

Provare ad abilitare JVM con Dtrace. Ha molte sonde di prestazioni che ti aiutano a ottenere quello che vuoi.

+0

Non è disponibile Dtrace solo in Solaris? – Alexandru

+0

Dtrace è disponibile per openSolaris e Freebsd. Una cosa che si può fare è ottenere l'applicazione java su uno dei sistemi operativi solo per eseguire una performance e ottenere i numeri. – gaurav

+0

Dtrace è anche disponibile su Mac OS X. Ma le sonde Dtrace abilitate in JVM Mac OS X possono differire da quelle abilitate per Solaris. – mattbh

Problemi correlati