Skip to content

[Perf] Windows/x64: 35 Regressions on 3/6/2023 11:36:59 AM #13944

@performanceautofiler

Description

@performanceautofiler

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

graph
graph
graph
Test Report

Repro

General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md

Payloads

Baseline
Compare

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

Baseline
Compare

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 613

Compare 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 613

System.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 264

Compare 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 264

System.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 172

Compare 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 172

Docs

Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions