boris@sochi:~/jdk-dev$ ./build/linux-x86_64-server-release/jdk/bin/java -XX:-TieredCompilation -XX:InitialCodeCacheSize=500M -XX:ReservedCodeCacheSize=500M -Xms50g -Xmx50g -jar /home/boris/renaissance/renaissance-jmh-0.13.0-86-gbe1e64f.jar -f 1 -wi 4 -i 1 JmhScalaDoku -prof perfasm # JMH version: 1.33 # VM version: JDK 20-internal, OpenJDK 64-Bit Server VM, 20-internal-adhoc.boris.jdk-dev # VM invoker: /home/boris/jdk-dev/build/linux-x86_64-server-release/jdk/bin/java # VM options: -XX:-TieredCompilation -XX:InitialCodeCacheSize=500M -XX:ReservedCodeCacheSize=500M -Xms50g -Xmx50g # Blackhole mode: full + dont-inline hint (default, use -Djmh.blackhole.autoDetect=true to auto-detect) # Warmup: 4 iterations, single-shot each # Measurement: 1 iterations, single-shot each # Timeout: 10 min per iteration # Threads: 1 thread # Benchmark mode: Single shot invocation time # Benchmark: org.renaissance.scala.sat.JmhScalaDoku.runOperation # Run progress: 0.00% complete, ETA 00:00: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: 5549.184 ms/op # Warmup Iteration 2: 2592.978 ms/op # Warmup Iteration 3: 2514.807 ms/op # Warmup Iteration 4: 2491.762 ms/op Iteration 1: 2496.171 ms/op # Processing profiler results: LinuxPerfAsmProfiler Secondary result "org.renaissance.scala.sat.JmhScalaDoku.runOperation:·asm": PrintAssembly processed: 188304 total address lines. Perf output processed (skipped 15.301 seconds): Column 1: cycles (2896 events) Hottest code regions (>10.00% "cycles" events): ....[Hottest Region 1].............................................................................. c2, scala.collection.immutable.SetIterator::next, version 917 (121 bytes) dependencies [0x00007fffd0e06670,0x00007fffd0e06690] = 32 handler table [0x00007fffd0e06690,0x00007fffd0e066a8] = 24 nul chk table [0x00007fffd0e066a8,0x00007fffd0e066c0] = 24 [Disassembly] -------------------------------------------------------------------------------- [Constant Pool (empty)] -------------------------------------------------------------------------------- [Entry Point] # {method} {0x00007ff2bd1daf90} 'next' '()Ljava/lang/Object;' in 'scala/collection/immutable/SetIterator' # [sp+0x30] (sp of caller) 1.35% 0x00007fffd0e06320: mov 0x8(%rsi),%r10d 0.14% 0x00007fffd0e06324: cmp %r10,%rax 0x00007fffd0e06327: jne 0x00007fffd0c61280 ; {runtime_call ic_miss_stub} 0.03% 0x00007fffd0e0632d: data16 xchg %ax,%ax [Verified Entry Point] 0.31% 0x00007fffd0e06330: mov %eax,-0x14000(%rsp) 0.48% 0x00007fffd0e06337: push %rbp 0.07% 0x00007fffd0e06338: sub $0x20,%rsp ;*synchronization entry ; - scala.collection.immutable.SetIterator::next@-1 (line 1868) 1.21% 0x00007fffd0e0633c: mov %rsi,(%rsp) 0x00007fffd0e06340: mov 0x10(%rsi),%r11d 0.10% 0x00007fffd0e06344: mov 0xc(%rsi),%r10d 0.59% 0x00007fffd0e06348: cmp %r11d,%r10d 0.03% ╭ 0x00007fffd0e0634b: jge 0x00007fffd0e0639a ;*iconst_1 {reexecute=0 rethrow=0 return_oop=0} │ ; - scala.collection.immutable.ChampBaseIterator::hasNext@18 (line 185) │ ; - scala.collection.immutable.SetIterator::next@1 (line 1868) 1.14% │ 0x00007fffd0e0634d: mov (%rsp),%r10 0.03% │ 0x00007fffd0e06351: mov 0x18(%r10),%r11 ;*getfield currentValueNode {reexecute=0 rethrow=0 return_oop=0} │ ; - scala.collection.immutable.ChampBaseIterator::currentValueNode@1 (line 118) │ ; - scala.collection.immutable.SetIterator::next@16 (line 1871) 0.38% │ 0x00007fffd0e06355: mov 0x8(%r11),%r10d ; implicit exception: dispatches to 0x00007fffd0e063e5 1.21% │ 0x00007fffd0e06359: cmp $0x8022c8f0,%r10d ; {metadata('scala/collection/immutable/BitmapIndexedSetNode')} 0.07% │ 0x00007fffd0e06360: jne 0x00007fffd0e063c4 ;*checkcast {reexecute=0 rethrow=0 return_oop=0} │ ; - scala.collection.immutable.SetIterator::next@19 (line 1871) 1.24% │ 0x00007fffd0e06362: mov (%rsp),%r10 0.03% │ 0x00007fffd0e06366: mov 0xc(%r10),%r8d ;*getfield currentValueCursor {reexecute=0 rethrow=0 return_oop=0} │ ; - scala.collection.immutable.ChampBaseIterator::currentValueCursor@1 (line 116) │ ; - scala.collection.immutable.SetIterator::next@23 (line 1871) │ 0x00007fffd0e0636a: mov 0x20(%r11),%rbp ;*getfield content {reexecute=0 rethrow=0 return_oop=0} │ ; - scala.collection.immutable.BitmapIndexedSetNode::content@1 (line 409) │ ; - scala.collection.immutable.BitmapIndexedSetNode::getPayload@1 (line 437) │ ; - scala.collection.immutable.SetIterator::next@26 (line 1871) 0.38% │ 0x00007fffd0e0636e: mov 0xc(%rbp),%r10d ; implicit exception: dispatches to 0x00007fffd0e063f4 3.83% │ 0x00007fffd0e06372: cmp %r10d,%r8d 0.10% │ 0x00007fffd0e06375: jae 0x00007fffd0e063b4 0.31% │ 0x00007fffd0e06377: mov 0x10(%rbp,%r8,8),%rax ;*aaload {reexecute=0 rethrow=0 return_oop=0} │ ; - scala.collection.immutable.BitmapIndexedSetNode::getPayload@5 (line 437) │ ; - scala.collection.immutable.SetIterator::next@26 (line 1871) 0.66% │ 0x00007fffd0e0637c: inc %r8d 0.28% │ 0x00007fffd0e0637f: mov (%rsp),%r10 0.62% │ 0x00007fffd0e06383: mov %r8d,0xc(%r10) ;*if_icmplt {reexecute=0 rethrow=0 return_oop=0} │ ; - scala.collection.immutable.ChampBaseIterator::hasNext@8 (line 185) │ ; - scala.collection.immutable.SetIterator::next@1 (line 1868) 0.24% │ 0x00007fffd0e06387: add $0x20,%rsp 0.17% │ 0x00007fffd0e0638b: pop %rbp 0.21% │ 0x00007fffd0e0638c: cmp 0x378(%r15),%rsp ; {poll_return} │ 0x00007fffd0e06393: ja 0x00007fffd0e06404 1.00% │ 0x00007fffd0e06399: retq ↘ 0x00007fffd0e0639a: nop 0x00007fffd0e0639b: callq 0x00007fffd0c61780 ; ImmutableOopMap {[0]=Oop } ;*invokespecial searchNextValueNode {reexecute=0 rethrow=0 return_oop=0} ; - scala.collection.immutable.ChampBaseIterator::hasNext@12 (line 185) ; - scala.collection.immutable.SetIterator::next@1 (line 1868) ; {optimized virtual_call} 0x00007fffd0e063a0: test %eax,%eax 0x00007fffd0e063a2: jne 0x00007fffd0e0634d ;*ifeq {reexecute=0 rethrow=0 return_oop=0} ; - scala.collection.immutable.ChampBaseIterator::hasNext@15 (line 185) ; - scala.collection.immutable.SetIterator::next@1 (line 1868) .................................................................................................... 16.23% ....[Hottest Region 2].............................................................................. c2, scala.collection.immutable.ChampBaseIterator::searchNextValueNode, version 1065 (530 bytes) [Constant Pool (empty)] -------------------------------------------------------------------------------- [Entry Point] # {method} {0x00007ff2bd16dd08} 'searchNextValueNode' '()Z' in 'scala/collection/immutable/ChampBaseIterator' # [sp+0x60] (sp of caller) 0x00007fffd0e5b680: mov 0x8(%rsi),%r10d 0x00007fffd0e5b684: cmp %r10,%rax 0x00007fffd0e5b687: jne 0x00007fffd0c61280 ; {runtime_call ic_miss_stub} 0x00007fffd0e5b68d: data16 xchg %ax,%ax [Verified Entry Point] 0.45% 0x00007fffd0e5b690: mov %eax,-0x14000(%rsp) 0.52% 0x00007fffd0e5b697: push %rbp 0x00007fffd0e5b698: sub $0x50,%rsp ;*synchronization entry ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@-1 (line 163) 0.24% 0x00007fffd0e5b69c: xor %r10d,%r10d 0.03% 0x00007fffd0e5b69f: mov %r10d,0x18(%rsp) ;*aload_0 {reexecute=0 rethrow=0 return_oop=0} ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@0 (line 163) 0.14% 0x00007fffd0e5b6a4: mov %rsi,0x10(%rsp) 0.17% 0x00007fffd0e5b6a9: mov 0x14(%rsi),%r9d ;*getfield currentStackLevel {reexecute=0 rethrow=0 return_oop=0} ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@1 (line 163) 0x00007fffd0e5b6ad: test %r9d,%r9d 0x00007fffd0e5b6b0: jl 0x00007fffd0e5b9ad ;*if_icmplt {reexecute=0 rethrow=0 return_oop=0} ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@5 (line 163) 0.03% 0x00007fffd0e5b6b6: mov 0x20(%rsi),%r12 ;*getfield nodeCursorsAndLengths {reexecute=0 rethrow=0 return_oop=0} ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@25 (line 167) 0.14% 0x00007fffd0e5b6ba: mov 0xc(%r12),%r10d ; implicit exception: dispatches to 0x00007fffd0e5be41 ;*iaload {reexecute=0 rethrow=0 return_oop=0} ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@29 (line 167) 0.35% 0x00007fffd0e5b6bf: test %r10d,%r10d 0x00007fffd0e5b6c2: jbe 0x00007fffd0e5be41 0x00007fffd0e5b6c8: movslq %r10d,%r11 0x00007fffd0e5b6cb: movslq %r9d,%r8 0.10% 0x00007fffd0e5b6ce: shl %r8 0.17% 0x00007fffd0e5b6d1: cmp %r11,%r8 0x00007fffd0e5b6d4: jae 0x00007fffd0e5be41 0x00007fffd0e5b6da: cmp $0x1,%r10d 0x00007fffd0e5b6de: jbe 0x00007fffd0e5be41 0x00007fffd0e5b6e4: add $0x1,%r8 0.10% 0x00007fffd0e5b6e8: cmp %r11,%r8 0x00007fffd0e5b6eb: jae 0x00007fffd0e5be41 ;*getfield currentStackLevel {reexecute=0 rethrow=0 return_oop=0} ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@9 (line 164) 0.10% ↗ 0x00007fffd0e5b6f1: mov %r9d,%r8d ;*aload_0 {reexecute=0 rethrow=0 return_oop=0} │ ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@8 (line 164) ↗│ 0x00007fffd0e5b6f4: mov %r8d,%r11d ││ 0x00007fffd0e5b6f7: shl %r11d ;*imul {reexecute=0 rethrow=0 return_oop=0} ││ ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@13 (line 164) ││ 0x00007fffd0e5b6fa: mov 0x10(%r12,%r11,4),%edx ;*iaload {reexecute=0 rethrow=0 return_oop=0} ││ ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@29 (line 167) 0.41% ││ 0x00007fffd0e5b6ff: movslq %r11d,%r10 ││ 0x00007fffd0e5b702: mov 0x14(%r12,%r10,4),%r10d ;*iaload {reexecute=0 rethrow=0 return_oop=0} ││ ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@36 (line 168) ││ 0x00007fffd0e5b707: cmp %r10d,%edx ╭││ 0x00007fffd0e5b70a: jl 0x00007fffd0e5b75c ;*if_icmpge {reexecute=0 rethrow=0 return_oop=0} │││ ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@42 (line 170) │││ 0x00007fffd0e5b70c: mov %r9d,%r11d 0.03% │││ 0x00007fffd0e5b70f: inc %r11d │││ 0x00007fffd0e5b712: cmp $0xffffffff,%r9d │││ 0x00007fffd0e5b716: cmovl 0x18(%rsp),%r11d 0.14% │││ 0x00007fffd0e5b71c: mov $0x3e8,%ecx 0.07% │││ 0x00007fffd0e5b721: cmp $0x3e8,%r11d │││ 0x00007fffd0e5b728: cmova %ecx,%r11d 0.07% │││ 0x00007fffd0e5b72c: mov %r9d,%ecx 0.10% │││ 0x00007fffd0e5b72f: sub %r11d,%ecx │││ 0x00007fffd0e5b732: dec %r8d ;*isub {reexecute=0 rethrow=0 return_oop=0} │││ ; - scala.collection.immutable.ChampBaseIterator::popNode@6 (line 155) │││ ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@107 (line 178) 0.03% │││ 0x00007fffd0e5b735: mov 0x10(%rsp),%r10 │││ 0x00007fffd0e5b73a: mov %r8d,0x14(%r10) ;*putfield currentStackLevel {reexecute=0 rethrow=0 return_oop=0} │││ ; - scala.collection.immutable.ChampBaseIterator::popNode@7 (line 155) │││ ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@107 (line 178) 0.17% │││ 0x00007fffd0e5b73e: cmp %ecx,%r8d │╰│ 0x00007fffd0e5b741: jg 0x00007fffd0e5b6f4 ;*putfield nodeCursorsAndLengths {reexecute=0 rethrow=0 return_oop=0} │ │ ; - scala.collection.immutable.ChampBaseIterator::initNodes@18 (line 125) │ │ ; - scala.collection.immutable.ChampBaseIterator::pushNode@1 (line 143) │ │ ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@87 (line 175) │ │ 0x00007fffd0e5b743: mov 0x380(%r15),%r11 ; ImmutableOopMap {r12=Oop [16]=Oop } │ │ ;*goto {reexecute=1 rethrow=0 return_oop=0} │ │ ; - (reexecute) scala.collection.immutable.ChampBaseIterator::searchNextValueNode@110 (line 163) │ │ 0x00007fffd0e5b74a: test %eax,(%r11) ;*goto {reexecute=0 rethrow=0 return_oop=0} │ │ ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@110 (line 163) │ │ ; {poll} │ │ 0x00007fffd0e5b74d: cmp $0xffffffff,%r8d │ │ 0x00007fffd0e5b751: jle 0x00007fffd0e5b9ad │ │ 0x00007fffd0e5b757: mov %r8d,%r9d │ ╰ 0x00007fffd0e5b75a: jmp 0x00007fffd0e5b6f1 0.17% ↘ 0x00007fffd0e5b75c: mov 0x10(%r12,%r11,4),%r10d ;*iaload {reexecute=0 rethrow=0 return_oop=0} ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@57 (line 171) 0.21% 0x00007fffd0e5b761: mov 0x10(%rsp),%r9 0x00007fffd0e5b766: mov 0x28(%r9),%rbp ;*getfield nodes {reexecute=0 rethrow=0 return_oop=0} ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@62 (line 173) 0.07% 0x00007fffd0e5b76a: inc %r10d 0.03% 0x00007fffd0e5b76d: mov %r10d,0x10(%r12,%r11,4) ;*iastore {reexecute=0 rethrow=0 return_oop=0} ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@60 (line 171) 0.31% 0x00007fffd0e5b772: mov 0xc(%rbp),%r10d ; implicit exception: dispatches to 0x00007fffd0e5c0b8 0.52% 0x00007fffd0e5b776: cmp %r10d,%r8d 0x00007fffd0e5b779: jae 0x00007fffd0e5be50 0.03% 0x00007fffd0e5b77f: mov 0x10(%rbp,%r8,8),%r11 ;*aaload {reexecute=0 rethrow=0 return_oop=0} ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@69 (line 173) 0x00007fffd0e5b784: mov 0x8(%r11),%r10d ; implicit exception: dispatches to 0x00007fffd0e5c0c8 0.48% 0x00007fffd0e5b788: cmp $0x8022c8f0,%r10d ; {metadata('scala/collection/immutable/BitmapIndexedSetNode')} 0x00007fffd0e5b78f: jne 0x00007fffd0e5ba2b ;*invokevirtual getNode {reexecute=0 rethrow=0 return_oop=0} ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@71 (line 173) 0.10% 0x00007fffd0e5b795: mov 0x20(%r11),%r8 ;*getfield content {reexecute=0 rethrow=0 return_oop=0} ; - scala.collection.immutable.BitmapIndexedSetNode::content@1 (line 409) ; - scala.collection.immutable.BitmapIndexedSetNode::getNode@1 (line 441) ; - scala.collection.immutable.BitmapIndexedSetNode::getNode@2 (line 406) ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@-1 (line 163) 0.07% 0x00007fffd0e5b799: mov 0xc(%r8),%r10d ; implicit exception: dispatches to 0x00007fffd0e5c0d4 ;*arraylength {reexecute=0 rethrow=0 return_oop=0} ; - scala.collection.immutable.BitmapIndexedSetNode::getNode@8 (line 441) ; - scala.collection.immutable.BitmapIndexedSetNode::getNode@2 (line 406) ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@-1 (line 163) 0.86% 0x00007fffd0e5b79d: mov %r10d,%ebp 0.21% 0x00007fffd0e5b7a0: sub %edx,%ebp 0.10% 0x00007fffd0e5b7a2: dec %ebp ;*isub {reexecute=0 rethrow=0 return_oop=0} ; - scala.collection.immutable.BitmapIndexedSetNode::getNode@12 (line 441) ; - scala.collection.immutable.BitmapIndexedSetNode::getNode@2 (line 406) ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@-1 (line 163) 0.10% 0x00007fffd0e5b7a4: cmp %r10d,%ebp 0x00007fffd0e5b7a7: jae 0x00007fffd0e5be64 0.17% 0x00007fffd0e5b7ad: movslq %r10d,%r10 0.07% 0x00007fffd0e5b7b0: movslq %edx,%r11 0.03% 0x00007fffd0e5b7b3: sub %r11,%r10 0x00007fffd0e5b7b6: mov 0x8(%r8,%r10,8),%r12 ;*aaload {reexecute=0 rethrow=0 return_oop=0} ; - scala.collection.immutable.BitmapIndexedSetNode::getNode@13 (line 441) ; - scala.collection.immutable.BitmapIndexedSetNode::getNode@2 (line 406) ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@-1 (line 163) 1.59% 0x00007fffd0e5b7bb: mov 0x8(%r12),%r11d ; implicit exception: dispatches to 0x00007fffd0e5c0e0 3.76% 0x00007fffd0e5b7c0: cmp $0x8022c8f0,%r11d ; {metadata('scala/collection/immutable/BitmapIndexedSetNode')} 0x00007fffd0e5b7c7: jne 0x00007fffd0e5c0a8 ;*synchronization entry ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@-1 (line 163) 0.21% 0x00007fffd0e5b7cd: mov 0x8(%r12),%r13d 0.41% 0x00007fffd0e5b7d2: cmp $0x8022c8f0,%r13d ; {metadata('scala/collection/immutable/BitmapIndexedSetNode')} 0x00007fffd0e5b7d9: jne 0x00007fffd0e5ba58 0.21% 0x00007fffd0e5b7df: mov %r12,%r10 ;*invokevirtual hasNodes {reexecute=0 rethrow=0 return_oop=0} ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@78 (line 175) 0.07% 0x00007fffd0e5b7e2: mov 0x10(%r10),%r10d 0.17% 0x00007fffd0e5b7e6: test %r10d,%r10d 0x00007fffd0e5b7e9: setne %r11b 0.24% 0x00007fffd0e5b7ed: movzbl %r11b,%r11d ;*synchronization entry ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@-1 (line 163) 0.35% 0x00007fffd0e5b7f1: test %r11d,%r11d 0x00007fffd0e5b7f4: je 0x00007fffd0e5b907 ;*ifeq {reexecute=0 rethrow=0 return_oop=0} ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@81 (line 175) 0.41% 0x00007fffd0e5b7fa: mov 0x10(%rsp),%r10 0.38% 0x00007fffd0e5b7ff: mov 0x20(%r10),%r10 0.14% 0x00007fffd0e5b803: test %r10,%r10 0x00007fffd0e5b806: je 0x00007fffd0e5baa0 ;*return {reexecute=0 rethrow=0 return_oop=0} ; - scala.collection.immutable.ChampBaseIterator::initNodes@34 (line 124) ; - scala.collection.immutable.ChampBaseIterator::pushNode@1 (line 143) ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@87 (line 175) 0x00007fffd0e5b80c: mov 0x10(%rsp),%r10 0.03% 0x00007fffd0e5b811: mov 0x28(%r10),%r9 ;*getfield nodes {reexecute=0 rethrow=0 return_oop=0} ; - scala.collection.immutable.ChampBaseIterator::pushNode@31 (line 149) ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@87 (line 175) 0x00007fffd0e5b815: mov 0x14(%r10),%edx ;*getfield currentStackLevel {reexecute=0 rethrow=0 return_oop=0} ; - scala.collection.immutable.ChampBaseIterator::pushNode@6 (line 144) ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@87 (line 175) 0.07% 0x00007fffd0e5b819: mov %edx,%r10d 0.03% 0x00007fffd0e5b81c: inc %r10d ;*iadd {reexecute=0 rethrow=0 return_oop=0} ; - scala.collection.immutable.ChampBaseIterator::pushNode@10 (line 144) ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@87 (line 175) 0x00007fffd0e5b81f: mov 0x10(%rsp),%r11 0x00007fffd0e5b824: mov %r10d,0x14(%r11) ;*putfield currentStackLevel {reexecute=0 rethrow=0 return_oop=0} ; - scala.collection.immutable.ChampBaseIterator::pushNode@11 (line 144) ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@87 (line 175) 0.03% 0x00007fffd0e5b828: mov 0xc(%r9),%edi ; implicit exception: dispatches to 0x00007fffd0e5c0ec 0.03% 0x00007fffd0e5b82c: mov %edx,%ebx 0x00007fffd0e5b82e: shl %ebx ;*imul {reexecute=0 rethrow=0 return_oop=0} ; - scala.collection.immutable.ChampBaseIterator::pushNode@19 (line 146) ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@87 (line 175) 0x00007fffd0e5b830: mov %ebx,%r8d 0x00007fffd0e5b833: add $0x3,%r8d ;*iadd {reexecute=0 rethrow=0 return_oop=0} ; - scala.collection.immutable.ChampBaseIterator::pushNode@28 (line 147) ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@87 (line 175) 0.07% 0x00007fffd0e5b837: mov %ebx,%r11d 0.03% 0x00007fffd0e5b83a: add $0x2,%r11d ;*imul {reexecute=0 rethrow=0 return_oop=0} ; - scala.collection.immutable.ChampBaseIterator::pushNode@19 (line 146) ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@87 (line 175) 0x00007fffd0e5b83e: cmp %edi,%r10d 0x00007fffd0e5b841: jae 0x00007fffd0e5bf30 0x00007fffd0e5b847: mov 0x8(%r9),%ecx 0x00007fffd0e5b84b: cmp $0x80231290,%ecx ; {metadata('scala/collection/immutable/Node'[])} 0x00007fffd0e5b851: jne 0x00007fffd0e5bfb0 0.17% 0x00007fffd0e5b857: movabs $0x80231290,%rcx ; {metadata('scala/collection/immutable/Node'[])} 0x00007fffd0e5b861: mov 0xd0(%rcx),%rax 0.03% 0x00007fffd0e5b868: mov 0x14(%rax),%ecx 0x00007fffd0e5b86b: movslq %ecx,%rdi 0.07% 0x00007fffd0e5b86e: mov %r13d,%esi 0x00007fffd0e5b871: mov (%rsi,%rdi,1),%rdi 0.10% 0x00007fffd0e5b875: cmp %rdi,%rax 0x00007fffd0e5b878: jne 0x00007fffd0e5b9c4 0x00007fffd0e5b87e: movslq %edx,%r10 0.07% 0x00007fffd0e5b881: lea 0x18(%r9,%r10,8),%rbp ;*putfield nodeCursorsAndLengths {reexecute=0 rethrow=0 return_oop=0} ; - scala.collection.immutable.ChampBaseIterator::initNodes@18 (line 125) ; - scala.collection.immutable.ChampBaseIterator::pushNode@1 (line 143) ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@87 (line 175) 0x00007fffd0e5b886: cmpb $0x0,0x40(%r15) 0.10% 0x00007fffd0e5b88b: jne 0x00007fffd0e5bcfd 0x00007fffd0e5b891: mov %r12,0x0(%rbp) 0.03% 0x00007fffd0e5b895: mov %r12,%r10 0x00007fffd0e5b898: mov %rbp,%r9 0.03% 0x00007fffd0e5b89b: xor %r9,%r10 0.03% 0x00007fffd0e5b89e: shr $0x19,%r10 0.03% 0x00007fffd0e5b8a2: test %r10,%r10 ╭ 0x00007fffd0e5b8a5: je 0x00007fffd0e5b8c1 │ 0x00007fffd0e5b8a7: shr $0x9,%r9 │ 0x00007fffd0e5b8ab: movabs $0x7fb347d90000,%rdi │ 0x00007fffd0e5b8b5: add %r9,%rdi │ 0x00007fffd0e5b8b8: cmpb $0x4,(%rdi) │ 0x00007fffd0e5b8bb: jne 0x00007fffd0e5bd2d ;*aastore {reexecute=0 rethrow=0 return_oop=0} │ ; - scala.collection.immutable.ChampBaseIterator::pushNode@39 (line 149) │ ; - scala.collection.immutable.ChampBaseIterator::searchNextValueNode@87 (line 175) ↘ 0x00007fffd0e5b8c1: mov 0x10(%rsp),%r10 0.03% 0x00007fffd0e5b8c6: mov 0x20(%r10),%rcx ;*getfield nodeCursorsAndLengths {reexecute=0 rethrow=0 return_oop=0} .................................................................................................... 16.09% ....[Hottest Region 3].............................................................................. c2, scala.collection.IterableOnceOps::exists, version 1157 (79 bytes) ; - scala.runtime.java8.JFunction1$mcZI$sp::apply@5 (line 17) ; - scala.collection.IterableOnceOps::exists@32 (line 591) 0x00007fffd0ea738b: nopl 0x0(%rax,%rax,1) ;*goto {reexecute=0 rethrow=0 return_oop=0} ; - scala.collection.IterableOnceOps::count@42 (line 605) ; - scala.collection.IterableOnceOps::count$@2 (line 602) ; - scala.collection.AbstractIterable::count@2 (line 926) ; - cafesat.sat.Solver::$anonfun$initClauses$2@7 (line 124) ; - cafesat.sat.Solver$$Lambda$189/0x0000000080241fc8::apply$mcZI$sp@5 ; - scala.runtime.java8.JFunction1$mcZI$sp::apply@5 (line 17) ; - scala.collection.IterableOnceOps::exists@32 (line 591) 0.03% ↗ 0x00007fffd0ea7390: mov 0x18(%rsp),%rsi 0.07% │ 0x00007fffd0ea7395: movabs $0xffffffffffffffff,%rax 0.10% │ 0x00007fffd0ea739f: callq 0x00007fffd0c61c80 ; ImmutableOopMap {[0]=Oop [8]=Oop [16]=Oop [24]=Oop } │ ;*invokeinterface hasNext {reexecute=0 rethrow=0 return_oop=0} │ ; - scala.collection.IterableOnceOps::count@13 (line 605) │ ; - scala.collection.IterableOnceOps::count$@2 (line 602) │ ; - scala.collection.AbstractIterable::count@2 (line 926) │ ; - cafesat.sat.Solver::$anonfun$initClauses$2@7 (line 124) │ ; - cafesat.sat.Solver$$Lambda$189/0x0000000080241fc8::apply$mcZI$sp@5 │ ; - scala.runtime.java8.JFunction1$mcZI$sp::apply@5 (line 17) │ ; - scala.collection.IterableOnceOps::exists@32 (line 591) │ ; {virtual_call} 0.21% │ 0x00007fffd0ea73a4: test %eax,%eax 0.07% │ 0x00007fffd0ea73a6: je 0x00007fffd0ea7293 ;*aload_1 {reexecute=0 rethrow=0 return_oop=0} │ ; - scala.collection.IterableOnceOps::count@21 (line 605) │ ; - scala.collection.IterableOnceOps::count$@2 (line 602) │ ; - scala.collection.AbstractIterable::count@2 (line 926) │ ; - cafesat.sat.Solver::$anonfun$initClauses$2@7 (line 124) │ ; - cafesat.sat.Solver$$Lambda$189/0x0000000080241fc8::apply$mcZI$sp@5 │ ; - scala.runtime.java8.JFunction1$mcZI$sp::apply@5 (line 17) │ ; - scala.collection.IterableOnceOps::exists@32 (line 591) 0.38% │ 0x00007fffd0ea73ac: mov 0x18(%rsp),%rsi 0.69% │ 0x00007fffd0ea73b1: movabs $0xffffffffffffffff,%rax 0.03% │ 0x00007fffd0ea73bb: callq 0x00007fffd0c61c80 ; ImmutableOopMap {[0]=Oop [8]=Oop [16]=Oop [24]=Oop } │ ;*invokeinterface next {reexecute=0 rethrow=0 return_oop=1} │ ; - scala.collection.IterableOnceOps::count@23 (line 605) │ ; - scala.collection.IterableOnceOps::count$@2 (line 602) │ ; - scala.collection.AbstractIterable::count@2 (line 926) │ ; - cafesat.sat.Solver::$anonfun$initClauses$2@7 (line 124) │ ; - cafesat.sat.Solver$$Lambda$189/0x0000000080241fc8::apply$mcZI$sp@5 │ ; - scala.runtime.java8.JFunction1$mcZI$sp::apply@5 (line 17) │ ; - scala.collection.IterableOnceOps::exists@32 (line 591) │ ; {virtual_call} 0.21% │ 0x00007fffd0ea73c0: mov 0x8(%rax),%r10d ; implicit exception: dispatches to 0x00007fffd0ea7640 5.70% │ 0x00007fffd0ea73c4: cmp $0x80057dc8,%r10d ; {metadata('java/lang/Integer')} 0.07% │ 0x00007fffd0ea73cb: jne 0x00007fffd0ea7614 ;*checkcast {reexecute=0 rethrow=0 return_oop=0} │ ; - scala.runtime.BoxesRunTime::unboxToInt@9 (line 99) │ ; - scala.runtime.java8.JFunction1$mcZI$sp::apply@2 (line 17) │ ; - scala.collection.IterableOnceOps::count@28 (line 605) │ ; - scala.collection.IterableOnceOps::count$@2 (line 602) │ ; - scala.collection.AbstractIterable::count@2 (line 926) │ ; - cafesat.sat.Solver::$anonfun$initClauses$2@7 (line 124) │ ; - cafesat.sat.Solver$$Lambda$189/0x0000000080241fc8::apply$mcZI$sp@5 │ ; - scala.runtime.java8.JFunction1$mcZI$sp::apply@5 (line 17) │ ; - scala.collection.IterableOnceOps::exists@32 (line 591) 1.38% │ 0x00007fffd0ea73d1: mov 0xc(%rax),%r10d 1.48% │ 0x00007fffd0ea73d5: sar %r10d 0.73% │ 0x00007fffd0ea73d8: cmp 0x20(%rsp),%r10d │ 0x00007fffd0ea73dd: je 0x00007fffd0ea7389 ;*ifeq {reexecute=0 rethrow=0 return_oop=0} │ ; - scala.collection.IterableOnceOps::count@36 (line 605) │ ; - scala.collection.IterableOnceOps::count$@2 (line 602) │ ; - scala.collection.AbstractIterable::count@2 (line 926) │ ; - cafesat.sat.Solver::$anonfun$initClauses$2@7 (line 124) │ ; - cafesat.sat.Solver$$Lambda$189/0x0000000080241fc8::apply$mcZI$sp@5 │ ; - scala.runtime.java8.JFunction1$mcZI$sp::apply@5 (line 17) │ ; - scala.collection.IterableOnceOps::exists@32 (line 591) 1.24% ╰ 0x00007fffd0ea73df: jmp 0x00007fffd0ea7390 0x00007fffd0ea73e1: mov %r12,%rbp 0x00007fffd0ea73e4: mov %r9,(%rsp) 0x00007fffd0ea73e8: mov %r10,0x8(%rsp) ;*invokevirtual currentValueLength {reexecute=0 rethrow=0 return_oop=0} .................................................................................................... 12.40% ....[Hottest Regions]............................................................................... 16.23% c2 scala.collection.immutable.SetIterator::next, version 917 (121 bytes) 16.09% c2 scala.collection.immutable.ChampBaseIterator::searchNextValueNode, version 1065 (530 bytes) 12.40% c2 scala.collection.IterableOnceOps::exists, version 1157 (79 bytes) 8.60% c2 scala.collection.immutable.ChampBaseIterator::hasNext, version 867 (74 bytes) 7.84% c2 scala.collection.ArrayOps$::count$extension, version 992 (157 bytes) 4.42% c2 scala.collection.ArrayOps$::count$extension, version 992 (85 bytes) 3.07% libjvm.so G1ParScanThreadState::steal_and_trim_queue (208 bytes) 2.76% c2 scala.collection.immutable.ChampBaseIterator::searchNextValueNode, version 1065 (146 bytes) 1.38% [kernel.kallsyms] [unknown] (6 bytes) 1.31% libjvm.so G1ParScanThreadState::trim_queue_to_threshold (25 bytes) 1.21% c2 scala.collection.immutable.ChampBaseIterator::searchNextValueNode, version 1065 (58 bytes) 0.90% libjvm.so G1ParScanThreadState::trim_queue_to_threshold (86 bytes) 0.83% [kernel.kallsyms] [unknown] (29 bytes) 0.79% libjvm.so G1ParScanThreadState::steal_and_trim_queue (51 bytes) 0.73% [kernel.kallsyms] [unknown] (15 bytes) 0.45% libjvm.so G1ParScanThreadState::trim_queue_to_threshold (0 bytes) 0.38% c2 cafesat.sat.Vector::append, version 1033 (14 bytes) 0.38% libjvm.so G1ParScanThreadState::trim_queue_to_threshold (40 bytes) 0.38% libjvm.so G1ParScanThreadState::steal_and_trim_queue (42 bytes) 0.28% [kernel.kallsyms] [unknown] (22 bytes) 19.58% <...other 371 warm regions...> .................................................................................................... 100.00% ....[Hottest Methods (after inlining)].............................................................. 20.17% c2 scala.collection.immutable.ChampBaseIterator::searchNextValueNode, version 1065 16.23% c2 scala.collection.immutable.SetIterator::next, version 917 12.40% c2 scala.collection.IterableOnceOps::exists, version 1157 12.36% c2 scala.collection.ArrayOps$::count$extension, version 992 8.60% c2 scala.collection.immutable.ChampBaseIterator::hasNext, version 867 8.29% [kernel.kallsyms] [unknown] 5.42% libjvm.so G1ParScanThreadState::steal_and_trim_queue 3.83% libjvm.so G1ParScanThreadState::trim_queue_to_threshold 0.55% c2 cafesat.sat.Solver::$anonfun$initClauses$1, version 1184 0.55% libjvm.so OopOopIterateBackwardsDispatch::Table::oop_oop_iterate_backwards 0.48% c2 cafesat.sat.Vector::append, version 1033 0.45% c2 scala.collection.immutable.Set$::from, version 930 0.41% c2 java.nio.HeapByteBuffer::isReadOnly, version 94 0.28% c2 cafesat.asts.core.Manip$::mapPostorder, version 639 0.24% perf-4671.map [unknown] 0.24% c2 cafesat.sat.Solver::deduce, version 1119 0.21% c2 scala.collection.StrictOptimizedIterableOps::map, version 875 0.21% c2 scala.collection.immutable.HashSetBuilder::insertValue, version 770 0.21% c2 scala.collection.immutable.SetBuilderImpl::addOne, version 706 0.21% libjvm.so fileStream::write 8.67% <...other 165 warm methods...> .................................................................................................... 100.00% ....[Distribution by Source]........................................................................ 76.14% c2 13.85% libjvm.so 8.29% [kernel.kallsyms] 0.97% libc-2.27.so 0.31% interpreter 0.24% perf-4671.map 0.07% hsdis-amd64.so 0.07% [vdso] 0.03% libpthread-2.27.so 0.03% runtime stub .................................................................................................... 100.00% # Run complete. Total time: 00:00:19 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 Mode Cnt Score Error Units JmhScalaDoku.runOperation ss 2496.171 ms/op JmhScalaDoku.runOperation:·asm ss NaN ---