Skip to content

Instantly share code, notes, and snippets.

@carl-mastrangelo
Created May 27, 2019 19:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save carl-mastrangelo/7f1def204ae5d6e76268cc42b8c1af45 to your computer and use it in GitHub Desktop.
Save carl-mastrangelo/7f1def204ae5d6e76268cc42b8c1af45 to your computer and use it in GitHub Desktop.
# JMH version: 1.21
# VM version: JDK 13-ea, OpenJDK 64-Bit Server VM, 13-ea+22
# VM invoker: /home/carl/Downloads/jdk-13/bin/java
# VM options: -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:+UseJVMCICompiler -XX:+LogCompilation -XX:LogFile=/tmp/blah.txt -XX:+PrintAssembly -XX:+PrintInterpreter -XX:+PrintNMethods -XX:+PrintNativeNMethods -XX:+PrintSignatureHandlers -XX:+PrintAdapterHandlers -XX:+PrintStubCode -XX:+PrintCompilation -XX:+PrintInlining -XX:+TraceClassLoading -XX:PrintAssemblyOptions=syntax -XX:PrintAssemblyOptions=intel
# Warmup: 10 iterations, 10 s each
# Measurement: 5 iterations, 1 s each
# Timeout: 10 min per iteration
# Threads: 1 thread, will synchronize iterations
# Benchmark mode: Average time, time/op
# Benchmark: io.perfmark.java9.VarHandleMarkHolderBenchmark.link

# Run progress: 0.00% complete, ETA 00:21:00
# Fork: 1 of 1
# Preparing profilers: LinuxPerfAsmProfiler 
# Profilers consume stdout and stderr from target VM, use -v EXTRA to copy to console

# Warmup Iteration   1: 38.962 ns/op
# Warmup Iteration   2: 20.001 ns/op
# Warmup Iteration   3: 16.751 ns/op
# Warmup Iteration   4: 12.616 ns/op
# Warmup Iteration   5: 12.574 ns/op
# Warmup Iteration   6: 12.959 ns/op
# Warmup Iteration   7: 12.503 ns/op]
# Warmup Iteration   8: 13.126 ns/ops]
# Warmup Iteration   9: 12.446 ns/ops]
# Warmup Iteration  10: 13.339 ns/ops]
Iteration   1: 12.652 ns/opNG [1m 48s]
Iteration   2: 14.071 ns/opNG [1m 49s]
Iteration   3: 12.740 ns/opNG [1m 50s]
Iteration   4: 12.605 ns/opNG [1m 51s]
Iteration   5: 12.789 ns/opNG [1m 52s]

> Task :perfmark-java9:jmh
# Processing profiler results: LinuxPerfAsmProfiler 


Result "io.perfmark.java9.VarHandleMarkHolderBenchmark.link":
  12.971 ±(99.9%) 2.384 ns/op [Average]
  (min, avg, max) = (12.605, 12.971, 14.071), stdev = 0.619
  CI (99.9%): [10.587, 15.355] (assumes normal distribution)

Secondary result "io.perfmark.java9.VarHandleMarkHolderBenchmark.link:·asm":
PrintAssembly processed: 924054 total address lines.
Perf output processed (skipped 102.895 seconds):
 Column 1: cycles (5340 events)

Hottest code regions (>10.00% "cycles" events):

