Я добавляю микробенчмарк в мое приложение JAVA благодаря JMH.
Я запускаю тесты на Windows 10:
Профилировщик хорошо работает:
java -jar target/benchmarks.jar -prof stack
Вторичный результат
"benchmark.ValueExtractorBench.cleanValue_Benchmark: · stack": профилировщик стека:
.... [Распределение состояний потоков] ...................................... ..............................
99.7% RUNNABLE
0.3% WAITING
.... [Состояние резьбы: RUNNABLE] ..................................... ...................................
26.6% 26.7% java.lang.String.regionMatches
23.2% 23.2% blabla...
Но xperfasm не срабатывает при init:
java -jar target/benchmarks.jar -prof xperfasm
# Ход выполнения: 0,00% выполнено, ETA 00:00:00
# Вилка: 1 из 5
# Подготовка профилировщиков: Исключение WinPerfAsmProfiler в потоке "main" java.lang.IllegalStateException: Не удалось запустить xperf: [xperf: ошибка: NT Kernel Logger: недопустимые флаги. (0x3ec). ]
at org.openjdk.jmh.profile.WinPerfAsmProfiler.beforeTrial(WinPerfAsmProfiler.java:129)
at org.openjdk.jmh.runner.Runner.runSeparate(Runner.java:649)
at org.openjdk.jmh.runner.Runner.runBenchmarks(Runner.java:561)
at org.openjdk.jmh.runner.Runner.internalRun(Runner.java:320)
at org.openjdk.jmh.runner.Runner.run(Runner.java:209)
at org.openjdk.jmh.Main.main(Main.java:71)
Примечание : xperfasm хорошо указан в доступных профилировщиках (-lprof
)
Я бы хотел иметь возможность профилировать свои микробенчмарки с более полными данными, чем те, которые предоставляет stack profiler.
Спасибо:)