Библиотека синхронизации производительности Java - PullRequest
21 голосов
/ 06 августа 2009

Я часто заключаю код в пару System.nanoTime () , чтобы синхронизировать его. Что-то вроде:

long start = System.nanoTime();    
methodToBeTimed();
long elapsedTime = System.nanoTime() - start;

Есть какая-нибудь хорошая библиотека синхронизации, которая помогает с этой проблемой? Также будет принят доморощенный код.

NB

Профилировщик здесь не является решением, так как я хочу применить некоторые временные ограничения в своих модульных тестах, поэтому я хочу использовать методы синхронизации программно .

Ответы [ 12 ]

11 голосов
/ 06 августа 2009

Я этим не пользовался, но недавно наткнулся на perf4j .

8 голосов
/ 06 августа 2009

JUnit 4 получил встроенную функцию ограничения времени.

@ Test (таймаут = X)

должен добиться цели. X - максимальное количество миллисекунд, которое разрешено запускать методу.

8 голосов
/ 06 августа 2009

Не прямой ответ на ваш вопрос, но я также часто использую этот совет для определения времени моего кода и просто написал следующий простой шаблон Eclipse -> Surround With:

long startTime = System.currentTimeMillis();
${line_selection}${cursor}
long totalTime = System.currentTimeMillis() - startTime;
System.out.println("Total time = " + totalTime);
System.out.println();
6 голосов
/ 06 августа 2009

есть StopWatch от commons-lang, также позволяет разделить таймер.

3 голосов
/ 11 сентября 2009

Если вы используете Spring, у вас уже есть хороший класс с именем StopWatch в вашем classpath для этого предложения.

1 голос
/ 07 декабря 2011

суппорт

И в дополнение к чтению вики на этом сайте, я рекомендую прочитать:

1 голос
/ 07 декабря 2011

JETM - хорошая библиотека для этого. Он также может содержать минимальные, максимальные и средние значения, а также может генерировать информативные графики.

1 голос
/ 06 августа 2009

Какую помощь вы ищете в этой проблеме? У вас есть основы на месте. Вы получаете истекшее время в наносекундах с точностью до разрешения, на которое способна базовая ОС / аппаратное обеспечение.

Также ... и я знаю, что вы не сказали профилировщиков ... но у меня был выдающийся опыт работы с YourKit . Он предоставляет API, который вы можете использовать для управления профилированием извне. В зависимости от вашей конкретной проблемы, на эту проблему стоит обратить внимание.

1 голос
/ 06 августа 2009

Пробовал JPerf ?

0 голосов
/ 03 ноября 2014

Я только что начал использовать Java Simon (ранее в Google Code ), и это кажется потрясающим! Простой набор секундомеров и счетчиков с несколькими зависимостями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...