....[Hottest Region 1]..............................................................................
jvmci, level 4, io.perfmark.java9.generated.VarHandleMarkHolderBenchmark_link_jmhTest::link_avgt_jmhStub, version 29253 (16 bytes) 

           0x00007f2e861710ee:   mov    %r8d,%r14d
           0x00007f2e861710f1:   mov    %r9,0x8(%rsp)
           0x00007f2e861710f6:   mov    %r11d,0x4c(%rsp)
           0x00007f2e861710fb:   jmpq   0x00007f2e86170fd4
           0x00007f2e86171100:   mov    0x4c(%rsp),%r11d
           0x00007f2e86171105:   mov    0x30(%rsp),%rbx
           0x00007f2e8617110a:   jmpq   0x00007f2e8617101f
           0x00007f2e8617110f:   mov    0x4c(%rsp),%r11d
           0x00007f2e86171114:   mov    0x30(%rsp),%rbx
           0x00007f2e86171119:   jmpq   0x00007f2e8617101f
  2.36%    0x00007f2e8617111e:   lock addl $0x0,(%rsp)
 53.54%    0x00007f2e86171123:   cmpb   $0x0,(%rsi,%r10,1)
  0.21%    0x00007f2e86171128:   jne    0x00007f2e86171188
  2.34%    0x00007f2e8617112e:   mov    0x4c(%rsp),%r11d
           0x00007f2e86171133:   mov    %r10,%rbx
           0x00007f2e86171136:   jmpq   0x00007f2e8617101f
           0x00007f2e8617113b:   mov    %rsi,%rbx
           0x00007f2e8617113e:   mov    %rdx,0x18(%rsp)
           0x00007f2e86171143:   mov    %rdi,0x10(%rsp)
           0x00007f2e86171148:   mov    %ecx,%r13d
           0x00007f2e8617114b:   mov    %r8d,%r14d
           0x00007f2e8617114e:   mov    %r9,0x8(%rsp)
           0x00007f2e86171153:   mov    %r11d,0x4c(%rsp)
           0x00007f2e86171158:   jmpq   0x00007f2e86170fd4
....................................................................................................
 58.45%  <total for region 1>

