Skip to content

Instantly share code, notes, and snippets.

@amCap1712
Last active December 13, 2021 06:35
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 amCap1712/d4ce26356e19f0bf8b7e044463b51851 to your computer and use it in GitHub Desktop.
Save amCap1712/d4ce26356e19f0bf8b7e044463b51851 to your computer and use it in GitHub Desktop.
Java 17 vs Java 8
Java 17+35-2724
Benchmark Mode Cnt Score Error Units
FibonacciBenchmark.testFibonacciForkJoin avgt 9 1.160 ± 0.040 s/op
FibonacciBenchmark.testFibonacciSingle avgt 9 4.462 ± 0.031 s/op
Java 8.0.302
Benchmark Mode Cnt Score Error Units
FibonacciBenchmark.testFibonacciForkJoin avgt 9 1.040 ± 0.014 s/op
FibonacciBenchmark.testFibonacciSingle avgt 9 4.091 ± 0.043 s/op
....[Hottest Region 1]..............................................................................
c2, level 4, dev.lucifer.Main::fibonacci, version 435 (184 bytes)
scopes pcs [0x00007fcc38c2bdc0,0x00007fcc38c2bf40] = 384
dependencies [0x00007fcc38c2bf40,0x00007fcc38c2bf48] = 8
handler table [0x00007fcc38c2bf48,0x00007fcc38c2bfa8] = 96
--------------------------------------------------------------------------------
[Constant Pool (empty)]
--------------------------------------------------------------------------------
[Verified Entry Point]
# {method} {0x00007fcbfb8cea58} 'fibonacci' '(J)J' in 'dev/lucifer/Main'
# parm0: rsi:rsi = long
# [sp+0x40] (sp of caller)
4.77% 0x00007fcc38c2bbc0: mov %eax,-0x14000(%rsp)
7.04% 0x00007fcc38c2bbc7: push %rbp
2.41% 0x00007fcc38c2bbc8: sub $0x30,%rsp ;*synchronization entry
; - dev.lucifer.Main::fibonacci@-1 (line 13)
6.03% 0x00007fcc38c2bbcc: mov %rsi,(%rsp)
4.03% 0x00007fcc38c2bbd0: cmp $0x1,%rsi
╭ 0x00007fcc38c2bbd4: jle 0x00007fcc38c2bc63 ;*ifgt {reexecute=0 rethrow=0 return_oop=0}
│ ; - dev.lucifer.Main::fibonacci@3 (line 13)
0.51% │ 0x00007fcc38c2bbda: mov %rsi,%r10
1.27% │ 0x00007fcc38c2bbdd: add $0xfffffffffffffffd,%r10 ;*lsub {reexecute=0 rethrow=0 return_oop=0}
│ ; - dev.lucifer.Main::fibonacci@18 (line 16)
│ ; - dev.lucifer.Main::fibonacci@11 (line 16)
1.83% │ 0x00007fcc38c2bbe1: mov %r10,0x18(%rsp)
2.16% │ 0x00007fcc38c2bbe6: mov %rsi,%rbp
0.52% │ 0x00007fcc38c2bbe9: dec %rbp ;*lsub {reexecute=0 rethrow=0 return_oop=0}
│ ; - dev.lucifer.Main::fibonacci@10 (line 16)
1.31% │ 0x00007fcc38c2bbec: mov %rsi,%r10
1.76% │ 0x00007fcc38c2bbef: add $0xfffffffffffffffe,%r10 ;*lsub {reexecute=0 rethrow=0 return_oop=0}
│ ; - dev.lucifer.Main::fibonacci@10 (line 16)
│ ; - dev.lucifer.Main::fibonacci@11 (line 16)
2.00% │ 0x00007fcc38c2bbf3: mov %r10,0x10(%rsp)
0.60% │ 0x00007fcc38c2bbf8: nopl 0x0(%rax,%rax,1)
1.22% │ 0x00007fcc38c2bc00: cmp $0x1,%rbp
│╭ 0x00007fcc38c2bc04: jle 0x00007fcc38c2bc28 ;*ifgt {reexecute=0 rethrow=0 return_oop=0}
││ ; - dev.lucifer.Main::fibonacci@3 (line 13)
││ ; - dev.lucifer.Main::fibonacci@11 (line 16)
1.00% ││ 0x00007fcc38c2bc06: mov %r10,%rsi
1.25% ││ 0x00007fcc38c2bc09: xchg %ax,%ax
0.34% ││ 0x00007fcc38c2bc0b: call 0x00007fcc38c2bbc0 ; ImmutableOopMap {}
││ ;*invokestatic fibonacci {reexecute=0 rethrow=0 return_oop=0}
││ ; - dev.lucifer.Main::fibonacci@11 (line 16)
││ ; - dev.lucifer.Main::fibonacci@11 (line 16)
││ ; {static_call}
5.89% ││ 0x00007fcc38c2bc10: mov %rax,0x8(%rsp)
0.56% ││ 0x00007fcc38c2bc15: mov 0x18(%rsp),%rsi
1.94% ││ 0x00007fcc38c2bc1a: nop
1.33% ││ 0x00007fcc38c2bc1b: call 0x00007fcc38c2bbc0 ; ImmutableOopMap {}
││ ;*invokestatic fibonacci {reexecute=0 rethrow=0 return_oop=0}
││ ; - dev.lucifer.Main::fibonacci@19 (line 16)
││ ; - dev.lucifer.Main::fibonacci@11 (line 16)
││ ; {static_call}
11.37% ││ 0x00007fcc38c2bc20: mov %rax,%rbp
0.32% ││ 0x00007fcc38c2bc23: add 0x8(%rsp),%rbp ;*invokestatic fibonacci {reexecute=0 rethrow=0 return_oop=0}
││ ; - dev.lucifer.Main::fibonacci@11 (line 16)
2.23% │↘ 0x00007fcc38c2bc28: mov 0x10(%rsp),%r10
2.52% │ 0x00007fcc38c2bc2d: cmp $0x1,%r10
│ ╭ 0x00007fcc38c2bc31: jle 0x00007fcc38c2bc5b ;*ifgt {reexecute=0 rethrow=0 return_oop=0}
│ │ ; - dev.lucifer.Main::fibonacci@3 (line 13)
│ │ ; - dev.lucifer.Main::fibonacci@19 (line 16)
0.03% │ │ 0x00007fcc38c2bc33: mov 0x18(%rsp),%rsi
0.00% │ │ 0x00007fcc38c2bc38: data16 xchg %ax,%ax
1.44% │ │ 0x00007fcc38c2bc3b: call 0x00007fcc38c2bbc0 ; ImmutableOopMap {}
│ │ ;*invokestatic fibonacci {reexecute=0 rethrow=0 return_oop=0}
│ │ ; - dev.lucifer.Main::fibonacci@11 (line 16)
│ │ ; - dev.lucifer.Main::fibonacci@19 (line 16)
│ │ ; {static_call}
1.95% │ │ 0x00007fcc38c2bc40: mov %rax,0x8(%rsp)
0.35% │ │ 0x00007fcc38c2bc45: mov (%rsp),%rsi
1.26% │ │ 0x00007fcc38c2bc49: add $0xfffffffffffffffc,%rsi ;*lsub {reexecute=0 rethrow=0 return_oop=0}
│ │ ; - dev.lucifer.Main::fibonacci@18 (line 16)
│ │ ; - dev.lucifer.Main::fibonacci@19 (line 16)
0.55% │ │ 0x00007fcc38c2bc4d: xchg %ax,%ax
│ │ 0x00007fcc38c2bc4f: call 0x00007fcc38c2bbc0 ; ImmutableOopMap {}
│ │ ;*invokestatic fibonacci {reexecute=0 rethrow=0 return_oop=0}
│ │ ; - dev.lucifer.Main::fibonacci@19 (line 16)
│ │ ; - dev.lucifer.Main::fibonacci@19 (line 16)
│ │ ; {static_call}
2.60% │ │ 0x00007fcc38c2bc54: add 0x8(%rsp),%rax ;*ladd {reexecute=0 rethrow=0 return_oop=0}
│ │ ; - dev.lucifer.Main::fibonacci@22 (line 16)
│ │ ; - dev.lucifer.Main::fibonacci@19 (line 16)
0.30% │ │╭ 0x00007fcc38c2bc59: jmp 0x00007fcc38c2bc5e
1.73% │ ↘│ 0x00007fcc38c2bc5b: mov %r10,%rax ;*invokestatic fibonacci {reexecute=0 rethrow=0 return_oop=0}
│ │ ; - dev.lucifer.Main::fibonacci@19 (line 16)
1.92% │ ↘ 0x00007fcc38c2bc5e: add %rbp,%rax ;*ladd {reexecute=0 rethrow=0 return_oop=0}
│ ; - dev.lucifer.Main::fibonacci@22 (line 16)
0.05% │ ╭ 0x00007fcc38c2bc61: jmp 0x00007fcc38c2bc66
1.56% ↘ │ 0x00007fcc38c2bc63: mov %rsi,%rax ;*ifgt {reexecute=0 rethrow=0 return_oop=0}
│ ; - dev.lucifer.Main::fibonacci@3 (line 13)
6.83% ↘ 0x00007fcc38c2bc66: add $0x30,%rsp
1.59% 0x00007fcc38c2bc6a: pop %rbp
1.61% 0x00007fcc38c2bc6b: cmp 0x340(%r15),%rsp ; {poll_return}
0x00007fcc38c2bc72: ja 0x00007fcc38c2bc95
8.21% 0x00007fcc38c2bc78: ret ;*invokestatic fibonacci {reexecute=0 rethrow=0 return_oop=0}
; - dev.lucifer.Main::fibonacci@11 (line 16)
; - dev.lucifer.Main::fibonacci@11 (line 16)
0x00007fcc38c2bc79: mov %rax,%rsi
0x00007fcc38c2bc7c: jmp 0x00007fcc38c2bc8b ;*invokestatic fibonacci {reexecute=0 rethrow=0 return_oop=0}
; - dev.lucifer.Main::fibonacci@11 (line 16)
; - dev.lucifer.Main::fibonacci@19 (line 16)
0x00007fcc38c2bc7e: mov %rax,%rsi
0x00007fcc38c2bc81: jmp 0x00007fcc38c2bc8b ;*invokestatic fibonacci {reexecute=0 rethrow=0 return_oop=0}
; - dev.lucifer.Main::fibonacci@19 (line 16)
; - dev.lucifer.Main::fibonacci@11 (line 16)
# ran with -XX:LoopUnrollLimit=0 for easier to read assembely
Hottest code regions (>10.00% "cycles" events):
....[Hottest Region 1]..............................................................................
c2, level 4, dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub, version 558 (101 bytes)
0x00007f7fe926c0a8: mov 0x40(%rsp),%r8
0x00007f7fe926c0ad: movzbl 0x94(%r8),%r11d ; implicit exception: dispatches to 0x00007f7fe926c324
;*getfield isDone {reexecute=0 rethrow=0 return_oop=0}
; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@30 (line 188)
0x00007f7fe926c0b5: test %r11d,%r11d
0x00007f7fe926c0b8: jne 0x00007f7fe926c22e ;*ifeq {reexecute=0 rethrow=0 return_oop=0}
; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@33 (line 188)
0x00007f7fe926c0be: mov $0x1,%ebx
0x00007f7fe926c0c3: jmp 0x00007f7fe926c1e9
0x00007f7fe926c0c8: nopl 0x0(%rax,%rax,1)
16.73% ↗ 0x00007f7fe926c0d0: mov %rdi,%rcx
26.89% │ 0x00007f7fe926c0d3: mov %esi,%r11d
0.72% │ 0x00007f7fe926c0d6: mov %rdx,%rdi ;*lload {reexecute=0 rethrow=0 return_oop=0}
│ ; - dev.lucifer.FibonacciBenchmark::fibonacciIterative@23 (line 60)
│ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@4 (line 79)
│ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
0.13% │ ↗ 0x00007f7fe926c0d9: mov %rdi,%rdx
19.77% │ │ 0x00007f7fe926c0dc: add %rcx,%rdx ;*ladd {reexecute=0 rethrow=0 return_oop=0}
│ │ ; - dev.lucifer.FibonacciBenchmark::fibonacciIterative@33 (line 62)
│ │ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@4 (line 79)
│ │ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
15.86% │ │ 0x00007f7fe926c0df: mov %r11d,%esi
0.62% │ │ 0x00007f7fe926c0e2: inc %esi
0.19% │ │ 0x00007f7fe926c0e4: cmp %r8d,%esi
╰ │ 0x00007f7fe926c0e7: jl 0x00007f7fe926c0d0 ;*goto {reexecute=0 rethrow=0 return_oop=0}
│ ; - dev.lucifer.FibonacciBenchmark::fibonacciIterative@42 (line 59)
│ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@4 (line 79)
│ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
0.03% │ 0x00007f7fe926c0e9: mov 0x348(%r15),%r8
0.81% │ 0x00007f7fe926c0f0: movslq %r11d,%r11
│ 0x00007f7fe926c0f3: add %rax,%r11
│ 0x00007f7fe926c0f6: add $0x1,%r11 ; ImmutableOopMap {rbp=Oop r13=Oop [72]=Oop [80]=Oop }
│ ;*goto {reexecute=1 rethrow=0 return_oop=0}
│ ; - (reexecute) dev.lucifer.FibonacciBenchmark::fibonacciIterative@42 (line 59)
│ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@4 (line 79)
│ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
0.01% │ 0x00007f7fe926c0fa: test %eax,(%r8) ;*goto {reexecute=0 rethrow=0 return_oop=0}
│ ; - dev.lucifer.FibonacciBenchmark::fibonacciIterative@42 (line 59)
│ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@4 (line 79)
│ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
│ ; {poll}
0.78% │ 0x00007f7fe926c0fd: data16 xchg %ax,%ax
0.02% │ 0x00007f7fe926c100: cmp %r10d,%esi
╭│ 0x00007f7fe926c103: jge 0x00007f7fe926c132
││ 0x00007f7fe926c105: mov %rdi,%rcx
││ 0x00007f7fe926c108: mov %rdx,%rdi
││ 0x00007f7fe926c10b: mov %esi,%r11d ;*lload {reexecute=0 rethrow=0 return_oop=0}
││ ; - dev.lucifer.FibonacciBenchmark::fibonacciIterative@23 (line 60)
││ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@4 (line 79)
││ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
0.69% ││ 0x00007f7fe926c10e: mov %r10d,%r8d
0.01% ││ 0x00007f7fe926c111: sub %r11d,%r8d
0.04% ││ 0x00007f7fe926c114: xor %esi,%esi
││ 0x00007f7fe926c116: cmp %r11d,%r10d
0.76% ││ 0x00007f7fe926c119: cmovl %esi,%r8d
0.02% ││ 0x00007f7fe926c11d: cmp $0x3e8,%r8d
0.05% ││ 0x00007f7fe926c124: mov $0x3e8,%esi
0.01% ││ 0x00007f7fe926c129: cmova %esi,%r8d
0.72% ││ 0x00007f7fe926c12d: add %r11d,%r8d
0.04% │╰ 0x00007f7fe926c130: jmp 0x00007f7fe926c0d9
↘ 0x00007f7fe926c132: mov %rbp,%r8
0.01% 0x00007f7fe926c135: cmp %r9,%r11
0x00007f7fe926c138: jge 0x00007f7fe926c1a7
0x00007f7fe926c13e: add %rdx,%rdi ;*ladd {reexecute=0 rethrow=0 return_oop=0}
; - dev.lucifer.FibonacciBenchmark::fibonacciIterative@33 (line 62)
; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@4 (line 79)
; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
0x00007f7fe926c141: mov %r11,%r10
0x00007f7fe926c144: add $0x1,%r10 ;*ladd {reexecute=0 rethrow=0 return_oop=0}
; - dev.lucifer.FibonacciBenchmark::fibonacciIterative@39 (line 59)
; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@4 (line 79)
; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
....................................................................................................
84.91% <total for region 1>
....[Hottest Regions]...............................................................................
84.91% c2, level 4 dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub, version 558 (101 bytes)
9.27% c2, level 4 dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub, version 558 (209 bytes)
3.08% c2, level 4 org.openjdk.jmh.infra.Blackhole::consumeFull, version 509 (55 bytes)
1.10% [kernel.kallsyms] [unknown] (0 bytes)
0.25% [kernel.kallsyms] [unknown] (37 bytes)
0.13% [kernel.kallsyms] [unknown] (0 bytes)
0.06% [kernel.kallsyms] [unknown] (33 bytes)
0.05% [kernel.kallsyms] [unknown] (1 bytes)
0.04% [kernel.kallsyms] [unknown] (30 bytes)
0.04% [kernel.kallsyms] [unknown] (35 bytes)
0.04% libjvm.so ElfSymbolTable::lookup (48 bytes)
0.04% libpthread-2.27.so __pthread_disable_asynccancel (0 bytes)
0.03% [kernel.kallsyms] [unknown] (30 bytes)
0.03% [kernel.kallsyms] [unknown] (6 bytes)
0.02% [kernel.kallsyms] [unknown] (0 bytes)
0.02% [kernel.kallsyms] [unknown] (0 bytes)
0.02% [kernel.kallsyms] [unknown] (0 bytes)
0.02% [kernel.kallsyms] [unknown] (3 bytes)
0.01% [kernel.kallsyms] [unknown] (0 bytes)
0.01% [kernel.kallsyms] [unknown] (6 bytes)
0.81% <...other 112 warm regions...>
....................................................................................................
100.00% <totals>
....[Hottest Methods (after inlining)]..............................................................
94.18% c2, level 4 dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub, version 558
3.08% c2, level 4 org.openjdk.jmh.infra.Blackhole::consumeFull, version 509
2.20% [kernel.kallsyms] [unknown]
0.22% libpthread-2.27.so __pthread_disable_asynccancel
0.04% libc-2.27.so __fprintf_chk
0.04% libjvm.so ElfSymbolTable::lookup
0.01% perf print_counters
0.01% perf avg_stats
0.01% libc-2.27.so __clock_gettime
0.01% libjvm.so defaultStream::write
0.01% perf update_stats
0.01% libc-2.27.so _IO_file_sync
0.01% interpreter new 187 new
0.01% perf perf_evsel__name
0.01% libjvm.so SymbolTable::do_lookup
0.01% libjvm.so ciMethodData::data_from
0.01% libjvm.so os::PlatformMonitor::wait
0.01% libc-2.27.so vfprintf
0.01% libjvm.so IRScope::max_stack
0.01% perf perf_evsel__read_counter
0.10% <...other 15 warm methods...>
....................................................................................................
100.00% <totals>
....[Distribution by Source]........................................................................
97.26% c2, level 4
2.20% [kernel.kallsyms]
0.22% libpthread-2.27.so
0.11% libjvm.so
0.10% libc-2.27.so
0.07% perf
0.01% hsdis-amd64.so
0.01% interpreter
0.01% perf-19445.map
....................................................................................................
100.00% <totals>
Secondary result "dev.lucifer.FibonacciBenchmark.benchmarkFibonacciIterative:·gc.alloc.rate":
≈ 10⁻⁴ MB/sec
Secondary result "dev.lucifer.FibonacciBenchmark.benchmarkFibonacciIterative:·gc.alloc.rate.norm":
≈ 10⁻⁶ B/op
Secondary result "dev.lucifer.FibonacciBenchmark.benchmarkFibonacciIterative:·gc.count":
≈ 0 counts
# Run complete. Total time: 00:01:51
REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on
why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial
experiments, perform baseline and negative tests that provide experimental control, make sure
the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts.
Do not assume the numbers tell you what you want them to tell.
Benchmark (num) Mode Cnt Score Error Units
FibonacciBenchmark.benchmarkFibonacciIterative 45 avgt 5 35.436 ± 0.283 ns/op
FibonacciBenchmark.benchmarkFibonacciIterative:CPI 45 avgt 0.279 clks/insn
FibonacciBenchmark.benchmarkFibonacciIterative:IPC 45 avgt 3.586 insns/clk
FibonacciBenchmark.benchmarkFibonacciIterative:L1-dcache-load-misses 45 avgt 0.006 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:L1-dcache-loads 45 avgt 16.103 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:L1-dcache-stores 45 avgt 5.096 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:L1-icache-load-misses 45 avgt 0.024 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:LLC-load-misses 45 avgt 0.001 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:LLC-loads 45 avgt 0.002 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:LLC-store-misses 45 avgt ≈ 10⁻⁴ #/op
FibonacciBenchmark.benchmarkFibonacciIterative:LLC-stores 45 avgt 0.001 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:branch-misses 45 avgt 0.005 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:branches 45 avgt 54.999 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:cycles 45 avgt 126.827 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:dTLB-load-misses 45 avgt 0.001 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:dTLB-loads 45 avgt 16.086 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:dTLB-store-misses 45 avgt ≈ 10⁻⁴ #/op
FibonacciBenchmark.benchmarkFibonacciIterative:dTLB-stores 45 avgt 5.062 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:iTLB-load-misses 45 avgt 0.001 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:iTLB-loads 45 avgt 0.002 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:instructions 45 avgt 454.791 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:·asm 45 avgt NaN ---
FibonacciBenchmark.benchmarkFibonacciIterative:·gc.alloc.rate 45 avgt 5 ≈ 10⁻⁴ MB/sec
FibonacciBenchmark.benchmarkFibonacciIterative:·gc.alloc.rate.norm 45 avgt 5 ≈ 10⁻⁶ B/op
FibonacciBenchmark.benchmarkFibonacciIterative:·gc.count 45 avgt 5 ≈ 0 counts
Hottest code regions (>10.00% "cycles" events):
....[Hottest Region 1]..............................................................................
c2, level 4, dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub, version 545 (486 bytes)
0x00007ff6e526e549: movzbl 0x94(%r11),%r8d ; implicit exception: dispatches to 0x00007ff6e526e87c
;*getfield isDone {reexecute=0 rethrow=0 return_oop=0}
; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@30 (line 188)
0x00007ff6e526e551: test %r8d,%r8d
╭ 0x00007ff6e526e554: jne 0x00007ff6e526e775 ;*ifeq {reexecute=0 rethrow=0 return_oop=0}
│ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@33 (line 188)
│ 0x00007ff6e526e55a: mov $0x1,%ebx
│ 0x00007ff6e526e55f: nop
│╭ 0x00007ff6e526e560: jmp 0x00007ff6e526e709
││ 0x00007ff6e526e565: data16 data16 nopw 0x0(%rax,%rax,1)
1.85% ││↗ 0x00007ff6e526e570: mov %r11d,%esi ;*lload {reexecute=0 rethrow=0 return_oop=0}
│││ ; - dev.lucifer.FibonacciBenchmark::fibonacciIterative@23 (line 60)
│││ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@4 (line 79)
│││ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
2.78% │││ ↗ 0x00007ff6e526e573: add %rcx,%rdi
2.64% │││ │ 0x00007ff6e526e576: mov %rdi,%r11
1.89% │││ │ 0x00007ff6e526e579: add %rcx,%r11
1.89% │││ │ 0x00007ff6e526e57c: mov %r11,%rcx
2.92% │││ │ 0x00007ff6e526e57f: add %rdi,%rcx
2.75% │││ │ 0x00007ff6e526e582: mov %rcx,%rbx
2.06% │││ │ 0x00007ff6e526e585: add %r11,%rbx
2.38% │││ │ 0x00007ff6e526e588: mov %rbx,%r11
3.58% │││ │ 0x00007ff6e526e58b: add %rcx,%r11
3.26% │││ │ 0x00007ff6e526e58e: mov %r11,%rdx
2.34% │││ │ 0x00007ff6e526e591: add %rbx,%rdx
2.11% │││ │ 0x00007ff6e526e594: mov %rdx,%rdi
4.36% │││ │ 0x00007ff6e526e597: add %r11,%rdi
2.74% │││ │ 0x00007ff6e526e59a: mov %rdi,%rcx
2.01% │││ │ 0x00007ff6e526e59d: add %rdx,%rcx ;*ladd {reexecute=0 rethrow=0 return_oop=0}
│││ │ ; - dev.lucifer.FibonacciBenchmark::fibonacciIterative@33 (line 62)
│││ │ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@4 (line 79)
│││ │ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
2.41% │││ │ 0x00007ff6e526e5a0: mov %esi,%r11d
2.72% │││ │ 0x00007ff6e526e5a3: add $0x8,%r11d
1.72% │││ │ 0x00007ff6e526e5a7: cmp %r8d,%r11d
││╰ │ 0x00007ff6e526e5aa: jl 0x00007ff6e526e570 ;*goto {reexecute=0 rethrow=0 return_oop=0}
││ │ ; - dev.lucifer.FibonacciBenchmark::fibonacciIterative@42 (line 59)
││ │ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@4 (line 79)
││ │ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
0.16% ││ │ 0x00007ff6e526e5ac: mov 0x348(%r15),%r8
0.57% ││ │ 0x00007ff6e526e5b3: movslq %esi,%rbx
0.92% ││ │ 0x00007ff6e526e5b6: add %rbp,%rbx
0.17% ││ │ 0x00007ff6e526e5b9: add $0x8,%rbx ; ImmutableOopMap {r14=Oop xmm0=Oop [72]=Oop [80]=Oop }
││ │ ;*goto {reexecute=1 rethrow=0 return_oop=0}
││ │ ; - (reexecute) dev.lucifer.FibonacciBenchmark::fibonacciIterative@42 (line 59)
││ │ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@4 (line 79)
││ │ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
0.21% ││ │ 0x00007ff6e526e5bd: test %eax,(%r8) ;*goto {reexecute=0 rethrow=0 return_oop=0}
││ │ ; - dev.lucifer.FibonacciBenchmark::fibonacciIterative@42 (line 59)
││ │ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@4 (line 79)
││ │ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
││ │ ; {poll}
0.67% ││ │ 0x00007ff6e526e5c0: cmp %r10d,%r11d
││ ╭│ 0x00007ff6e526e5c3: jge 0x00007ff6e526e5ee
││ ││ 0x00007ff6e526e5c5: mov %r11d,%esi
0.94% ││ ││ ↗ 0x00007ff6e526e5c8: mov %r10d,%r8d
0.17% ││ ││ │ 0x00007ff6e526e5cb: sub %esi,%r8d
0.22% ││ ││ │ 0x00007ff6e526e5ce: xor %r11d,%r11d
0.54% ││ ││ │ 0x00007ff6e526e5d1: cmp %esi,%r10d
0.71% ││ ││ │ 0x00007ff6e526e5d4: cmovl %r11d,%r8d
0.19% ││ ││ │ 0x00007ff6e526e5d8: cmp $0x1f40,%r8d
0.18% ││ ││ │ 0x00007ff6e526e5df: mov $0x1f40,%r11d
0.73% ││ ││ │ 0x00007ff6e526e5e5: cmova %r11d,%r8d
0.95% ││ ││ │ 0x00007ff6e526e5e9: add %esi,%r8d
0.20% ││ │╰ │ 0x00007ff6e526e5ec: jmp 0x00007ff6e526e573
0.62% ││ ↘ │ 0x00007ff6e526e5ee: add $0x7,%esi
0.19% ││ │ ↗ 0x00007ff6e526e5f1: cmp %eax,%r11d
││ ╭ │ │ 0x00007ff6e526e5f4: jge 0x00007ff6e526e6a7 ;*lload {reexecute=0 rethrow=0 return_oop=0}
││ │ │ │ ; - dev.lucifer.FibonacciBenchmark::fibonacciIterative@23 (line 60)
││ │ │ │ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@4 (line 79)
││ │ │ │ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
0.21% ││ │ ↗ │ │ 0x00007ff6e526e5fa: mov %rcx,%rdx
0.60% ││ │ │ │ │ 0x00007ff6e526e5fd: add %rdi,%rdx ;*ladd {reexecute=0 rethrow=0 return_oop=0}
││ │ │ │ │ ; - dev.lucifer.FibonacciBenchmark::fibonacciIterative@33 (line 62)
││ │ │ │ │ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@4 (line 79)
││ │ │ │ │ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
0.74% ││ │ │ │ │ 0x00007ff6e526e600: mov %r11d,%r10d
0.20% ││ │ │ │ │ 0x00007ff6e526e603: inc %r10d
0.13% ││ │ │ │ │ 0x00007ff6e526e606: cmp %eax,%r10d
││ │╭│ │ │ 0x00007ff6e526e609: jge 0x00007ff6e526e616 ;*ifgt {reexecute=0 rethrow=0 return_oop=0}
││ │││ │ │ ; - dev.lucifer.FibonacciBenchmark::fibonacciIterative@20 (line 59)
││ │││ │ │ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@4 (line 79)
││ │││ │ │ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
││ │││ │ │ 0x00007ff6e526e60b: mov %rcx,%rdi
││ │││ │ │ 0x00007ff6e526e60e: mov %rdx,%rcx
││ │││ │ │ 0x00007ff6e526e611: mov %r10d,%r11d
││ ││╰ │ │ 0x00007ff6e526e614: jmp 0x00007ff6e526e5fa
0.54% ││ │↘ │↗ │ 0x00007ff6e526e616: movslq %r11d,%r8
0.69% ││ │ ││ │ 0x00007ff6e526e619: add %rbp,%r8
0.32% ││ │ ││ │ 0x00007ff6e526e61c: add $0x1,%r8
0.20% ││ │ ││↗ │ 0x00007ff6e526e620: cmp %r9,%r8
││ │ ╭ │││ │ 0x00007ff6e526e623: jge 0x00007ff6e526e6bd
││ │ │ │││ │ 0x00007ff6e526e629: mov %rcx,%rdi
││ │ │ │││ │ 0x00007ff6e526e62c: add %rdx,%rdi ;*ladd {reexecute=0 rethrow=0 return_oop=0}
││ │ │ │││ │ ; - dev.lucifer.FibonacciBenchmark::fibonacciIterative@33 (line 62)
││ │ │ │││ │ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@4 (line 79)
││ │ │ │││ │ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
││ │ │ │││ │ 0x00007ff6e526e62f: mov %r8,%r10
││ │ │ │││ │ 0x00007ff6e526e632: add $0x1,%r10
││ │ │ │││ │ 0x00007ff6e526e636: mov %r8,%rbp
││ │ │ │││ │ 0x00007ff6e526e639: mov %r10,%r8
││ │ │ │││ │ 0x00007ff6e526e63c: mov %rdx,%rcx ;*ladd {reexecute=0 rethrow=0 return_oop=0}
││ │ │ │││ │ ; - dev.lucifer.FibonacciBenchmark::fibonacciIterative@39 (line 59)
││ │ │ │││ │ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@4 (line 79)
││ │ │ │││ │ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
0.52% ││ │ │ │││ ↗ │ 0x00007ff6e526e63f: mov %r13,%r10
0.79% ││ │ │ │││ │ │ 0x00007ff6e526e642: sub %rbp,%r10 ;*goto {reexecute=0 rethrow=0 return_oop=0}
││ │ │ │││ │ │ ; - dev.lucifer.FibonacciBenchmark::fibonacciIterative@42 (line 59)
││ │ │ │││ │ │ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@4 (line 79)
││ │ │ │││ │ │ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
0.21% ││ │ │ │││ │ │ 0x00007ff6e526e645: mov 0x348(%r15),%r11 ; ImmutableOopMap {r14=Oop xmm0=Oop [72]=Oop [80]=Oop }
││ │ │ │││ │ │ ;*goto {reexecute=1 rethrow=0 return_oop=0}
││ │ │ │││ │ │ ; - (reexecute) dev.lucifer.FibonacciBenchmark::fibonacciIterative@42 (line 59)
││ │ │ │││ │ │ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@4 (line 79)
││ │ │ │││ │ │ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
0.16% ││ │ │ │││ │ │ 0x00007ff6e526e64c: test %eax,(%r11) ;*goto {reexecute=0 rethrow=0 return_oop=0}
││ │ │ │││ │ │ ; - dev.lucifer.FibonacciBenchmark::fibonacciIterative@42 (line 59)
││ │ │ │││ │ │ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@4 (line 79)
││ │ │ │││ │ │ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
││ │ │ │││ │ │ ; {poll}
0.62% ││ │ │ │││ │ │ 0x00007ff6e526e64f: add $0x1,%r10
0.77% ││ │ │ │││ │ │ 0x00007ff6e526e653: xor %r11d,%r11d
0.17% ││ │ │ │││ │ │ 0x00007ff6e526e656: cmp %rbp,%r9
0.17% ││ │ │ │││ │ │ 0x00007ff6e526e659: cmovl %r11,%r10
0.57% ││ │ │ │││ │ │ 0x00007ff6e526e65d: cmp $0x7ffffffd,%r10
0.75% ││ │ │ │││ │ │ 0x00007ff6e526e664: mov $0x7ffffffd,%r11d
0.19% ││ │ │ │││ │ │ 0x00007ff6e526e66a: cmova %r11,%r10
0.73% ││ │ │ │││ │ │ 0x00007ff6e526e66e: mov %r10d,%eax
0.78% ││ │ │ │││ │ │ 0x00007ff6e526e671: cmp $0x1,%eax
││ │ │╭ │││ │ │ 0x00007ff6e526e674: jle 0x00007ff6e526e6b5 ;*ifgt {reexecute=0 rethrow=0 return_oop=0}
││ │ ││ │││ │ │ ; - dev.lucifer.FibonacciBenchmark::fibonacciIterative@20 (line 59)
││ │ ││ │││ │ │ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@4 (line 79)
││ │ ││ │││ │ │ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
0.20% ││ │ ││ │││ │ │ 0x00007ff6e526e676: add %rdi,%rcx ;*ladd {reexecute=0 rethrow=0 return_oop=0}
││ │ ││ │││ │ │ ; - dev.lucifer.FibonacciBenchmark::fibonacciIterative@33 (line 62)
││ │ ││ │││ │ │ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@4 (line 79)
││ │ ││ │││ │ │ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
0.17% ││ │ ││ │││ │ │ 0x00007ff6e526e679: mov %eax,%r10d
0.55% ││ │ ││ │││ │ │ 0x00007ff6e526e67c: add $0xfffffff9,%r10d
0.65% ││ │ ││ │││ │ │ 0x00007ff6e526e680: mov %eax,%r11d
0.31% ││ │ ││ │││ │ │ 0x00007ff6e526e683: dec %r11d
0.15% ││ │ ││ │││ │ │ 0x00007ff6e526e686: cmp %r10d,%r11d
0.52% ││ │ ││ │││ │ │ 0x00007ff6e526e689: mov $0x80000000,%r8d
0.85% ││ │ ││ │││ │ │ 0x00007ff6e526e68f: cmovl %r8d,%r10d
0.17% ││ │ ││ │││ │ │ 0x00007ff6e526e693: cmp $0x2,%r10d
││ │ ││╭│││ │ │ 0x00007ff6e526e697: jle 0x00007ff6e526e765
0.17% ││ │ ││││││ │ │ 0x00007ff6e526e69d: mov $0x2,%esi
0.48% ││ │ │││╰││ │ │ 0x00007ff6e526e6a2: jmp 0x00007ff6e526e5c8
││ ↘ │││ ││ │ │ 0x00007ff6e526e6a7: mov %rcx,%rdx
││ │││ ││ │ │ 0x00007ff6e526e6aa: mov %esi,%r11d
││ │││ ││ │ │ 0x00007ff6e526e6ad: mov %rdi,%rcx
││ │││ ╰│ │ │ 0x00007ff6e526e6b0: jmp 0x00007ff6e526e616
││ │↘│ │ │ │ 0x00007ff6e526e6b5: mov %rdi,%rdx
││ │ │ ╰ │ │ 0x00007ff6e526e6b8: jmp 0x00007ff6e526e620
0.59% ││ ↘ │ │ │ 0x00007ff6e526e6bd: mov %r14,%r10
0.79% ││ │ │ │ 0x00007ff6e526e6c0: vmovq %xmm0,%r11
0.27% ││ │ │ │ 0x00007ff6e526e6c5: vmovq %xmm1,%rbx ;*ifgt {reexecute=0 rethrow=0 return_oop=0}
││ │ │ │ ; - dev.lucifer.FibonacciBenchmark::fibonacciIterative@20 (line 59)
││ │ │ │ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@4 (line 79)
││ │ │ │ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
0.17% ││ │ │↗│ 0x00007ff6e526e6ca: mov %rbx,(%rsp)
0.56% ││ │ │││ 0x00007ff6e526e6ce: mov %r11,0x40(%rsp)
0.89% ││ │ │││ 0x00007ff6e526e6d3: mov %r10,%rbp
0.23% ││ │ │││ 0x00007ff6e526e6d6: mov 0x50(%rsp),%rsi
0.17% ││ │ │││ 0x00007ff6e526e6db: call 0x00007ff6dd7bea80 ; ImmutableOopMap {rbp=Oop [64]=Oop [72]=Oop [80]=Oop }
││ │ │││ ;*invokespecial consumeFull {reexecute=0 rethrow=0 return_oop=0}
││ │ │││ ; - org.openjdk.jmh.infra.Blackhole::consume@15 (line 395)
││ │ │││ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@20 (line 186)
││ │ │││ ; {optimized virtual_call}
1.02% ││ │ │││ 0x00007ff6e526e6e0: mov 0x40(%rsp),%r11
1.10% ││ │ │││ 0x00007ff6e526e6e5: movzbl 0x94(%r11),%r10d ;*goto {reexecute=0 rethrow=0 return_oop=0}
││ │ │││ ; - dev.lucifer.FibonacciBenchmark::fibonacciIterative@42 (line 59)
││ │ │││ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@4 (line 79)
││ │ │││ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
0.22% ││ │ │││ 0x00007ff6e526e6ed: mov 0x348(%r15),%r8
0.47% ││ │ │││ 0x00007ff6e526e6f4: mov (%rsp),%rbx
0.75% ││ │ │││ 0x00007ff6e526e6f8: add $0x1,%rbx ; ImmutableOopMap {r11=Oop rbp=Oop [72]=Oop [80]=Oop }
││ │ │││ ;*ifeq {reexecute=1 rethrow=0 return_oop=0}
││ │ │││ ; - (reexecute) dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@33 (line 188)
0.28% ││ │ │││ 0x00007ff6e526e6fc: test %eax,(%r8) ; {poll}
0.19% ││ │ │││ 0x00007ff6e526e6ff: nop
0.66% ││ │ │││ 0x00007ff6e526e700: test %r10d,%r10d
││ │ ╭ │││ 0x00007ff6e526e703: jne 0x00007ff6e526e77a ;*aload_1 {reexecute=0 rethrow=0 return_oop=0}
││ │ │ │││ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@36 (line 189)
0.87% │↘ │ │ │││ 0x00007ff6e526e709: mov %rbp,%r10
0.17% │ │ │ │││ 0x00007ff6e526e70c: mov 0x10(%rbp),%r13 ;*getfield num {reexecute=0 rethrow=0 return_oop=0}
│ │ │ │││ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@1 (line 79)
│ │ │ │││ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
0.12% │ │ │ │││ 0x00007ff6e526e710: cmp $0x3,%r13
│ │ │╭│││ 0x00007ff6e526e714: jl 0x00007ff6e526e75b ;*ifgt {reexecute=0 rethrow=0 return_oop=0}
│ │ │││││ ; - dev.lucifer.FibonacciBenchmark::fibonacciIterative@20 (line 59)
│ │ │││││ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@4 (line 79)
│ │ │││││ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
0.62% │ │ │││││ 0x00007ff6e526e716: data16 nopw 0x0(%rax,%rax,1)
0.72% │ │ │││││ 0x00007ff6e526e720: cmp $0x7ffffffe,%r13
│ │ │││││ 0x00007ff6e526e727: jg 0x00007ff6e526e7b8
0.33% │ │ │││││ 0x00007ff6e526e72d: mov %r13,%r9
0.22% │ │ │││││ 0x00007ff6e526e730: add $0x1,%r9
0.63% │ │ │││││ 0x00007ff6e526e734: mov $0x1,%ecx
0.77% │ │ │││││ 0x00007ff6e526e739: mov $0x2,%edi
0.23% │ │ │││││ 0x00007ff6e526e73e: mov $0x3,%ebp
0.20% │ │ │││││ 0x00007ff6e526e743: mov $0x4,%r8d
0.53% │ │ │││││ 0x00007ff6e526e749: mov %r10,%r14
0.92% │ │ │││││ 0x00007ff6e526e74c: vmovq %r11,%xmm0
0.11% │ │ │││││ 0x00007ff6e526e751: vmovq %rbx,%xmm1
0.15% │ │ ││╰││ 0x00007ff6e526e756: jmp 0x00007ff6e526e63f
│ │ │↘ ││ 0x00007ff6e526e75b: mov $0x1,%edx
│ │ │ ╰│ 0x00007ff6e526e760: jmp 0x00007ff6e526e6ca
│ ↘ │ │ 0x00007ff6e526e765: mov $0x2,%r11d
│ │ │ 0x00007ff6e526e76b: mov $0x1,%esi
│ │ ╰ 0x00007ff6e526e770: jmp 0x00007ff6e526e5f1
↘ │ 0x00007ff6e526e775: mov $0x1,%ebx ;*aload_1 {reexecute=0 rethrow=0 return_oop=0}
│ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@36 (line 189)
↘ 0x00007ff6e526e77a: nopw 0x0(%rax,%rax,1)
0x00007ff6e526e780: movabs $0x7ff6fae511e0,%r10
0x00007ff6e526e78a: call *%r10 ;*invokestatic nanoTime {reexecute=0 rethrow=0 return_oop=0}
....................................................................................................
85.98% <total for region 1>
....[Hottest Regions]...............................................................................
85.98% c2, level 4 dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub, version 545 (486 bytes)
7.67% c2, level 4 org.openjdk.jmh.infra.Blackhole::consumeFull, version 500 (55 bytes)
3.53% [kernel.kallsyms] [unknown] (6 bytes)
0.34% [kernel.kallsyms] [unknown] (45 bytes)
0.33% [kernel.kallsyms] [unknown] (1 bytes)
0.09% [kernel.kallsyms] [unknown] (1 bytes)
0.06% libjvm.so ElfSymbolTable::lookup (40 bytes)
0.06% [kernel.kallsyms] [unknown] (58 bytes)
0.06% [kernel.kallsyms] [unknown] (7 bytes)
0.05% [kernel.kallsyms] [unknown] (6 bytes)
0.04% [kernel.kallsyms] [unknown] (3 bytes)
0.03% [kernel.kallsyms] [unknown] (42 bytes)
0.03% [kernel.kallsyms] [unknown] (11 bytes)
0.03% libc-2.27.so [unknown] (0 bytes)
0.03% libc-2.27.so __fprintf_chk (28 bytes)
0.02% [kernel.kallsyms] [unknown] (39 bytes)
0.02% [kernel.kallsyms] [unknown] (22 bytes)
0.02% [kernel.kallsyms] [unknown] (22 bytes)
0.02% [kernel.kallsyms] [unknown] (0 bytes)
0.02% [kernel.kallsyms] [unknown] (14 bytes)
1.55% <...other 169 warm regions...>
....................................................................................................
99.99% <totals>
....[Hottest Methods (after inlining)]..............................................................
85.98% c2, level 4 dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub, version 545
7.67% c2, level 4 org.openjdk.jmh.infra.Blackhole::consumeFull, version 500
5.30% [kernel.kallsyms] [unknown]
0.22% libc-2.27.so vfprintf
0.06% libjvm.so ElfSymbolTable::lookup
0.06% libc-2.27.so [unknown]
0.05% libc-2.27.so __fprintf_chk
0.05% libpthread-2.27.so pthread_cond_timedwait@@GLIBC_2.3.2
0.03% libc-2.27.so __clock_gettime
0.02% libc-2.27.so _IO_padn
0.02% libjvm.so xmlStream::begin_head
0.02% perf print_counters
0.02% libjvm.so fileStream::write
0.02% hsdis-amd64.so print_insn
0.02% libjvm.so PeriodicTask::real_time_tick
0.02% libjvm.so xmlStream::write_text
0.02% ld-2.27.so __tls_get_addr
0.02% perf eprintf
0.02% libpthread-2.27.so __condvar_cancel_waiting
0.02% perf update_stats
0.35% <...other 42 warm methods...>
....................................................................................................
99.99% <totals>
....[Distribution by Source]........................................................................
93.66% c2, level 4
5.30% [kernel.kallsyms]
0.41% libc-2.27.so
0.28% libjvm.so
0.11% perf
0.09% libpthread-2.27.so
0.05% interpreter
0.03% hsdis-amd64.so
0.02% c1, level 3
0.02% ld-2.27.so
0.01% [vdso]
0.01% perf-22722.map
....................................................................................................
99.99% <totals>
Secondary result "dev.lucifer.FibonacciBenchmark.benchmarkFibonacciIterative:·gc.alloc.rate":
≈ 10⁻⁴ MB/sec
Secondary result "dev.lucifer.FibonacciBenchmark.benchmarkFibonacciIterative:·gc.alloc.rate.norm":
≈ 10⁻⁶ B/op
Secondary result "dev.lucifer.FibonacciBenchmark.benchmarkFibonacciIterative:·gc.count":
≈ 0 counts
# Run complete. Total time: 00:01:51
REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on
why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial
experiments, perform baseline and negative tests that provide experimental control, make sure
the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts.
Do not assume the numbers tell you what you want them to tell.
Benchmark (num) Mode Cnt Score Error Units
FibonacciBenchmark.benchmarkFibonacciIterative 45 avgt 5 15.048 ± 0.045 ns/op
FibonacciBenchmark.benchmarkFibonacciIterative:CPI 45 avgt 0.265 clks/insn
FibonacciBenchmark.benchmarkFibonacciIterative:IPC 45 avgt 3.768 insns/clk
FibonacciBenchmark.benchmarkFibonacciIterative:L1-dcache-load-misses 45 avgt 0.006 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:L1-dcache-loads 45 avgt 16.017 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:L1-dcache-stores 45 avgt 5.004 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:L1-icache-load-misses 45 avgt 0.011 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:LLC-load-misses 45 avgt ≈ 10⁻⁴ #/op
FibonacciBenchmark.benchmarkFibonacciIterative:LLC-loads 45 avgt 0.001 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:LLC-store-misses 45 avgt ≈ 10⁻⁵ #/op
FibonacciBenchmark.benchmarkFibonacciIterative:LLC-stores 45 avgt ≈ 10⁻³ #/op
FibonacciBenchmark.benchmarkFibonacciIterative:branch-misses 45 avgt 0.002 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:branches 45 avgt 20.958 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:cycles 45 avgt 53.942 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:dTLB-load-misses 45 avgt ≈ 10⁻⁴ #/op
FibonacciBenchmark.benchmarkFibonacciIterative:dTLB-loads 45 avgt 16.042 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:dTLB-store-misses 45 avgt ≈ 10⁻⁶ #/op
FibonacciBenchmark.benchmarkFibonacciIterative:dTLB-stores 45 avgt 5.039 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:iTLB-load-misses 45 avgt ≈ 10⁻⁵ #/op
FibonacciBenchmark.benchmarkFibonacciIterative:iTLB-loads 45 avgt 0.001 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:instructions 45 avgt 203.266 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:·asm 45 avgt NaN ---
FibonacciBenchmark.benchmarkFibonacciIterative:·gc.alloc.rate 45 avgt 5 ≈ 10⁻⁴ MB/sec
FibonacciBenchmark.benchmarkFibonacciIterative:·gc.alloc.rate.norm 45 avgt 5 ≈ 10⁻⁶ B/op
FibonacciBenchmark.benchmarkFibonacciIterative:·gc.count 45 avgt 5 ≈ 0 counts
# ran with -XX:LoopUnrollLimit=0
Hottest code regions (>10.00% "cycles" events):
....[Hottest Region 1]..............................................................................
C2, level 4, dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub, version 529 (96 bytes)
0x00007f6e7d227790: mov 0x38(%rsp),%r10
0x00007f6e7d227795: movzbl 0x94(%r10),%r10d ;*getfield isDone
; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@30 (line 188)
; implicit exception: dispatches to 0x00007f6e7d2278a5
0x00007f6e7d22779d: test %r10d,%r10d
╭ 0x00007f6e7d2277a0: jne 0x00007f6e7d227819 ;*ifeq
│ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@33 (line 188)
│ 0x00007f6e7d2277a6: mov $0x1,%ebp
│╭ 0x00007f6e7d2277ab: jmp 0x00007f6e7d2277f0
││ 0x00007f6e7d2277ad: data16 xchg %ax,%ax
10.65% ││↗ 0x00007f6e7d2277b0: mov %rdx,%r9
10.84% │││ 0x00007f6e7d2277b3: add %r11,%r9 ;*ladd
│││ ; - dev.lucifer.FibonacciBenchmark::fibonacciIterative@33 (line 62)
│││ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@4 (line 79)
│││ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
9.92% │││ 0x00007f6e7d2277b6: add $0x1,%r8 ;*ladd
│││ ; - dev.lucifer.FibonacciBenchmark::fibonacciIterative@39 (line 59)
│││ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@4 (line 79)
│││ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
10.81% │││ 0x00007f6e7d2277ba: mov %rdx,%r11
10.78% │││ 0x00007f6e7d2277bd: mov %r9,%rdx ; OopMap{[48]=Oop [56]=Oop [64]=Oop [0]=Oop off=192}
│││ ;*goto
│││ ; - dev.lucifer.FibonacciBenchmark::fibonacciIterative@42 (line 59)
│││ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@4 (line 79)
│││ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
10.95% │││ ↗ 0x00007f6e7d2277c0: test %eax,0x1703883a(%rip) # 0x00007f6e94260000
│││ │ ;*goto
│││ │ ; - dev.lucifer.FibonacciBenchmark::fibonacciIterative@42 (line 59)
│││ │ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@4 (line 79)
│││ │ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
│││ │ ; {poll}
12.92% │││ │ 0x00007f6e7d2277c6: cmp %r10,%r8
││╰ │ 0x00007f6e7d2277c9: jle 0x00007f6e7d2277b0 ;*ifgt
││ │ ; - dev.lucifer.FibonacciBenchmark::fibonacciIterative@20 (line 59)
││ │ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@4 (line 79)
││ │ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
0.02% ││ │↗ 0x00007f6e7d2277cb: mov (%rsp),%rsi
0.02% ││ ││ 0x00007f6e7d2277cf: call 0x00007f6e7d045de0 ; OopMap{[48]=Oop [56]=Oop [64]=Oop [0]=Oop off=212}
││ ││ ;*invokespecial consumeFull
││ ││ ; - org.openjdk.jmh.infra.Blackhole::consume@15 (line 395)
││ ││ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@20 (line 186)
││ ││ ; {optimized virtual_call}
9.48% ││ ││ 0x00007f6e7d2277d4: mov 0x38(%rsp),%r10
0.04% ││ ││ 0x00007f6e7d2277d9: movzbl 0x94(%r10),%r11d ;*getfield isDone
││ ││ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@30 (line 188)
0.01% ││ ││ 0x00007f6e7d2277e1: add $0x1,%rbp ; OopMap{[48]=Oop [56]=Oop [64]=Oop [0]=Oop off=229}
││ ││ ;*ifeq
││ ││ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@33 (line 188)
1.04% ││ ││ 0x00007f6e7d2277e5: test %eax,0x17038815(%rip) # 0x00007f6e94260000
││ ││ ; {poll}
││ ││ 0x00007f6e7d2277eb: test %r11d,%r11d
││ ╭ ││ 0x00007f6e7d2277ee: jne 0x00007f6e7d22781e ;*aload
││ │ ││ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@13 (line 186)
│↘ │ ││ 0x00007f6e7d2277f0: mov 0x40(%rsp),%r10
│ │ ││ 0x00007f6e7d2277f5: mov 0x10(%r10),%r10 ;*getfield num
│ │ ││ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@1 (line 79)
│ │ ││ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
1.16% │ │ ││ 0x00007f6e7d2277f9: cmp $0x3,%r10
│ │╭││ 0x00007f6e7d2277fd: jl 0x00007f6e7d227812 ;*ifgt
│ ││││ ; - dev.lucifer.FibonacciBenchmark::fibonacciIterative@20 (line 59)
│ ││││ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@4 (line 79)
│ ││││ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
0.30% │ ││││ 0x00007f6e7d2277ff: mov $0x1,%r11d
0.01% │ ││││ 0x00007f6e7d227805: mov $0x2,%edx
│ ││││ 0x00007f6e7d22780a: mov $0x4,%r8d
0.86% │ ││╰│ 0x00007f6e7d227810: jmp 0x00007f6e7d2277c0
│ │↘ │ 0x00007f6e7d227812: mov $0x1,%edx
│ │ ╰ 0x00007f6e7d227817: jmp 0x00007f6e7d2277cb
↘ │ 0x00007f6e7d227819: mov $0x1,%ebp ;*aload_1
│ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@36 (line 189)
↘ 0x00007f6e7d22781e: movabs $0x7f6e92f26dc0,%r10
0x00007f6e7d227828: call *%r10 ;*invokestatic nanoTime
; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@37 (line 189)
0x00007f6e7d22782b: mov 0x30(%rsp),%r10
0x00007f6e7d227830: mov %rax,0x30(%r10) ;*putfield stopTime
; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@40 (line 189)
....................................................................................................
89.79% <total for region 1>
....[Hottest Regions]...............................................................................
89.79% C2, level 4 dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub, version 529 (96 bytes)
4.24% [kernel.kallsyms] [unknown] (6 bytes)
4.12% C2, level 4 org.openjdk.jmh.infra.Blackhole::consumeFull, version 506 (51 bytes)
0.22% [kernel.kallsyms] [unknown] (60 bytes)
0.13% [kernel.kallsyms] [unknown] (0 bytes)
0.05% [kernel.kallsyms] [unknown] (26 bytes)
0.05% libpthread-2.27.so __libc_write (4 bytes)
0.04% [kernel.kallsyms] [unknown] (1 bytes)
0.04% [kernel.kallsyms] [unknown] (24 bytes)
0.04% [kernel.kallsyms] [unknown] (6 bytes)
0.03% [kernel.kallsyms] [unknown] (0 bytes)
0.02% [kernel.kallsyms] [unknown] (0 bytes)
0.02% [kernel.kallsyms] [unknown] (0 bytes)
0.02% [kernel.kallsyms] [unknown] (21 bytes)
0.02% libc-2.27.so _IO_file_xsputn (33 bytes)
0.02% [kernel.kallsyms] [unknown] (6 bytes)
0.02% [kernel.kallsyms] [unknown] (0 bytes)
0.02% [kernel.kallsyms] [unknown] (23 bytes)
0.02% [kernel.kallsyms] [unknown] (0 bytes)
0.02% libjvm.so RelocIterator::initialize (41 bytes)
1.06% <...other 151 warm regions...>
....................................................................................................
99.99% <totals>
....[Hottest Methods (after inlining)]..............................................................
89.79% C2, level 4 dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub, version 529
5.49% [kernel.kallsyms] [unknown]
4.12% C2, level 4 org.openjdk.jmh.infra.Blackhole::consumeFull, version 506
0.20% libpthread-2.27.so __libc_write
0.04% libc-2.27.so __fprintf_chk
0.04% libc-2.27.so _IO_file_xsputn
0.03% libc-2.27.so vsnprintf
0.02% libjvm.so RelocIterator::initialize
0.01% libpthread-2.27.so __libc_read
0.01% libc-2.27.so vfprintf
0.01% perf ltrim
0.01% libc-2.27.so [unknown]
0.01% libc-2.27.so _IO_default_xsputn
0.01% libjvm.so decode_env::handle_event
0.01% libc-2.27.so __clock_gettime
0.01% libjvm.so outputStream::do_vsnprintf
0.01% libc-2.27.so __printf_fp
0.01% perf update_stats
0.01% perf read_counters
0.01% libjvm.so Monitor::IWait
0.13% <...other 21 warm methods...>
....................................................................................................
99.99% <totals>
....[Distribution by Source]........................................................................
93.91% C2, level 4
5.49% [kernel.kallsyms]
0.22% libpthread-2.27.so
0.19% libc-2.27.so
0.10% libjvm.so
0.06% perf
0.02% hsdis-amd64.so
0.01%
....................................................................................................
99.99% <totals>
Secondary result "dev.lucifer.FibonacciBenchmark.benchmarkFibonacciIterative:·gc.alloc.rate":
≈ 10⁻⁴ MB/sec
Secondary result "dev.lucifer.FibonacciBenchmark.benchmarkFibonacciIterative:·gc.alloc.rate.norm":
≈ 10⁻⁶ B/op
Secondary result "dev.lucifer.FibonacciBenchmark.benchmarkFibonacciIterative:·gc.count":
≈ 0 counts
# Run complete. Total time: 00:01:52
REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on
why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial
experiments, perform baseline and negative tests that provide experimental control, make sure
the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts.
Do not assume the numbers tell you what you want them to tell.
Benchmark (num) Mode Cnt Score Error Units
FibonacciBenchmark.benchmarkFibonacciIterative 45 avgt 5 26.566 ± 0.462 ns/op
FibonacciBenchmark.benchmarkFibonacciIterative:CPI 45 avgt 0.257 clks/insn
FibonacciBenchmark.benchmarkFibonacciIterative:IPC 45 avgt 3.887 insns/clk
FibonacciBenchmark.benchmarkFibonacciIterative:L1-dcache-load-misses 45 avgt 0.004 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:L1-dcache-loads 45 avgt 53.931 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:L1-dcache-stores 45 avgt 3.022 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:L1-icache-load-misses 45 avgt 0.011 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:LLC-load-misses 45 avgt ≈ 10⁻⁴ #/op
FibonacciBenchmark.benchmarkFibonacciIterative:LLC-loads 45 avgt 0.001 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:LLC-store-misses 45 avgt ≈ 10⁻⁴ #/op
FibonacciBenchmark.benchmarkFibonacciIterative:LLC-stores 45 avgt 0.001 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:branch-misses 45 avgt 0.003 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:branches 45 avgt 48.836 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:cycles 45 avgt 94.507 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:dTLB-load-misses 45 avgt ≈ 10⁻⁴ #/op
FibonacciBenchmark.benchmarkFibonacciIterative:dTLB-loads 45 avgt 53.837 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:dTLB-store-misses 45 avgt ≈ 10⁻⁵ #/op
FibonacciBenchmark.benchmarkFibonacciIterative:dTLB-stores 45 avgt 3.028 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:iTLB-load-misses 45 avgt ≈ 10⁻⁴ #/op
FibonacciBenchmark.benchmarkFibonacciIterative:iTLB-loads 45 avgt 0.001 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:instructions 45 avgt 367.340 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:·asm 45 avgt NaN ---
FibonacciBenchmark.benchmarkFibonacciIterative:·gc.alloc.rate 45 avgt 5 ≈ 10⁻⁴ MB/sec
FibonacciBenchmark.benchmarkFibonacciIterative:·gc.alloc.rate.norm 45 avgt 5 ≈ 10⁻⁶ B/op
FibonacciBenchmark.benchmarkFibonacciIterative:·gc.count 45 avgt 5 ≈ 0 counts
Hottest code regions (>10.00% "cycles" events):
....[Hottest Region 1]..............................................................................
C2, level 4, dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub, version 533 (96 bytes)
0x00007f4230dffd50: mov 0x38(%rsp),%r10
0x00007f4230dffd55: movzbl 0x94(%r10),%r10d ;*getfield isDone
; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@30 (line 188)
; implicit exception: dispatches to 0x00007f4230dffe65
0x00007f4230dffd5d: test %r10d,%r10d
╭ 0x00007f4230dffd60: jne 0x00007f4230dffdd9 ;*ifeq
│ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@33 (line 188)
│ 0x00007f4230dffd66: mov $0x1,%ebp
│╭ 0x00007f4230dffd6b: jmp 0x00007f4230dffdb0
││ 0x00007f4230dffd6d: data16 xchg %ax,%ax
11.13% ││↗ 0x00007f4230dffd70: mov %rdx,%r9
11.51% │││ 0x00007f4230dffd73: add %r11,%r9 ;*ladd
│││ ; - dev.lucifer.FibonacciBenchmark::fibonacciIterative@33 (line 62)
│││ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@4 (line 79)
│││ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
10.04% │││ 0x00007f4230dffd76: add $0x1,%r8 ;*ladd
│││ ; - dev.lucifer.FibonacciBenchmark::fibonacciIterative@39 (line 59)
│││ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@4 (line 79)
│││ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
11.52% │││ 0x00007f4230dffd7a: mov %rdx,%r11
10.95% │││ 0x00007f4230dffd7d: mov %r9,%rdx ; OopMap{[48]=Oop [56]=Oop [64]=Oop [0]=Oop off=192}
│││ ;*goto
│││ ; - dev.lucifer.FibonacciBenchmark::fibonacciIterative@42 (line 59)
│││ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@4 (line 79)
│││ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
11.37% │││ ↗ 0x00007f4230dffd80: test %eax,0x1608127a(%rip) # 0x00007f4246e81000
│││ │ ;*goto
│││ │ ; - dev.lucifer.FibonacciBenchmark::fibonacciIterative@42 (line 59)
│││ │ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@4 (line 79)
│││ │ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
│││ │ ; {poll}
13.47% │││ │ 0x00007f4230dffd86: cmp %r10,%r8
││╰ │ 0x00007f4230dffd89: jle 0x00007f4230dffd70 ;*ifgt
││ │ ; - dev.lucifer.FibonacciBenchmark::fibonacciIterative@20 (line 59)
││ │ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@4 (line 79)
││ │ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
0.03% ││ │↗ 0x00007f4230dffd8b: mov (%rsp),%rsi
0.05% ││ ││ 0x00007f4230dffd8f: call 0x00007f4230c17de0 ; OopMap{[48]=Oop [56]=Oop [64]=Oop [0]=Oop off=212}
││ ││ ;*invokespecial consumeFull
││ ││ ; - org.openjdk.jmh.infra.Blackhole::consume@15 (line 395)
││ ││ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@20 (line 186)
││ ││ ; {optimized virtual_call}
9.67% ││ ││ 0x00007f4230dffd94: mov 0x38(%rsp),%r10
0.04% ││ ││ 0x00007f4230dffd99: movzbl 0x94(%r10),%r11d ;*getfield isDone
││ ││ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@30 (line 188)
││ ││ 0x00007f4230dffda1: add $0x1,%rbp ; OopMap{[48]=Oop [56]=Oop [64]=Oop [0]=Oop off=229}
││ ││ ;*ifeq
││ ││ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@33 (line 188)
0.89% ││ ││ 0x00007f4230dffda5: test %eax,0x16081255(%rip) # 0x00007f4246e81000
││ ││ ; {poll}
││ ││ 0x00007f4230dffdab: test %r11d,%r11d
││ ╭ ││ 0x00007f4230dffdae: jne 0x00007f4230dffdde ;*aload
││ │ ││ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@13 (line 186)
│↘ │ ││ 0x00007f4230dffdb0: mov 0x40(%rsp),%r10
│ │ ││ 0x00007f4230dffdb5: mov 0x10(%r10),%r10 ;*getfield num
│ │ ││ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@1 (line 79)
│ │ ││ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
1.38% │ │ ││ 0x00007f4230dffdb9: cmp $0x3,%r10
│ │╭││ 0x00007f4230dffdbd: jl 0x00007f4230dffdd2 ;*ifgt
│ ││││ ; - dev.lucifer.FibonacciBenchmark::fibonacciIterative@20 (line 59)
│ ││││ ; - dev.lucifer.FibonacciBenchmark::benchmarkFibonacciIterative@4 (line 79)
│ ││││ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@17 (line 186)
0.39% │ ││││ 0x00007f4230dffdbf: mov $0x1,%r11d
0.01% │ ││││ 0x00007f4230dffdc5: mov $0x2,%edx
│ ││││ 0x00007f4230dffdca: mov $0x4,%r8d
0.84% │ ││╰│ 0x00007f4230dffdd0: jmp 0x00007f4230dffd80
│ │↘ │ 0x00007f4230dffdd2: mov $0x1,%edx
│ │ ╰ 0x00007f4230dffdd7: jmp 0x00007f4230dffd8b
↘ │ 0x00007f4230dffdd9: mov $0x1,%ebp ;*aload_1
│ ; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@36 (line 189)
↘ 0x00007f4230dffdde: movabs $0x7f4245b47dc0,%r10
0x00007f4230dffde8: call *%r10 ;*invokestatic nanoTime
; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@37 (line 189)
0x00007f4230dffdeb: mov 0x30(%rsp),%r10
0x00007f4230dffdf0: mov %rax,0x30(%r10) ;*putfield stopTime
; - dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub@40 (line 189)
....................................................................................................
93.27% <total for region 1>
....[Hottest Regions]...............................................................................
93.27% C2, level 4 dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub, version 533 (96 bytes)
4.51% C2, level 4 org.openjdk.jmh.infra.Blackhole::consumeFull, version 510 (51 bytes)
0.24% [kernel.kallsyms] [unknown] (6 bytes)
0.22% [kernel.kallsyms] [unknown] (37 bytes)
0.17% [kernel.kallsyms] [unknown] (0 bytes)
0.09% [kernel.kallsyms] [unknown] (17 bytes)
0.08% libc-2.27.so [unknown] (0 bytes)
0.06% [kernel.kallsyms] [unknown] (7 bytes)
0.04% [kernel.kallsyms] [unknown] (0 bytes)
0.04% [kernel.kallsyms] [unknown] (20 bytes)
0.04% [kernel.kallsyms] [unknown] (28 bytes)
0.04% libc-2.27.so __fprintf_chk (25 bytes)
0.03% [kernel.kallsyms] [unknown] (0 bytes)
0.03% libc-2.27.so [unknown] (6 bytes)
0.03% libc-2.27.so [unknown] (49 bytes)
0.03% libc-2.27.so __fprintf_chk (30 bytes)
0.02% [kernel.kallsyms] [unknown] (0 bytes)
0.02% [kernel.kallsyms] [unknown] (0 bytes)
0.02% [kernel.kallsyms] [unknown] (0 bytes)
0.02% [kernel.kallsyms] [unknown] (0 bytes)
1.01% <...other 99 warm regions...>
....................................................................................................
99.99% <totals>
....[Hottest Methods (after inlining)]..............................................................
93.27% C2, level 4 dev.lucifer.jmh_generated.FibonacciBenchmark_benchmarkFibonacciIterative_jmhTest::benchmarkFibonacciIterative_avgt_jmhStub, version 533
4.51% C2, level 4 org.openjdk.jmh.infra.Blackhole::consumeFull, version 510
1.46% [kernel.kallsyms] [unknown]
0.37% libc-2.27.so [unknown]
0.16% libc-2.27.so __fprintf_chk
0.02% hsdis-amd64.so print_insn
0.02% perf process_interval
0.02% libjvm.so RelocIterator::initialize
0.01% libjvm.so xmlStream::write
0.01% libpthread-2.27.so __libc_read
0.01% perf print_counters
0.01% libc-2.27.so vfprintf
0.01% libjvm.so fileStream::write
0.01% perf perf_evsel__read_counter
0.01% libjvm.so ScopeDesc::sender
0.01% libc-2.27.so _IO_padn
0.01% libc-2.27.so _IO_default_xsputn
0.01% perf __perf_evsel_stat__is
0.01% libc-2.27.so fputc
0.01% libc-2.27.so _IO_fflush
0.06% <...other 6 warm methods...>
....................................................................................................
99.99% <totals>
....[Distribution by Source]........................................................................
97.79% C2, level 4
1.46% [kernel.kallsyms]
0.60% libc-2.27.so
0.06% perf
0.05% libjvm.so
0.02% libpthread-2.27.so
0.02% hsdis-amd64.so
....................................................................................................
99.99% <totals>
Secondary result "dev.lucifer.FibonacciBenchmark.benchmarkFibonacciIterative:·gc.alloc.rate":
≈ 10⁻⁴ MB/sec
Secondary result "dev.lucifer.FibonacciBenchmark.benchmarkFibonacciIterative:·gc.alloc.rate.norm":
≈ 10⁻⁶ B/op
Secondary result "dev.lucifer.FibonacciBenchmark.benchmarkFibonacciIterative:·gc.count":
≈ 0 counts
# Run complete. Total time: 00:01:52
REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on
why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial
experiments, perform baseline and negative tests that provide experimental control, make sure
the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts.
Do not assume the numbers tell you what you want them to tell.
Benchmark (num) Mode Cnt Score Error Units
FibonacciBenchmark.benchmarkFibonacciIterative 45 avgt 5 26.552 ± 0.331 ns/op
FibonacciBenchmark.benchmarkFibonacciIterative:CPI 45 avgt 0.258 clks/insn
FibonacciBenchmark.benchmarkFibonacciIterative:IPC 45 avgt 3.882 insns/clk
FibonacciBenchmark.benchmarkFibonacciIterative:L1-dcache-load-misses 45 avgt 0.004 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:L1-dcache-loads 45 avgt 53.763 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:L1-dcache-stores 45 avgt 3.018 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:L1-icache-load-misses 45 avgt 0.010 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:LLC-load-misses 45 avgt ≈ 10⁻⁴ #/op
FibonacciBenchmark.benchmarkFibonacciIterative:LLC-loads 45 avgt 0.001 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:LLC-store-misses 45 avgt ≈ 10⁻⁵ #/op
FibonacciBenchmark.benchmarkFibonacciIterative:LLC-stores 45 avgt 0.001 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:branch-misses 45 avgt 0.003 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:branches 45 avgt 48.757 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:cycles 45 avgt 94.599 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:dTLB-load-misses 45 avgt ≈ 10⁻⁴ #/op
FibonacciBenchmark.benchmarkFibonacciIterative:dTLB-loads 45 avgt 53.915 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:dTLB-store-misses 45 avgt ≈ 10⁻⁵ #/op
FibonacciBenchmark.benchmarkFibonacciIterative:dTLB-stores 45 avgt 3.035 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:iTLB-load-misses 45 avgt ≈ 10⁻⁵ #/op
FibonacciBenchmark.benchmarkFibonacciIterative:iTLB-loads 45 avgt 0.002 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:instructions 45 avgt 367.205 #/op
FibonacciBenchmark.benchmarkFibonacciIterative:·asm 45 avgt NaN ---
FibonacciBenchmark.benchmarkFibonacciIterative:·gc.alloc.rate 45 avgt 5 ≈ 10⁻⁴ MB/sec
FibonacciBenchmark.benchmarkFibonacciIterative:·gc.alloc.rate.norm 45 avgt 5 ≈ 10⁻⁶ B/op
FibonacciBenchmark.benchmarkFibonacciIterative:·gc.count 45 avgt 5 ≈ 0 counts
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment