Skip to content

[Perf] Windows/x64: 10 Regressions on 12/28/2022 6:20:56 PM #11273

@performanceautofiler

Description

@performanceautofiler

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 8c58fc2347820ce48e09605d8adddb993df9ebb5
Compare 1d15f2140f7eb30a976c66290491ec89cd628da0
Diff Diff

Regressions in PerfLabTests.CastingPerf2.CastingPerf

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
IFooObjIsDescendantOfIFoo - Duration of single invocation 665.24 μs 741.00 μs 1.11 0.02 False Trace Trace
FooObjIsFoo - Duration of single invocation 761.79 μs 873.13 μs 1.15 0.06 False Trace Trace
ObjrefValueTypeObj - Duration of single invocation 879.82 μs 1.15 ms 1.31 0.53 False Trace Trace
ObjInt - Duration of single invocation 628.50 μs 666.08 μs 1.06 0.06 False Trace Trace

graph
graph
graph
graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'PerfLabTests.CastingPerf2.CastingPerf*'
Details

Payloads

Baseline
Compare

Histogram

PerfLabTests.CastingPerf2.CastingPerf.IFooObjIsDescendantOfIFoo


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 741.0049242424243 > 699.6042819511217.
IsChangePoint: Marked as a change because one of 12/3/2022 7:24:45 AM, 12/14/2022 5:20:21 PM, 12/17/2022 10:44:50 PM, 12/21/2022 9:23:17 AM, 12/28/2022 5:13:50 PM, 1/3/2023 6:29:42 AM falls between 12/23/2022 9:40:21 PM and 1/3/2023 6:29:42 AM.
IsRegressionStdDev: Marked as regression because -18.835112412174812 (T) = (0 -742375.389641199) / Math.Sqrt((403025505.1714025 / (29)) + (4058203.7152673295 / (14))) is less than -2.019540970439573 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (29) + (14) - 2, .025) and -0.10566149637884203 = (671430.9868549793 - 742375.389641199) / 671430.9868549793 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
; PerfLabTests.CastingPerf2.CastingPerf.IFooObjIsDescendantOfIFoo()
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,28
       xor       esi,esi
       mov       edi,[7FFCE1FD4CF4]
       test      edi,edi
       jle       short M00_L01
       mov       rdx,1D46F0064E0
       mov       rbx,[rdx]
       mov       rdx,rbx
       mov       rcx,offset MT_PerfLabTests.CastingPerf2.IFoo
       call      qword ptr [7FFCE180D888]; System.Runtime.CompilerServices.CastHelpers.ChkCastInterface(Void*, System.Object)
       mov       rbp,1D46F006580
M00_L00:
       mov       rdx,rbx
       mov       rcx,offset MT_PerfLabTests.CastingPerf2.IFoo
       call      qword ptr [7FFCE180D888]; System.Runtime.CompilerServices.CastHelpers.ChkCastInterface(Void*, System.Object)
       mov       rdx,rax
       mov       rcx,rbp
       call      CORINFO_HELP_ASSIGN_REF
       inc       esi
       cmp       esi,edi
       jl        short M00_L00
M00_L01:
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 107
; System.Runtime.CompilerServices.CastHelpers.ChkCastInterface(Void*, System.Object)
       test      rdx,rdx
       je        short M01_L01
       mov       rax,[rdx]
       movzx     r8d,word ptr [rax+0E]
       test      r8,r8
       je        short M01_L04
       mov       rax,[rax+38]
       cmp       r8,4
       jl        short M01_L03
M01_L00:
       cmp       [rax],rcx
       je        short M01_L01
       cmp       [rax+8],rcx
       je        short M01_L01
       cmp       [rax+10],rcx
       je        short M01_L01
       cmp       [rax+18],rcx
       jne       short M01_L02
M01_L01:
       mov       rax,rdx
       ret
M01_L02:
       add       rax,20
       add       r8,0FFFFFFFFFFFFFFFC
       cmp       r8,4
       jge       short M01_L00
       test      r8,r8
       je        short M01_L04
M01_L03:
       cmp       [rax],rcx
       je        short M01_L01
       add       rax,8
       dec       r8
       test      r8,r8
       jg        short M01_L03
M01_L04:
       jmp       qword ptr [7FFCE180D870]
; Total bytes of code 97

Compare Jit Disasm

; PerfLabTests.CastingPerf2.CastingPerf.IFooObjIsDescendantOfIFoo()
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,28
       xor       esi,esi
       mov       edi,[7FFEEE384CF4]
       test      edi,edi
       jle       short M00_L01
       mov       rdx,206DCC064E0
       mov       rbx,[rdx]
       mov       rdx,rbx
       mov       rcx,offset MT_PerfLabTests.CastingPerf2.IFoo
       call      qword ptr [7FFEEDBBD888]; System.Runtime.CompilerServices.CastHelpers.ChkCastInterface(Void*, System.Object)
       mov       rbp,206DCC06580
M00_L00:
       mov       rdx,rbx
       mov       rcx,offset MT_PerfLabTests.CastingPerf2.IFoo
       call      qword ptr [7FFEEDBBD888]; System.Runtime.CompilerServices.CastHelpers.ChkCastInterface(Void*, System.Object)
       mov       rdx,rax
       mov       rcx,rbp
       call      CORINFO_HELP_ASSIGN_REF
       inc       esi
       cmp       esi,edi
       jl        short M00_L00
M00_L01:
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 107
; System.Runtime.CompilerServices.CastHelpers.ChkCastInterface(Void*, System.Object)
       test      rdx,rdx
       je        short M01_L01
       mov       rax,[rdx]
       movzx     r8d,word ptr [rax+0E]
       test      r8,r8
       je        short M01_L04
       mov       rax,[rax+38]
       cmp       r8,4
       jl        short M01_L03
M01_L00:
       cmp       [rax],rcx
       je        short M01_L01
       cmp       [rax+8],rcx
       je        short M01_L01
       cmp       [rax+10],rcx
       je        short M01_L01
       cmp       [rax+18],rcx
       jne       short M01_L02
M01_L01:
       mov       rax,rdx
       ret
M01_L02:
       add       rax,20
       add       r8,0FFFFFFFFFFFFFFFC
       cmp       r8,4
       jge       short M01_L00
       test      r8,r8
       je        short M01_L04
M01_L03:
       cmp       [rax],rcx
       je        short M01_L01
       add       rax,8
       dec       r8
       test      r8,r8
       jg        short M01_L03
M01_L04:
       jmp       qword ptr [7FFEEDBBD870]
; Total bytes of code 97

PerfLabTests.CastingPerf2.CastingPerf.FooObjIsFoo


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 873.1283234126984 > 796.3618046875.
IsChangePoint: Marked as a change because one of 11/7/2022 4:10:19 PM, 11/18/2022 7:31:41 AM, 12/3/2022 7:24:45 AM, 12/14/2022 5:20:21 PM, 12/17/2022 10:44:50 PM, 12/21/2022 9:23:17 AM, 12/28/2022 5:13:50 PM, 1/3/2023 6:29:42 AM falls between 12/23/2022 9:40:21 PM and 1/3/2023 6:29:42 AM.
IsRegressionStdDev: Marked as regression because -19.08931422726733 (T) = (0 -873815.4000323422) / Math.Sqrt((894532543.5694818 / (29)) + (3084025.479794204 / (14))) is less than -2.019540970439573 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (29) + (14) - 2, .025) and -0.13864466977537454 = (767417.1084511585 - 873815.4000323422) / 767417.1084511585 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
; PerfLabTests.CastingPerf2.CastingPerf.FooObjIsFoo()
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,28
       xor       esi,esi
       mov       edi,[7FFA51174CF0]
       test      edi,edi
       jle       short M00_L02
       mov       rcx,1FEA00064E0
       mov       rbx,[rcx]
       mov       rbp,1FEA0006530
M00_L00:
       mov       rdx,rbx
       mov       rax,rdx
       test      rax,rax
       je        short M00_L01
       mov       rcx,offset MT_PerfLabTests.CastingPerf2.Foo
       cmp       [rax],rcx
       je        short M00_L01
       call      qword ptr [7FFA509AD8B8]
M00_L01:
       mov       rcx,rbp
       mov       rdx,rax
       call      CORINFO_HELP_ASSIGN_REF
       inc       esi
       cmp       esi,edi
       jl        short M00_L00
M00_L02:
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 101

Compare Jit Disasm

; PerfLabTests.CastingPerf2.CastingPerf.FooObjIsFoo()
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,28
       xor       esi,esi
       mov       edi,[7FFACBA18160]
       test      edi,edi
       jle       short M00_L02
       mov       rcx,1754B4064E0
       mov       rbx,[rcx]
       mov       rbp,1754B406530
M00_L00:
       mov       rdx,rbx
       mov       rax,rdx
       test      rax,rax
       je        short M00_L01
       mov       rcx,offset MT_PerfLabTests.CastingPerf2.Foo
       cmp       [rax],rcx
       je        short M00_L01
       call      qword ptr [7FFACB26D8B8]
M00_L01:
       mov       rcx,rbp
       mov       rdx,rax
       call      CORINFO_HELP_ASSIGN_REF
       inc       esi
       cmp       esi,edi
       jl        short M00_L00
M00_L02:
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 101

PerfLabTests.CastingPerf2.CastingPerf.ObjrefValueTypeObj


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.1519236011904763 > 983.2722473958332.
IsChangePoint: Marked as a change because one of 12/10/2022 11:25:25 PM, 12/27/2022 8:25:45 PM, 1/3/2023 6:29:42 AM falls between 12/23/2022 9:40:21 PM and 1/3/2023 6:29:42 AM.
IsRegressionStdDev: Marked as regression because -9.869181517128785 (T) = (0 -1195405.6082334316) / Math.Sqrt((4705812038.151249 / (26)) + (5521922099.631794 / (17))) is less than -2.019540970439573 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (26) + (17) - 2, .025) and -0.22801535098494036 = (973445.1668496213 - 1195405.6082334316) / 973445.1668496213 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
; PerfLabTests.CastingPerf2.CastingPerf.ObjrefValueTypeObj()
       push      r15
       push      r14
       push      r12
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,20
       xor       ebx,ebx
       mov       rbp,7FFE0A904CF0
       cmp       dword ptr [rbp],0
       jle       short M00_L02
       mov       r14,27786C064E0
       mov       r15,offset MT_PerfLabTests.CastingPerf2.FooORVT
       mov       rdx,27786C064B8
       mov       r12,[rdx]
       add       r12,8
M00_L00:
       mov       rsi,[r14]
       cmp       [rsi],r15
       je        short M00_L01
       mov       rdx,rsi
       mov       rcx,r15
       call      qword ptr [7FFE0A13D8D0]; System.Runtime.CompilerServices.CastHelpers.Unbox(Void*, System.Object)
M00_L01:
       add       rsi,8
       mov       rdi,r12
       call      CORINFO_HELP_ASSIGN_BYREF
       call      CORINFO_HELP_ASSIGN_BYREF
       inc       ebx
       cmp       ebx,[rbp]
       jl        short M00_L00
M00_L02:
       add       rsp,20
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       ret
; Total bytes of code 128
; System.Runtime.CompilerServices.CastHelpers.Unbox(Void*, System.Object)
       cmp       [rdx],rcx
       jne       short M01_L00
       lea       rax,[rdx+8]
       ret
M01_L00:
       jmp       near ptr System.Runtime.CompilerServices.CastHelpers.Unbox_Helper(Void*, System.Object)
; Total bytes of code 15

Compare Jit Disasm

; PerfLabTests.CastingPerf2.CastingPerf.ObjrefValueTypeObj()
       push      r15
       push      r14
       push      r12
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,20
       xor       ebx,ebx
       mov       rbp,7FF7A7844CF0
       cmp       dword ptr [rbp],0
       jle       short M00_L02
       mov       r14,206834064E0
       mov       r15,offset MT_PerfLabTests.CastingPerf2.FooORVT
       mov       rdx,206834064B8
       mov       r12,[rdx]
       add       r12,8
M00_L00:
       mov       rsi,[r14]
       cmp       [rsi],r15
       je        short M00_L01
       mov       rdx,rsi
       mov       rcx,r15
       call      qword ptr [7FF7A707D8D0]; System.Runtime.CompilerServices.CastHelpers.Unbox(Void*, System.Object)
M00_L01:
       add       rsi,8
       mov       rdi,r12
       call      CORINFO_HELP_ASSIGN_BYREF
       call      CORINFO_HELP_ASSIGN_BYREF
       inc       ebx
       cmp       ebx,[rbp]
       jl        short M00_L00
M00_L02:
       add       rsp,20
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       ret
; Total bytes of code 128
; System.Runtime.CompilerServices.CastHelpers.Unbox(Void*, System.Object)
       cmp       [rdx],rcx
       jne       short M01_L00
       lea       rax,[rdx+8]
       ret
M01_L00:
       jmp       near ptr System.Runtime.CompilerServices.CastHelpers.Unbox_Helper(Void*, System.Object)
; Total bytes of code 15

PerfLabTests.CastingPerf2.CastingPerf.ObjInt


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 666.0825694444444 > 658.398496875.
IsChangePoint: Marked as a change because one of 10/11/2022 8:42:28 PM, 10/17/2022 3:19:47 PM, 11/19/2022 1:29:52 AM, 12/2/2022 5:21:30 AM, 12/23/2022 9:40:21 PM, 1/3/2023 6:29:42 AM falls between 12/23/2022 9:40:21 PM and 1/3/2023 6:29:42 AM.
IsRegressionStdDev: Marked as regression because -16.06702433364496 (T) = (0 -664842.5214414858) / Math.Sqrt((41203214.56325535 / (17)) + (109274040.16720593 / (26))) is less than -2.019540970439573 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (17) + (26) - 2, .025) and -0.06633693249416585 = (623482.5984001294 - 664842.5214414858) / 623482.5984001294 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
; PerfLabTests.CastingPerf2.CastingPerf.ObjInt()
       push      r14
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,20
       xor       esi,esi
       mov       rdi,7FF96CD94CF4
       cmp       dword ptr [rdi],0
       jle       short M00_L01
       mov       rbx,offset MT_System.Int32
       mov       rbp,7FF96CD94CFC
       mov       r14,15F62C064E0
M00_L00:
       mov       rcx,rbx
       call      CORINFO_HELP_NEWSFAST
       mov       edx,[rbp]
       mov       [rax+8],edx
       mov       rcx,r14
       mov       rdx,rax
       call      CORINFO_HELP_ASSIGN_REF
       inc       esi
       cmp       esi,[rdi]
       jl        short M00_L00
M00_L01:
       add       rsp,20
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       ret
; Total bytes of code 99

Compare Jit Disasm

; PerfLabTests.CastingPerf2.CastingPerf.ObjInt()
       push      r14
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,20
       xor       esi,esi
       mov       rdi,7FFAA9BC4CF4
       cmp       dword ptr [rdi],0
       jle       short M00_L01
       mov       rbx,offset MT_System.Int32
       mov       rbp,7FFAA9BC4CFC
       mov       r14,22B7B0064E0
M00_L00:
       mov       rcx,rbx
       call      CORINFO_HELP_NEWSFAST
       mov       edx,[rbp]
       mov       [rax+8],edx
       mov       rcx,r14
       mov       rdx,rax
       call      CORINFO_HELP_ASSIGN_REF
       inc       esi
       cmp       esi,[rdi]
       jl        short M00_L00
M00_L01:
       add       rsp,20
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       ret
; Total bytes of code 99

Docs

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

### Run Information
Architecture x64
OS Windows 10.0.18362
Baseline 8c58fc2347820ce48e09605d8adddb993df9ebb5
Compare 1d15f2140f7eb30a976c66290491ec89cd628da0
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
Max - Duration of single invocation 464.56 ns 520.08 ns 1.12 0.03 False Trace Trace

graph
Test Report

Repro

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.Max(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 520.0811702527701 > 487.36929424915627.
IsChangePoint: Marked as a change because one of 12/3/2022 7:24:45 AM, 12/6/2022 2:12:43 AM, 12/17/2022 10:44:50 PM, 12/28/2022 5:13:50 PM, 1/3/2023 6:29:42 AM falls between 12/23/2022 9:40:21 PM and 1/3/2023 6:29:42 AM.
IsRegressionStdDev: Marked as regression because -17.767567409196065 (T) = (0 -520.5557851414749) / Math.Sqrt((249.18729266585365 / (29)) + (1.1123896247220408 / (14))) is less than -2.019540970439573 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (29) + (14) - 2, .025) and -0.11174513177046155 = (468.2330241576919 - 520.5557851414749) / 468.2330241576919 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.Max(System.Linq.Tests.LinqTestData)
       mov       rcx,[rdx+8]
       jmp       qword ptr [7FF95D39B660]; System.Linq.Enumerable.MinMaxInteger[[System.Int32, System.Private.CoreLib],[System.Linq.Enumerable+MaxCalc`1[[System.Int32, System.Private.CoreLib]], System.Linq]](System.Collections.Generic.IEnumerable`1<Int32>)
; Total bytes of code 10
; System.Linq.Enumerable.MinMaxInteger[[System.Int32, System.Private.CoreLib],[System.Linq.Enumerable+MaxCalc`1[[System.Int32, System.Private.CoreLib]], System.Linq]](System.Collections.Generic.IEnumerable`1<Int32>)
       push      rbp
       push      rdi
       push      rsi
       sub       rsp,40
       vzeroupper
       lea       rbp,[rsp+50]
       xor       eax,eax
       mov       [rbp-20],rax
       mov       [rbp-30],rsp
       test      rcx,rcx
       je        near ptr M01_L24
       mov       rdx,offset MT_System.Int32[]
       cmp       [rcx],rdx
       jne       short M01_L00
       lea       rax,[rcx+10]
       mov       r8d,[rcx+8]
       jmp       short M01_L01
M01_L00:
       mov       rdx,offset MT_System.Collections.Generic.List`1[[System.Int32, System.Private.CoreLib]]
       mov       [rbp+10],rcx
       cmp       [rcx],rdx
       jne       near ptr M01_L18
       lea       rcx,[rbp-20]
       mov       rdx,[rbp+10]
       call      qword ptr [7FF95D39F378]
       mov       rax,[rbp-20]
       mov       r8d,[rbp-18]
M01_L01:
       test      r8d,r8d
       je        near ptr M01_L25
       cmp       r8d,4
       jge       short M01_L04
       mov       esi,[rax]
       mov       ecx,1
       cmp       r8d,1
       jle       near ptr M01_L23
M01_L02:
       mov       r11d,ecx
       mov       r11d,[rax+r11*4]
       cmp       r11d,esi
       jle       short M01_L03
       mov       esi,r11d
M01_L03:
       inc       ecx
       cmp       ecx,r8d
       jl        short M01_L02
       jmp       near ptr M01_L23
M01_L04:
       cmp       r8d,8
       jge       short M01_L09
       add       r8d,0FFFFFFFC
       movsxd    rcx,r8d
       lea       rcx,[rax+rcx*4]
       vmovdqu   xmm0,xmmword ptr [rax]
       add       rax,10
       cmp       rax,rcx
       jae       short M01_L06
M01_L05:
       vpmaxsd   xmm0,xmm0,[rax]
       add       rax,10
       cmp       rax,rcx
       jb        short M01_L05
M01_L06:
       vpmaxsd   xmm0,xmm0,[rcx]
       vmovd     esi,xmm0
       vpextrd   ecx,xmm0,1
       cmp       ecx,esi
       jle       short M01_L07
       mov       esi,ecx
M01_L07:
       vpextrd   ecx,xmm0,2
       cmp       ecx,esi
       jle       short M01_L08
       mov       esi,ecx
M01_L08:
       vpextrd   ecx,xmm0,3
       cmp       ecx,esi
       jle       near ptr M01_L23
       mov       esi,ecx
       jmp       near ptr M01_L23
M01_L09:
       mov       rcx,rax
       lea       r11d,[r8-8]
       movsxd    r11,r11d
       lea       r11,[rcx+r11*4]
       vmovdqu   ymm0,ymmword ptr [rcx]
       add       rcx,20
       cmp       rcx,r11
       jae       short M01_L11
M01_L10:
       vpmaxsd   ymm0,ymm0,[rcx]
       add       rcx,20
       cmp       rcx,r11
       jb        short M01_L10
M01_L11:
       vpmaxsd   ymm0,ymm0,[r11]
       vmovaps   ymm1,ymm0
       vmovd     esi,xmm1
       vmovaps   ymm1,ymm0
       vpextrd   ecx,xmm1,1
       cmp       ecx,esi
       jle       short M01_L12
       mov       esi,ecx
M01_L12:
       vmovaps   ymm1,ymm0
       vpextrd   ecx,xmm1,2
       cmp       ecx,esi
       jle       short M01_L13
       mov       esi,ecx
M01_L13:
       vmovaps   ymm1,ymm0
       vpextrd   ecx,xmm1,3
       cmp       ecx,esi
       jle       short M01_L14
       mov       esi,ecx
M01_L14:
       vextractf128 xmm1,ymm0,1
       vmovd     ecx,xmm1
       cmp       ecx,esi
       jle       short M01_L15
       mov       esi,ecx
M01_L15:
       vextractf128 xmm1,ymm0,1
       vpextrd   ecx,xmm1,1
       cmp       ecx,esi
       jle       short M01_L16
       mov       esi,ecx
M01_L16:
       vextractf128 xmm1,ymm0,1
       vpextrd   ecx,xmm1,2
       cmp       ecx,esi
       jle       short M01_L17
       mov       esi,ecx
M01_L17:
       vextractf128 xmm0,ymm0,1
       vpextrd   ecx,xmm0,3
       cmp       ecx,esi
       jle       near ptr M01_L23
       mov       esi,ecx
       jmp       near ptr M01_L23
M01_L18:
       mov       rcx,[rbp+10]
       mov       r11,7FF95C8705D8
       call      qword ptr [r11]
       mov       rsi,rax
       mov       [rbp-28],rsi
       mov       rcx,rsi
       mov       r11,7FF95C8705E0
       call      qword ptr [r11]
       test      eax,eax
       je        short M01_L19
       mov       rcx,rsi
       mov       r11,7FF95C8705E8
       call      qword ptr [r11]
       mov       edi,eax
       mov       rcx,rsi
       mov       r11,7FF95C8705F0
       call      qword ptr [r11]
       test      eax,eax
       je        short M01_L22
       jmp       short M01_L20
M01_L19:
       call      qword ptr [7FF95D1777F8]
       int       3
M01_L20:
       mov       rcx,rsi
       mov       r11,7FF95C8705F8
       call      qword ptr [r11]
       cmp       eax,edi
       jle       short M01_L21
       mov       edi,eax
M01_L21:
       mov       rcx,rsi
       mov       r11,7FF95C8705F0
       call      qword ptr [r11]
       test      eax,eax
       jne       short M01_L20
M01_L22:
       mov       rcx,rsi
       mov       r11,7FF95C870600
       call      qword ptr [r11]
       mov       esi,edi
M01_L23:
       mov       eax,esi
       vzeroupper
       add       rsp,40
       pop       rsi
       pop       rdi
       pop       rbp
       ret
M01_L24:
       mov       ecx,10
       call      qword ptr [7FF95D177798]
       int       3
M01_L25:
       call      qword ptr [7FF95D1777F8]
       int       3
       push      rbp
       push      rdi
       push      rsi
       sub       rsp,30
       vzeroupper
       mov       rbp,[rcx+20]
       mov       [rsp+20],rbp
       lea       rbp,[rbp+50]
       cmp       qword ptr [rbp-28],0
       je        short M01_L26
       mov       rcx,[rbp-28]
       mov       r11,7FF95C870600
       call      qword ptr [r11]
M01_L26:
       nop
       vzeroupper
       add       rsp,30
       pop       rsi
       pop       rdi
       pop       rbp
       ret
; Total bytes of code 684

Compare Jit Disasm

; System.Linq.Tests.Perf_Enumerable.Max(System.Linq.Tests.LinqTestData)
       mov       rcx,[rdx+8]
       jmp       qword ptr [7FFD3060B660]; System.Linq.Enumerable.MinMaxInteger[[System.Int32, System.Private.CoreLib],[System.Linq.Enumerable+MaxCalc`1[[System.Int32, System.Private.CoreLib]], System.Linq]](System.Collections.Generic.IEnumerable`1<Int32>)
; Total bytes of code 10
; System.Linq.Enumerable.MinMaxInteger[[System.Int32, System.Private.CoreLib],[System.Linq.Enumerable+MaxCalc`1[[System.Int32, System.Private.CoreLib]], System.Linq]](System.Collections.Generic.IEnumerable`1<Int32>)
       push      rbp
       push      rdi
       push      rsi
       sub       rsp,40
       vzeroupper
       lea       rbp,[rsp+50]
       xor       eax,eax
       mov       [rbp-20],rax
       mov       [rbp-30],rsp
       test      rcx,rcx
       je        near ptr M01_L24
       mov       rdx,offset MT_System.Int32[]
       cmp       [rcx],rdx
       jne       short M01_L00
       lea       rax,[rcx+10]
       mov       r8d,[rcx+8]
       jmp       short M01_L01
M01_L00:
       mov       rdx,offset MT_System.Collections.Generic.List`1[[System.Int32, System.Private.CoreLib]]
       mov       [rbp+10],rcx
       cmp       [rcx],rdx
       jne       near ptr M01_L18
       lea       rcx,[rbp-20]
       mov       rdx,[rbp+10]
       call      qword ptr [7FFD3060F378]
       mov       rax,[rbp-20]
       mov       r8d,[rbp-18]
M01_L01:
       test      r8d,r8d
       je        near ptr M01_L25
       cmp       r8d,4
       jge       short M01_L04
       mov       esi,[rax]
       mov       ecx,1
       cmp       r8d,1
       jle       near ptr M01_L23
M01_L02:
       mov       r11d,ecx
       mov       r11d,[rax+r11*4]
       cmp       r11d,esi
       jle       short M01_L03
       mov       esi,r11d
M01_L03:
       inc       ecx
       cmp       ecx,r8d
       jl        short M01_L02
       jmp       near ptr M01_L23
M01_L04:
       cmp       r8d,8
       jge       short M01_L09
       add       r8d,0FFFFFFFC
       movsxd    rcx,r8d
       lea       rcx,[rax+rcx*4]
       vmovdqu   xmm0,xmmword ptr [rax]
       add       rax,10
       cmp       rax,rcx
       jae       short M01_L06
M01_L05:
       vpmaxsd   xmm0,xmm0,[rax]
       add       rax,10
       cmp       rax,rcx
       jb        short M01_L05
M01_L06:
       vpmaxsd   xmm0,xmm0,[rcx]
       vmovd     esi,xmm0
       vpextrd   ecx,xmm0,1
       cmp       ecx,esi
       jle       short M01_L07
       mov       esi,ecx
M01_L07:
       vpextrd   ecx,xmm0,2
       cmp       ecx,esi
       jle       short M01_L08
       mov       esi,ecx
M01_L08:
       vpextrd   ecx,xmm0,3
       cmp       ecx,esi
       jle       near ptr M01_L23
       mov       esi,ecx
       jmp       near ptr M01_L23
M01_L09:
       mov       rcx,rax
       lea       r11d,[r8-8]
       movsxd    r11,r11d
       lea       r11,[rcx+r11*4]
       vmovdqu   ymm0,ymmword ptr [rcx]
       add       rcx,20
       cmp       rcx,r11
       jae       short M01_L11
M01_L10:
       vpmaxsd   ymm0,ymm0,[rcx]
       add       rcx,20
       cmp       rcx,r11
       jb        short M01_L10
M01_L11:
       vpmaxsd   ymm0,ymm0,[r11]
       vmovaps   ymm1,ymm0
       vmovd     esi,xmm1
       vmovaps   ymm1,ymm0
       vpextrd   ecx,xmm1,1
       cmp       ecx,esi
       jle       short M01_L12
       mov       esi,ecx
M01_L12:
       vmovaps   ymm1,ymm0
       vpextrd   ecx,xmm1,2
       cmp       ecx,esi
       jle       short M01_L13
       mov       esi,ecx
M01_L13:
       vmovaps   ymm1,ymm0
       vpextrd   ecx,xmm1,3
       cmp       ecx,esi
       jle       short M01_L14
       mov       esi,ecx
M01_L14:
       vextractf128 xmm1,ymm0,1
       vmovd     ecx,xmm1
       cmp       ecx,esi
       jle       short M01_L15
       mov       esi,ecx
M01_L15:
       vextractf128 xmm1,ymm0,1
       vpextrd   ecx,xmm1,1
       cmp       ecx,esi
       jle       short M01_L16
       mov       esi,ecx
M01_L16:
       vextractf128 xmm1,ymm0,1
       vpextrd   ecx,xmm1,2
       cmp       ecx,esi
       jle       short M01_L17
       mov       esi,ecx
M01_L17:
       vextractf128 xmm0,ymm0,1
       vpextrd   ecx,xmm0,3
       cmp       ecx,esi
       jle       near ptr M01_L23
       mov       esi,ecx
       jmp       near ptr M01_L23
M01_L18:
       mov       rcx,[rbp+10]
       mov       r11,7FFD2FAE05D8
       call      qword ptr [r11]
       mov       rsi,rax
       mov       [rbp-28],rsi
       mov       rcx,rsi
       mov       r11,7FFD2FAE05E0
       call      qword ptr [r11]
       test      eax,eax
       je        short M01_L19
       mov       rcx,rsi
       mov       r11,7FFD2FAE05E8
       call      qword ptr [r11]
       mov       edi,eax
       mov       rcx,rsi
       mov       r11,7FFD2FAE05F0
       call      qword ptr [r11]
       test      eax,eax
       je        short M01_L22
       jmp       short M01_L20
M01_L19:
       call      qword ptr [7FFD303E77F8]
       int       3
M01_L20:
       mov       rcx,rsi
       mov       r11,7FFD2FAE05F8
       call      qword ptr [r11]
       cmp       eax,edi
       jle       short M01_L21
       mov       edi,eax
M01_L21:
       mov       rcx,rsi
       mov       r11,7FFD2FAE05F0
       call      qword ptr [r11]
       test      eax,eax
       jne       short M01_L20
M01_L22:
       mov       rcx,rsi
       mov       r11,7FFD2FAE0600
       call      qword ptr [r11]
       mov       esi,edi
M01_L23:
       mov       eax,esi
       vzeroupper
       add       rsp,40
       pop       rsi
       pop       rdi
       pop       rbp
       ret
M01_L24:
       mov       ecx,10
       call      qword ptr [7FFD303E7798]
       int       3
M01_L25:
       call      qword ptr [7FFD303E77F8]
       int       3
       push      rbp
       push      rdi
       push      rsi
       sub       rsp,30
       vzeroupper
       mov       rbp,[rcx+20]
       mov       [rsp+20],rbp
       lea       rbp,[rbp+50]
       cmp       qword ptr [rbp-28],0
       je        short M01_L26
       mov       rcx,[rbp-28]
       mov       r11,7FFD2FAE0600
       call      qword ptr [r11]
M01_L26:
       nop
       vzeroupper
       add       rsp,30
       pop       rsi
       pop       rdi
       pop       rbp
       ret
; Total bytes of code 684

Docs

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

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 8c58fc2347820ce48e09605d8adddb993df9ebb5
Compare 1d15f2140f7eb30a976c66290491ec89cd628da0
Diff Diff

Regressions in Burgers

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
Test3 - Duration of single invocation 119.12 ms 172.18 ms 1.45 0.04 False Trace Trace

graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'Burgers*'
Details

Payloads

Baseline
Compare

Histogram

Burgers.Test3


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 172.18077333333335 > 125.2032478846154.
IsChangePoint: Marked as a change because one of 12/28/2022 5:13:50 PM, 1/3/2023 6:29:42 AM falls between 12/23/2022 9:40:21 PM and 1/3/2023 6:29:42 AM.
IsRegressionStdDev: Marked as regression because -128.7669311945409 (T) = (0 -171372910.23809525) / Math.Sqrt((3312379617640.8545 / (29)) + (615383043005.9226 / (14))) is less than -2.019540970439573 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (29) + (14) - 2, .025) and -0.4261990802366147 = (120160581.09479603 - 171372910.23809525) / 120160581.09479603 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
; Burgers.Test3()
       sub       rsp,38
       vzeroupper
       vmovsd    xmm2,qword ptr [7FFC36B7F490]
       vmovsd    qword ptr [rsp+20],xmm2
       mov       rdx,[rcx+10]
       mov       [rsp+28],rdx
       vmovsd    xmm2,qword ptr [rcx+18]
       vmovsd    xmm3,qword ptr [rcx+20]
       mov       ecx,4E20
       mov       edx,2711
       call      qword ptr [7FFC372B36F0]; Burgers.GetCalculated3(Int32, Int32, Double, Double, Double, Double[])
       nop
       add       rsp,38
       ret
; Total bytes of code 62
; Burgers.GetCalculated3(Int32, Int32, Double, Double, Double, Double[])
       push      r15
       push      r14
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,88
       vzeroupper
       vmovaps   [rsp+70],xmm6
       vmovaps   [rsp+60],xmm7
       vmovaps   [rsp+50],xmm8
       vmovaps   [rsp+40],xmm9
       vmovaps   [rsp+30],xmm10
       vmovaps   [rsp+20],xmm11
       mov       edi,ecx
       mov       esi,edx
       vmovaps   xmm6,xmm2
       vmovaps   xmm7,xmm3
       mov       rbx,[rsp+0E8]
       mov       edx,esi
       sar       edx,1F
       and       edx,3
       add       edx,esi
       and       edx,0FFFFFFFC
       mov       ecx,esi
       sub       ecx,edx
       mov       edx,ecx
       neg       edx
       lea       ebp,[rdx+rsi+4]
       movsxd    rdx,ebp
       mov       rcx,offset MT_System.Double[]
       call      CORINFO_HELP_NEWARR_1_VC
       mov       r14,rax
       movsxd    rdx,ebp
       mov       rcx,offset MT_System.Double[]
       call      CORINFO_HELP_NEWARR_1_VC
       mov       r15,rax
       mov       r8d,[rbx+8]
       mov       rcx,rbx
       mov       rdx,r15
       call      qword ptr [7FFC36AA96A8]; System.Array.Copy(System.Array, System.Array, Int32)
       vmulsd    xmm0,xmm7,qword ptr [rsp+0E0]
       vdivsd    xmm0,xmm0,xmm6
       vmovsd    xmm8,qword ptr [7FFC36B7F7A0]
       vmovaps   xmm1,xmm8
       call      System.Math.Pow(Double, Double)
       xor       edx,edx
       test      edi,edi
       jle       near ptr M01_L03
       add       ebp,0FFFFFFFD
       vdivsd    xmm1,xmm7,xmm6
       vbroadcastsd ymm1,xmm1
       vmovupd   ymm2,[7FFC36B7F7C0]
       vbroadcastsd ymm3,xmm0
       lea       eax,[rsi-1]
       mov       ecx,eax