....[Hottest Region 2]..............................................................................
jvmci, level 4, io.perfmark.java9.generated.VarHandleMarkHolderBenchmark_link_jmhTest::link_avgt_jmhStub, version 29253 (330 bytes) 

              0x00007f2e86170f1f:   mov    %rbx,0x18(,%r11,8)
              0x00007f2e86170f27:   movsbl 0x94(%r14),%esi
              0x00007f2e86170f2f:   test   %sil,%sil
              0x00007f2e86170f32:   jne    0x00007f2e861712ed
              0x00007f2e86170f38:   mov    %r13,0x30(%rsp)
              0x00007f2e86170f3d:   movq   $0x1,0x20(%rsp)
         ╭    0x00007f2e86170f46:   jmpq   0x00007f2e8617107f
         │    0x00007f2e86170f4b:   nopl   0x0(%rax,%rax,1)
         │ ↗  0x00007f2e86170f50:   and    %r9,%r8
         │ │  0x00007f2e86170f53:   mov    %r8d,%r8d
  2.25%  │ │  0x00007f2e86170f56:   cmp    %r8d,%ecx
         │ │  0x00007f2e86170f59:   jbe    0x00007f2e861713bb
         │ │  0x00007f2e86170f5f:   mov    0xc(%r10),%ecx
  0.04%  │ │  0x00007f2e86170f63:   shl    $0x3,%rsi
         │ │  0x00007f2e86170f67:   movq   $0x270f,0x10(%rsi,%r8,8)
  1.97%  │ │  0x00007f2e86170f70:   mov    0x20(,%r11,8),%esi
  0.02%  │ │  0x00007f2e86170f78:   mov    %r11d,%edi
         │ │  0x00007f2e86170f7b:   shl    $0x3,%rdi
         │ │  0x00007f2e86170f7f:   mov    %ecx,%edx
  2.32%  │ │  0x00007f2e86170f81:   shl    $0x3,%rdx
         │ │  0x00007f2e86170f85:   mov    0xc(,%rsi,8),%eax
  0.06%  │ │  0x00007f2e86170f8c:   mov    0x8(,%rsi,8),%ebp
  0.04%  │ │  0x00007f2e86170f93:   cmp    %r8d,%eax
         │ │  0x00007f2e86170f96:   jle    0x00007f2e86171326
  2.25%  │ │  0x00007f2e86170f9c:   cmp    $0x702,%ebp
         │ │  0x00007f2e86170fa2:   jne    0x00007f2e8617136e
         │ │  0x00007f2e86170fa8:   shl    $0x3,%rsi
         │ │  0x00007f2e86170fac:   cmpb   $0x0,0x30(%r15)
         │╭│  0x00007f2e86170fb1:   jne    0x00007f2e861710ac
  2.27%  │││  0x00007f2e86170fb7:   mov    %rsi,%rbx
  0.04%  │││  0x00007f2e86170fba:   mov    %rdx,0x18(%rsp)
         │││  0x00007f2e86170fbf:   mov    %rdi,0x10(%rsp)
         │││  0x00007f2e86170fc4:   mov    %ecx,%r13d
  2.19%  │││  0x00007f2e86170fc7:   mov    %r8d,%r14d
  0.02%  │││  0x00007f2e86170fca:   mov    %r9,0x8(%rsp)
         │││  0x00007f2e86170fcf:   mov    %r11d,0x4c(%rsp)
         │││  0x00007f2e86170fd4:   mov    %r13d,0x10(%rbx,%r14,4)
  2.02%  │││  0x00007f2e86170fd9:   lea    0x10(%rbx,%r14,4),%rsi
  0.02%  │││  0x00007f2e86170fde:   xor    0x18(%rsp),%rsi
         │││  0x00007f2e86170fe3:   test   $0xfffffffffff00000,%rsi
         │││  0x00007f2e86170fea:   mov    0x18(%rsp),%r13
  2.12%  │││  0x00007f2e86170fef:   je     0x00007f2e86171100
         │││  0x00007f2e86170ff5:   test   %r13,%r13
         │││  0x00007f2e86170ff8:   je     0x00007f2e8617110f
  0.02%  │││  0x00007f2e86170ffe:   mov    0x30(%rsp),%r10
         │││  0x00007f2e86171003:   lea    0x10(%rbx,%r14,4),%rsi
  2.21%  │││  0x00007f2e86171008:   shr    $0x9,%rsi
         │││  0x00007f2e8617100c:   cmpb   $0x20,(%rsi,%r10,1)
  0.02%  │││  0x00007f2e86171011:   jne    0x00007f2e8617111e
         │││  0x00007f2e86171017:   mov    0x4c(%rsp),%r11d
         │││  0x00007f2e8617101c:   mov    %r10,%rbx
         │││  0x00007f2e8617101f:   mov    0x30(,%r11,8),%r10d
  2.43%  │││  0x00007f2e86171027:   cmp    0xc(,%r10,8),%r14d
         │││  0x00007f2e8617102f:   jge    0x00007f2e861713fd
  0.02%  │││  0x00007f2e86171035:   mov    0x60(%rsp),%rsi
         │││  0x00007f2e8617103a:   shl    $0x3,%r10
  2.38%  │││  0x00007f2e8617103e:   movq   $0x6,0x10(%r10,%r14,8)
  0.02%  │││  0x00007f2e86171047:   mov    0x8(%rsp),%r9
         │││  0x00007f2e8617104c:   inc    %r9
         │││  0x00007f2e8617104f:   mov    %r9,0x18(,%r11,8)
  2.17%  │││  0x00007f2e86171057:   movsbl 0x94(%rsi),%r10d
         │││  0x00007f2e8617105f:   mov    0x20(%rsp),%r11
  0.02%  │││  0x00007f2e86171064:   inc    %r11
         │││  0x00007f2e86171067:   test   %r10b,%r10b
         │││  0x00007f2e8617106a:   jne    0x00007f2e861711ce
  2.49%  │││  0x00007f2e86171070:   mov    0x108(%r15),%r10
         │││  0x00007f2e86171077:   test   %eax,(%r10)
  0.04%  │││  0x00007f2e8617107a:   mov    %r11,0x20(%rsp)
         ↘││  0x00007f2e8617107f:   mov    0x50(%rsp),%r10
  2.13%   ││  0x00007f2e86171084:   mov    0x10(%r10),%r11d
  0.02%   ││  0x00007f2e86171088:   mov    0x28(,%r11,8),%esi
  0.04%   ││  0x00007f2e86171090:   mov    0x10(,%r11,8),%r8
  0.04%   ││  0x00007f2e86171098:   mov    0x18(,%r11,8),%r9
  2.49%   ││  0x00007f2e861710a0:   mov    0xc(,%rsi,8),%ecx
          │╰  0x00007f2e861710a7:   jmpq   0x00007f2e86170f50
          ↘   0x00007f2e861710ac:   lea    0x10(%rsi,%r8,4),%rax
              0x00007f2e861710b1:   mov    (%rax),%eax
              0x00007f2e861710b3:   shl    $0x3,%rax
              0x00007f2e861710b7:   test   %rax,%rax
              0x00007f2e861710ba:   je     0x00007f2e8617113b
              0x00007f2e861710c0:   mov    0x38(%r15),%rbp
              0x00007f2e861710c4:   test   %rbp,%rbp
              0x00007f2e861710c7:   je     0x00007f2e8617115d
              0x00007f2e861710cd:   mov    0x48(%r15),%rbx
....................................................................................................
 34.14%  <total for region 2>

....[Hottest Regions]...............................................................................
 58.45%      jvmci, level 4  io.perfmark.java9.generated.VarHandleMarkHolderBenchmark_link_jmhTest::link_avgt_jmhStub, version 29253 (16 bytes) 
 34.14%      jvmci, level 4  io.perfmark.java9.generated.VarHandleMarkHolderBenchmark_link_jmhTest::link_avgt_jmhStub, version 29253 (330 bytes) 
  0.86%              kernel  [unknown] (1 bytes) 
  0.66%              kernel  [unknown] (39 bytes) 
  0.52%              kernel  [unknown] (3 bytes) 
  0.26%              kernel  [unknown] (6 bytes) 
  0.13%              kernel  [unknown] (0 bytes) 
  0.09%              kernel  [unknown] (6 bytes) 
  0.09%         interpreter  method entry point (kind = zerolocals)  (8 bytes) 
  0.07%              kernel  [unknown] (62 bytes) 
  0.07%              kernel  [unknown] (0 bytes) 
  0.06%              kernel  [unknown] (0 bytes) 
  0.06%              kernel  [unknown] (0 bytes) 
  0.06%              kernel  [unknown] (1 bytes) 
  0.06%         interpreter  invokeinterface  185 invokeinterface  (4 bytes) 
  0.06%        libc-2.28.so  syscall (0 bytes) 
  0.06%        libc-2.28.so  __strlen_avx2 (52 bytes) 
  0.04%              kernel  [unknown] (9 bytes) 
  0.04%              kernel  [unknown] (1 bytes) 
  0.04%              kernel  [unknown] (6 bytes) 
  4.18%  <...other 198 warm regions...>
....................................................................................................
 99.98%  <totals>

....[Hottest Methods (after inlining)]..............................................................
 92.58%      jvmci, level 4  io.perfmark.java9.generated.VarHandleMarkHolderBenchmark_link_jmhTest::link_avgt_jmhStub, version 29253 
  4.59%              kernel  [unknown] 
  0.17%         interpreter  method entry point (kind = zerolocals)  
  0.11%      hsdis-amd64.so  print_insn 
  0.07%         interpreter  invokeinterface  185 invokeinterface  
  0.07%           libjvm.so  decode_env::handle_event 
  0.06%        libc-2.28.so  _IO_fwrite 
  0.06%         interpreter  deoptimization entry points  
  0.06%           libjvm.so  InstanceKlass::find_method_index 
  0.06%        libc-2.28.so  syscall 
  0.06%        libc-2.28.so  __strlen_avx2 
  0.04%         interpreter  invoke return entry points  
  0.04%  libpthread-2.28.so  pthread_cond_wait@@GLIBC_2.3.2 
  0.04%  libpthread-2.28.so  __libc_write 
  0.04%        libc-2.28.so  _IO_fflush 
  0.04%  libpthread-2.28.so  __pthread_enable_asynccancel 
  0.04%        libc-2.28.so  __stpcpy_sse2_unaligned 
  0.04%        libc-2.28.so  __strchrnul_avx2 
  0.04%           libjvm.so  os::vsnprintf 
  0.04%        libc-2.28.so  vfprintf 
  1.76%  <...other 89 warm methods...>
....................................................................................................
 99.98%  <totals>

....[Distribution by Source]........................................................................
 92.60%      jvmci, level 4
  4.59%              kernel
  1.03%           libjvm.so
  0.58%        libc-2.28.so
  0.47%         interpreter
  0.37%         c1, level 1
  0.17%      hsdis-amd64.so
  0.13%  libpthread-2.28.so
  0.02%        runtime stub
  0.02%       perf-2616.map
....................................................................................................
 99.98%  <totals>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment