Java JMH-giving<;不计算在内>;使用perf分析时的值

Java JMH-giving<;不计算在内>;使用perf分析时的值,java,profiling,perf,jmh,Java,Profiling,Perf,Jmh,我想用Java运行基准测试并获取硬件计数器。 我想使用JMH来实现这一点,因为它似乎是一个成熟的工具。它还可以选择钩住配置文件(例如perf工具,它也很成熟)。 我的问题是,当使用java-jar benchmarks.jar-prof perf运行基准测试时,所有计数器都显示值 我已经找到了答案,我把它留给其他遇到类似问题的人 对perf的调用具有参数--delay 21000,该参数在开始计数之前引入了延迟。由于基准比这短,计数从未开始 通过使用命令java-jar benchmarks.j

我想用Java运行基准测试并获取硬件计数器。 我想使用JMH来实现这一点,因为它似乎是一个成熟的工具。它还可以选择钩住配置文件(例如perf工具,它也很成熟)。 我的问题是,当使用
java-jar benchmarks.jar-prof perf
运行基准测试时,所有计数器都显示值


我已经找到了答案,我把它留给其他遇到类似问题的人

perf
的调用具有参数
--delay 21000
,该参数在开始计数之前引入了延迟。由于基准比这短,计数从未开始


通过使用命令
java-jar benchmarks.jar-prof perf:delay 0
解决了这个问题<代码>:用于将选项传递给探查器。

我已经找到了答案,我将它留给遇到类似问题的其他人

perf
的调用具有参数
--delay 21000
,该参数在开始计数之前引入了延迟。由于基准比这短,计数从未开始


通过使用命令
java-jar benchmarks.jar-prof perf:delay 0
解决了这个问题<代码>:用于将选项传递给探查器。

您可能需要一些延迟,以允许JVM预热,并使其从启动
perf
的代码中退出并返回到基准测试本身。我同意!我在这里使用了无延迟来确保确实计算了一些数据,并且从硬件计数器获取数据时没有问题。您可能需要一些延迟来允许JVM预热,并让它从启动
perf
的代码中退出并返回到基准测试本身。我同意!我在这里没有使用延迟来确保确实计算了一些数据,并且从硬件计数器获取数据时没有问题。
Perf stats:
--------------------------------------------------

     <not counted>      task-clock
     <not counted>      context-switches
     <not counted>      cpu-migrations
     <not counted>      page-faults
     <not counted>      cycles
     <not counted>      instructions
     <not counted>      branches
     <not counted>      branch-misses
     <not counted>      L1-dcache-loads
     <not counted>      L1-dcache-load-misses
     <not counted>      LLC-loads
     <not counted>      LLC-load-misses
   <not supported>      L1-icache-loads
     <not counted>      L1-icache-load-misses
     <not counted>      dTLB-loads
     <not counted>      dTLB-load-misses
     <not counted>      iTLB-loads
     <not counted>      iTLB-load-misses
   <not supported>      L1-dcache-prefetches
   <not supported>      L1-dcache-prefetch-misses

       0,379402355 seconds time elapsed
Performance counter stats for 'sleep 5':

          0,588915      task-clock (msec)         #    0,000 CPUs utilized
                 1      context-switches          #    0,002 M/sec
                 0      cpu-migrations            #    0,000 K/sec
                60      page-faults               #    0,102 M/sec
         1 048 769      cycles                    #    1,781 GHz
           807 919      instructions              #    0,77  insn per cycle
           159 210      branches                  #  270,345 M/sec
             7 325      branch-misses             #    4,60% of all branches

       5,001500262 seconds time elapsed