Details
Payloads
Baseline
Compare
Histogram
System.Linq.Tests.Perf_Enumerable.SelectToArray(input: Array)
Description of detection logic
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 305.5794906795206 > 289.23635689963385.
IsChangePoint: Marked as a change because one of 12/10/2022 11:25:25 PM, 12/17/2022 10:44:50 PM, 12/21/2022 9:23:17 AM, 1/13/2023 4:37:08 PM, 1/18/2023 3:20:52 PM, 1/27/2023 7:12:54 PM, 2/9/2023 12:40:40 PM, 2/14/2023 2:39:38 AM falls between 2/4/2023 10:21:07 PM and 2/14/2023 2:39:38 AM.
IsRegressionStdDev: Marked as regression because -86.58711038721272 (T) = (0 -307.2820055929849) / Math.Sqrt((2.143934505340105 / (39)) + (1.525019768723927 / (21))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (39) + (21) - 2, .025) and -0.11191851528207822 = (276.35298933306433 - 307.2820055929849) / 276.35298933306433 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.
```### Baseline Jit Disasm
```assembly
; System.Linq.Tests.Perf_Enumerable.SelectToArray(System.Linq.Tests.LinqTestData)
push rdi
push rsi
sub rsp,28
mov rsi,[rdx+8]
mov rcx,23B9A407250
mov rdx,[rcx]
test rdx,rdx
jne short M00_L00
mov rcx,offset MT_System.Func`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
call CORINFO_HELP_NEWSFAST
mov rdi,rax
mov rdx,23B9A4071B0
mov rdx,[rdx]
lea rcx,[rdi+8]
call CORINFO_HELP_ASSIGN_REF
mov rdx,7FF8AFFCAF30
mov [rdi+18],rdx
mov rcx,23B9A407250
mov rdx,rdi
call CORINFO_HELP_ASSIGN_REF
mov rdx,rdi
M00_L00:
mov rcx,rsi
call qword ptr [7FF8AFFCD000]; System.Linq.Enumerable.Select[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>, System.Func`2<Int32,Int32>)
mov rcx,rax
add rsp,28
pop rsi
pop rdi
jmp qword ptr [7FF8AFE63510]; System.Linq.Enumerable.ToArray[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>)
; Total bytes of code 127
; System.Linq.Enumerable.Select[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>, System.Func`2<Int32,Int32>)
push rdi
push rsi
push rbp
push rbx
sub rsp,28
xor eax,eax
mov [rsp+20],rax
mov rsi,rcx
mov rdi,rdx
test rsi,rsi
je near ptr M01_L07
test rdi,rdi
je near ptr M01_L08
mov rdx,rsi
mov rcx,offset MT_System.Linq.Enumerable+Iterator`1[[System.Int32, System.Private.CoreLib]]
call qword ptr [7FF8AFA5D828]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfClass(Void*, System.Object)
mov rbx,rax
test rbx,rbx
je short M01_L00
mov rcx,rbx
mov rdx,offset MT_System.Linq.Enumerable+Iterator`1[[System.Int32, System.Private.CoreLib]]
mov r8,offset MD_System.Linq.Enumerable+Iterator`1[[System.Int32, System.Private.CoreLib]].Select[[System.Int32, System.Private.CoreLib]](System.Func`2<Int32,Int32>)
call CORINFO_HELP_VIRTUAL_FUNC_PTR
mov rcx,rbx
mov rdx,rdi
call rax
jmp near ptr M01_L06
M01_L00:
mov rdx,rsi
mov rcx,offset MT_System.Collections.Generic.IList`1[[System.Int32, System.Private.CoreLib]]
call qword ptr [7FF8AFA5D810]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(Void*, System.Object)
mov rbx,rax
test rbx,rbx
je near ptr M01_L04
mov rdx,rsi
mov rcx,offset MT_System.Int32[]
call qword ptr [7FF8AFA5D7F8]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfAny(Void*, System.Object)
mov rbp,rax
test rbp,rbp
je short M01_L02
cmp dword ptr [rbp+8],0
je short M01_L01
mov rcx,offset MT_System.Linq.Enumerable+SelectArrayIterator`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
call CORINFO_HELP_NEWSFAST
mov rsi,rax
call CORINFO_HELP_GETCURRENTMANAGEDTHREADID
mov [rsi+8],eax
lea rcx,[rsi+18]
mov rdx,rbp
call CORINFO_HELP_ASSIGN_REF
lea rcx,[rsi+20]
mov rdx,rdi
call CORINFO_HELP_ASSIGN_REF
mov rax,rsi
jmp near ptr M01_L06
M01_L01:
mov rcx,7FF8AFCA7C08
mov edx,4
call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
mov rdx,23B9A401F48
mov rax,[rdx]
jmp near ptr M01_L06
M01_L02:
mov rdx,rsi
mov rcx,offset MT_System.Collections.Generic.List`1[[System.Int32, System.Private.CoreLib]]
call qword ptr [7FF8AFA5D828]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfClass(Void*, System.Object)
mov rsi,rax
test rsi,rsi
je short M01_L03
mov rcx,offset MT_System.Linq.Enumerable+SelectListIterator`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
call CORINFO_HELP_NEWSFAST
mov rbx,rax
call CORINFO_HELP_GETCURRENTMANAGEDTHREADID
mov [rbx+8],eax
lea rcx,[rbx+18]
mov rdx,rsi
call CORINFO_HELP_ASSIGN_REF
lea rcx,[rbx+20]
mov rdx,rdi
call CORINFO_HELP_ASSIGN_REF
mov rax,rbx
jmp near ptr M01_L06
M01_L03:
mov rcx,offset MT_System.Linq.Enumerable+SelectIListIterator`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
call CORINFO_HELP_NEWSFAST
mov rsi,rax
call CORINFO_HELP_GETCURRENTMANAGEDTHREADID
mov [rsi+8],eax
lea rcx,[rsi+18]
mov rdx,rbx
call CORINFO_HELP_ASSIGN_REF
lea rcx,[rsi+20]
mov rdx,rdi
call CORINFO_HELP_ASSIGN_REF
mov rax,rsi
jmp short M01_L06
M01_L04:
mov rdx,rsi
mov rcx,offset MT_System.Linq.IPartition`1[[System.Int32, System.Private.CoreLib]]
call qword ptr [7FF8AFA5D810]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(Void*, System.Object)
test rax,rax
je short M01_L05
xor r8d,r8d
mov [rsp+20],r8
lea r8,[rsp+20]
mov rcx,rdi
mov rdx,rax
call qword ptr [7FF8AFFCD0D8]
cmp qword ptr [rsp+20],0
je short M01_L05
mov rax,[rsp+20]
jmp short M01_L06
M01_L05:
mov rcx,offset MT_System.Linq.Enumerable+SelectEnumerableIterator`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
call CORINFO_HELP_NEWSFAST
mov rbx,rax
call CORINFO_HELP_GETCURRENTMANAGEDTHREADID
mov [rbx+8],eax
lea rcx,[rbx+18]
mov rdx,rsi
call CORINFO_HELP_ASSIGN_REF
lea rcx,[rbx+20]
mov rdx,rdi
call CORINFO_HELP_ASSIGN_REF
mov rax,rbx
M01_L06:
add rsp,28
pop rbx
pop rbp
pop rsi
pop rdi
ret
M01_L07:
mov ecx,10
call qword ptr [7FF8AFDD1798]
int 3
M01_L08:
mov ecx,0F
call qword ptr [7FF8AFDD1798]
int 3
; Total bytes of code 557
; System.Linq.Enumerable.ToArray[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>)
push rsi
sub rsp,20
mov rsi,rcx
test rsi,rsi
je short M02_L01
mov rdx,rsi
mov rcx,offset MT_System.Linq.IIListProvider`1[[System.Int32, System.Private.CoreLib]]
call qword ptr [7FF8AFA5D810]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(Void*, System.Object)
test rax,rax
jne short M02_L00
mov rcx,rsi
add rsp,20
pop rsi
jmp qword ptr [7FF8AFE63E28]
M02_L00:
mov rcx,rax
mov r11,7FF8AF8B0598
add rsp,20
pop rsi
jmp qword ptr [r11]
M02_L01:
mov ecx,10
call qword ptr [7FF8AFDD1798]
int 3
; Total bytes of code 84
Compare Jit Disasm
; System.Linq.Tests.Perf_Enumerable.SelectToArray(System.Linq.Tests.LinqTestData)
push rdi
push rsi
sub rsp,28
mov rsi,[rdx+8]
mov rcx,15241807250
mov rdx,[rcx]
test rdx,rdx
jne short M00_L00
mov rcx,offset MT_System.Func`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
call CORINFO_HELP_NEWSFAST
mov rdi,rax
mov rdx,152418071B0
mov rdx,[rdx]
lea rcx,[rdi+8]
call CORINFO_HELP_ASSIGN_REF
mov rdx,7FFA0D18AF30
mov [rdi+18],rdx
mov rcx,15241807250
mov rdx,rdi
call CORINFO_HELP_ASSIGN_REF
mov rdx,rdi
M00_L00:
mov rcx,rsi
call qword ptr [7FFA0D18D000]; System.Linq.Enumerable.Select[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>, System.Func`2<Int32,Int32>)
mov rcx,rax
add rsp,28
pop rsi
pop rdi
jmp qword ptr [7FFA0D023510]; System.Linq.Enumerable.ToArray[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>)
; Total bytes of code 127
; System.Linq.Enumerable.Select[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>, System.Func`2<Int32,Int32>)
push rdi
push rsi
push rbp
push rbx
sub rsp,28
xor eax,eax
mov [rsp+20],rax
mov rsi,rcx
mov rdi,rdx
test rsi,rsi
je near ptr M01_L07
test rdi,rdi
je near ptr M01_L08
mov rdx,rsi
mov rcx,offset MT_System.Linq.Enumerable+Iterator`1[[System.Int32, System.Private.CoreLib]]
call qword ptr [7FFA0CC1D828]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfClass(Void*, System.Object)
mov rbx,rax
test rbx,rbx
je short M01_L00
mov rcx,rbx
mov rdx,offset MT_System.Linq.Enumerable+Iterator`1[[System.Int32, System.Private.CoreLib]]
mov r8,offset MD_System.Linq.Enumerable+Iterator`1[[System.Int32, System.Private.CoreLib]].Select[[System.Int32, System.Private.CoreLib]](System.Func`2<Int32,Int32>)
call CORINFO_HELP_VIRTUAL_FUNC_PTR
mov rcx,rbx
mov rdx,rdi
call rax
jmp near ptr M01_L06
M01_L00:
mov rdx,rsi
mov rcx,offset MT_System.Collections.Generic.IList`1[[System.Int32, System.Private.CoreLib]]
call qword ptr [7FFA0CC1D810]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(Void*, System.Object)
mov rbx,rax
test rbx,rbx
je near ptr M01_L04
mov rdx,rsi
mov rcx,offset MT_System.Int32[]
call qword ptr [7FFA0CC1D7F8]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfAny(Void*, System.Object)
mov rbp,rax
test rbp,rbp
je short M01_L02
cmp dword ptr [rbp+8],0
je short M01_L01
mov rcx,offset MT_System.Linq.Enumerable+SelectArrayIterator`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
call CORINFO_HELP_NEWSFAST
mov rsi,rax
call CORINFO_HELP_GETCURRENTMANAGEDTHREADID
mov [rsi+8],eax
lea rcx,[rsi+18]
mov rdx,rbp
call CORINFO_HELP_ASSIGN_REF
lea rcx,[rsi+20]
mov rdx,rdi
call CORINFO_HELP_ASSIGN_REF
mov rax,rsi
jmp near ptr M01_L06
M01_L01:
mov rcx,7FFA0CE68118
mov edx,4
call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
mov rdx,15241801F58
mov rax,[rdx]
jmp near ptr M01_L06
M01_L02:
mov rdx,rsi
mov rcx,offset MT_System.Collections.Generic.List`1[[System.Int32, System.Private.CoreLib]]
call qword ptr [7FFA0CC1D828]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfClass(Void*, System.Object)
mov rsi,rax
test rsi,rsi
je short M01_L03
mov rcx,offset MT_System.Linq.Enumerable+SelectListIterator`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
call CORINFO_HELP_NEWSFAST
mov rbx,rax
call CORINFO_HELP_GETCURRENTMANAGEDTHREADID
mov [rbx+8],eax
lea rcx,[rbx+18]
mov rdx,rsi
call CORINFO_HELP_ASSIGN_REF
lea rcx,[rbx+20]
mov rdx,rdi
call CORINFO_HELP_ASSIGN_REF
mov rax,rbx
jmp near ptr M01_L06
M01_L03:
mov rcx,offset MT_System.Linq.Enumerable+SelectIListIterator`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
call CORINFO_HELP_NEWSFAST
mov rsi,rax
call CORINFO_HELP_GETCURRENTMANAGEDTHREADID
mov [rsi+8],eax
lea rcx,[rsi+18]
mov rdx,rbx
call CORINFO_HELP_ASSIGN_REF
lea rcx,[rsi+20]
mov rdx,rdi
call CORINFO_HELP_ASSIGN_REF
mov rax,rsi
jmp short M01_L06
M01_L04:
mov rdx,rsi
mov rcx,offset MT_System.Linq.IPartition`1[[System.Int32, System.Private.CoreLib]]
call qword ptr [7FFA0CC1D810]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(Void*, System.Object)
test rax,rax
je short M01_L05
xor r8d,r8d
mov [rsp+20],r8
lea r8,[rsp+20]
mov rcx,rdi
mov rdx,rax
call qword ptr [7FFA0D18D0D8]
cmp qword ptr [rsp+20],0
je short M01_L05
mov rax,[rsp+20]
jmp short M01_L06
M01_L05:
mov rcx,offset MT_System.Linq.Enumerable+SelectEnumerableIterator`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
call CORINFO_HELP_NEWSFAST
mov rbx,rax
call CORINFO_HELP_GETCURRENTMANAGEDTHREADID
mov [rbx+8],eax
lea rcx,[rbx+18]
mov rdx,rsi
call CORINFO_HELP_ASSIGN_REF
lea rcx,[rbx+20]
mov rdx,rdi
call CORINFO_HELP_ASSIGN_REF
mov rax,rbx
M01_L06:
add rsp,28
pop rbx
pop rbp
pop rsi
pop rdi
ret
M01_L07:
mov ecx,10
call qword ptr [7FFA0CF91798]
int 3
M01_L08:
mov ecx,0F
call qword ptr [7FFA0CF91798]
int 3
; Total bytes of code 557
; System.Linq.Enumerable.ToArray[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>)
push rsi
sub rsp,20
mov rsi,rcx
test rsi,rsi
je short M02_L01
mov rdx,rsi
mov rcx,offset MT_System.Linq.IIListProvider`1[[System.Int32, System.Private.CoreLib]]
call qword ptr [7FFA0CC1D810]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(Void*, System.Object)
test rax,rax
jne short M02_L00
mov rcx,rsi
add rsp,20
pop rsi
jmp qword ptr [7FFA0D023E28]
M02_L00:
mov rcx,rax
mov r11,7FFA0CA705A0
add rsp,20
pop rsi
jmp qword ptr [r11]
M02_L01:
mov ecx,10
call qword ptr [7FFA0CF91798]
int 3
; Total bytes of code 84
System.Linq.Tests.Perf_Enumerable.SelectToArray(input: IList)
Description of detection logic
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 535.1167007579127 > 497.9497986035288.
IsChangePoint: Marked as a change because one of 12/10/2022 11:25:25 PM, 1/13/2023 4:37:08 PM, 1/18/2023 3:20:52 PM, 1/27/2023 7:12:54 PM, 2/9/2023 12:40:40 PM, 2/14/2023 2:39:38 AM falls between 2/4/2023 10:21:07 PM and 2/14/2023 2:39:38 AM.
IsRegressionStdDev: Marked as regression because -51.90095249357905 (T) = (0 -532.1641996998612) / Math.Sqrt((36.43729423330508 / (39)) + (7.140647846614348 / (21))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (39) + (21) - 2, .025) and -0.12371590189233013 = (473.57539285837305 - 532.1641996998612) / 473.57539285837305 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.
```### Baseline Jit Disasm
```assembly
; System.Linq.Tests.Perf_Enumerable.SelectToArray(System.Linq.Tests.LinqTestData)
push rdi
push rsi
sub rsp,28
mov rsi,[rdx+8]
mov rcx,29762407250
mov rdx,[rcx]
test rdx,rdx
jne short M00_L00
mov rcx,offset MT_System.Func`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
call CORINFO_HELP_NEWSFAST
mov rdi,rax
mov rdx,297624071B0
mov rdx,[rdx]
lea rcx,[rdi+8]
call CORINFO_HELP_ASSIGN_REF
mov rdx,7FF8AFFBC1F8
mov [rdi+18],rdx
mov rcx,29762407250
mov rdx,rdi
call CORINFO_HELP_ASSIGN_REF
mov rdx,rdi
M00_L00:
mov rcx,rsi
call qword ptr [7FF8AFFBD2B8]; System.Linq.Enumerable.Select[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>, System.Func`2<Int32,Int32>)
mov rcx,rax
add rsp,28
pop rsi
pop rdi
jmp qword ptr [7FF8AFE53510]; System.Linq.Enumerable.ToArray[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>)
; Total bytes of code 127
; System.Linq.Enumerable.Select[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>, System.Func`2<Int32,Int32>)
push rdi
push rsi
push rbp
push rbx
sub rsp,28
xor eax,eax
mov [rsp+20],rax
mov rsi,rcx
mov rdi,rdx
test rsi,rsi
je near ptr M01_L07
test rdi,rdi
je near ptr M01_L08
mov rdx,rsi
mov rcx,offset MT_System.Linq.Enumerable+Iterator`1[[System.Int32, System.Private.CoreLib]]
call qword ptr [7FF8AFA4D828]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfClass(Void*, System.Object)
mov rbx,rax
test rbx,rbx
je short M01_L00
mov rcx,rbx
mov rdx,offset MT_System.Linq.Enumerable+Iterator`1[[System.Int32, System.Private.CoreLib]]
mov r8,offset MD_System.Linq.Enumerable+Iterator`1[[System.Int32, System.Private.CoreLib]].Select[[System.Int32, System.Private.CoreLib]](System.Func`2<Int32,Int32>)
call CORINFO_HELP_VIRTUAL_FUNC_PTR
mov rcx,rbx
mov rdx,rdi
call rax
jmp near ptr M01_L06
M01_L00:
mov rdx,rsi
mov rcx,offset MT_System.Collections.Generic.IList`1[[System.Int32, System.Private.CoreLib]]
call qword ptr [7FF8AFA4D810]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(Void*, System.Object)
mov rbx,rax
test rbx,rbx
je near ptr M01_L04
mov rdx,rsi
mov rcx,offset MT_System.Int32[]
call qword ptr [7FF8AFA4D7F8]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfAny(Void*, System.Object)
mov rbp,rax
test rbp,rbp
je short M01_L02
cmp dword ptr [rbp+8],0
je short M01_L01
mov rcx,offset MT_System.Linq.Enumerable+SelectArrayIterator`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
call CORINFO_HELP_NEWSFAST
mov rsi,rax
call CORINFO_HELP_GETCURRENTMANAGEDTHREADID
mov [rsi+8],eax
lea rcx,[rsi+18]
mov rdx,rbp
call CORINFO_HELP_ASSIGN_REF
lea rcx,[rsi+20]
mov rdx,rdi
call CORINFO_HELP_ASSIGN_REF
mov rax,rsi
jmp near ptr M01_L06
M01_L01:
mov rcx,7FF8AFC97C08
mov edx,4
call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
mov rdx,29762401F50
mov rax,[rdx]
jmp near ptr M01_L06
M01_L02:
mov rdx,rsi
mov rcx,offset MT_System.Collections.Generic.List`1[[System.Int32, System.Private.CoreLib]]
call qword ptr [7FF8AFA4D828]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfClass(Void*, System.Object)
mov rsi,rax
test rsi,rsi
je short M01_L03
mov rcx,offset MT_System.Linq.Enumerable+SelectListIterator`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
call CORINFO_HELP_NEWSFAST
mov rbx,rax
call CORINFO_HELP_GETCURRENTMANAGEDTHREADID
mov [rbx+8],eax
lea rcx,[rbx+18]
mov rdx,rsi
call CORINFO_HELP_ASSIGN_REF
lea rcx,[rbx+20]
mov rdx,rdi
call CORINFO_HELP_ASSIGN_REF
mov rax,rbx
jmp near ptr M01_L06
M01_L03:
mov rcx,offset MT_System.Linq.Enumerable+SelectIListIterator`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
call CORINFO_HELP_NEWSFAST
mov rsi,rax
call CORINFO_HELP_GETCURRENTMANAGEDTHREADID
mov [rsi+8],eax
lea rcx,[rsi+18]
mov rdx,rbx
call CORINFO_HELP_ASSIGN_REF
lea rcx,[rsi+20]
mov rdx,rdi
call CORINFO_HELP_ASSIGN_REF
mov rax,rsi
jmp short M01_L06
M01_L04:
mov rdx,rsi
mov rcx,offset MT_System.Linq.IPartition`1[[System.Int32, System.Private.CoreLib]]
call qword ptr [7FF8AFA4D810]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(Void*, System.Object)
test rax,rax
je short M01_L05
xor r8d,r8d
mov [rsp+20],r8
lea r8,[rsp+20]
mov rcx,rdi
mov rdx,rax
call qword ptr [7FF8AFFBD390]
cmp qword ptr [rsp+20],0
je short M01_L05
mov rax,[rsp+20]
jmp short M01_L06
M01_L05:
mov rcx,offset MT_System.Linq.Enumerable+SelectEnumerableIterator`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
call CORINFO_HELP_NEWSFAST
mov rbx,rax
call CORINFO_HELP_GETCURRENTMANAGEDTHREADID
mov [rbx+8],eax
lea rcx,[rbx+18]
mov rdx,rsi
call CORINFO_HELP_ASSIGN_REF
lea rcx,[rbx+20]
mov rdx,rdi
call CORINFO_HELP_ASSIGN_REF
mov rax,rbx
M01_L06:
add rsp,28
pop rbx
pop rbp
pop rsi
pop rdi
ret
M01_L07:
mov ecx,10
call qword ptr [7FF8AFDC1798]
int 3
M01_L08:
mov ecx,0F
call qword ptr [7FF8AFDC1798]
int 3
; Total bytes of code 557
; System.Linq.Enumerable.ToArray[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>)
push rsi
sub rsp,20
mov rsi,rcx
test rsi,rsi
je short M02_L01
mov rdx,rsi
mov rcx,offset MT_System.Linq.IIListProvider`1[[System.Int32, System.Private.CoreLib]]
call qword ptr [7FF8AFA4D810]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(Void*, System.Object)
test rax,rax
jne short M02_L00
mov rcx,rsi
add rsp,20
pop rsi
jmp qword ptr [7FF8AFE53E28]
M02_L00:
mov rcx,rax
mov r11,7FF8AF8A05A8
add rsp,20
pop rsi
jmp qword ptr [r11]
M02_L01:
mov ecx,10
call qword ptr [7FF8AFDC1798]
int 3
; Total bytes of code 84
Compare Jit Disasm
; System.Linq.Tests.Perf_Enumerable.SelectToArray(System.Linq.Tests.LinqTestData)
push rdi
push rsi
sub rsp,28
mov rsi,[rdx+8]
mov rcx,21DC6007250
mov rdx,[rcx]
test rdx,rdx
jne short M00_L00
mov rcx,offset MT_System.Func`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
call CORINFO_HELP_NEWSFAST
mov rdi,rax
mov rdx,21DC60071B0
mov rdx,[rdx]
lea rcx,[rdi+8]
call CORINFO_HELP_ASSIGN_REF
mov rdx,7FFA0D18C1F8
mov [rdi+18],rdx
mov rcx,21DC6007250
mov rdx,rdi
call CORINFO_HELP_ASSIGN_REF
mov rdx,rdi
M00_L00:
mov rcx,rsi
call qword ptr [7FFA0D18D2B8]; System.Linq.Enumerable.Select[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>, System.Func`2<Int32,Int32>)
mov rcx,rax
add rsp,28
pop rsi
pop rdi
jmp qword ptr [7FFA0D023510]; System.Linq.Enumerable.ToArray[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>)
; Total bytes of code 127
; System.Linq.Enumerable.Select[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>, System.Func`2<Int32,Int32>)
push rdi
push rsi
push rbp
push rbx
sub rsp,28
xor eax,eax
mov [rsp+20],rax
mov rsi,rcx
mov rdi,rdx
test rsi,rsi
je near ptr M01_L07
test rdi,rdi
je near ptr M01_L08
mov rdx,rsi
mov rcx,offset MT_System.Linq.Enumerable+Iterator`1[[System.Int32, System.Private.CoreLib]]
call qword ptr [7FFA0CC1D828]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfClass(Void*, System.Object)
mov rbx,rax
test rbx,rbx
je short M01_L00
mov rcx,rbx
mov rdx,offset MT_System.Linq.Enumerable+Iterator`1[[System.Int32, System.Private.CoreLib]]
mov r8,offset MD_System.Linq.Enumerable+Iterator`1[[System.Int32, System.Private.CoreLib]].Select[[System.Int32, System.Private.CoreLib]](System.Func`2<Int32,Int32>)
call CORINFO_HELP_VIRTUAL_FUNC_PTR
mov rcx,rbx
mov rdx,rdi
call rax
jmp near ptr M01_L06
M01_L00:
mov rdx,rsi
mov rcx,offset MT_System.Collections.Generic.IList`1[[System.Int32, System.Private.CoreLib]]
call qword ptr [7FFA0CC1D810]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(Void*, System.Object)
mov rbx,rax
test rbx,rbx
je near ptr M01_L04
mov rdx,rsi
mov rcx,offset MT_System.Int32[]
call qword ptr [7FFA0CC1D7F8]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfAny(Void*, System.Object)
mov rbp,rax
test rbp,rbp
je short M01_L02
cmp dword ptr [rbp+8],0
je short M01_L01
mov rcx,offset MT_System.Linq.Enumerable+SelectArrayIterator`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
call CORINFO_HELP_NEWSFAST
mov rsi,rax
call CORINFO_HELP_GETCURRENTMANAGEDTHREADID
mov [rsi+8],eax
lea rcx,[rsi+18]
mov rdx,rbp
call CORINFO_HELP_ASSIGN_REF
lea rcx,[rsi+20]
mov rdx,rdi
call CORINFO_HELP_ASSIGN_REF
mov rax,rsi
jmp near ptr M01_L06
M01_L01:
mov rcx,7FFA0CE68118
mov edx,4
call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
mov rdx,21DC6001F60
mov rax,[rdx]
jmp near ptr M01_L06
M01_L02:
mov rdx,rsi
mov rcx,offset MT_System.Collections.Generic.List`1[[System.Int32, System.Private.CoreLib]]
call qword ptr [7FFA0CC1D828]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfClass(Void*, System.Object)
mov rsi,rax
test rsi,rsi
je short M01_L03
mov rcx,offset MT_System.Linq.Enumerable+SelectListIterator`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
call CORINFO_HELP_NEWSFAST
mov rbx,rax
call CORINFO_HELP_GETCURRENTMANAGEDTHREADID
mov [rbx+8],eax
lea rcx,[rbx+18]
mov rdx,rsi
call CORINFO_HELP_ASSIGN_REF
lea rcx,[rbx+20]
mov rdx,rdi
call CORINFO_HELP_ASSIGN_REF
mov rax,rbx
jmp near ptr M01_L06
M01_L03:
mov rcx,offset MT_System.Linq.Enumerable+SelectIListIterator`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
call CORINFO_HELP_NEWSFAST
mov rsi,rax
call CORINFO_HELP_GETCURRENTMANAGEDTHREADID
mov [rsi+8],eax
lea rcx,[rsi+18]
mov rdx,rbx
call CORINFO_HELP_ASSIGN_REF
lea rcx,[rsi+20]
mov rdx,rdi
call CORINFO_HELP_ASSIGN_REF
mov rax,rsi
jmp short M01_L06
M01_L04:
mov rdx,rsi
mov rcx,offset MT_System.Linq.IPartition`1[[System.Int32, System.Private.CoreLib]]
call qword ptr [7FFA0CC1D810]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(Void*, System.Object)
test rax,rax
je short M01_L05
xor r8d,r8d
mov [rsp+20],r8
lea r8,[rsp+20]
mov rcx,rdi
mov rdx,rax
call qword ptr [7FFA0D18D390]
cmp qword ptr [rsp+20],0
je short M01_L05
mov rax,[rsp+20]
jmp short M01_L06
M01_L05:
mov rcx,offset MT_System.Linq.Enumerable+SelectEnumerableIterator`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
call CORINFO_HELP_NEWSFAST
mov rbx,rax
call CORINFO_HELP_GETCURRENTMANAGEDTHREADID
mov [rbx+8],eax
lea rcx,[rbx+18]
mov rdx,rsi
call CORINFO_HELP_ASSIGN_REF
lea rcx,[rbx+20]
mov rdx,rdi
call CORINFO_HELP_ASSIGN_REF
mov rax,rbx
M01_L06:
add rsp,28
pop rbx
pop rbp
pop rsi
pop rdi
ret
M01_L07:
mov ecx,10
call qword ptr [7FFA0CF91798]
int 3
M01_L08:
mov ecx,0F
call qword ptr [7FFA0CF91798]
int 3
; Total bytes of code 557
; System.Linq.Enumerable.ToArray[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>)
push rsi
sub rsp,20
mov rsi,rcx
test rsi,rsi
je short M02_L01
mov rdx,rsi
mov rcx,offset MT_System.Linq.IIListProvider`1[[System.Int32, System.Private.CoreLib]]
call qword ptr [7FFA0CC1D810]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(Void*, System.Object)
test rax,rax
jne short M02_L00
mov rcx,rsi
add rsp,20
pop rsi
jmp qword ptr [7FFA0D023E28]
M02_L00:
mov rcx,rax
mov r11,7FFA0CA705B0
add rsp,20
pop rsi
jmp qword ptr [r11]
M02_L01:
mov ecx,10
call qword ptr [7FFA0CF91798]
int 3
; Total bytes of code 84
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Linq.Tests.Perf_Enumerable
Test Report
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
Payloads
Baseline
Compare
Details
Payloads
Baseline
Compare
Histogram
System.Linq.Tests.Perf_Enumerable.SelectToArray(input: Array)
Description of detection logic
Compare Jit Disasm
System.Linq.Tests.Perf_Enumerable.SelectToArray(input: IList)
Description of detection logic
Compare Jit Disasm
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Collections.CtorGivenSize<String>
Test Report
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
Payloads
Baseline
Compare
Details
Payloads
Baseline
Compare
Histogram
System.Collections.CtorGivenSize<String>.ConcurrentDictionary(Size: 512)
Description of detection logic
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Collections.IterateFor<String>
Test Report
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
Payloads
Baseline
Compare
Details
Payloads
Baseline
Compare
Histogram
System.Collections.IterateFor<String>.ImmutableList(Size: 512)
Description of detection logic
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Collections.TryAddDefaultSize<Int32>
Test Report
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
Payloads
Baseline
Compare
Details
Payloads
Baseline
Compare
Histogram
System.Collections.TryAddDefaultSize<Int32>.ConcurrentDictionary(Count: 512)
Description of detection logic
Description of detection logic
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository