|
.NET Core 2.2.0 (CoreCLR 4.6.27110.04, CoreFX 4.6.27110.04), 64bit RyuJIT |
|
BranchmarkString.Benchmark.V6() |
|
return string.Create(13, _id, (buffer, id) => |
|
^^^ |
|
{ |
|
^^^ |
|
var encode32CharsArray = _encode32CharsArray; |
|
^^^ |
|
buffer[12] = encode32CharsArray[id & 31]; |
|
^^^ |
|
buffer[11] = encode32CharsArray[(id >> 5) & 31]; |
|
^^^ |
|
buffer[10] = encode32CharsArray[(id >> 10) & 31]; |
|
^^^ |
|
buffer[9] = encode32CharsArray[(id >> 15) & 31]; |
|
^^^ |
|
buffer[8] = encode32CharsArray[(id >> 20) & 31]; |
|
^^^ |
|
buffer[7] = encode32CharsArray[(id >> 25) & 31]; |
|
^^^ |
|
buffer[6] = encode32CharsArray[(id >> 30) & 31]; |
|
^^^ |
|
buffer[5] = encode32CharsArray[(id >> 35) & 31]; |
|
^^^ |
|
buffer[4] = encode32CharsArray[(id >> 40) & 31]; |
|
^^^ |
|
buffer[3] = encode32CharsArray[(id >> 45) & 31]; |
|
^^^ |
|
buffer[2] = encode32CharsArray[(id >> 50) & 31]; |
|
^^^ |
|
buffer[1] = encode32CharsArray[(id >> 55) & 31]; |
|
^^^ |
|
buffer[0] = encode32CharsArray[(id >> 60) & 31]; |
|
^^^ |
|
}); |
|
^^^ |
|
mov rsi,qword ptr [rcx+8] |
|
mov rcx,7FFAA4804680h |
|
mov edx,3 |
|
call coreclr!GC_Initialize+0x42b20 |
|
mov rcx,1C44DCC7268h |
|
mov r8,qword ptr [rcx] |
|
test r8,r8 |
|
jne M00_L00 |
|
mov rcx,7FFAA471C920h |
|
call coreclr!GC_Initialize+0x42720 |
|
mov rdi,rax |
|
mov rdx,1C44DCC7260h |
|
mov rdx,qword ptr [rdx] |
|
test rdx,rdx |
|
je 00007ffa`a474312b |
|
lea rcx,[rdi+8] |
|
call coreclr!GC_Initialize+0x41280 |
|
mov rdx,7FFAA47422B8h |
|
mov qword ptr [rdi+18h],rdx |
|
mov rcx,1C44DCC7268h |
|
mov rdx,rdi |
|
call coreclr!GC_Initialize+0x41250 |
|
mov r8,rdi |
|
M00_L00 |
|
|
|
mov ecx,0Dh |
|
mov rdx,rsi |
|
mov rax,7FFAA4723BD8h |
|
|
|
BranchmarkString.Benchmark+<>c.b__3_0(System.Span`1, Int64) |
|
var encode32CharsArray = _encode32CharsArray; |
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
mov rcx,7FFAA4804680h |
|
mov edx,1 |
|
call coreclr!GC_Initialize+0x42b20 |
|
mov rax,1C44DCC7258h |
|
mov rax,qword ptr [rax] |
|
buffer[12] = encode32CharsArray[id & 31]; |
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
cmp ebx,0Ch |
|
jbe 00007ffa`a4743488 |
|
mov rdx,rsi |
|
and rdx,1Fh |
|
mov ecx,dword ptr [rax+8] |
|
movsxd rcx,ecx |
|
cmp rdx,rcx |
|
jae 00007ffa`a4743488 |
|
movzx edx,word ptr [rax+rdx*2+10h] |
|
mov word ptr [rdi+18h],dx |
|
buffer[11] = encode32CharsArray[(id >> 5) & 31]; |
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
mov rdx,rsi |
|
sar rdx,5 |
|
and rdx,1Fh |
|
cmp rdx,rcx |
|
jae 00007ffa`a4743488 |
|
movzx edx,word ptr [rax+rdx*2+10h] |
|
mov word ptr [rdi+16h],dx |
|
buffer[10] = encode32CharsArray[(id >> 10) & 31]; |
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
mov rdx,rsi |
|
sar rdx,0Ah |
|
and rdx,1Fh |
|
cmp rdx,rcx |
|
jae 00007ffa`a4743488 |
|
movzx edx,word ptr [rax+rdx*2+10h] |
|
mov word ptr [rdi+14h],dx |
|
buffer[9] = encode32CharsArray[(id >> 15) & 31]; |
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
mov rdx,rsi |
|
sar rdx,0Fh |
|
and rdx,1Fh |
|
cmp rdx,rcx |
|
jae 00007ffa`a4743488 |
|
movzx edx,word ptr [rax+rdx*2+10h] |
|
mov word ptr [rdi+12h],dx |
|
buffer[8] = encode32CharsArray[(id >> 20) & 31]; |
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
mov rdx,rsi |
|
sar rdx,14h |
|
and rdx,1Fh |
|
cmp rdx,rcx |
|
jae 00007ffa`a4743488 |
|
movzx edx,word ptr [rax+rdx*2+10h] |
|
mov word ptr [rdi+10h],dx |
|
buffer[7] = encode32CharsArray[(id >> 25) & 31]; |
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
mov rdx,rsi |
|
sar rdx,19h |
|
and rdx,1Fh |
|
cmp rdx,rcx |
|
jae 00007ffa`a4743488 |
|
movzx edx,word ptr [rax+rdx*2+10h] |
|
mov word ptr [rdi+0Eh],dx |
|
buffer[6] = encode32CharsArray[(id >> 30) & 31]; |
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
mov rdx,rsi |
|
sar rdx,1Eh |
|
and rdx,1Fh |
|
cmp rdx,rcx |
|
jae 00007ffa`a4743488 |
|
movzx edx,word ptr [rax+rdx*2+10h] |
|
mov word ptr [rdi+0Ch],dx |
|
buffer[5] = encode32CharsArray[(id >> 35) & 31]; |
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
mov rdx,rsi |
|
sar rdx,23h |
|
and rdx,1Fh |
|
cmp rdx,rcx |
|
jae 00007ffa`a4743488 |
|
movzx edx,word ptr [rax+rdx*2+10h] |
|
mov word ptr [rdi+0Ah],dx |
|
buffer[4] = encode32CharsArray[(id >> 40) & 31]; |
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
mov rdx,rsi |
|
sar rdx,28h |
|
and rdx,1Fh |
|
cmp rdx,rcx |
|
jae 00007ffa`a4743488 |
|
movzx edx,word ptr [rax+rdx*2+10h] |
|
mov word ptr [rdi+8],dx |
|
buffer[3] = encode32CharsArray[(id >> 45) & 31]; |
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
mov rdx,rsi |
|
sar rdx,2Dh |
|
and rdx,1Fh |
|
cmp rdx,rcx |
|
jae 00007ffa`a4743488 |
|
movzx edx,word ptr [rax+rdx*2+10h] |
|
mov word ptr [rdi+6],dx |
|
buffer[2] = encode32CharsArray[(id >> 50) & 31]; |
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
mov rdx,rsi |
|
sar rdx,32h |
|
and rdx,1Fh |
|
cmp rdx,rcx |
|
jae 00007ffa`a4743488 |
|
movzx edx,word ptr [rax+rdx*2+10h] |
|
mov word ptr [rdi+4],dx |
|
buffer[1] = encode32CharsArray[(id >> 55) & 31]; |
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
mov rdx,rsi |
|
sar rdx,37h |
|
and rdx,1Fh |
|
cmp rdx,rcx |
|
jae 00007ffa`a4743488 |
|
movzx edx,word ptr [rax+rdx*2+10h] |
|
mov word ptr [rdi+2],dx |
|
buffer[0] = encode32CharsArray[(id >> 60) & 31]; |
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
sar rsi,3Ch |
|
mov rdx,rsi |
|
and rdx,1Fh |
|
cmp rdx,rcx |
|
jae 00007ffa`a4743488 |
|
movzx eax,word ptr [rax+rdx*2+10h] |
|
mov word ptr [rdi],ax |
|
}); |
|
^ |
|
add rsp,20h |
|
|
|
.NET Core 2.2.0 (CoreCLR 4.6.27110.04, CoreFX 4.6.27110.04), 64bit RyuJIT |
|
BranchmarkString.Benchmark.V7() |
|
return string.Create(13, _id, (buffer, id) => |
|
^^^ |
|
{ |
|
^^^ |
|
var encode32CharsArray = _encode32CharsArray; |
|
^^^ |
|
buffer[0] = encode32CharsArray[(id >> 60) & 31]; |
|
^^^ |
|
buffer[1] = encode32CharsArray[(id >> 55) & 31]; |
|
^^^ |
|
buffer[2] = encode32CharsArray[(id >> 50) & 31]; |
|
^^^ |
|
buffer[3] = encode32CharsArray[(id >> 45) & 31]; |
|
^^^ |
|
buffer[4] = encode32CharsArray[(id >> 40) & 31]; |
|
^^^ |
|
buffer[5] = encode32CharsArray[(id >> 35) & 31]; |
|
^^^ |
|
buffer[6] = encode32CharsArray[(id >> 30) & 31]; |
|
^^^ |
|
buffer[7] = encode32CharsArray[(id >> 25) & 31]; |
|
^^^ |
|
buffer[8] = encode32CharsArray[(id >> 20) & 31]; |
|
^^^ |
|
buffer[9] = encode32CharsArray[(id >> 15) & 31]; |
|
^^^ |
|
buffer[10] = encode32CharsArray[(id >> 10) & 31]; |
|
^^^ |
|
buffer[11] = encode32CharsArray[(id >> 5) & 31]; |
|
^^^ |
|
buffer[12] = encode32CharsArray[id & 31]; |
|
^^^ |
|
}); |
|
^^^ |
|
mov rsi,qword ptr [rcx+8] |
|
mov rcx,7FFAA47E4680h |
|
mov edx,3 |
|
call coreclr!GC_Initialize+0x42b20 |
|
mov rcx,27E90007270h |
|
mov r8,qword ptr [rcx] |
|
test r8,r8 |
|
jne M00_L00 |
|
mov rcx,7FFAA46FC920h |
|
call coreclr!GC_Initialize+0x42720 |
|
mov rdi,rax |
|
mov rdx,27E90007260h |
|
mov rdx,qword ptr [rdx] |
|
test rdx,rdx |
|
je 00007ffa`a472312b |
|
lea rcx,[rdi+8] |
|
call coreclr!GC_Initialize+0x41280 |
|
mov rdx,7FFAA47222C0h |
|
mov qword ptr [rdi+18h],rdx |
|
mov rcx,27E90007270h |
|
mov rdx,rdi |
|
call coreclr!GC_Initialize+0x41250 |
|
mov r8,rdi |
|
M00_L00 |
|
|
|
mov ecx,0Dh |
|
mov rdx,rsi |
|
mov rax,7FFAA4703BD8h |
|
|
|
BranchmarkString.Benchmark+<>c.b__4_0(System.Span`1, Int64) |
|
var encode32CharsArray = _encode32CharsArray; |
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
mov rcx,7FFAA47E4680h |
|
mov edx,1 |
|
call coreclr!GC_Initialize+0x42b20 |
|
mov rax,27E90007258h |
|
mov rax,qword ptr [rax] |
|
buffer[0] = encode32CharsArray[(id >> 60) & 31]; |
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
cmp ebx,0 |
|
jbe 00007ffa`a47234e8 |
|
mov rdx,rsi |
|
sar rdx,3Ch |
|
and rdx,1Fh |
|
mov ecx,dword ptr [rax+8] |
|
movsxd rcx,ecx |
|
cmp rdx,rcx |
|
jae 00007ffa`a47234e8 |
|
movzx edx,word ptr [rax+rdx*2+10h] |
|
mov word ptr [rdi],dx |
|
buffer[1] = encode32CharsArray[(id >> 55) & 31]; |
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
cmp ebx,1 |
|
jbe 00007ffa`a47234e8 |
|
mov rdx,rsi |
|
sar rdx,37h |
|
and rdx,1Fh |
|
cmp rdx,rcx |
|
jae 00007ffa`a47234e8 |
|
movzx edx,word ptr [rax+rdx*2+10h] |
|
mov word ptr [rdi+2],dx |
|
buffer[2] = encode32CharsArray[(id >> 50) & 31]; |
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
cmp ebx,2 |
|
jbe 00007ffa`a47234e8 |
|
mov rdx,rsi |
|
sar rdx,32h |
|
and rdx,1Fh |
|
cmp rdx,rcx |
|
jae 00007ffa`a47234e8 |
|
movzx edx,word ptr [rax+rdx*2+10h] |
|
mov word ptr [rdi+4],dx |
|
buffer[3] = encode32CharsArray[(id >> 45) & 31]; |
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
cmp ebx,3 |
|
jbe 00007ffa`a47234e8 |
|
mov rdx,rsi |
|
sar rdx,2Dh |
|
and rdx,1Fh |
|
cmp rdx,rcx |
|
jae 00007ffa`a47234e8 |
|
movzx edx,word ptr [rax+rdx*2+10h] |
|
mov word ptr [rdi+6],dx |
|
buffer[4] = encode32CharsArray[(id >> 40) & 31]; |
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
cmp ebx,4 |
|
jbe 00007ffa`a47234e8 |
|
mov rdx,rsi |
|
sar rdx,28h |
|
and rdx,1Fh |
|
cmp rdx,rcx |
|
jae 00007ffa`a47234e8 |
|
movzx edx,word ptr [rax+rdx*2+10h] |
|
mov word ptr [rdi+8],dx |
|
buffer[5] = encode32CharsArray[(id >> 35) & 31]; |
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
cmp ebx,5 |
|
jbe 00007ffa`a47234e8 |
|
mov rdx,rsi |
|
sar rdx,23h |
|
and rdx,1Fh |
|
cmp rdx,rcx |
|
jae 00007ffa`a47234e8 |
|
movzx edx,word ptr [rax+rdx*2+10h] |
|
mov word ptr [rdi+0Ah],dx |
|
buffer[6] = encode32CharsArray[(id >> 30) & 31]; |
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
cmp ebx,6 |
|
jbe 00007ffa`a47234e8 |
|
mov rdx,rsi |
|
sar rdx,1Eh |
|
and rdx,1Fh |
|
cmp rdx,rcx |
|
jae 00007ffa`a47234e8 |
|
movzx edx,word ptr [rax+rdx*2+10h] |
|
mov word ptr [rdi+0Ch],dx |
|
buffer[7] = encode32CharsArray[(id >> 25) & 31]; |
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
cmp ebx,7 |
|
jbe 00007ffa`a47234e8 |
|
mov rdx,rsi |
|
sar rdx,19h |
|
and rdx,1Fh |
|
cmp rdx,rcx |
|
jae 00007ffa`a47234e8 |
|
movzx edx,word ptr [rax+rdx*2+10h] |
|
mov word ptr [rdi+0Eh],dx |
|
buffer[8] = encode32CharsArray[(id >> 20) & 31]; |
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
cmp ebx,8 |
|
jbe 00007ffa`a47234e8 |
|
mov rdx,rsi |
|
sar rdx,14h |
|
and rdx,1Fh |
|
cmp rdx,rcx |
|
jae 00007ffa`a47234e8 |
|
movzx edx,word ptr [rax+rdx*2+10h] |
|
mov word ptr [rdi+10h],dx |
|
buffer[9] = encode32CharsArray[(id >> 15) & 31]; |
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
cmp ebx,9 |
|
jbe 00007ffa`a47234e8 |
|
mov rdx,rsi |
|
sar rdx,0Fh |
|
and rdx,1Fh |
|
cmp rdx,rcx |
|
jae 00007ffa`a47234e8 |
|
movzx edx,word ptr [rax+rdx*2+10h] |
|
mov word ptr [rdi+12h],dx |
|
buffer[10] = encode32CharsArray[(id >> 10) & 31]; |
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
cmp ebx,0Ah |
|
jbe 00007ffa`a47234e8 |
|
mov rdx,rsi |
|
sar rdx,0Ah |
|
and rdx,1Fh |
|
cmp rdx,rcx |
|
jae 00007ffa`a47234e8 |
|
movzx edx,word ptr [rax+rdx*2+10h] |
|
mov word ptr [rdi+14h],dx |
|
buffer[11] = encode32CharsArray[(id >> 5) & 31]; |
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
cmp ebx,0Bh |
|
jbe 00007ffa`a47234e8 |
|
mov rdx,rsi |
|
sar rdx,5 |
|
and rdx,1Fh |
|
cmp rdx,rcx |
|
jae 00007ffa`a47234e8 |
|
movzx edx,word ptr [rax+rdx*2+10h] |
|
mov word ptr [rdi+16h],dx |
|
buffer[12] = encode32CharsArray[id & 31]; |
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
cmp ebx,0Ch |
|
jbe 00007ffa`a47234e8 |
|
mov rdx,rsi |
|
and rdx,1Fh |
|
cmp rdx,rcx |
|
jae 00007ffa`a47234e8 |
|
movzx eax,word ptr [rax+rdx*2+10h] |
|
mov word ptr [rdi+18h],ax |
|
}); |
|
^ |
|
add rsp,20h |
|
|