M01_L00:
       mov       r8d,1
       cmp       ebp,1
       jle       near ptr M01_L02
       mov       r9d,[r15+8]
M01_L01:
       cmp       r8d,r9d
       jae       near ptr M01_L05
       lea       r11d,[r8+3]
       cmp       r11d,r9d
       jae       near ptr M01_L05
       vmovupd   ymm4,[r15+r8*8+10]
       lea       r10d,[r8-1]
       cmp       r10d,r9d
       jae       near ptr M01_L05
       lea       ebx,[r8+2]
       cmp       ebx,r9d
       jae       near ptr M01_L05
       vmovupd   ymm5,[r15+r10*8+10]
       lea       r10d,[r8+1]
       cmp       r10d,r9d
       jae       near ptr M01_L05
       lea       ebx,[r8+4]
       cmp       ebx,r9d
       jae       near ptr M01_L05
       vmovupd   ymm9,[r15+r10*8+10]
       vmulpd    ymm10,ymm4,ymm1
       vsubpd    ymm11,ymm4,ymm5
       vmulpd    ymm10,ymm10,ymm11
       vsubpd    ymm10,ymm4,ymm10
       vmulpd    ymm4,ymm4,ymm2
       vsubpd    ymm4,ymm9,ymm4
       vaddpd    ymm4,ymm4,ymm5
       vmulpd    ymm4,ymm3,ymm4
       vaddpd    ymm4,ymm10,ymm4
       mov       r10d,[r14+8]
       cmp       r8d,r10d
       jae       near ptr M01_L05
       cmp       r11d,r10d
       jae       near ptr M01_L06
       mov       r8d,r8d
       vmovupd   [r14+r8*8+10],ymm4
       mov       r8d,ebx
       cmp       r8d,ebp
       jl        near ptr M01_L01
