ForEachLength.Bench
Diff for ForEach method between:
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
xor eax,eax
IL_0003: ldsfld System.Int32[] ForEachLength.Bench::Array
IL_0008: stloc.1
- mov rdx,1E510009968h
+ mov rdx,1BA48619968h
mov rdx,qword ptr [rdx]
IL_0009: ldc.i4.0
IL_000a: stloc.2
Diff for ForEach method between:
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
xor eax,eax
IL_0003: ldsfld System.Int32[] ForEachLength.Bench::Array
IL_0008: stloc.1
- mov rdx,1E510009968h
+ mov rdx,2A232917258h
mov rdx,qword ptr [rdx]
IL_0009: ldc.i4.0
IL_000a: stloc.2
Diff for ForEach method between:
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
xor eax,eax
IL_0003: ldsfld System.Int32[] ForEachLength.Bench::Array
IL_0008: stloc.1
- mov rdx,1E510009968h
+ mov rdx,20DF1AD7250h
mov rdx,qword ptr [rdx]
IL_0009: ldc.i4.0
IL_000a: stloc.2
Diff for ForEach method between:
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
.NET Core 2.2.0 (CoreCLR 4.6.27110.04, CoreFX 4.6.27110.04), 64bit RyuJIT
xor eax,eax
IL_0003: ldsfld System.Int32[] ForEachLength.Bench::Array
IL_0008: stloc.1
- mov rdx,1E510009968h
+ mov rdx,12D52BB7250h
mov rdx,qword ptr [rdx]
IL_0009: ldc.i4.0
IL_000a: stloc.2
Diff for Aggregate method between:
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
IL_0010: ldsfld ForEachLength.Bench/<>c ForEachLength.Bench/<>c::<>9
IL_0015: ldftn System.Int64 ForEachLength.Bench/<>c::<Aggregate>b__4_0(System.Int64,System.Int32)
IL_001b: newobj System.Void System.Func`3<System.Int64,System.Int32,System.Int64>::.ctor(System.Object,System.IntPtr)
- mov rcx,2D726CA9978h
+ mov rcx,2661A669978h
mov r8,qword ptr [rcx]
- mov rcx,2D726CA9968h
+ mov rcx,2661A669968h
mov rsi,qword ptr [rcx]
test r8,r8
jne M00_L00
- mov rcx,7FF8AAF880F8h
+ mov rcx,7FF8AAF780F8h
call clr+0x2540
mov rdi,rax
- mov rdx,2D726CA9970h
+ mov rdx,2661A669970h
mov rdx,qword ptr [rdx]
test rdx,rdx
- je 00007ff8`ab0c91bd
+ je 00007ff8`ab0b91bd
lea rcx,[rdi+8]
call clr+0x3ff0
- mov rdx,7FF8AB0C7BE8h
+ mov rdx,7FF8AB0B7BE8h
mov qword ptr [rdi+18h],rdx
IL_0020: dup
IL_0021: stsfld System.Func`3<System.Int64,System.Int32,System.Int64> ForEachLength.Bench/<>c::<>9__4_0
IL_0026: call !!1 System.Linq.Enumerable::Aggregate<System.Int32,System.Int64>(System.Collections.Generic.IEnumerable`1<!!0>,!!1,System.Func`3<!!1,!!0,!!1>)
IL_002b: ret
- mov rcx,2D726CA9978h
+ mov rcx,2661A669978h
mov rdx,rdi
call clr+0x3fc0
mov r8,rdi
M00_L00:
mov rcx,rsi
xor edx,edx
- mov rax,7FF8AB0C5918h
+ mov rax,7FF8AB0B5918h
; Total bytes of code 126
; ForEachLength.Bench+<>c.<Aggregate>b__4_0(Int64, Int32)
IL_0000: ldarg.1
Diff for Aggregate method between:
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
IL_0010: ldsfld ForEachLength.Bench/<>c ForEachLength.Bench/<>c::<>9
IL_0015: ldftn System.Int64 ForEachLength.Bench/<>c::<Aggregate>b__4_0(System.Int64,System.Int32)
IL_001b: newobj System.Void System.Func`3<System.Int64,System.Int32,System.Int64>::.ctor(System.Object,System.IntPtr)
- mov rcx,2D726CA9978h
- mov r8,qword ptr [rcx]
- mov rcx,2D726CA9968h
+ mov rcx,1B2C64C7258h
mov rsi,qword ptr [rcx]
+ mov rcx,7FF810064470h
+ mov edx,4
+ call coreclr!MetaDataGetDispenser+0x37fa0
+ mov rcx,1B2C64C7268h
+ mov r8,qword ptr [rcx]
test r8,r8
jne M00_L00
- mov rcx,7FF8AAF880F8h
- call clr+0x2540
+ mov rcx,7FF80FF7C898h
+ call coreclr!MetaDataGetDispenser+0x37ba0
mov rdi,rax
- mov rdx,2D726CA9970h
+ mov rdx,1B2C64C7260h
mov rdx,qword ptr [rdx]
test rdx,rdx
- je 00007ff8`ab0c91bd
+ je 00007ff8`0ffa3691
lea rcx,[rdi+8]
- call clr+0x3ff0
- mov rdx,7FF8AB0C7BE8h
+ call coreclr!MetaDataGetDispenser+0x36700
+ mov rdx,7FF80FFA31F0h
mov qword ptr [rdi+18h],rdx
IL_0020: dup
IL_0021: stsfld System.Func`3<System.Int64,System.Int32,System.Int64> ForEachLength.Bench/<>c::<>9__4_0
IL_0026: call !!1 System.Linq.Enumerable::Aggregate<System.Int32,System.Int64>(System.Collections.Generic.IEnumerable`1<!!0>,!!1,System.Func`3<!!1,!!0,!!1>)
IL_002b: ret
- mov rcx,2D726CA9978h
+ mov rcx,1B2C64C7268h
mov rdx,rdi
- call clr+0x3fc0
+ call coreclr!MetaDataGetDispenser+0x366d0
mov r8,rdi
M00_L00:
mov rcx,rsi
xor edx,edx
- mov rax,7FF8AB0C5918h
- ; Total bytes of code 126
+ mov rax,7FF80FFA0A18h
+ ; Total bytes of code 146
; ForEachLength.Bench+<>c.<Aggregate>b__4_0(Int64, Int32)
IL_0000: ldarg.1
IL_0001: ldarg.2
Diff for Aggregate method between:
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
IL_0010: ldsfld ForEachLength.Bench/<>c ForEachLength.Bench/<>c::<>9
IL_0015: ldftn System.Int64 ForEachLength.Bench/<>c::<Aggregate>b__4_0(System.Int64,System.Int32)
IL_001b: newobj System.Void System.Func`3<System.Int64,System.Int32,System.Int64>::.ctor(System.Object,System.IntPtr)
- mov rcx,2D726CA9978h
- mov r8,qword ptr [rcx]
- mov rcx,2D726CA9968h
+ mov rcx,29593DA7250h
mov rsi,qword ptr [rcx]
+ mov rcx,7FF810043520h
+ mov edx,4
+ call coreclr!MetaDataGetDispenser+0x37fa0
+ mov rcx,29593DA7260h
+ mov r8,qword ptr [rcx]
test r8,r8
jne M00_L00
- mov rcx,7FF8AAF880F8h
- call clr+0x2540
+ mov rcx,7FF80FF5C6D8h
+ call coreclr!MetaDataGetDispenser+0x37ba0
mov rdi,rax
- mov rdx,2D726CA9970h
+ mov rdx,29593DA7258h
mov rdx,qword ptr [rdx]
test rdx,rdx
- je 00007ff8`ab0c91bd
+ je 00007ff8`0ff834f1
lea rcx,[rdi+8]
- call clr+0x3ff0
- mov rdx,7FF8AB0C7BE8h
+ call coreclr!MetaDataGetDispenser+0x36700
+ mov rdx,7FF80FF829C0h
mov qword ptr [rdi+18h],rdx
IL_0020: dup
IL_0021: stsfld System.Func`3<System.Int64,System.Int32,System.Int64> ForEachLength.Bench/<>c::<>9__4_0
IL_0026: call !!1 System.Linq.Enumerable::Aggregate<System.Int32,System.Int64>(System.Collections.Generic.IEnumerable`1<!!0>,!!1,System.Func`3<!!1,!!0,!!1>)
IL_002b: ret
- mov rcx,2D726CA9978h
+ mov rcx,29593DA7260h
mov rdx,rdi
- call clr+0x3fc0
+ call coreclr!MetaDataGetDispenser+0x366d0
mov r8,rdi
M00_L00:
mov rcx,rsi
xor edx,edx
- mov rax,7FF8AB0C5918h
- ; Total bytes of code 126
+ mov rax,7FF80FF829D0h
+ ; Total bytes of code 146
; ForEachLength.Bench+<>c.<Aggregate>b__4_0(Int64, Int32)
IL_0000: ldarg.1
IL_0001: ldarg.2
Diff for Aggregate method between:
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
.NET Core 2.2.0 (CoreCLR 4.6.27110.04, CoreFX 4.6.27110.04), 64bit RyuJIT
IL_0010: ldsfld ForEachLength.Bench/<>c ForEachLength.Bench/<>c::<>9
IL_0015: ldftn System.Int64 ForEachLength.Bench/<>c::<Aggregate>b__4_0(System.Int64,System.Int32)
IL_001b: newobj System.Void System.Func`3<System.Int64,System.Int32,System.Int64>::.ctor(System.Object,System.IntPtr)
- mov rcx,2D726CA9978h
- mov r8,qword ptr [rcx]
- mov rcx,2D726CA9968h
+ mov rcx,2B86D927250h
mov rsi,qword ptr [rcx]
+ mov rcx,7FF82BE54680h
+ mov edx,4
+ call coreclr!GC_Initialize+0x42b20
+ mov rcx,2B86D927260h
+ mov r8,qword ptr [rcx]
test r8,r8
jne M00_L00
- mov rcx,7FF8AAF880F8h
- call clr+0x2540
+ mov rcx,7FF82BD6C908h
+ call coreclr!GC_Initialize+0x42720
mov rdi,rax
- mov rdx,2D726CA9970h
+ mov rdx,2B86D927258h
mov rdx,qword ptr [rdx]
test rdx,rdx
- je 00007ff8`ab0c91bd
+ je 00007ff8`2bd93571
lea rcx,[rdi+8]
- call clr+0x3ff0
- mov rdx,7FF8AB0C7BE8h
+ call coreclr!GC_Initialize+0x41280
+ mov rdx,7FF82BD92A48h
mov qword ptr [rdi+18h],rdx
IL_0020: dup
IL_0021: stsfld System.Func`3<System.Int64,System.Int32,System.Int64> ForEachLength.Bench/<>c::<>9__4_0
IL_0026: call !!1 System.Linq.Enumerable::Aggregate<System.Int32,System.Int64>(System.Collections.Generic.IEnumerable`1<!!0>,!!1,System.Func`3<!!1,!!0,!!1>)
IL_002b: ret
- mov rcx,2D726CA9978h
+ mov rcx,2B86D927260h
mov rdx,rdi
- call clr+0x3fc0
+ call coreclr!GC_Initialize+0x41250
mov r8,rdi
M00_L00:
mov rcx,rsi
xor edx,edx
- mov rax,7FF8AB0C5918h
- ; Total bytes of code 126
+ mov rax,7FF82BD92A58h
+ ; Total bytes of code 146
; ForEachLength.Bench+<>c.<Aggregate>b__4_0(Int64, Int32)
IL_0000: ldarg.1
IL_0001: ldarg.2
Diff for For method between:
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
IL_001c: ldlen
IL_001d: conv.i4
IL_001e: blt.s IL_0007
- mov rcx,226CBB69968h
+ mov rcx,2A9C06A9968h
mov rcx,qword ptr [rcx]
mov r8d,dword ptr [rcx+8]
test r8d,r8d
Diff for For method between:
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
IL_001c: ldlen
IL_001d: conv.i4
IL_001e: blt.s IL_0007
- mov rcx,226CBB69968h
+ mov rcx,1B4D8EF7258h
mov rcx,qword ptr [rcx]
- mov r8d,dword ptr [rcx+8]
- test r8d,r8d
+ cmp dword ptr [rcx+8],0
jle M00_L01
IL_0007: ldloc.0
IL_0008: ldsfld System.Int32[] ForEachLength.Bench::Array
IL_0010: add
IL_0011: stloc.0
M00_L00:
- mov r9,rcx
- movsxd r10,edx
- mov r9d,dword ptr [r9+r10*4+10h]
- movsxd r9,r9d
- add rax,r9
+ mov r8,rcx
+ cmp edx,dword ptr [r8+8]
+ jae 00007ff8`0ff9321e
+ movsxd r9,edx
+ mov r8d,dword ptr [r8+r9*4+10h]
+ movsxd r8,r8d
+ add rax,r8
IL_0012: ldloc.1
IL_0013: ldc.i4.1
IL_0014: add
IL_0015: stloc.1
inc edx
- cmp r8d,edx
+ cmp dword ptr [rcx+8],edx
jg M00_L00
IL_0020: ldloc.0
IL_0021: ret
M00_L01:
- ret
- ; Total bytes of code 51
+ add rsp,28h
+ ; Total bytes of code 57
Diff for For method between:
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
IL_001c: ldlen
IL_001d: conv.i4
IL_001e: blt.s IL_0007
- mov rcx,226CBB69968h
+ mov rcx,211BBB87250h
mov rcx,qword ptr [rcx]
- mov r8d,dword ptr [rcx+8]
- test r8d,r8d
+ cmp dword ptr [rcx+8],0
jle M00_L01
IL_0007: ldloc.0
IL_0008: ldsfld System.Int32[] ForEachLength.Bench::Array
IL_0010: add
IL_0011: stloc.0
M00_L00:
- mov r9,rcx
- movsxd r10,edx
- mov r9d,dword ptr [r9+r10*4+10h]
- movsxd r9,r9d
- add rax,r9
+ mov r8,rcx
+ cmp edx,dword ptr [r8+8]
+ jae 00007ff8`0ff7348e
+ movsxd r9,edx
+ mov r8d,dword ptr [r8+r9*4+10h]
+ movsxd r8,r8d
+ add rax,r8
IL_0012: ldloc.1
IL_0013: ldc.i4.1
IL_0014: add
IL_0015: stloc.1
inc edx
- cmp r8d,edx
+ cmp dword ptr [rcx+8],edx
jg M00_L00
IL_0020: ldloc.0
IL_0021: ret
M00_L01:
- ret
- ; Total bytes of code 51
+ add rsp,28h
+ ; Total bytes of code 57
Diff for For method between:
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
.NET Core 2.2.0 (CoreCLR 4.6.27110.04, CoreFX 4.6.27110.04), 64bit RyuJIT
IL_001c: ldlen
IL_001d: conv.i4
IL_001e: blt.s IL_0007
- mov rcx,226CBB69968h
+ mov rcx,1E490007250h
mov rcx,qword ptr [rcx]
- mov r8d,dword ptr [rcx+8]
- test r8d,r8d
+ cmp dword ptr [rcx+8],0
jle M00_L01
IL_0007: ldloc.0
IL_0008: ldsfld System.Int32[] ForEachLength.Bench::Array
IL_0010: add
IL_0011: stloc.0
M00_L00:
- mov r9,rcx
- movsxd r10,edx
- mov r9d,dword ptr [r9+r10*4+10h]
- movsxd r9,r9d
- add rax,r9
+ mov r8,rcx
+ cmp edx,dword ptr [r8+8]
+ jae 00007ff8`2bd9350e
+ movsxd r9,edx
+ mov r8d,dword ptr [r8+r9*4+10h]
+ movsxd r8,r8d
+ add rax,r8
IL_0012: ldloc.1
IL_0013: ldc.i4.1
IL_0014: add
IL_0015: stloc.1
inc edx
- cmp r8d,edx
+ cmp dword ptr [rcx+8],edx
jg M00_L00
IL_0020: ldloc.0
IL_0021: ret
M00_L01:
- ret
- ; Total bytes of code 51
+ add rsp,28h
+ ; Total bytes of code 57
Diff for ForReverse method between:
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
IL_000b: sub
IL_000c: stloc.1
IL_000d: br.s IL_001e
- mov rdx,1EB65BF9968h
+ mov rdx,1D8211D9968h
mov rdx,qword ptr [rdx]
mov ecx,dword ptr [rdx+8]
lea r8d,[rcx-1]
M00_L00:
mov r9,rdx
cmp r8d,ecx
- jae 00007ff8`ab0a90f2
+ jae 00007ff8`ab0b90f2
movsxd r10,r8d
mov r9d,dword ptr [r9+r10*4+10h]
movsxd r9,r9d
Diff for ForReverse method between:
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
IL_000b: sub
IL_000c: stloc.1
IL_000d: br.s IL_001e
- mov rdx,1EB65BF9968h
+ mov rdx,22728847258h
mov rdx,qword ptr [rdx]
mov ecx,dword ptr [rdx+8]
- lea r8d,[rcx-1]
+ dec ecx
IL_001e: ldloc.1
IL_001f: ldc.i4.0
IL_0020: bge.s IL_000f
- test r8d,r8d
+ test ecx,ecx
jl M00_L01
IL_000f: ldloc.0
IL_0010: ldsfld System.Int32[] ForEachLength.Bench::Array
IL_0018: add
IL_0019: stloc.0
M00_L00:
- mov r9,rdx
- cmp r8d,ecx
- jae 00007ff8`ab0a90f2
- movsxd r10,r8d
- mov r9d,dword ptr [r9+r10*4+10h]
- movsxd r9,r9d
- add rax,r9
+ mov r8,rdx
+ cmp ecx,dword ptr [r8+8]
+ jae 00007ff8`0ffa321e
+ movsxd r9,ecx
+ mov r8d,dword ptr [r8+r9*4+10h]
+ movsxd r8,r8d
+ add rax,r8
IL_001a: ldloc.1
IL_001b: ldc.i4.1
IL_001c: sub
IL_001d: stloc.1
- dec r8d
- test r8d,r8d
+ dec ecx
+ test ecx,ecx
jge M00_L00
IL_0022: ldloc.0
IL_0023: ret
M00_L01:
add rsp,28h
- ; Total bytes of code 61
+ ; Total bytes of code 57
Diff for ForReverse method between:
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
IL_000b: sub
IL_000c: stloc.1
IL_000d: br.s IL_001e
- mov rdx,1EB65BF9968h
+ mov rdx,1A5F3EF7250h
mov rdx,qword ptr [rdx]
mov ecx,dword ptr [rdx+8]
- lea r8d,[rcx-1]
+ dec ecx
IL_001e: ldloc.1
IL_001f: ldc.i4.0
IL_0020: bge.s IL_000f
- test r8d,r8d
+ test ecx,ecx
jl M00_L01
IL_000f: ldloc.0
IL_0010: ldsfld System.Int32[] ForEachLength.Bench::Array
IL_0018: add
IL_0019: stloc.0
M00_L00:
- mov r9,rdx
- cmp r8d,ecx
- jae 00007ff8`ab0a90f2
- movsxd r10,r8d
- mov r9d,dword ptr [r9+r10*4+10h]
- movsxd r9,r9d
- add rax,r9
+ mov r8,rdx
+ cmp ecx,dword ptr [r8+8]
+ jae 00007ff8`0ff8348e
+ movsxd r9,ecx
+ mov r8d,dword ptr [r8+r9*4+10h]
+ movsxd r8,r8d
+ add rax,r8
IL_001a: ldloc.1
IL_001b: ldc.i4.1
IL_001c: sub
IL_001d: stloc.1
- dec r8d
- test r8d,r8d
+ dec ecx
+ test ecx,ecx
jge M00_L00
IL_0022: ldloc.0
IL_0023: ret
M00_L01:
add rsp,28h
- ; Total bytes of code 61
+ ; Total bytes of code 57
Diff for ForReverse method between:
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
.NET Core 2.2.0 (CoreCLR 4.6.27110.04, CoreFX 4.6.27110.04), 64bit RyuJIT
IL_000b: sub
IL_000c: stloc.1
IL_000d: br.s IL_001e
- mov rdx,1EB65BF9968h
+ mov rdx,1E3D7607250h
mov rdx,qword ptr [rdx]
mov ecx,dword ptr [rdx+8]
- lea r8d,[rcx-1]
+ dec ecx
IL_001e: ldloc.1
IL_001f: ldc.i4.0
IL_0020: bge.s IL_000f
- test r8d,r8d
+ test ecx,ecx
jl M00_L01
IL_000f: ldloc.0
IL_0010: ldsfld System.Int32[] ForEachLength.Bench::Array
IL_0018: add
IL_0019: stloc.0
M00_L00:
- mov r9,rdx
- cmp r8d,ecx
- jae 00007ff8`ab0a90f2
- movsxd r10,r8d
- mov r9d,dword ptr [r9+r10*4+10h]
- movsxd r9,r9d
- add rax,r9
+ mov r8,rdx
+ cmp ecx,dword ptr [r8+8]
+ jae 00007ff8`2bdb350e
+ movsxd r9,ecx
+ mov r8d,dword ptr [r8+r9*4+10h]
+ movsxd r8,r8d
+ add rax,r8
IL_001a: ldloc.1
IL_001b: ldc.i4.1
IL_001c: sub
IL_001d: stloc.1
- dec r8d
- test r8d,r8d
+ dec ecx
+ test ecx,ecx
jge M00_L00
IL_0022: ldloc.0
IL_0023: ret
M00_L01:
add rsp,28h
- ; Total bytes of code 61
+ ; Total bytes of code 57
Diff for ForLength method between:
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
IL_0008: ldlen
IL_0009: conv.i4
IL_000a: stloc.1
- mov rdx,22190009968h
+ mov rdx,182662C9968h
mov rdx,qword ptr [rdx]
mov ecx,dword ptr [rdx+8]
IL_000b: ldc.i4.0
Diff for ForLength method between:
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
IL_0008: ldlen
IL_0009: conv.i4
IL_000a: stloc.1
- mov rdx,22190009968h
+ mov rdx,1743F7C7258h
mov rdx,qword ptr [rdx]
mov ecx,dword ptr [rdx+8]
IL_000b: ldc.i4.0
IL_0019: stloc.0
M00_L00:
mov r9,rdx
+ cmp r8d,dword ptr [r9+8]
+ jae 00007ff8`0ff73221
movsxd r10,r8d
mov r9d,dword ptr [r9+r10*4+10h]
movsxd r9,r9d
IL_0022: ldloc.0
IL_0023: ret
M00_L01:
- ret
- ; Total bytes of code 51
+ add rsp,28h
+ ; Total bytes of code 60
Diff for ForLength method between:
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
IL_0008: ldlen
IL_0009: conv.i4
IL_000a: stloc.1
- mov rdx,22190009968h
+ mov rdx,1E910007250h
mov rdx,qword ptr [rdx]
mov ecx,dword ptr [rdx+8]
IL_000b: ldc.i4.0
IL_0019: stloc.0
M00_L00:
mov r9,rdx
+ cmp r8d,dword ptr [r9+8]
+ jae 00007ff8`0ff93491
movsxd r10,r8d
mov r9d,dword ptr [r9+r10*4+10h]
movsxd r9,r9d
IL_0022: ldloc.0
IL_0023: ret
M00_L01:
- ret
- ; Total bytes of code 51
+ add rsp,28h
+ ; Total bytes of code 60
Diff for ForLength method between:
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
.NET Core 2.2.0 (CoreCLR 4.6.27110.04, CoreFX 4.6.27110.04), 64bit RyuJIT
IL_0008: ldlen
IL_0009: conv.i4
IL_000a: stloc.1
- mov rdx,22190009968h
+ mov rdx,2ACBAB97250h
mov rdx,qword ptr [rdx]
mov ecx,dword ptr [rdx+8]
IL_000b: ldc.i4.0
IL_0019: stloc.0
M00_L00:
mov r9,rdx
+ cmp r8d,dword ptr [r9+8]
+ jae 00007ff8`2bd73511
movsxd r10,r8d
mov r9d,dword ptr [r9+r10*4+10h]
movsxd r9,r9d
IL_0022: ldloc.0
IL_0023: ret
M00_L01:
- ret
- ; Total bytes of code 51
+ add rsp,28h
+ ; Total bytes of code 60
Diff for ForEach method between:
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
xor eax,eax
IL_0003: ldsfld System.Int32[] ForEachLength.Bench::Array
IL_0008: stloc.1
- mov rdx,1BA48619968h
+ mov rdx,2A232917258h
mov rdx,qword ptr [rdx]
IL_0009: ldc.i4.0
IL_000a: stloc.2
Diff for ForEach method between:
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
xor eax,eax
IL_0003: ldsfld System.Int32[] ForEachLength.Bench::Array
IL_0008: stloc.1
- mov rdx,1BA48619968h
+ mov rdx,20DF1AD7250h
mov rdx,qword ptr [rdx]
IL_0009: ldc.i4.0
IL_000a: stloc.2
Diff for ForEach method between:
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
.NET Core 2.2.0 (CoreCLR 4.6.27110.04, CoreFX 4.6.27110.04), 64bit RyuJIT
xor eax,eax
IL_0003: ldsfld System.Int32[] ForEachLength.Bench::Array
IL_0008: stloc.1
- mov rdx,1BA48619968h
+ mov rdx,12D52BB7250h
mov rdx,qword ptr [rdx]
IL_0009: ldc.i4.0
IL_000a: stloc.2
Diff for Aggregate method between:
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
IL_0010: ldsfld ForEachLength.Bench/<>c ForEachLength.Bench/<>c::<>9
IL_0015: ldftn System.Int64 ForEachLength.Bench/<>c::<Aggregate>b__4_0(System.Int64,System.Int32)
IL_001b: newobj System.Void System.Func`3<System.Int64,System.Int32,System.Int64>::.ctor(System.Object,System.IntPtr)
- mov rcx,2661A669978h
- mov r8,qword ptr [rcx]
- mov rcx,2661A669968h
+ mov rcx,1B2C64C7258h
mov rsi,qword ptr [rcx]
+ mov rcx,7FF810064470h
+ mov edx,4
+ call coreclr!MetaDataGetDispenser+0x37fa0
+ mov rcx,1B2C64C7268h
+ mov r8,qword ptr [rcx]
test r8,r8
jne M00_L00
- mov rcx,7FF8AAF780F8h
- call clr+0x2540
+ mov rcx,7FF80FF7C898h
+ call coreclr!MetaDataGetDispenser+0x37ba0
mov rdi,rax
- mov rdx,2661A669970h
+ mov rdx,1B2C64C7260h
mov rdx,qword ptr [rdx]
test rdx,rdx
- je 00007ff8`ab0b91bd
+ je 00007ff8`0ffa3691
lea rcx,[rdi+8]
- call clr+0x3ff0
- mov rdx,7FF8AB0B7BE8h
+ call coreclr!MetaDataGetDispenser+0x36700
+ mov rdx,7FF80FFA31F0h
mov qword ptr [rdi+18h],rdx
IL_0020: dup
IL_0021: stsfld System.Func`3<System.Int64,System.Int32,System.Int64> ForEachLength.Bench/<>c::<>9__4_0
IL_0026: call !!1 System.Linq.Enumerable::Aggregate<System.Int32,System.Int64>(System.Collections.Generic.IEnumerable`1<!!0>,!!1,System.Func`3<!!1,!!0,!!1>)
IL_002b: ret
- mov rcx,2661A669978h
+ mov rcx,1B2C64C7268h
mov rdx,rdi
- call clr+0x3fc0
+ call coreclr!MetaDataGetDispenser+0x366d0
mov r8,rdi
M00_L00:
mov rcx,rsi
xor edx,edx
- mov rax,7FF8AB0B5918h
- ; Total bytes of code 126
+ mov rax,7FF80FFA0A18h
+ ; Total bytes of code 146
; ForEachLength.Bench+<>c.<Aggregate>b__4_0(Int64, Int32)
IL_0000: ldarg.1
IL_0001: ldarg.2
Diff for Aggregate method between:
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
IL_0010: ldsfld ForEachLength.Bench/<>c ForEachLength.Bench/<>c::<>9
IL_0015: ldftn System.Int64 ForEachLength.Bench/<>c::<Aggregate>b__4_0(System.Int64,System.Int32)
IL_001b: newobj System.Void System.Func`3<System.Int64,System.Int32,System.Int64>::.ctor(System.Object,System.IntPtr)
- mov rcx,2661A669978h
- mov r8,qword ptr [rcx]
- mov rcx,2661A669968h
+ mov rcx,29593DA7250h
mov rsi,qword ptr [rcx]
+ mov rcx,7FF810043520h
+ mov edx,4
+ call coreclr!MetaDataGetDispenser+0x37fa0
+ mov rcx,29593DA7260h
+ mov r8,qword ptr [rcx]
test r8,r8
jne M00_L00
- mov rcx,7FF8AAF780F8h
- call clr+0x2540
+ mov rcx,7FF80FF5C6D8h
+ call coreclr!MetaDataGetDispenser+0x37ba0
mov rdi,rax
- mov rdx,2661A669970h
+ mov rdx,29593DA7258h
mov rdx,qword ptr [rdx]
test rdx,rdx
- je 00007ff8`ab0b91bd
+ je 00007ff8`0ff834f1
lea rcx,[rdi+8]
- call clr+0x3ff0
- mov rdx,7FF8AB0B7BE8h
+ call coreclr!MetaDataGetDispenser+0x36700
+ mov rdx,7FF80FF829C0h
mov qword ptr [rdi+18h],rdx
IL_0020: dup
IL_0021: stsfld System.Func`3<System.Int64,System.Int32,System.Int64> ForEachLength.Bench/<>c::<>9__4_0
IL_0026: call !!1 System.Linq.Enumerable::Aggregate<System.Int32,System.Int64>(System.Collections.Generic.IEnumerable`1<!!0>,!!1,System.Func`3<!!1,!!0,!!1>)
IL_002b: ret
- mov rcx,2661A669978h
+ mov rcx,29593DA7260h
mov rdx,rdi
- call clr+0x3fc0
+ call coreclr!MetaDataGetDispenser+0x366d0
mov r8,rdi
M00_L00:
mov rcx,rsi
xor edx,edx
- mov rax,7FF8AB0B5918h
- ; Total bytes of code 126
+ mov rax,7FF80FF829D0h
+ ; Total bytes of code 146
; ForEachLength.Bench+<>c.<Aggregate>b__4_0(Int64, Int32)
IL_0000: ldarg.1
IL_0001: ldarg.2
Diff for Aggregate method between:
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
.NET Core 2.2.0 (CoreCLR 4.6.27110.04, CoreFX 4.6.27110.04), 64bit RyuJIT
IL_0010: ldsfld ForEachLength.Bench/<>c ForEachLength.Bench/<>c::<>9
IL_0015: ldftn System.Int64 ForEachLength.Bench/<>c::<Aggregate>b__4_0(System.Int64,System.Int32)
IL_001b: newobj System.Void System.Func`3<System.Int64,System.Int32,System.Int64>::.ctor(System.Object,System.IntPtr)
- mov rcx,2661A669978h
- mov r8,qword ptr [rcx]
- mov rcx,2661A669968h
+ mov rcx,2B86D927250h
mov rsi,qword ptr [rcx]
+ mov rcx,7FF82BE54680h
+ mov edx,4
+ call coreclr!GC_Initialize+0x42b20
+ mov rcx,2B86D927260h
+ mov r8,qword ptr [rcx]
test r8,r8
jne M00_L00
- mov rcx,7FF8AAF780F8h
- call clr+0x2540
+ mov rcx,7FF82BD6C908h
+ call coreclr!GC_Initialize+0x42720
mov rdi,rax
- mov rdx,2661A669970h
+ mov rdx,2B86D927258h
mov rdx,qword ptr [rdx]
test rdx,rdx
- je 00007ff8`ab0b91bd
+ je 00007ff8`2bd93571
lea rcx,[rdi+8]
- call clr+0x3ff0
- mov rdx,7FF8AB0B7BE8h
+ call coreclr!GC_Initialize+0x41280
+ mov rdx,7FF82BD92A48h
mov qword ptr [rdi+18h],rdx
IL_0020: dup
IL_0021: stsfld System.Func`3<System.Int64,System.Int32,System.Int64> ForEachLength.Bench/<>c::<>9__4_0
IL_0026: call !!1 System.Linq.Enumerable::Aggregate<System.Int32,System.Int64>(System.Collections.Generic.IEnumerable`1<!!0>,!!1,System.Func`3<!!1,!!0,!!1>)
IL_002b: ret
- mov rcx,2661A669978h
+ mov rcx,2B86D927260h
mov rdx,rdi
- call clr+0x3fc0
+ call coreclr!GC_Initialize+0x41250
mov r8,rdi
M00_L00:
mov rcx,rsi
xor edx,edx
- mov rax,7FF8AB0B5918h
- ; Total bytes of code 126
+ mov rax,7FF82BD92A58h
+ ; Total bytes of code 146
; ForEachLength.Bench+<>c.<Aggregate>b__4_0(Int64, Int32)
IL_0000: ldarg.1
IL_0001: ldarg.2
Diff for For method between:
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
IL_001c: ldlen
IL_001d: conv.i4
IL_001e: blt.s IL_0007
- mov rcx,2A9C06A9968h
+ mov rcx,1B4D8EF7258h
mov rcx,qword ptr [rcx]
- mov r8d,dword ptr [rcx+8]
- test r8d,r8d
+ cmp dword ptr [rcx+8],0
jle M00_L01
IL_0007: ldloc.0
IL_0008: ldsfld System.Int32[] ForEachLength.Bench::Array
IL_0010: add
IL_0011: stloc.0
M00_L00:
- mov r9,rcx
- movsxd r10,edx
- mov r9d,dword ptr [r9+r10*4+10h]
- movsxd r9,r9d
- add rax,r9
+ mov r8,rcx
+ cmp edx,dword ptr [r8+8]
+ jae 00007ff8`0ff9321e
+ movsxd r9,edx
+ mov r8d,dword ptr [r8+r9*4+10h]
+ movsxd r8,r8d
+ add rax,r8
IL_0012: ldloc.1
IL_0013: ldc.i4.1
IL_0014: add
IL_0015: stloc.1
inc edx
- cmp r8d,edx
+ cmp dword ptr [rcx+8],edx
jg M00_L00
IL_0020: ldloc.0
IL_0021: ret
M00_L01:
- ret
- ; Total bytes of code 51
+ add rsp,28h
+ ; Total bytes of code 57
Diff for For method between:
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
IL_001c: ldlen
IL_001d: conv.i4
IL_001e: blt.s IL_0007
- mov rcx,2A9C06A9968h
+ mov rcx,211BBB87250h
mov rcx,qword ptr [rcx]
- mov r8d,dword ptr [rcx+8]
- test r8d,r8d
+ cmp dword ptr [rcx+8],0
jle M00_L01
IL_0007: ldloc.0
IL_0008: ldsfld System.Int32[] ForEachLength.Bench::Array
IL_0010: add
IL_0011: stloc.0
M00_L00:
- mov r9,rcx
- movsxd r10,edx
- mov r9d,dword ptr [r9+r10*4+10h]
- movsxd r9,r9d
- add rax,r9
+ mov r8,rcx
+ cmp edx,dword ptr [r8+8]
+ jae 00007ff8`0ff7348e
+ movsxd r9,edx
+ mov r8d,dword ptr [r8+r9*4+10h]
+ movsxd r8,r8d
+ add rax,r8
IL_0012: ldloc.1
IL_0013: ldc.i4.1
IL_0014: add
IL_0015: stloc.1
inc edx
- cmp r8d,edx
+ cmp dword ptr [rcx+8],edx
jg M00_L00
IL_0020: ldloc.0
IL_0021: ret
M00_L01:
- ret
- ; Total bytes of code 51
+ add rsp,28h
+ ; Total bytes of code 57
Diff for For method between:
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
.NET Core 2.2.0 (CoreCLR 4.6.27110.04, CoreFX 4.6.27110.04), 64bit RyuJIT
IL_001c: ldlen
IL_001d: conv.i4
IL_001e: blt.s IL_0007
- mov rcx,2A9C06A9968h
+ mov rcx,1E490007250h
mov rcx,qword ptr [rcx]
- mov r8d,dword ptr [rcx+8]
- test r8d,r8d
+ cmp dword ptr [rcx+8],0
jle M00_L01
IL_0007: ldloc.0
IL_0008: ldsfld System.Int32[] ForEachLength.Bench::Array
IL_0010: add
IL_0011: stloc.0
M00_L00:
- mov r9,rcx
- movsxd r10,edx
- mov r9d,dword ptr [r9+r10*4+10h]
- movsxd r9,r9d
- add rax,r9
+ mov r8,rcx
+ cmp edx,dword ptr [r8+8]
+ jae 00007ff8`2bd9350e
+ movsxd r9,edx
+ mov r8d,dword ptr [r8+r9*4+10h]
+ movsxd r8,r8d
+ add rax,r8
IL_0012: ldloc.1
IL_0013: ldc.i4.1
IL_0014: add
IL_0015: stloc.1
inc edx
- cmp r8d,edx
+ cmp dword ptr [rcx+8],edx
jg M00_L00
IL_0020: ldloc.0
IL_0021: ret
M00_L01:
- ret
- ; Total bytes of code 51
+ add rsp,28h
+ ; Total bytes of code 57
Diff for ForReverse method between:
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
IL_000b: sub
IL_000c: stloc.1
IL_000d: br.s IL_001e
- mov rdx,1D8211D9968h
+ mov rdx,22728847258h
mov rdx,qword ptr [rdx]
mov ecx,dword ptr [rdx+8]
- lea r8d,[rcx-1]
+ dec ecx
IL_001e: ldloc.1
IL_001f: ldc.i4.0
IL_0020: bge.s IL_000f
- test r8d,r8d
+ test ecx,ecx
jl M00_L01
IL_000f: ldloc.0
IL_0010: ldsfld System.Int32[] ForEachLength.Bench::Array
IL_0018: add
IL_0019: stloc.0
M00_L00:
- mov r9,rdx
- cmp r8d,ecx
- jae 00007ff8`ab0b90f2
- movsxd r10,r8d
- mov r9d,dword ptr [r9+r10*4+10h]
- movsxd r9,r9d
- add rax,r9
+ mov r8,rdx
+ cmp ecx,dword ptr [r8+8]
+ jae 00007ff8`0ffa321e
+ movsxd r9,ecx
+ mov r8d,dword ptr [r8+r9*4+10h]
+ movsxd r8,r8d
+ add rax,r8
IL_001a: ldloc.1
IL_001b: ldc.i4.1
IL_001c: sub
IL_001d: stloc.1
- dec r8d
- test r8d,r8d
+ dec ecx
+ test ecx,ecx
jge M00_L00
IL_0022: ldloc.0
IL_0023: ret
M00_L01:
add rsp,28h
- ; Total bytes of code 61
+ ; Total bytes of code 57
Diff for ForReverse method between:
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
IL_000b: sub
IL_000c: stloc.1
IL_000d: br.s IL_001e
- mov rdx,1D8211D9968h
+ mov rdx,1A5F3EF7250h
mov rdx,qword ptr [rdx]
mov ecx,dword ptr [rdx+8]
- lea r8d,[rcx-1]
+ dec ecx
IL_001e: ldloc.1
IL_001f: ldc.i4.0
IL_0020: bge.s IL_000f
- test r8d,r8d
+ test ecx,ecx
jl M00_L01
IL_000f: ldloc.0
IL_0010: ldsfld System.Int32[] ForEachLength.Bench::Array
IL_0018: add
IL_0019: stloc.0
M00_L00:
- mov r9,rdx
- cmp r8d,ecx
- jae 00007ff8`ab0b90f2
- movsxd r10,r8d
- mov r9d,dword ptr [r9+r10*4+10h]
- movsxd r9,r9d
- add rax,r9
+ mov r8,rdx
+ cmp ecx,dword ptr [r8+8]
+ jae 00007ff8`0ff8348e
+ movsxd r9,ecx
+ mov r8d,dword ptr [r8+r9*4+10h]
+ movsxd r8,r8d
+ add rax,r8
IL_001a: ldloc.1
IL_001b: ldc.i4.1
IL_001c: sub
IL_001d: stloc.1
- dec r8d
- test r8d,r8d
+ dec ecx
+ test ecx,ecx
jge M00_L00
IL_0022: ldloc.0
IL_0023: ret
M00_L01:
add rsp,28h
- ; Total bytes of code 61
+ ; Total bytes of code 57
Diff for ForReverse method between:
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
.NET Core 2.2.0 (CoreCLR 4.6.27110.04, CoreFX 4.6.27110.04), 64bit RyuJIT
IL_000b: sub
IL_000c: stloc.1
IL_000d: br.s IL_001e
- mov rdx,1D8211D9968h
+ mov rdx,1E3D7607250h
mov rdx,qword ptr [rdx]
mov ecx,dword ptr [rdx+8]
- lea r8d,[rcx-1]
+ dec ecx
IL_001e: ldloc.1
IL_001f: ldc.i4.0
IL_0020: bge.s IL_000f
- test r8d,r8d
+ test ecx,ecx
jl M00_L01
IL_000f: ldloc.0
IL_0010: ldsfld System.Int32[] ForEachLength.Bench::Array
IL_0018: add
IL_0019: stloc.0
M00_L00:
- mov r9,rdx
- cmp r8d,ecx
- jae 00007ff8`ab0b90f2
- movsxd r10,r8d
- mov r9d,dword ptr [r9+r10*4+10h]
- movsxd r9,r9d
- add rax,r9
+ mov r8,rdx
+ cmp ecx,dword ptr [r8+8]
+ jae 00007ff8`2bdb350e
+ movsxd r9,ecx
+ mov r8d,dword ptr [r8+r9*4+10h]
+ movsxd r8,r8d
+ add rax,r8
IL_001a: ldloc.1
IL_001b: ldc.i4.1
IL_001c: sub
IL_001d: stloc.1
- dec r8d
- test r8d,r8d
+ dec ecx
+ test ecx,ecx
jge M00_L00
IL_0022: ldloc.0
IL_0023: ret
M00_L01:
add rsp,28h
- ; Total bytes of code 61
+ ; Total bytes of code 57
Diff for ForLength method between:
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
IL_0008: ldlen
IL_0009: conv.i4
IL_000a: stloc.1
- mov rdx,182662C9968h
+ mov rdx,1743F7C7258h
mov rdx,qword ptr [rdx]
mov ecx,dword ptr [rdx+8]
IL_000b: ldc.i4.0
IL_0019: stloc.0
M00_L00:
mov r9,rdx
+ cmp r8d,dword ptr [r9+8]
+ jae 00007ff8`0ff73221
movsxd r10,r8d
mov r9d,dword ptr [r9+r10*4+10h]
movsxd r9,r9d
IL_0022: ldloc.0
IL_0023: ret
M00_L01:
- ret
- ; Total bytes of code 51
+ add rsp,28h
+ ; Total bytes of code 60
Diff for ForLength method between:
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
IL_0008: ldlen
IL_0009: conv.i4
IL_000a: stloc.1
- mov rdx,182662C9968h
+ mov rdx,1E910007250h
mov rdx,qword ptr [rdx]
mov ecx,dword ptr [rdx+8]
IL_000b: ldc.i4.0
IL_0019: stloc.0
M00_L00:
mov r9,rdx
+ cmp r8d,dword ptr [r9+8]
+ jae 00007ff8`0ff93491
movsxd r10,r8d
mov r9d,dword ptr [r9+r10*4+10h]
movsxd r9,r9d
IL_0022: ldloc.0
IL_0023: ret
M00_L01:
- ret
- ; Total bytes of code 51
+ add rsp,28h
+ ; Total bytes of code 60
Diff for ForLength method between:
.NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
.NET Core 2.2.0 (CoreCLR 4.6.27110.04, CoreFX 4.6.27110.04), 64bit RyuJIT
IL_0008: ldlen
IL_0009: conv.i4
IL_000a: stloc.1
- mov rdx,182662C9968h
+ mov rdx,2ACBAB97250h
mov rdx,qword ptr [rdx]
mov ecx,dword ptr [rdx+8]
IL_000b: ldc.i4.0
IL_0019: stloc.0
M00_L00:
mov r9,rdx
+ cmp r8d,dword ptr [r9+8]
+ jae 00007ff8`2bd73511
movsxd r10,r8d
mov r9d,dword ptr [r9+r10*4+10h]
movsxd r9,r9d
IL_0022: ldloc.0
IL_0023: ret
M00_L01:
- ret
- ; Total bytes of code 51
+ add rsp,28h
+ ; Total bytes of code 60
Diff for ForEach method between:
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
xor eax,eax
IL_0003: ldsfld System.Int32[] ForEachLength.Bench::Array
IL_0008: stloc.1
- mov rdx,2A232917258h
+ mov rdx,20DF1AD7250h
mov rdx,qword ptr [rdx]
IL_0009: ldc.i4.0
IL_000a: stloc.2
Diff for ForEach method between:
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
.NET Core 2.2.0 (CoreCLR 4.6.27110.04, CoreFX 4.6.27110.04), 64bit RyuJIT
xor eax,eax
IL_0003: ldsfld System.Int32[] ForEachLength.Bench::Array
IL_0008: stloc.1
- mov rdx,2A232917258h
+ mov rdx,12D52BB7250h
mov rdx,qword ptr [rdx]
IL_0009: ldc.i4.0
IL_000a: stloc.2
Diff for Aggregate method between:
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
IL_0010: ldsfld ForEachLength.Bench/<>c ForEachLength.Bench/<>c::<>9
IL_0015: ldftn System.Int64 ForEachLength.Bench/<>c::<Aggregate>b__4_0(System.Int64,System.Int32)
IL_001b: newobj System.Void System.Func`3<System.Int64,System.Int32,System.Int64>::.ctor(System.Object,System.IntPtr)
- mov rcx,1B2C64C7258h
+ mov rcx,29593DA7250h
mov rsi,qword ptr [rcx]
- mov rcx,7FF810064470h
+ mov rcx,7FF810043520h
mov edx,4
call coreclr!MetaDataGetDispenser+0x37fa0
- mov rcx,1B2C64C7268h
+ mov rcx,29593DA7260h
mov r8,qword ptr [rcx]
test r8,r8
jne M00_L00
- mov rcx,7FF80FF7C898h
+ mov rcx,7FF80FF5C6D8h
call coreclr!MetaDataGetDispenser+0x37ba0
mov rdi,rax
- mov rdx,1B2C64C7260h
+ mov rdx,29593DA7258h
mov rdx,qword ptr [rdx]
test rdx,rdx
- je 00007ff8`0ffa3691
+ je 00007ff8`0ff834f1
lea rcx,[rdi+8]
call coreclr!MetaDataGetDispenser+0x36700
- mov rdx,7FF80FFA31F0h
+ mov rdx,7FF80FF829C0h
mov qword ptr [rdi+18h],rdx
IL_0020: dup
IL_0021: stsfld System.Func`3<System.Int64,System.Int32,System.Int64> ForEachLength.Bench/<>c::<>9__4_0
IL_0026: call !!1 System.Linq.Enumerable::Aggregate<System.Int32,System.Int64>(System.Collections.Generic.IEnumerable`1<!!0>,!!1,System.Func`3<!!1,!!0,!!1>)
IL_002b: ret
- mov rcx,1B2C64C7268h
+ mov rcx,29593DA7260h
mov rdx,rdi
call coreclr!MetaDataGetDispenser+0x366d0
mov r8,rdi
M00_L00:
mov rcx,rsi
xor edx,edx
- mov rax,7FF80FFA0A18h
+ mov rax,7FF80FF829D0h
; Total bytes of code 146
; ForEachLength.Bench+<>c.<Aggregate>b__4_0(Int64, Int32)
IL_0000: ldarg.1
Diff for Aggregate method between:
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
.NET Core 2.2.0 (CoreCLR 4.6.27110.04, CoreFX 4.6.27110.04), 64bit RyuJIT
IL_0010: ldsfld ForEachLength.Bench/<>c ForEachLength.Bench/<>c::<>9
IL_0015: ldftn System.Int64 ForEachLength.Bench/<>c::<Aggregate>b__4_0(System.Int64,System.Int32)
IL_001b: newobj System.Void System.Func`3<System.Int64,System.Int32,System.Int64>::.ctor(System.Object,System.IntPtr)
- mov rcx,1B2C64C7258h
+ mov rcx,2B86D927250h
mov rsi,qword ptr [rcx]
- mov rcx,7FF810064470h
+ mov rcx,7FF82BE54680h
mov edx,4
- call coreclr!MetaDataGetDispenser+0x37fa0
- mov rcx,1B2C64C7268h
+ call coreclr!GC_Initialize+0x42b20
+ mov rcx,2B86D927260h
mov r8,qword ptr [rcx]
test r8,r8
jne M00_L00
- mov rcx,7FF80FF7C898h
- call coreclr!MetaDataGetDispenser+0x37ba0
+ mov rcx,7FF82BD6C908h
+ call coreclr!GC_Initialize+0x42720
mov rdi,rax
- mov rdx,1B2C64C7260h
+ mov rdx,2B86D927258h
mov rdx,qword ptr [rdx]
test rdx,rdx
- je 00007ff8`0ffa3691
+ je 00007ff8`2bd93571
lea rcx,[rdi+8]
- call coreclr!MetaDataGetDispenser+0x36700
- mov rdx,7FF80FFA31F0h
+ call coreclr!GC_Initialize+0x41280
+ mov rdx,7FF82BD92A48h
mov qword ptr [rdi+18h],rdx
IL_0020: dup
IL_0021: stsfld System.Func`3<System.Int64,System.Int32,System.Int64> ForEachLength.Bench/<>c::<>9__4_0
IL_0026: call !!1 System.Linq.Enumerable::Aggregate<System.Int32,System.Int64>(System.Collections.Generic.IEnumerable`1<!!0>,!!1,System.Func`3<!!1,!!0,!!1>)
IL_002b: ret
- mov rcx,1B2C64C7268h
+ mov rcx,2B86D927260h
mov rdx,rdi
- call coreclr!MetaDataGetDispenser+0x366d0
+ call coreclr!GC_Initialize+0x41250
mov r8,rdi
M00_L00:
mov rcx,rsi
xor edx,edx
- mov rax,7FF80FFA0A18h
+ mov rax,7FF82BD92A58h
; Total bytes of code 146
; ForEachLength.Bench+<>c.<Aggregate>b__4_0(Int64, Int32)
IL_0000: ldarg.1
Diff for For method between:
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
IL_001c: ldlen
IL_001d: conv.i4
IL_001e: blt.s IL_0007
- mov rcx,1B4D8EF7258h
+ mov rcx,211BBB87250h
mov rcx,qword ptr [rcx]
cmp dword ptr [rcx+8],0
jle M00_L01
M00_L00:
mov r8,rcx
cmp edx,dword ptr [r8+8]
- jae 00007ff8`0ff9321e
+ jae 00007ff8`0ff7348e
movsxd r9,edx
mov r8d,dword ptr [r8+r9*4+10h]
movsxd r8,r8d
Diff for For method between:
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
.NET Core 2.2.0 (CoreCLR 4.6.27110.04, CoreFX 4.6.27110.04), 64bit RyuJIT
IL_001c: ldlen
IL_001d: conv.i4
IL_001e: blt.s IL_0007
- mov rcx,1B4D8EF7258h
+ mov rcx,1E490007250h
mov rcx,qword ptr [rcx]
cmp dword ptr [rcx+8],0
jle M00_L01
M00_L00:
mov r8,rcx
cmp edx,dword ptr [r8+8]
- jae 00007ff8`0ff9321e
+ jae 00007ff8`2bd9350e
movsxd r9,edx
mov r8d,dword ptr [r8+r9*4+10h]
movsxd r8,r8d
Diff for ForReverse method between:
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
IL_000b: sub
IL_000c: stloc.1
IL_000d: br.s IL_001e
- mov rdx,22728847258h
+ mov rdx,1A5F3EF7250h
mov rdx,qword ptr [rdx]
mov ecx,dword ptr [rdx+8]
dec ecx
M00_L00:
mov r8,rdx
cmp ecx,dword ptr [r8+8]
- jae 00007ff8`0ffa321e
+ jae 00007ff8`0ff8348e
movsxd r9,ecx
mov r8d,dword ptr [r8+r9*4+10h]
movsxd r8,r8d
Diff for ForReverse method between:
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
.NET Core 2.2.0 (CoreCLR 4.6.27110.04, CoreFX 4.6.27110.04), 64bit RyuJIT
IL_000b: sub
IL_000c: stloc.1
IL_000d: br.s IL_001e
- mov rdx,22728847258h
+ mov rdx,1E3D7607250h
mov rdx,qword ptr [rdx]
mov ecx,dword ptr [rdx+8]
dec ecx
M00_L00:
mov r8,rdx
cmp ecx,dword ptr [r8+8]
- jae 00007ff8`0ffa321e
+ jae 00007ff8`2bdb350e
movsxd r9,ecx
mov r8d,dword ptr [r8+r9*4+10h]
movsxd r8,r8d
Diff for ForLength method between:
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
IL_0008: ldlen
IL_0009: conv.i4
IL_000a: stloc.1
- mov rdx,1743F7C7258h
+ mov rdx,1E910007250h
mov rdx,qword ptr [rdx]
mov ecx,dword ptr [rdx+8]
IL_000b: ldc.i4.0
M00_L00:
mov r9,rdx
cmp r8d,dword ptr [r9+8]
- jae 00007ff8`0ff73221
+ jae 00007ff8`0ff93491
movsxd r10,r8d
mov r9d,dword ptr [r9+r10*4+10h]
movsxd r9,r9d
Diff for ForLength method between:
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
.NET Core 2.2.0 (CoreCLR 4.6.27110.04, CoreFX 4.6.27110.04), 64bit RyuJIT
IL_0008: ldlen
IL_0009: conv.i4
IL_000a: stloc.1
- mov rdx,1743F7C7258h
+ mov rdx,2ACBAB97250h
mov rdx,qword ptr [rdx]
mov ecx,dword ptr [rdx+8]
IL_000b: ldc.i4.0
M00_L00:
mov r9,rdx
cmp r8d,dword ptr [r9+8]
- jae 00007ff8`0ff73221
+ jae 00007ff8`2bd73511
movsxd r10,r8d
mov r9d,dword ptr [r9+r10*4+10h]
movsxd r9,r9d
Diff for ForEach method between:
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
.NET Core 2.2.0 (CoreCLR 4.6.27110.04, CoreFX 4.6.27110.04), 64bit RyuJIT
xor eax,eax
IL_0003: ldsfld System.Int32[] ForEachLength.Bench::Array
IL_0008: stloc.1
- mov rdx,20DF1AD7250h
+ mov rdx,12D52BB7250h
mov rdx,qword ptr [rdx]
IL_0009: ldc.i4.0
IL_000a: stloc.2
Diff for Aggregate method between:
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
.NET Core 2.2.0 (CoreCLR 4.6.27110.04, CoreFX 4.6.27110.04), 64bit RyuJIT
IL_0010: ldsfld ForEachLength.Bench/<>c ForEachLength.Bench/<>c::<>9
IL_0015: ldftn System.Int64 ForEachLength.Bench/<>c::<Aggregate>b__4_0(System.Int64,System.Int32)
IL_001b: newobj System.Void System.Func`3<System.Int64,System.Int32,System.Int64>::.ctor(System.Object,System.IntPtr)
- mov rcx,29593DA7250h
+ mov rcx,2B86D927250h
mov rsi,qword ptr [rcx]
- mov rcx,7FF810043520h
+ mov rcx,7FF82BE54680h
mov edx,4
- call coreclr!MetaDataGetDispenser+0x37fa0
- mov rcx,29593DA7260h
+ call coreclr!GC_Initialize+0x42b20
+ mov rcx,2B86D927260h
mov r8,qword ptr [rcx]
test r8,r8
jne M00_L00
- mov rcx,7FF80FF5C6D8h
- call coreclr!MetaDataGetDispenser+0x37ba0
+ mov rcx,7FF82BD6C908h
+ call coreclr!GC_Initialize+0x42720
mov rdi,rax
- mov rdx,29593DA7258h
+ mov rdx,2B86D927258h
mov rdx,qword ptr [rdx]
test rdx,rdx
- je 00007ff8`0ff834f1
+ je 00007ff8`2bd93571
lea rcx,[rdi+8]
- call coreclr!MetaDataGetDispenser+0x36700
- mov rdx,7FF80FF829C0h
+ call coreclr!GC_Initialize+0x41280
+ mov rdx,7FF82BD92A48h
mov qword ptr [rdi+18h],rdx
IL_0020: dup
IL_0021: stsfld System.Func`3<System.Int64,System.Int32,System.Int64> ForEachLength.Bench/<>c::<>9__4_0
IL_0026: call !!1 System.Linq.Enumerable::Aggregate<System.Int32,System.Int64>(System.Collections.Generic.IEnumerable`1<!!0>,!!1,System.Func`3<!!1,!!0,!!1>)
IL_002b: ret
- mov rcx,29593DA7260h
+ mov rcx,2B86D927260h
mov rdx,rdi
- call coreclr!MetaDataGetDispenser+0x366d0
+ call coreclr!GC_Initialize+0x41250
mov r8,rdi
M00_L00:
mov rcx,rsi
xor edx,edx
- mov rax,7FF80FF829D0h
+ mov rax,7FF82BD92A58h
; Total bytes of code 146
; ForEachLength.Bench+<>c.<Aggregate>b__4_0(Int64, Int32)
IL_0000: ldarg.1
Diff for For method between:
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
.NET Core 2.2.0 (CoreCLR 4.6.27110.04, CoreFX 4.6.27110.04), 64bit RyuJIT
IL_001c: ldlen
IL_001d: conv.i4
IL_001e: blt.s IL_0007
- mov rcx,211BBB87250h
+ mov rcx,1E490007250h
mov rcx,qword ptr [rcx]
cmp dword ptr [rcx+8],0
jle M00_L01
M00_L00:
mov r8,rcx
cmp edx,dword ptr [r8+8]
- jae 00007ff8`0ff7348e
+ jae 00007ff8`2bd9350e
movsxd r9,edx
mov r8d,dword ptr [r8+r9*4+10h]
movsxd r8,r8d
Diff for ForReverse method between:
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
.NET Core 2.2.0 (CoreCLR 4.6.27110.04, CoreFX 4.6.27110.04), 64bit RyuJIT
IL_000b: sub
IL_000c: stloc.1
IL_000d: br.s IL_001e
- mov rdx,1A5F3EF7250h
+ mov rdx,1E3D7607250h
mov rdx,qword ptr [rdx]
mov ecx,dword ptr [rdx+8]
dec ecx
M00_L00:
mov r8,rdx
cmp ecx,dword ptr [r8+8]
- jae 00007ff8`0ff8348e
+ jae 00007ff8`2bdb350e
movsxd r9,ecx
mov r8d,dword ptr [r8+r9*4+10h]
movsxd r8,r8d
Diff for ForLength method between:
.NET Core 2.1.6 (CoreCLR 4.6.27019.06, CoreFX 4.6.27019.05), 64bit RyuJIT
.NET Core 2.2.0 (CoreCLR 4.6.27110.04, CoreFX 4.6.27110.04), 64bit RyuJIT
IL_0008: ldlen
IL_0009: conv.i4
IL_000a: stloc.1
- mov rdx,1E910007250h
+ mov rdx,2ACBAB97250h
mov rdx,qword ptr [rdx]
mov ecx,dword ptr [rdx+8]
IL_000b: ldc.i4.0
M00_L00:
mov r9,rdx
cmp r8d,dword ptr [r9+8]
- jae 00007ff8`0ff93491
+ jae 00007ff8`2bd73511
movsxd r10,r8d
mov r9d,dword ptr [r9+r10*4+10h]
movsxd r9,r9d