-
Notifications
You must be signed in to change notification settings - Fork 3
Closed
Description
Run Information
| Architecture | x64 |
|---|---|
| OS | Windows 10.0.18362 |
| Baseline | 6123cb00bbec8ae3500c970890f5b0efcf7950e8 |
| Compare | ffbcb8336ac67496b0565112f663f74fda6cac34 |
| Diff | Diff |
Regressions in System.Linq.Tests.Perf_Enumerable
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
|---|---|---|---|---|---|---|---|---|---|---|
| Average - Duration of single invocation | 492.47 ns | 523.25 ns | 1.06 | 0.01 | False | Trace | Trace | |||
| All_AllElementsMatch - Duration of single invocation | 679.63 ns | 740.57 ns | 1.09 | 0.00 | False | Trace | Trace | |||
| Reverse - Duration of single invocation | 1.21 μs | 1.27 μs | 1.06 | 0.04 | False | Trace | Trace |
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
Payloads
git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Linq.Tests.Perf_Enumerable*'Details
Payloads
Histogram
System.Linq.Tests.Perf_Enumerable.Average(input: IEnumerable)
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 523.2482156417082 > 517.2008197752319.
IsChangePoint: Marked as a change because one of 1/11/2023 2:37:52 AM, 3/6/2023 11:14:52 AM, 3/14/2023 5:57:45 AM falls between 3/5/2023 5:50:49 PM and 3/14/2023 5:57:45 AM.
IsRegressionStdDev: Marked as regression because -113.1645681887664 (T) = (0 -523.8343236583324) / Math.Sqrt((0.7620049348303322 / (24)) + (1.5429243580436054 / (36))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (36) - 2, .025) and -0.06270857635839062 = (492.923775446857 - 523.8343236583324) / 492.923775446857 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.Average(System.Linq.Tests.LinqTestData)
mov rcx,[rdx+8]
jmp qword ptr [7FFCB18B7BE8]; System.Linq.Enumerable.Average(System.Collections.Generic.IEnumerable`1<Int32>)
; Total bytes of code 10
; System.Linq.Enumerable.Average(System.Collections.Generic.IEnumerable`1<Int32>)
push rbp
push rdi
push rsi
push rbx
sub rsp,68
vzeroupper
lea rbp,[rsp+80]
mov [rbp-60],rsp
test rcx,rcx
je near ptr M01_L12
mov r11,offset MT_System.Int32[]
cmp [rcx],r11
jne short M01_L00
lea r11,[rcx+10]
mov eax,[rcx+8]
jmp short M01_L01
xchg ax,ax
M01_L00:
mov r11,offset MT_System.Collections.Generic.List`1[[System.Int32, System.Private.CoreLib]]
cmp [rcx],r11
jne near ptr M01_L06
mov r11,[rcx+8]
mov eax,[rcx+10]
test r11,r11
je near ptr M01_L13
cmp [r11+8],eax
jb near ptr M01_L15
add r11,10
M01_L01:
test eax,eax
je near ptr M01_L14
xor ecx,ecx
xor edx,edx
cmp eax,8
jl short M01_L03
vxorps ymm0,ymm0,ymm0
M01_L02:
cmp edx,eax
ja near ptr M01_L15
mov ecx,edx
lea rcx,[r11+rcx*4]
mov r8d,eax
sub r8d,edx
cmp r8d,8
jl near ptr M01_L16
vmovups ymm1,[rcx]
vmovaps ymm2,ymm1
vpmovsxdq ymm2,xmm2
vpaddq ymm0,ymm0,ymm2
vextractf128 xmm1,ymm1,1
vpmovsxdq ymm1,xmm1
vpaddq ymm0,ymm0,ymm1
add edx,8
lea ecx,[rax-8]
cmp edx,ecx
jle short M01_L02
vmovups [rbp-50],ymm0
mov rcx,[rbp-50]
add rcx,[rbp-48]
add rcx,[rbp-40]
add rcx,[rbp-38]
M01_L03:
cmp edx,eax
jae short M01_L05
M01_L04:
cmp edx,eax
jae near ptr M01_L17
mov r8d,edx
movsxd r8,dword ptr [r11+r8*4]
add rcx,r8
inc edx
cmp edx,eax
jb short M01_L04
M01_L05:
vxorps xmm0,xmm0,xmm0
vcvtsi2sd xmm0,xmm0,rcx
vxorps xmm1,xmm1,xmm1
vcvtsi2sd xmm1,xmm1,eax
vdivsd xmm0,xmm0,xmm1
vzeroupper
add rsp,68
pop rbx
pop rsi
pop rdi
pop rbp
ret
M01_L06:
mov r11,7FFCB14D05D8
call qword ptr [r11]
mov rsi,rax
mov [rbp-58],rsi
mov rcx,rsi
mov r11,7FFCB14D05E0
call qword ptr [r11]
test eax,eax
je near ptr M01_L10
mov rcx,rsi
mov r11,7FFCB14D05E8
call qword ptr [r11]
movsxd rdi,eax
mov ebx,1
mov rcx,rsi
mov r11,7FFCB14D05F0
call qword ptr [r11]
test eax,eax
je short M01_L08
M01_L07:
mov rcx,rsi
mov r11,7FFCB14D05F8
call qword ptr [r11]
movsxd rcx,eax
add rdi,rcx
jo short M01_L09
inc rbx
mov rcx,rsi
mov r11,7FFCB14D05F0
call qword ptr [r11]
test eax,eax
jne short M01_L07
M01_L08:
vxorps xmm0,xmm0,xmm0
vcvtsi2sd xmm0,xmm0,rdi
vxorps xmm1,xmm1,xmm1
vcvtsi2sd xmm1,xmm1,rbx
vdivsd xmm0,xmm0,xmm1
vmovsd qword ptr [rbp-20],xmm0
jmp short M01_L11
M01_L09:
call CORINFO_HELP_OVERFLOW
M01_L10:
call qword ptr [7FFCB19F37F8]
int 3
M01_L11:
mov rcx,rsi
mov r11,7FFCB14D0600
call qword ptr [r11]
vmovsd xmm0,qword ptr [rbp-20]
vzeroupper
add rsp,68
pop rbx
pop rsi
pop rdi
pop rbp
ret
M01_L12:
mov ecx,10
call qword ptr [7FFCB19F3798]
int 3
M01_L13:
test eax,eax
jne short M01_L15
xor r11d,r11d
xor eax,eax
jmp near ptr M01_L01
M01_L14:
call qword ptr [7FFCB19F37F8]
int 3
M01_L15:
call qword ptr [7FFCB19BF4E0]
int 3
M01_L16:
mov ecx,6
call qword ptr [7FFCB19BF828]
int 3
M01_L17:
call CORINFO_HELP_RNGCHKFAIL
int 3
push rbp
push rdi
push rsi
push rbx
sub rsp,28
vzeroupper
mov rbp,[rcx+20]
mov [rsp+20],rbp
lea rbp,[rbp+80]
cmp qword ptr [rbp-58],0
je short M01_L18
mov rcx,[rbp-58]
mov r11,7FFCB14D0600
call qword ptr [r11]
M01_L18:
nop
vzeroupper
add rsp,28
pop rbx
pop rsi
pop rdi
pop rbp
ret
; Total bytes of code 613Compare Jit Disasm
; System.Linq.Tests.Perf_Enumerable.Average(System.Linq.Tests.LinqTestData)
mov rcx,[rdx+8]
jmp qword ptr [7FFD0EFD7120]; System.Linq.Enumerable.Average(System.Collections.Generic.IEnumerable`1<Int32>)
; Total bytes of code 10; System.Linq.Enumerable.Average(System.Collections.Generic.IEnumerable`1<Int32>)
push rbp
push rdi
push rsi
push rbx
sub rsp,68
vzeroupper
lea rbp,[rsp+80]
mov [rbp-60],rsp
test rcx,rcx
je near ptr M01_L12
mov r11,offset MT_System.Int32[]
cmp [rcx],r11
jne short M01_L00
lea r11,[rcx+10]
mov eax,[rcx+8]
jmp short M01_L01
xchg ax,ax
M01_L00:
mov r11,offset MT_System.Collections.Generic.List`1[[System.Int32, System.Private.CoreLib]]
cmp [rcx],r11
jne near ptr M01_L06
mov r11,[rcx+8]
mov eax,[rcx+10]
test r11,r11
je near ptr M01_L13
cmp [r11+8],eax
jb near ptr M01_L15
add r11,10
M01_L01:
test eax,eax
je near ptr M01_L14
xor ecx,ecx
xor edx,edx
cmp eax,8
jl short M01_L03
vxorps ymm0,ymm0,ymm0
M01_L02:
cmp edx,eax
ja near ptr M01_L15
mov ecx,edx
lea rcx,[r11+rcx*4]
mov r8d,eax
sub r8d,edx
cmp r8d,8
jl near ptr M01_L16
vmovups ymm1,[rcx]
vmovaps ymm2,ymm1
vpmovsxdq ymm2,xmm2
vpaddq ymm0,ymm0,ymm2
vextractf128 xmm1,ymm1,1
vpmovsxdq ymm1,xmm1
vpaddq ymm0,ymm0,ymm1
add edx,8
lea ecx,[rax-8]
cmp edx,ecx
jle short M01_L02
vmovups [rbp-50],ymm0
mov rcx,[rbp-50]
add rcx,[rbp-48]
add rcx,[rbp-40]
add rcx,[rbp-38]
M01_L03:
cmp edx,eax
jae short M01_L05
M01_L04:
cmp edx,eax
jae near ptr M01_L17
mov r8d,edx
movsxd r8,dword ptr [r11+r8*4]
add rcx,r8
inc edx
cmp edx,eax
jb short M01_L04
M01_L05:
vxorps xmm0,xmm0,xmm0
vcvtsi2sd xmm0,xmm0,rcx
vxorps xmm1,xmm1,xmm1
vcvtsi2sd xmm1,xmm1,eax
vdivsd xmm0,xmm0,xmm1
vzeroupper
add rsp,68
pop rbx
pop rsi
pop rdi
pop rbp
ret
M01_L06:
mov r11,7FFD0EBF05C8
call qword ptr [r11]
mov rsi,rax
mov [rbp-58],rsi
mov rcx,rsi
mov r11,7FFD0EBF05D0
call qword ptr [r11]
test eax,eax
je near ptr M01_L10
mov rcx,rsi
mov r11,7FFD0EBF05D8
call qword ptr [r11]
movsxd rdi,eax
mov ebx,1
mov rcx,rsi
mov r11,7FFD0EBF05E0
call qword ptr [r11]
test eax,eax
je short M01_L08
M01_L07:
mov rcx,rsi
mov r11,7FFD0EBF05E8
call qword ptr [r11]
movsxd rcx,eax
add rdi,rcx
jo short M01_L09
inc rbx
mov rcx,rsi
mov r11,7FFD0EBF05E0
call qword ptr [r11]
test eax,eax
jne short M01_L07
M01_L08:
vxorps xmm0,xmm0,xmm0
vcvtsi2sd xmm0,xmm0,rdi
vxorps xmm1,xmm1,xmm1
vcvtsi2sd xmm1,xmm1,rbx
vdivsd xmm0,xmm0,xmm1
vmovsd qword ptr [rbp-20],xmm0
jmp short M01_L11
M01_L09:
call CORINFO_HELP_OVERFLOW
M01_L10:
call qword ptr [7FFD0F1057F8]
int 3
M01_L11:
mov rcx,rsi
mov r11,7FFD0EBF05F0
call qword ptr [r11]
vmovsd xmm0,qword ptr [rbp-20]
vzeroupper
add rsp,68
pop rbx
pop rsi
pop rdi
pop rbp
ret
M01_L12:
mov ecx,10
call qword ptr [7FFD0F105798]
int 3
M01_L13:
test eax,eax
jne short M01_L15
xor r11d,r11d
xor eax,eax
jmp near ptr M01_L01
M01_L14:
call qword ptr [7FFD0F1057F8]
int 3
M01_L15:
call qword ptr [7FFD0F101060]
int 3
M01_L16:
mov ecx,6
call qword ptr [7FFD0F1013A8]
int 3
M01_L17:
call CORINFO_HELP_RNGCHKFAIL
int 3
push rbp
push rdi
push rsi
push rbx
sub rsp,28
vzeroupper
mov rbp,[rcx+20]
mov [rsp+20],rbp
lea rbp,[rbp+80]
cmp qword ptr [rbp-58],0
je short M01_L18
mov rcx,[rbp-58]
mov r11,7FFD0EBF05F0
call qword ptr [r11]
M01_L18:
nop
vzeroupper
add rsp,28
pop rbx
pop rsi
pop rdi
pop rbp
ret
; Total bytes of code 613System.Linq.Tests.Perf_Enumerable.All_AllElementsMatch(input: IEnumerable)
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 740.5683614016946 > 713.6249376907095.
IsChangePoint: Marked as a change because one of 1/18/2023 11:30:09 AM, 2/9/2023 12:40:40 PM, 3/6/2023 11:14:52 AM, 3/14/2023 5:57:45 AM falls between 3/5/2023 5:50:49 PM and 3/14/2023 5:57:45 AM.
IsRegressionStdDev: Marked as regression because -160.10660078973615 (T) = (0 -740.434713646879) / Math.Sqrt((2.4986482069083005 / (24)) + (1.2829162808150576 / (36))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (36) - 2, .025) and -0.08794265431001633 = (680.582483565248 - 740.434713646879) / 680.582483565248 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.All_AllElementsMatch(System.Linq.Tests.LinqTestData)
push rdi
push rsi
sub rsp,28
mov rsi,[rdx+8]
mov rcx,1CC30407208
mov rdx,[rcx]
test rdx,rdx
jne short M00_L00
mov rcx,offset MT_System.Func`2[[System.Int32, System.Private.CoreLib],[System.Boolean, System.Private.CoreLib]]
call CORINFO_HELP_NEWSFAST
mov rdi,rax
mov rdx,1CC304071B0
mov rdx,[rdx]
lea rcx,[rdi+8]
call CORINFO_HELP_ASSIGN_REF
mov rdx,7FFB84E9A120
mov [rdi+18],rdx
mov rcx,1CC30407208
mov rdx,rdi
call CORINFO_HELP_ASSIGN_REF
mov rdx,rdi
M00_L00:
mov rcx,rsi
add rsp,28
pop rsi
pop rdi
jmp qword ptr [7FFB84E9B318]; System.Linq.Enumerable.All[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>, System.Func`2<Int32,Boolean>)
; Total bytes of code 118
; System.Linq.Enumerable.All[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>, System.Func`2<Int32,Boolean>)
push rbp
push rdi
push rsi
sub rsp,40
lea rbp,[rsp+50]
mov [rbp-30],rsp
mov rsi,rdx
test rcx,rcx
je near ptr M01_L05
test rsi,rsi
je near ptr M01_L06
mov r11,7FFB847805C8
call qword ptr [r11]
mov rdi,rax
mov [rbp-20],rdi
mov rcx,rdi
mov r11,7FFB847805D0
call qword ptr [r11]
test eax,eax
je short M01_L02
M01_L00:
mov rcx,rdi
mov r11,7FFB847805D8
call qword ptr [r11]
mov edx,eax
mov rcx,[rsi+8]
call qword ptr [rsi+18]
test eax,eax
je short M01_L01
mov rcx,rdi
mov r11,7FFB847805D0
call qword ptr [r11]
test eax,eax
jne short M01_L00
jmp short M01_L02
M01_L01:
xor ecx,ecx
mov [rbp-14],ecx
jmp short M01_L03
M01_L02:
mov rcx,rdi
mov r11,7FFB847805E0
call qword ptr [r11]
jmp short M01_L04
M01_L03:
mov rcx,rsp
call M01_L07
nop
mov eax,[rbp-14]
add rsp,40
pop rsi
pop rdi
pop rbp
ret
M01_L04:
mov eax,1
add rsp,40
pop rsi
pop rdi
pop rbp
ret
M01_L05:
mov ecx,10
call qword ptr [7FFB84CA3798]
int 3
M01_L06:
mov ecx,0C
call qword ptr [7FFB84CA3798]
int 3
M01_L07:
push rbp
push rdi
push rsi
sub rsp,30
mov rbp,[rcx+20]
mov [rsp+20],rbp
lea rbp,[rbp+50]
mov rdi,[rbp-20]
test rdi,rdi
je short M01_L08
mov rcx,rdi
mov r11,7FFB847805E0
call qword ptr [r11]
M01_L08:
nop
add rsp,30
pop rsi
pop rdi
pop rbp
ret
; Total bytes of code 264Compare Jit Disasm
; System.Linq.Tests.Perf_Enumerable.All_AllElementsMatch(System.Linq.Tests.LinqTestData)
push rdi
push rsi
sub rsp,28
mov rsi,[rdx+8]
mov rcx,1C149C07208
mov rdx,[rcx]
test rdx,rdx
jne short M00_L00
mov rcx,offset MT_System.Func`2[[System.Int32, System.Private.CoreLib],[System.Boolean, System.Private.CoreLib]]
call CORINFO_HELP_NEWSFAST
mov rdi,rax
mov rdx,1C149C071B0
mov rdx,[rdx]
lea rcx,[rdi+8]
call CORINFO_HELP_ASSIGN_REF
mov rdx,7FFC6E78EA08
mov [rdi+18],rdx
mov rcx,1C149C07208
mov rdx,rdi
call CORINFO_HELP_ASSIGN_REF
mov rdx,rdi
M00_L00:
mov rcx,rsi
add rsp,28
pop rsi
pop rdi
jmp qword ptr [7FFC6E78FC00]; System.Linq.Enumerable.All[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>, System.Func`2<Int32,Boolean>)
; Total bytes of code 118; System.Linq.Enumerable.All[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>, System.Func`2<Int32,Boolean>)
push rbp
push rdi
push rsi
sub rsp,40
lea rbp,[rsp+50]
mov [rbp-30],rsp
mov rsi,rdx
test rcx,rcx
je near ptr M01_L05
test rsi,rsi
je near ptr M01_L06
mov r11,7FFC6E0805B8
call qword ptr [r11]
mov rdi,rax
mov [rbp-20],rdi
mov rcx,rdi
mov r11,7FFC6E0805C0
call qword ptr [r11]
test eax,eax
je short M01_L02
M01_L00:
mov rcx,rdi
mov r11,7FFC6E0805C8
call qword ptr [r11]
mov edx,eax
mov rcx,[rsi+8]
call qword ptr [rsi+18]
test eax,eax
je short M01_L01
mov rcx,rdi
mov r11,7FFC6E0805C0
call qword ptr [r11]
test eax,eax
jne short M01_L00
jmp short M01_L02
M01_L01:
xor ecx,ecx
mov [rbp-14],ecx
jmp short M01_L03
M01_L02:
mov rcx,rdi
mov r11,7FFC6E0805D0
call qword ptr [r11]
jmp short M01_L04
M01_L03:
mov rcx,rsp
call M01_L07
nop
mov eax,[rbp-14]
add rsp,40
pop rsi
pop rdi
pop rbp
ret
M01_L04:
mov eax,1
add rsp,40
pop rsi
pop rdi
pop rbp
ret
M01_L05:
mov ecx,10
call qword ptr [7FFC6E595798]
int 3
M01_L06:
mov ecx,0C
call qword ptr [7FFC6E595798]
int 3
M01_L07:
push rbp
push rdi
push rsi
sub rsp,30
mov rbp,[rcx+20]
mov [rsp+20],rbp
lea rbp,[rbp+50]
mov rdi,[rbp-20]
test rdi,rdi
je short M01_L08
mov rcx,rdi
mov r11,7FFC6E0805D0
call qword ptr [r11]
M01_L08:
nop
add rsp,30
pop rsi
pop rdi
pop rbp
ret
; Total bytes of code 264System.Linq.Tests.Perf_Enumerable.Reverse(input: IEnumerable)
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 1.2732724529250885 > 1.2651446373253215.
IsChangePoint: Marked as a change because one of 1/19/2023 10:17:02 AM, 2/9/2023 12:40:40 PM, 2/24/2023 9:01:57 AM, 3/6/2023 11:14:52 AM, 3/14/2023 5:57:45 AM falls between 3/5/2023 5:50:49 PM and 3/14/2023 5:57:45 AM.
IsRegressionStdDev: Marked as regression because -49.99357708408326 (T) = (0 -1272.1183779411995) / Math.Sqrt((20.088596053879535 / (24)) + (33.53021535117442 / (36))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (36) - 2, .025) and -0.055143038914518036 = (1205.6359479468258 - 1272.1183779411995) / 1205.6359479468258 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.Reverse(System.Linq.Tests.LinqTestData)
push rsi
sub rsp,20
mov rsi,rcx
mov rcx,[rdx+8]
call qword ptr [7FF7CB8D9DE0]; System.Linq.Enumerable.Reverse[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>)
mov rcx,rax
mov rdx,[rsi+8]
add rsp,20
pop rsi
jmp qword ptr [7FF7CB8D9E58]; BenchmarkDotNet.Engines.ConsumerExtensions.Consume[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>, BenchmarkDotNet.Engines.Consumer)
; Total bytes of code 36
; System.Linq.Enumerable.Reverse[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>)
push rdi
push rsi
sub rsp,28
mov rsi,rcx
test rsi,rsi
je short M01_L00
mov rcx,offset MT_System.Linq.Enumerable+ReverseIterator`1[[System.Int32, System.Private.CoreLib]]
call CORINFO_HELP_NEWSFAST
mov rdi,rax
call CORINFO_HELP_GETCURRENTMANAGEDTHREADID
mov [rdi+8],eax
lea rcx,[rdi+18]
mov rdx,rsi
call CORINFO_HELP_ASSIGN_REF
mov rax,rdi
add rsp,28
pop rsi
pop rdi
ret
M01_L00:
mov ecx,10
call qword ptr [7FF7CB6E3798]
int 3
; Total bytes of code 74; BenchmarkDotNet.Engines.ConsumerExtensions.Consume[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>, BenchmarkDotNet.Engines.Consumer)
push rbp
push rsi
sub rsp,38
lea rbp,[rsp+40]
mov [rbp-20],rsp
mov rsi,rdx
mov r11,7FF7CB1C0618
call qword ptr [r11]
mov rcx,rax
mov [rbp-10],rcx
mov r11,7FF7CB1C0620
call qword ptr [r11]
test eax,eax
je short M02_L01
M02_L00:
mov rcx,[rbp-10]
mov r11,7FF7CB1C0628
call qword ptr [r11]
mov [rsi+40],eax
mov rcx,[rbp-10]
mov r11,7FF7CB1C0620
call qword ptr [r11]
test eax,eax
jne short M02_L00
M02_L01:
mov rcx,[rbp-10]
mov r11,7FF7CB1C0630
call qword ptr [r11]
nop
add rsp,38
pop rsi
pop rbp
ret
push rbp
push rsi
sub rsp,28
mov rbp,[rcx+20]
mov [rsp+20],rbp
lea rbp,[rbp+40]
cmp qword ptr [rbp-10],0
je short M02_L02
mov rcx,[rbp-10]
mov r11,7FF7CB1C0630
call qword ptr [r11]
M02_L02:
nop
add rsp,28
pop rsi
pop rbp
ret
; Total bytes of code 172Compare Jit Disasm
; System.Linq.Tests.Perf_Enumerable.Reverse(System.Linq.Tests.LinqTestData)
push rsi
sub rsp,20
mov rsi,rcx
mov rcx,[rdx+8]
call qword ptr [7FFE4CEFD8E8]; System.Linq.Enumerable.Reverse[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>)
mov rcx,rax
mov rdx,[rsi+8]
add rsp,20
pop rsi
jmp qword ptr [7FFE4CEFD960]; BenchmarkDotNet.Engines.ConsumerExtensions.Consume[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>, BenchmarkDotNet.Engines.Consumer)
; Total bytes of code 36; System.Linq.Enumerable.Reverse[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>)
push rdi
push rsi
sub rsp,28
mov rsi,rcx
test rsi,rsi
je short M01_L00
mov rcx,offset MT_System.Linq.Enumerable+ReverseIterator`1[[System.Int32, System.Private.CoreLib]]
call CORINFO_HELP_NEWSFAST
mov rdi,rax
call CORINFO_HELP_GETCURRENTMANAGEDTHREADID
mov [rdi+8],eax
lea rcx,[rdi+18]
mov rdx,rsi
call CORINFO_HELP_ASSIGN_REF
mov rax,rdi
add rsp,28
pop rsi
pop rdi
ret
M01_L00:
mov ecx,10
call qword ptr [7FFE4CCF5798]
int 3
; Total bytes of code 74; BenchmarkDotNet.Engines.ConsumerExtensions.Consume[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>, BenchmarkDotNet.Engines.Consumer)
push rbp
push rsi
sub rsp,38
lea rbp,[rsp+40]
mov [rbp-20],rsp
mov rsi,rdx
mov r11,7FFE4C7E0608
call qword ptr [r11]
mov rcx,rax
mov [rbp-10],rcx
mov r11,7FFE4C7E0610
call qword ptr [r11]
test eax,eax
je short M02_L01
M02_L00:
mov rcx,[rbp-10]
mov r11,7FFE4C7E0618
call qword ptr [r11]
mov [rsi+40],eax
mov rcx,[rbp-10]
mov r11,7FFE4C7E0610
call qword ptr [r11]
test eax,eax
jne short M02_L00
M02_L01:
mov rcx,[rbp-10]
mov r11,7FFE4C7E0620
call qword ptr [r11]
nop
add rsp,38
pop rsi
pop rbp
ret
push rbp
push rsi
sub rsp,28
mov rbp,[rcx+20]
mov [rsp+20],rbp
lea rbp,[rbp+40]
cmp qword ptr [rbp-10],0
je short M02_L02
mov rcx,[rbp-10]
mov r11,7FFE4C7E0620
call qword ptr [r11]
M02_L02:
nop
add rsp,28
pop rsi
pop rbp
ret
; Total bytes of code 172Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository


