# JMH 1.11.3 (released 40 days ago) # VM version: JDK 9-ea, VM 9-ea+104-2016-02-03-214959.javare.4385.nc # VM invoker: /home/shade/Install/jdk9b104/bin/java # VM options: -Djava.lang.invoke.stringConcat=BC_SB # Warmup: 5 iterations, 1 s each # Measurement: 5 iterations, 1 s each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: org.openjdk.ConcatBench.string_string # Parameters: (size = 1) # Run progress: 0.00% complete, ETA 00:00:10 # 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: 13.069 ns/op # Warmup Iteration 2: 11.826 ns/op # Warmup Iteration 3: 17.926 ns/op # Warmup Iteration 4: 10.779 ns/op # Warmup Iteration 5: 10.724 ns/op Iteration 1: 10.825 ns/op Iteration 2: 11.006 ns/op Iteration 3: 10.792 ns/op Iteration 4: 10.718 ns/op Iteration 5: 10.786 ns/op # Processing profiler results: LinuxPerfAsmProfiler Result "string_string": 10.826 ±(99.9%) 0.416 ns/op [Average] (min, avg, max) = (10.718, 10.826, 11.006), stdev = 0.108 CI (99.9%): [10.409, 11.242] (assumes normal distribution) Secondary result "·asm": PrintAssembly processed: 165269 total address lines. Perf output processed (skipped 5.102 seconds): Column 1: cycles (8049 events) Column 2: instructions (7992 events) Hottest code regions (>10.00% "cycles" events): ....[Hottest Region 1].............................................................................. [0x7f3a3d2131a4:0x7f3a3d213333] in org.openjdk.generated.ConcatBench_string_string_jmhTest::string_string_avgt_jmhStub ; - org.openjdk.ConcatBench::string_string@4 (line 67) ; - org.openjdk.generated.ConcatBench_string_string_jmhTest::string_string_avgt_jmhStub@16 (line 199) ; {runtime_call _new_array_Java} 0x00007f3a3d2131a4: mov 0x34(%rsp),%ebx 0x00007f3a3d2131a8: mov 0x40(%rsp),%r9d ╭ 0x00007f3a3d2131ad: jmpq 0x00007f3a3d2132f8 │ 0x00007f3a3d2131b2: sar %r9d │ 0x00007f3a3d2131b5: movslq %r9d,%rdx │ 0x00007f3a3d2131b8: movabs $0x7f3a3576ec80,%r10 │ 0x00007f3a3d2131c2: callq *%r10 2.09% 0.29% │ 0x00007f3a3d2131c5: mov 0x60(%r15),%rax 0.04% 0.01% │ 0x00007f3a3d2131c9: mov %rax,%r10 │ 0x00007f3a3d2131cc: add $0x18,%r10 │ 0x00007f3a3d2131d0: cmp 0x70(%r15),%r10 0.01% │ 0x00007f3a3d2131d4: jae 0x00007f3a3d21338f 2.48% 0.23% │ 0x00007f3a3d2131da: mov %r10,0x60(%r15) │ 0x00007f3a3d2131de: prefetchnta 0xc0(%r10) 0.07% 0.01% │ 0x00007f3a3d2131e6: mov 0x20(%rsp),%r11 1.86% 1.40% │ 0x00007f3a3d2131eb: mov 0xa8(%r11),%r10 0.05% 0.21% │ 0x00007f3a3d2131f2: mov %r10,(%rax) 0.07% 0.11% │ 0x00007f3a3d2131f5: movl $0xf80002da,0x8(%rax) ; {metadata('java/lang/String')} 0.02% 0.03% │ 0x00007f3a3d2131fc: mov %r12d,0xc(%rax) 2.12% 3.15% │ 0x00007f3a3d213200: mov %r12,0x10(%rax) │ 0x00007f3a3d213204: mov %rax,%rdx ;*synchronization entry │ ; - java.lang.invoke.LambdaForm$DMH/1844169442::invokeStatic_L_L@-1 │ ; - java.lang.invoke.LambdaForm$MH/157627094::linkToTargetMethod@5 │ ; - org.openjdk.ConcatBench::string_string@4 (line 67) │ ; - org.openjdk.generated.ConcatBench_string_string_jmhTest::string_string_avgt_jmhStub@16 (line 199) 0.01% 0.06% │ 0x00007f3a3d213207: mov 0x30(%rsp),%ebp 0.04% 0.04% │ 0x00007f3a3d21320b: mov %bpl,0x14(%rdx) 1.95% 3.50% │ 0x00007f3a3d21320f: mov 0x38(%rsp),%r10 0.07% │ 0x00007f3a3d213214: shr $0x3,%r10 0.06% │ 0x00007f3a3d213218: mov %r10d,0xc(%rdx) 0.05% 0.01% │ 0x00007f3a3d21321c: mov 0x10(%rsp),%rsi 2.14% 2.63% │ 0x00007f3a3d213221: xchg %ax,%ax │ 0x00007f3a3d213223: callq 0x00007f3a35761660 ; ImmutableOopMap{[0]=Oop [8]=Oop [16]=Oop [24]=Oop } │ ;*invokevirtual consume {reexecute=0 rethrow=0 return_oop=0} │ ; - org.openjdk.generated.ConcatBench_string_string_jmhTest::string_string_avgt_jmhStub@19 (line 199) │ ; {optimized virtual_call} 0.06% 0.08% │ 0x00007f3a3d213228: mov (%rsp),%r8 2.32% 2.68% │ 0x00007f3a3d21322c: movzbl 0x94(%r8),%r11d ;*getfield isDone {reexecute=0 rethrow=0 return_oop=0} │ ; - org.openjdk.generated.ConcatBench_string_string_jmhTest::string_string_avgt_jmhStub@29 (line 201) 0.27% 0.43% │ 0x00007f3a3d213234: mov 0x28(%rsp),%rbp 0.04% 0.01% │ 0x00007f3a3d213239: add $0x1,%rbp ; ImmutableOopMap{r8=Oop [8]=Oop [16]=Oop [24]=Oop } │ ;*ifeq {reexecute=1 rethrow=0 return_oop=0} │ ; - org.openjdk.generated.ConcatBench_string_string_jmhTest::string_string_avgt_jmhStub@32 (line 201) 0.05% 0.01% │ 0x00007f3a3d21323d: test %eax,0x14a6ddbd(%rip) # 0x00007f3a51c81000 │ ; {poll} 2.09% 1.89% │ 0x00007f3a3d213243: test %r11d,%r11d │ 0x00007f3a3d213246: jne 0x00007f3a3d2133aa ;*aload {reexecute=0 rethrow=0 return_oop=0} │ ; - org.openjdk.generated.ConcatBench_string_string_jmhTest::string_string_avgt_jmhStub@13 (line 199) 0.19% 0.19% │ 0x00007f3a3d21324c: mov 0x18(%rsp),%r11 0.07% 0.04% │ 0x00007f3a3d213251: mov 0x1c(%r11),%ebx ;*getfield b {reexecute=0 rethrow=0 return_oop=0} │ ; - org.openjdk.ConcatBench::string_string@1 (line 67) │ ; - org.openjdk.generated.ConcatBench_string_string_jmhTest::string_string_avgt_jmhStub@16 (line 199) 0.07% 0.09% │ 0x00007f3a3d213255: test %ebx,%ebx │ 0x00007f3a3d213257: jne 0x00007f3a3d213405 │ 0x00007f3a3d21325d: movabs $0x5d6e40838,%r10 ; {oop("null")} 2.19% 0.73% │ 0x00007f3a3d213267: mov %rbp,0x28(%rsp) 0.03% │ 0x00007f3a3d21326c: mov %r8,(%rsp) │ 0x00007f3a3d213270: mov 0xc(%r10),%ebp 0.47% 0.29% │ 0x00007f3a3d213274: movsbl 0x14(%r10),%r10d 1.98% 1.28% │ 0x00007f3a3d213279: mov %r10d,0x30(%rsp) 0.11% 0.04% │ 0x00007f3a3d21327e: mov 0xc(%r12,%rbp,8),%r9d 0.43% 0.33% │ 0x00007f3a3d213283: mov %r9d,%edx 0.17% 0.24% │ 0x00007f3a3d213286: mov %r10d,%ecx 1.88% 2.72% │ 0x00007f3a3d213289: sar %cl,%edx 0.70% 0.58% │ 0x00007f3a3d21328b: add $0x5,%edx 1.40% 1.14% │ 0x00007f3a3d21328e: test %edx,%edx │ 0x00007f3a3d213290: jl 0x00007f3a3d2133d4 0.35% 0.21% │ 0x00007f3a3d213296: shl %cl,%edx 2.81% 2.36% │ 0x00007f3a3d213298: cmp $0x100000,%edx │ 0x00007f3a3d21329e: ja 0x00007f3a3d21318b 0.04% │ 0x00007f3a3d2132a4: mov 0x60(%r15),%rax 0.01% 0.06% │ 0x00007f3a3d2132a8: movslq %edx,%r10 0.39% 0.35% │ 0x00007f3a3d2132ab: add $0x17,%r10 2.07% 2.62% │ 0x00007f3a3d2132af: and $0xfffffffffffffff8,%r10 0.73% 0.89% │ 0x00007f3a3d2132b3: mov %rax,%r11 0.01% │ 0x00007f3a3d2132b6: add %r10,%r11 1.39% 1.68% │ 0x00007f3a3d2132b9: cmp 0x70(%r15),%r11 │ 0x00007f3a3d2132bd: jae 0x00007f3a3d21318b 2.14% 2.30% │ 0x00007f3a3d2132c3: mov %r11,0x60(%r15) │ 0x00007f3a3d2132c7: prefetchnta 0xc0(%r11) 7.57% 8.87% │ 0x00007f3a3d2132cf: movq $0x1,(%rax) 0.05% 0.03% │ 0x00007f3a3d2132d6: prefetchnta 0x100(%r11) 1.93% 2.48% │ 0x00007f3a3d2132de: movl $0xf80000f5,0x8(%rax) ; {metadata({type array byte})} 0.01% │ 0x00007f3a3d2132e5: mov %edx,0xc(%rax) 0.22% 0.26% │ 0x00007f3a3d2132e8: prefetchnta 0x140(%r11) 0.09% 0.16% │ 0x00007f3a3d2132f0: prefetchnta 0x180(%r11) 2.10% 2.14% ↘ 0x00007f3a3d2132f8: mov %rax,0x38(%rsp) 0.06% 0x00007f3a3d2132fd: mov 0x30(%rsp),%r11d 0.16% 0.20% 0x00007f3a3d213302: test %r11d,%r11d 0x00007f3a3d213305: je 0x00007f3a3d213373 0x00007f3a3d213307: mov $0x43,%r11d 0x00007f3a3d21330d: mov %r11w,0x10(%rax) 0x00007f3a3d213312: mov $0x4f,%r10d 0x00007f3a3d213318: mov %r10w,0x12(%rax) 0x00007f3a3d21331d: mov $0x4e,%r11d 0x00007f3a3d213323: mov %r11w,0x14(%rax) 0x00007f3a3d213328: mov $0x53,%r10d 0x00007f3a3d21332e: mov %r10w,0x16(%rax) 0x00007f3a3d213333: mov $0x54,%r10d .................................................................................................... 49.73% 49.10% ....[Hottest Region 2].............................................................................. [0x7f3a3576eaa3:0x7f3a3576ebbd] in StubRoutines::jbyte_disjoint_arraycopy 0x00007f3a3576eaa3: mov 0x40(%rsp),%rdi 0x00007f3a3576eaa8: mov 0x48(%rsp),%rsi 0x00007f3a3576eaad: mov 0x50(%rsp),%rbp 0x00007f3a3576eab2: mov 0x60(%rsp),%rbx 0x00007f3a3576eab7: mov 0x68(%rsp),%rdx 0x00007f3a3576eabc: mov 0x70(%rsp),%rcx 0x00007f3a3576eac1: mov 0x78(%rsp),%rax 0x00007f3a3576eac6: add $0x80,%rsp 0x00007f3a3576eacd: retq $0x20 StubRoutines::jbyte_disjoint_arraycopy [0x00007f3a3576eae0, 0x00007f3a3576eb9b[ (187 bytes) 0.15% 0.23% 0x00007f3a3576eae0: push %rbp 1.86% 1.91% 0x00007f3a3576eae1: mov %rsp,%rbp 0.19% 0.15% ↗↗ 0x00007f3a3576eae4: mov %rdx,%rcx 0.06% 0.03% ││ 0x00007f3a3576eae7: shr $0x3,%rdx 1.84% 1.59% ││ 0x00007f3a3576eaeb: lea -0x8(%rdi,%rdx,8),%rdi 0.01% ││ 0x00007f3a3576eaf0: lea -0x8(%rsi,%rdx,8),%rsi 0.14% 0.14% ││ 0x00007f3a3576eaf5: neg %rdx 0.02% 0.03% ╭ ││ 0x00007f3a3576eaf8: jmpq Stub::jbyte_disjoint_arraycopy+136 0x00007f3a3576eb68 │↗ ↗ ││ 0x00007f3a3576eafd: mov 0x8(%rdi,%rdx,8),%rax ││ │ ││ 0x00007f3a3576eb02: mov %rax,0x8(%rsi,%rdx,8) ││ │ ││ 0x00007f3a3576eb07: inc %rdx │╰ │ ││ 0x00007f3a3576eb0a: jne Stub::jbyte_disjoint_arraycopy+29 0x00007f3a3576eafd 2.00% 2.05% │ │↗││ 0x00007f3a3576eb0c: test $0x4,%ecx 0.01% │ ╭ ││││ 0x00007f3a3576eb12: je Stub::jbyte_disjoint_arraycopy+66 0x00007f3a3576eb22 │ │ ││││ 0x00007f3a3576eb14: mov 0x8(%rdi),%eax │ │ ││││ 0x00007f3a3576eb17: mov %eax,0x8(%rsi) │ │ ││││ 0x00007f3a3576eb1a: add $0x4,%rdi │ │ ││││ 0x00007f3a3576eb1e: add $0x4,%rsi 2.01% 1.70% │ ↘ ││││ 0x00007f3a3576eb22: test $0x2,%ecx │ ╭ ││││ 0x00007f3a3576eb28: je Stub::jbyte_disjoint_arraycopy+90 0x00007f3a3576eb3a │ │ ││││ 0x00007f3a3576eb2a: mov 0x8(%rdi),%ax │ │ ││││ 0x00007f3a3576eb2e: mov %ax,0x8(%rsi) │ │ ││││ 0x00007f3a3576eb32: add $0x2,%rdi │ │ ││││ 0x00007f3a3576eb36: add $0x2,%rsi 1.84% 1.43% │ ↘ ││││ 0x00007f3a3576eb3a: test $0x1,%ecx │ ╭ ││││ 0x00007f3a3576eb40: je Stub::jbyte_disjoint_arraycopy+104 0x00007f3a3576eb48 │ │ ││││ 0x00007f3a3576eb42: mov 0x8(%rdi),%al 0.04% 0.01% │ │ ││││ 0x00007f3a3576eb45: mov %al,0x8(%rsi) 1.90% 2.10% │ ↘ ││││ 0x00007f3a3576eb48: xor %rax,%rax │ ││││ 0x00007f3a3576eb4b: leaveq 1.64% 0.40% │ ││││ 0x00007f3a3576eb4c: retq │ ││││ 0x00007f3a3576eb4d: data16 xchg %ax,%ax │ ↗ ││││ 0x00007f3a3576eb50: vmovdqu -0x38(%rdi,%rdx,8),%ymm0 │ │ ││││ 0x00007f3a3576eb56: vmovdqu %ymm0,-0x38(%rsi,%rdx,8) │ │ ││││ 0x00007f3a3576eb5c: vmovdqu -0x18(%rdi,%rdx,8),%ymm1 │ │ ││││ 0x00007f3a3576eb62: vmovdqu %ymm1,-0x18(%rsi,%rdx,8) 1.99% 1.89% ↘ │ ││││ 0x00007f3a3576eb68: add $0x8,%rdx ╰ ││││ 0x00007f3a3576eb6c: jle Stub::jbyte_disjoint_arraycopy+112 0x00007f3a3576eb50 0.01% ││││ 0x00007f3a3576eb6e: sub $0x4,%rdx ╭││││ 0x00007f3a3576eb72: jg Stub::jbyte_disjoint_arraycopy+164 0x00007f3a3576eb84 │││││ 0x00007f3a3576eb74: vmovdqu -0x18(%rdi,%rdx,8),%ymm0 │││││ 0x00007f3a3576eb7a: vmovdqu %ymm0,-0x18(%rsi,%rdx,8) │││││ 0x00007f3a3576eb80: add $0x4,%rdx 1.94% 1.91% ↘││││ 0x00007f3a3576eb84: vpxor %ymm0,%ymm0,%ymm0 0.02% 0.01% ││││ 0x00007f3a3576eb88: vpxor %ymm1,%ymm1,%ymm1 ││││ 0x00007f3a3576eb8c: sub $0x4,%rdx ╰│││ 0x00007f3a3576eb90: jl Stub::jbyte_disjoint_arraycopy+29 0x00007f3a3576eafd 0.01% ╰││ 0x00007f3a3576eb96: jmpq Stub::jbyte_disjoint_arraycopy+44 0x00007f3a3576eb0c ││StubRoutines::jbyte_arraycopy [0x00007f3a3576eba0, 0x00007f3a3576ec63[ (195 bytes) ││ 0x00007f3a3576eba0: push %rbp ││ 0x00007f3a3576eba1: mov %rsp,%rbp ││ 0x00007f3a3576eba4: cmp %rdi,%rsi ││ 0x00007f3a3576eba7: lea (%rdi,%rdx,1),%rax ╰│ 0x00007f3a3576ebab: jbe Stub::jbyte_disjoint_arraycopy+4 0x00007f3a3576eae4 │ 0x00007f3a3576ebb1: cmp %rax,%rsi ╰ 0x00007f3a3576ebb4: jae Stub::jbyte_disjoint_arraycopy+4 0x00007f3a3576eae4 0x00007f3a3576ebba: mov %rdx,%rcx 0x00007f3a3576ebbd: shr $0x3,%rdx .................................................................................................... 17.68% 15.59% ....[Hottest Regions]............................................................................... 49.73% 49.10% [0x7f3a3d2131a4:0x7f3a3d213333] in org.openjdk.generated.ConcatBench_string_string_jmhTest::string_string_avgt_jmhStub 17.68% 15.59% [0x7f3a3576eaa3:0x7f3a3576ebbd] in StubRoutines::jbyte_disjoint_arraycopy 9.18% 10.86% [0x7f3a3d2110e0:0x7f3a3d21116a] in org.openjdk.jmh.infra.Blackhole::consume 8.27% 9.58% [0x7f3a3d21330d:0x7f3a3d21339b] in org.openjdk.generated.ConcatBench_string_string_jmhTest::string_string_avgt_jmhStub 4.24% 4.24% [0xffffffff8105b83a:0xffffffff8105b83a] in [unknown] ([unknown]) 3.39% 1.79% [0x7f3a357796d3:0x7f3a510157c7] in sun.reflect.ClassFileAssembler::cpi 1.96% 3.48% [0x7f3a3d2133f8:0x7f3a3d213423] in org.openjdk.generated.ConcatBench_string_string_jmhTest::string_string_avgt_jmhStub 1.48% 2.28% [0x7f3a357796d3:0x7f3a510157c7] in sun.reflect.ClassFileAssembler::cpi 0.24% 0.10% [0x7f3a510f0660:0x7f3a510f067b] in memset (libc-2.19.so) 0.22% 0.14% [0x7f3a357796d3:0x7f3a510157c7] in sun.reflect.ClassFileAssembler::cpi 0.10% [0x7f3a357796d3:0x7f3a510157c7] in sun.reflect.ClassFileAssembler::cpi 0.09% 0.08% [0xffffffff817b5a12:0xffffffff817b5a13] in [unknown] ([unknown]) 0.09% 0.10% [0x7f3a357796d3:0x7f3a510157c7] in sun.reflect.ClassFileAssembler::cpi 0.07% 0.08% [0xffffffff8102cdb8:0xffffffff8102cdbd] in [unknown] ([unknown]) 0.07% 0.08% [0xffffffff81165482:0xffffffff8116549d] in [unknown] ([unknown]) 0.06% 0.01% [0xffffffff810d303a:0xffffffff810d3068] in [unknown] ([unknown]) 0.06% [0xffffffff8117cc7d:0xffffffff8117cc7d] in [unknown] ([unknown]) 0.06% [0xffffffff817b3c20:0xffffffff817b3c20] in [unknown] ([unknown]) 0.06% 0.01% [0x7f3a357796d3:0x7f3a510157c7] in sun.reflect.ClassFileAssembler::cpi 0.06% 0.01% [0x7f3a51a75340:0x7f3a51a75366] in __tls_get_addr (ld-2.19.so) 2.85% 2.46% <...other 285 warm regions...> .................................................................................................... 99.98% 99.99% ....[Hottest Methods (after inlining)].............................................................. 59.97% 62.16% org.openjdk.generated.ConcatBench_string_string_jmhTest::string_string_avgt_jmhStub 17.68% 15.59% StubRoutines::jbyte_disjoint_arraycopy 9.18% 10.86% org.openjdk.jmh.infra.Blackhole::consume 6.41% 5.24% sun.reflect.ClassFileAssembler::cpi 6.08% 5.63% [unknown] ([unknown]) 0.27% 0.13% memset (libc-2.19.so) 0.06% 0.01% __tls_get_addr (ld-2.19.so) 0.04% 0.03% vfprintf (libc-2.19.so) 0.04% __pthread_disable_asynccancel (libpthread-2.19.so) 0.04% ::isLatin1 0.02% 0.03% [unknown] (libpthread-2.19.so) 0.02% 0.03% _IO_fwrite (libc-2.19.so) 0.02% 0.04% _IO_default_xsputn (libc-2.19.so) 0.02% 0.01% [unknown] (perf-26204.map) 0.01% 0.01% _IO_setb (libc-2.19.so) 0.01% __strncat_sse2_unaligned (libc-2.19.so) 0.01% malloc (libc-2.19.so) 0.01% 0.05% __pthread_enable_asynccancel (libpthread-2.19.so) 0.01% _dl_find_dso_for_object (ld-2.19.so) 0.04% <...other 3 warm methods...> .................................................................................................... 99.98% 99.80% ....[Distribution by Area].......................................................................... 93.30% 93.89% 6.08% 5.63% 0.43% 0.36% 0.07% 0.01% 0.07% 0.09% 0.01% .................................................................................................... 99.98% 99.99% # Run complete. Total time: 00:00:13 Benchmark (size) Mode Cnt Score Error Units ConcatBench.string_string 1 avgt 5 10.826 ± 0.416 ns/op ConcatBench.string_string:·asm 1 avgt NaN ---