Измерить время выполнения java
Мне нужно измерить, сколько секунд требуется для выполнения определенного метода через JFR. Это можно сделать? Я пробовал async-profiler, но у меня нет этой функции.
1 ответ
Если у вас есть доступ к исходному коду, вы можете создать событие:
@StackTrace(false)
@Name("MethodExecution")
@Label("Method Execution")
static class MethodExecution extends jdk.jfr.Event {
}
public void foo() {
MethodExecution event = new MethodExecution();
event.begin();
bar();
event.commit();
}
Затем запустите JFR:
$ java -XX:StartFlightRecording:filename=measurement.jfr ...
Откройте файл в JDK Mission Control или используйте утилиту jfr для печати результатов:
$ jfr print --events MethodExecution measurement.jfr
Если у вас нет доступа к источнику, вы можете заглянуть в агент JMC, который может добавить аналогичный код, как указано выше, с использованием инструментария байт-кода.