2013-03-12 6 views
4

Я хочу напечатать время выполнения для метода в java. В настоящее время я использую следующий код,Время выполнения метода в java

long startTime = System.currentTimeMillis(); 
// method body 
long runTime= System.currentTimeMillis() - startTime; 
System.out.println(" XYZ Method execution time: " + runTime); 

Есть так много способов, для которых я хотел бы найти выполнение в проекте, есть ли способ, чтобы предотвратить написание этого куска кода в каждом методе?

Проект использует Spring 2.5, Struts 2.

Edit: Я не хочу, чтобы добавить логику для каждого метода, я хотел бы, скажем, написать логику раз и использовать какой-то конфигурации, где я может указать методы, для которых мне нужно распечатать время выполнения. Поэтому всякий раз, когда выполняется этот метод, автоматически время печати должно печататься на консоли. Один из способов, как сказал мне, - добавить код в пролог и эпилог, но я не хочу редактировать этот метод, поскольку это потребует много времени, и писать тот же код не будет хорошей практикой.

+0

Если вы хотите, чтобы журналы производительности использовали perf4j @ http://perf4j.codehaus.org/ –

ответ

2

Почему бы вам просто не использовать профилировщик, например YourKit или JVisualVM. JVisualVM поставляется с JDK. Если вы действительно хотите сделать это самостоятельно, используйте java.lang.instrument и ASM, чтобы написать свой собственный агент. Простое добавление логики в пролог и эпилог метода Java с использованием этого подхода.

Вот ссылка, чтобы получить вас started.

+0

Можете ли вы добавить образец? –

+0

Добавлена ​​ссылка, чтобы помочь продемонстрировать –

+0

Как получить время выполнения метода в Java с помощью VisualVM? – okwap

4

Я рекомендую вам ознакомиться с пакетом Metrics от Codahale. Этот пакет собирает различные показатели (включая синхронизацию), которые затем сообщаются через JMX или другие механизмы.

1

Посмотрите на Spring AOP, вы можете использовать вокруг советов для расчета времени выполнения метода

Spring 2.5

Spring 3.0 x

2

Вариант 1 :: Использование АОП

Вариант 2 :: Если вы регистрируетесь в нужных местах (до & после) и бросаете отметку времени в своих журналах, вы можете просто использовать любые инструменты аналитики (логрифм, всплывающие открытые s наша версия и т. д.), чтобы просто перевернуть ваши журналы и выяснить время. Однако имейте в виду, что регистрация является, как правило, дорогостоящей операцией (ну, в какой-то степени, АОП).

Какой бы подход вы ни выбрали, убедитесь, что вы оцениваете влияние производительности, которое вы собираетесь использовать в своем приложении, только для измерения самой производительности :-).

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