2010-09-23 2 views
11

У меня есть многозадачное многопоточное Java-приложение с процессором, и я ищу способы измерения его производительности во время выполнения (полезно для автоматизации). Я пробовал несколько вариантовКак измерить производительность приложения Java?

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

Первые две меры в реальном времени. Последнее измеряет время процессора только для одного потока. Я хочу измерить время CPU для всех потоков, порожденных процессом.

Перед тем, как воскресить старую машину и посвятить ее этой задаче, я хотел бы посмотреть, какие у меня есть варианты.

Я запускаю Linux и зависимое от платформы решение приемлемо, но наименее желательно.

+2

См. «Теория и практика Java: динамическая компиляция и измерение производительности» на странице http://www.ibm.com/developerworks/java/library/j-jtp12214/. Это комментарий, а не ответ :-) – Istao

+0

Взгляните на источник этого плагина - JTop: http://blogs.oracle.com/alanb/entry/two_fine_demos –

ответ

11

Попробуйте perf4j: http://perf4j.codehaus.org/ Я рекомендую использовать его вместе с АОП, но это не обязательно. См. http://perf4j.codehaus.org/devguide.html#Using_Spring_AOP_to_Integrate_Timing_Aspects для получения дополнительной информации об АОП.

+0

Я уверен, что perf4j измеряет в реальном времени, а не время CPU. Мне нравятся графики. – Alexandru

+0

@Alexandru Я считаю, что это были требования. По крайней мере, это то, что я понимаю из вопроса ... –

+0

Вы правы, я был недостаточно ясен. Проблема с реальным временем заключается в том, что время работы изменяется, если я просматриваю StackOverflow – Alexandru

2

Попробуйте включить JVM с Dtrace. У этого есть много датчиков производительности, которые помогут вам получить то, что вы хотите.

+0

Не доступен ли Dtrace только в Solaris? – Alexandru

+0

Dtrace доступен для openSolaris, а также Freebsd. Одна вещь может быть сделана, чтобы получить приложение java на любой из ОС только для того, чтобы выполнить его и получить номера. – gaurav

+0

Dtrace также доступен в Mac OS X. Но функции Dtrace, включенные в Mac OS X JVM, могут отличаться от тех, которые разрешены для Solaris. – mattbh

Смежные вопросы