M01_L02:
       mov       r9d,[r15+8]
       test      r9d,r9d
       je        near ptr M01_L07
       vmovsd    xmm4,qword ptr [r15+10]
       vmulsd    xmm5,xmm4,xmm7
       vdivsd    xmm5,xmm5,xmm6
       cmp       eax,r9d
       jae       near ptr M01_L07
       vmovsd    xmm9,qword ptr [r15+rcx*8+10]
       vsubsd    xmm10,xmm4,xmm9
       vmulsd    xmm5,xmm5,xmm10
       vsubsd    xmm5,xmm4,xmm5
       cmp       r9d,1
       jbe       near ptr M01_L07
       vmovsd    xmm10,qword ptr [r15+18]
       vmulsd    xmm4,xmm4,xmm8
       vsubsd    xmm4,xmm10,xmm4
       vaddsd    xmm4,xmm4,xmm9
       vmulsd    xmm4,xmm4,xmm0
       vaddsd    xmm4,xmm5,xmm4
       mov       r10d,[r14+8]
       test      r10d,r10d
       je        near ptr M01_L07
       vmovsd    qword ptr [r14+10],xmm4
       vmovsd    xmm4,qword ptr [r15+rcx*8+10]
       vmulsd    xmm5,xmm4,xmm7
       vdivsd    xmm5,xmm5,xmm6
       lea       r8d,[rsi-2]
       cmp       r8d,r9d
       jae       near ptr M01_L07
       mov       r9d,r8d
       vmovsd    xmm9,qword ptr [r15+r9*8+10]
       vsubsd    xmm10,xmm4,xmm9
       vmulsd    xmm5,xmm5,xmm10
       vsubsd    xmm5,xmm4,xmm5
       vmovsd    xmm10,qword ptr [r15+10]
       vmulsd    xmm4,xmm4,xmm8
       vsubsd    xmm4,xmm10,xmm4
       vaddsd    xmm4,xmm4,xmm9
       vmulsd    xmm4,xmm4,xmm0
       vaddsd    xmm4,xmm5,xmm4
       cmp       eax,r10d
       jae       short M01_L07
       vmovsd    qword ptr [r14+rcx*8+10],xmm4
       inc       edx
       cmp       edx,edi
       jl        short M01_L04
       mov       r15,r14
