Измерить время выполнения 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, который может добавить аналогичный код, как указано выше, с использованием инструментария байт-кода.

Другие вопросы по тегам