Я добавляю микробенчмарк в свое приложение 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 не работает при инициализации:
java -jar target/benchmarks.jar -prof xperfasm
# Ход выполнения: завершено 0,00%, ETA 00:00:00 # Форк: 1 из 5 # Подготовка профилировщиков: WinPerfAsmProfiler Исключение в потоке "main" java.lang.IllegalStateException: Не удалось запустить xperf: [xperf: error: 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
)
Я хотел бы иметь возможность профилировать свои микробенчмарки с более полными данными, чем данные, предоставленные профилировщиком стека.
Спасибо :)