M01_L03:
       mov       rax,r15
       vmovaps   xmm6,[rsp+70]
       vmovaps   xmm7,[rsp+60]
       vmovaps   xmm8,[rsp+50]
       vmovaps   xmm9,[rsp+40]
       vmovaps   xmm10,[rsp+30]
       vmovaps   xmm11,[rsp+20]
       vzeroupper
       add       rsp,88
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
M01_L04:
       xchg      r14,r15
       jmp       near ptr M01_L00
M01_L05:
       call      CORINFO_HELP_THROW_ARGUMENTOUTOFRANGEEXCEPTION
       int       3
M01_L06:
       call      CORINFO_HELP_THROW_ARGUMENTEXCEPTION
       int       3
M01_L07:
       call      CORINFO_HELP_RNGCHKFAIL
       int       3
; Total bytes of code 723

Compare Jit Disasm

; BenchmarkDotNet.Autogenerated.Runnable_0.__ForDisassemblyDiagnoser__()
       push      rbp
       sub       rsp,20
       lea       rbp,[rsp+20]
       mov       [rbp+10],rcx
       mov       rcx,[rbp+10]
       cmp       dword ptr [rcx+60],0B
       jne       short M00_L00
       mov       rcx,[rbp+10]
       call      qword ptr [7FFB62E33768]
       nop
       add       rsp,20
       pop       rbp
       ret
M00_L00:
       xor       eax,eax
       add       rsp,20
       pop       rbp
       ret
; Total bytes of code 49

Docs

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

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 8c58fc2347820ce48e09605d8adddb993df9ebb5
Compare 1d15f2140f7eb30a976c66290491ec89cd628da0
Diff Diff

Regressions in System.Tests.Perf_String

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
TrimEnd_CharArr - Duration of single invocation 4.51 ns 5.73 ns 1.27 0.04 False Trace Trace

graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Tests.Perf_String*'
Details

Payloads

Baseline
Compare

Histogram

System.Tests.Perf_String.TrimEnd_CharArr(s: "Test", c: [' ', ' '])


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 5.732226949094784 > 4.735492709714653.
IsChangePoint: Marked as a change because one of 11/2/2022 9:35:40 AM, 11/7/2022 4:10:19 PM, 11/18/2022 8:48:12 PM, 12/10/2022 11:25:25 PM, 12/17/2022 10:44:50 PM, 12/28/2022 5:13:50 PM, 1/3/2023 6:29:42 AM falls between 12/23/2022 9:40:21 PM and 1/3/2023 6:29:42 AM.
IsRegressionStdDev: Marked as regression because -55.25365950219365 (T) = (0 -5.660159358774324) / Math.Sqrt((0.0001401500415806516 / (29)) + (0.006026706263614678 / (14))) is less than -2.019540970439573 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (29) + (14) - 2, .025) and -0.2557648955079805 = (4.507340011670483 - 5.660159358774324) / 4.507340011670483 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.Tests.Perf_String.TrimEnd_CharArr(System.String, Char[])
       mov       rcx,rdx
       mov       rdx,r8
       cmp       [rcx],ecx
       jmp       qword ptr [7FFF3F2054F8]; System.String.TrimEnd(Char[])
; Total bytes of code 14
; System.String.TrimEnd(Char[])
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       test      rdx,rdx
       je        short M01_L00
       mov       r8d,[rdx+8]
       test      r8d,r8d
       je        short M01_L00
       add       rdx,10
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       mov       r9d,2
       call      qword ptr [7FFF3F205528]; System.String.TrimHelper(Char*, Int32, System.Text.TrimType)
       nop
       add       rsp,28
       ret
M01_L00:
       mov       edx,2
       call      qword ptr [7FFF3F205510]
       nop
       add       rsp,28
       ret
; Total bytes of code 74

Compare Jit Disasm

; System.Tests.Perf_String.TrimEnd_CharArr(System.String, Char[])
       mov       rcx,rdx
       mov       rdx,r8
       cmp       [rcx],ecx
       jmp       qword ptr [7FFCEC8E54F8]; System.String.TrimEnd(Char[])
; Total bytes of code 14
; System.String.TrimEnd(Char[])
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       test      rdx,rdx
       je        short M01_L00
       mov       r8d,[rdx+8]
       test      r8d,r8d
       je        short M01_L00
       add       rdx,10
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       mov       r9d,2
       call      qword ptr [7FFCEC8E5528]; System.String.TrimHelper(Char*, Int32, System.Text.TrimType)
       nop
       add       rsp,28
       ret
M01_L00:
       mov       edx,2
       call      qword ptr [7FFCEC8E5510]
       nop
       add       rsp,28
       ret
; Total bytes of code 74

Docs

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

Metadata

Metadata

Assignees

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions