2013-07-13 3 views
1

Я ищу «что-то», которое может измерять время выполнения, если мой java-код. Я знаю, что могу сделать это с интенсивным использованием System.nanoTime() и подобных вещей, но мне нужно что-то более продвинутое.Измерение времени выполнения Java

Вот что я хочу сделать

gate.start("request"); 
gate.start("dbstuff"); 
doDbStuff(); 
gate.stop("dbstuff"); 
gate.start("businesslogic"); 
doSomeSimpleStuff(); 
for (int i = 0; i < 100; i++) { 
    gate.start("complexeAlgorithm"); // sum the 100 cycles 
    doComplexeAlgorithm(); 
    gate.stop("complexeAlgorithm"); 
} 
gate.stop("businesslogic"); 
gate.stop("request"); 

Выход должен быть чем-то вроде этого

request 3.000 ms 
+ dbstuff 700 ms 
+ businesslogic 2.100 ms 
    + complexeAlgorithm 300 ms 
    + rest 1.800 ms 
+ rest 200 ms 

Это «что-то» может быть основой или инструментом JVM или что-нибудь, что помогает мне найти моих убийц. Какие-либо предложения?

ответ

0

Вы просите профайлер, самый простой один свободен: взглянуть на jvisualvm, она поставляется с Java SDK. Другие варианты: Yourkit и jprofiler.

Профилирование - непростая тема, поэтому было бы лучше, если бы вы искали «java profiler» в сети.

0

взгляд на https://github.com/codahale/metrics

Метрики это библиотека Java, которая дает вам беспрецедентное понимание того, что делает ваш код в производстве. Метрики предоставляют мощный инструментарий для определения поведения критических компонентов в вашей производственной среде.

С модулями для общих библиотек, таких как Jetty, Logback, Log4j, Apache HttpClient, Ehcache, JDBI, Jersey и отчетные бэкэнды, такие как Ganglia и Graphite, Metrics обеспечивает полную видимость в стеке.

http://metrics.codahale.com/

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