Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Perf] Windows/x64: 188 Regressions from GC changes #74014

Closed
performanceautofiler bot opened this issue Aug 16, 2022 · 36 comments
Closed

[Perf] Windows/x64: 188 Regressions from GC changes #74014

performanceautofiler bot opened this issue Aug 16, 2022 · 36 comments
Assignees
Labels
Milestone

Comments

@performanceautofiler
Copy link

No description provided.

@performanceautofiler
Copy link
Author

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in System.Reflection.Activator<EmptyClass>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
CreateInstanceType - Duration of single invocation 9.88 ns 11.70 ns 1.18 0.30 False
CreateInstanceGeneric - Duration of single invocation 13.90 ns 15.38 ns 1.11 0.30 False

graph
graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Reflection.Activator&lt;EmptyClass&gt;*'

Payloads

Baseline
Compare

Histogram

System.Reflection.Activator<EmptyClass>.CreateInstanceType


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 11.69552542498745 > 10.187379429401396.
IsChangePoint: Marked as a change because one of 7/11/2022 4:59:47 AM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -9.590124738884416 (T) = (0 -11.191995884315995) / Math.Sqrt((0.24225495486883333 / (20)) + (0.15071316300474316 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.12105313722576878 = (9.98346600412933 - 11.191995884315995) / 9.98346600412933 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.

```#### System.Reflection.Activator&lt;EmptyClass&gt;.CreateInstanceGeneric

```log

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 15.375631980656722 > 14.629931041379773.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -8.253774149979632 (T) = (0 -15.778766822048107) / Math.Sqrt((0.4278614470929309 / (20)) + (0.44438670701497823 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.10412572504730795 = (14.290733803319402 - 15.778766822048107) / 14.290733803319402 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.

Docs

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

### Run Information
Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in System.Tests.Perf_Type

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
GetTypeFromHandle - Duration of single invocation 0.00 ns 1.16 ns 0.24 False 5.045927596696567 7.129995791570011 1.4130198372719078 Trace Trace

graph
Test Report

Repro

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

Payloads

Baseline
Compare

Histogram

System.Tests.Perf_Type.GetTypeFromHandle


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.1590791388064645 > 0.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -51.85108822148905 (T) = (0 -1.1214864316906232) / Math.Sqrt((0 / (20)) + (0.01871252042985985 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -∞ = (0 - 1.1214864316906232) / 0 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_Type.GetTypeFromHandle()
       mov       rax,[rcx+18]
       ret
; Total bytes of code 5

Compare Jit Disasm

; System.Tests.Perf_Type.GetTypeFromHandle()
       mov       rax,[rcx+18]
       ret
; Total bytes of code 5

Docs

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

@performanceautofiler
Copy link
Author

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in Microsoft.Extensions.Primitives.StringSegmentBenchmark

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
SubString - Duration of single invocation 7.44 ns 8.96 ns 1.20 0.10 False 106.71583940896883 103.69171218647902 0.9716618710096033 Trace Trace
GetValue - Duration of single invocation 1.23 ns 2.49 ns 2.03 0.09 False 44.77218785324801 40.72060909771108 0.909506795405733 Trace Trace

graph
graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'Microsoft.Extensions.Primitives.StringSegmentBenchmark*'

Payloads

Baseline
Compare

Histogram

Microsoft.Extensions.Primitives.StringSegmentBenchmark.SubString


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 8.959871575629547 > 7.829623778031409.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -31.3731979100491 (T) = (0 -9.564620137525528) / Math.Sqrt((0.016146926135456516 / (20)) + (0.11800191259247927 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.2516648012299394 = (7.641518822073548 - 9.564620137525528) / 7.641518822073548 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
; Microsoft.Extensions.Primitives.StringSegmentBenchmark.SubString()
       sub       rsp,28
       add       rcx,18
       mov       r8,[rcx]
       test      r8,r8
       je        short 000000000000FAE1
       cmp       dword ptr [rcx+0C],5
       jb        short 000000000000FAE1
       mov       edx,[rcx+8]
       add       edx,3
       mov       rcx,r8
       mov       r8d,2
       cmp       [rcx],ecx
       add       rsp,28
       jmp       qword ptr [3360]
       mov       edx,3
       mov       r8d,2
       mov       r9d,1
       call      qword ptr [0B5E8]
       int       3
; Total bytes of code 73
; System.String.Substring(Int32, Int32)
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       mov       rdi,rcx
       mov       esi,edx
       test      esi,esi
       jl        near ptr 000000000000FC61
       mov       ecx,[rdi+8]
       cmp       ecx,esi
       jl        near ptr 000000000000FCBE
       test      r8d,r8d
       jl        near ptr 000000000000FD1B
       mov       eax,ecx
       sub       eax,r8d
       cmp       eax,esi
       jl        near ptr 000000000000FD78
       test      r8d,r8d
       je        short 000000000000FC4C
       test      esi,esi
       je        short 000000000000FC3C
       mov       ecx,r8d
       call      0
       mov       rbx,rax
       mov       r8d,[rbx+8]
       lea       rcx,[rbx+0C]
       mov       edx,esi
       lea       rdx,[rdi+rdx*2+0C]
       add       r8,r8
       call      qword ptr [0BE10]
       mov       rax,rbx
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       cmp       ecx,r8d
       jne       short 000000000000FC0E
       mov       rax,rdi
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       rax,1C360002028
       mov       rax,[rax]
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,163D
       mov       rdx,7FF861BE4000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,0A50B
       mov       rdx,7FF861BE4000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [9030]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,163D
       mov       rdx,7FF861BE4000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,0A547
       mov       rdx,7FF861BE4000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [9030]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,57
       mov       rdx,7FF861BE4000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,0A1CF
       mov       rdx,7FF861BE4000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [9030]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,57
       mov       rdx,7FF861BE4000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,9B73
       mov       rdx,7FF861BE4000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [9030]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       int       3
; Total bytes of code 518

Compare Jit Disasm

; Microsoft.Extensions.Primitives.StringSegmentBenchmark.SubString()
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       add       rcx,18
       mov       rsi,[rcx]
       test      rsi,rsi
       je        short 000000000000FB19
       cmp       dword ptr [rcx+0C],5
       jb        short 000000000000FB19
       mov       edi,[rcx+8]
       add       edi,3
       mov       ecx,[rsi+8]
       mov       eax,ecx
       mov       edx,edi
       add       rdx,2
       cmp       rax,rdx
       jb        short 000000000000FB31
       cmp       ecx,2
       jne       short 000000000000FAE9
       mov       rax,rsi
       jmp       short 000000000000FB11
       mov       ecx,2
       call      0
       mov       rbx,rax
       mov       r8d,[rbx+8]
       lea       rcx,[rbx+0C]
       mov       edx,edi
       lea       rdx,[rsi+rdx*2+0C]
       add       r8,r8
       call      qword ptr [0BE10]
       mov       rax,rbx
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       edx,3
       mov       r8d,2
       mov       r9d,1
       call      qword ptr [0B5E8]
       int       3
       mov       rcx,rsi
       mov       edx,edi
       mov       r8d,2
       call      qword ptr [3378]
       int       3
; Total bytes of code 147
; System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
       push      rdi
       push      rsi
       vzeroupper
       mov       rax,rcx
       sub       rax,rdx
       cmp       rax,r8
       jb        near ptr 000000000000FA5B
       mov       rax,rdx
       sub       rax,rcx
       cmp       rax,r8
       jb        near ptr 000000000000FA5B
       lea       rsi,[rdx+r8]
       lea       rdi,[rcx+r8]
       cmp       r8,10
       jbe       short 000000000000F996
       cmp       r8,40
       ja        short 000000000000F9C2
       vmovupd   xmm0,[rdx]
       vmovupd   [rcx],xmm0
       cmp       r8,20
       ja        near ptr 000000000000FA18
       vmovupd   xmm0,[rsi+0FFF0]
       vmovupd   [rdi+0FFF0],xmm0
       pop       rsi
       pop       rdi
       ret
       test      r8b,18
       jne       short 000000000000FA05
       test      r8b,4
       jne       near ptr 000000000000FA3B
       test      r8,r8
       je        short 000000000000F993
       movzx     edx,byte ptr [rdx]
       mov       [rcx],dl
       test      r8b,2
       je        short 000000000000F993
       movsx     r8,word ptr [rsi+0FFFE]
       mov       [rdi+0FFFE],r8w
       jmp       short 000000000000F993
       cmp       r8,800
       ja        near ptr 000000000000FA64
       mov       rax,r8
       shr       rax,6
       vmovdqu   ymm0,ymmword ptr [rdx]
       vmovdqu   ymmword ptr [rcx],ymm0
       vmovdqu   ymm0,ymmword ptr [rdx+20]
       vmovdqu   ymmword ptr [rcx+20],ymm0
       add       rcx,40
       add       rdx,40
       dec       rax
       jne       short 000000000000F9D6
       and       r8,3F
       cmp       r8,10
       ja        near ptr 000000000000F977
       jmp       short 000000000000FA4C
       mov       r8,[rdx]
       mov       [rcx],r8
       mov       rdx,[rsi+0FFF8]
       mov       [rdi+0FFF8],rdx
       jmp       near ptr 000000000000F993
       vmovupd   xmm0,[rdx+10]
       vmovupd   [rcx+10],xmm0
       cmp       r8,30
       jbe       near ptr 000000000000F989
       vmovupd   xmm0,[rdx+20]
       vmovupd   [rcx+20],xmm0
       jmp       near ptr 000000000000F989
       mov       r8d,[rdx]
       mov       [rcx],r8d
       mov       edx,[rsi+0FFFC]
       mov       [rdi+0FFFC],edx
       jmp       near ptr 000000000000F993
       vmovupd   xmm0,[rsi+0FFF0]
       vmovupd   [rdi+0FFF0],xmm0
       jmp       near ptr 000000000000F993
       cmp       rcx,rdx
       je        near ptr 000000000000F993
       pop       rsi
       pop       rdi
       jmp       qword ptr [0BE28]
; Total bytes of code 300

Microsoft.Extensions.Primitives.StringSegmentBenchmark.GetValue


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 2.4907923732486656 > 1.2840067155800157.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -33.99036885075571 (T) = (0 -2.692976506929134) / Math.Sqrt((0.033768120881384894 / (20)) + (0.030515161455933103 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -1.6660549378238292 = (1.0100979048568592 - 2.692976506929134) / 1.0100979048568592 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
; Microsoft.Extensions.Primitives.StringSegmentBenchmark.GetValue()
       push      rax
       add       rcx,18
       mov       [rsp],rcx
       mov       rdx,[rcx]
       test      rdx,rdx
       jne       short 000000000000FB48
       xor       eax,eax
       add       rsp,8
       ret
       mov       rcx,rdx
       mov       r8,[rsp]
       mov       edx,[r8+8]
       mov       r8d,[r8+0C]
       cmp       [rcx],ecx
       add       rsp,8
       jmp       qword ptr [3360]
; Total bytes of code 51
; System.String.Substring(Int32, Int32)
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       mov       rdi,rcx
       mov       esi,edx
       test      esi,esi
       jl        near ptr 000000000000F981
       mov       ecx,[rdi+8]
       cmp       ecx,esi
       jl        near ptr 000000000000F9DE
       test      r8d,r8d
       jl        near ptr 000000000000FA3B
       mov       eax,ecx
       sub       eax,r8d
       cmp       eax,esi
       jl        near ptr 000000000000FA98
       test      r8d,r8d
       je        short 000000000000F96C
       test      esi,esi
       je        short 000000000000F95C
       mov       ecx,r8d
       call      0
       mov       rbx,rax
       mov       r8d,[rbx+8]
       lea       rcx,[rbx+0C]
       mov       edx,esi
       lea       rdx,[rdi+rdx*2+0C]
       add       r8,r8
       call      qword ptr [0BE10]
       mov       rax,rbx
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       cmp       ecx,r8d
       jne       short 000000000000F92E
       mov       rax,rdi
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       rax,2162F002028
       mov       rax,[rax]
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,163D
       mov       rdx,7FF8D0E34000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,0A50B
       mov       rdx,7FF8D0E34000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [77E0]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,163D
       mov       rdx,7FF8D0E34000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,0A547
       mov       rdx,7FF8D0E34000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [77E0]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,57
       mov       rdx,7FF8D0E34000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,0A1CF
       mov       rdx,7FF8D0E34000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [77E0]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,57
       mov       rdx,7FF8D0E34000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,9B73
       mov       rdx,7FF8D0E34000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [77E0]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       int       3
; Total bytes of code 518

Compare Jit Disasm

; Microsoft.Extensions.Primitives.StringSegmentBenchmark.GetValue()
       push      rax
       add       rcx,18
       mov       [rsp],rcx
       mov       rdx,[rcx]
       test      rdx,rdx
       jne       short 000000000000F9C8
       xor       eax,eax
       add       rsp,8
       ret
       mov       rcx,rdx
       mov       r8,[rsp]
       mov       edx,[r8+8]
       mov       r8d,[r8+0C]
       cmp       [rcx],ecx
       add       rsp,8
       jmp       qword ptr [3360]
; Total bytes of code 51
; System.String.Substring(Int32, Int32)
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       mov       rsi,rcx
       mov       edi,edx
       mov       eax,edi
       mov       ecx,r8d
       add       rax,rcx
       mov       ecx,[rsi+8]
       mov       edx,ecx
       cmp       rax,rdx
       ja        short 000000000000F966
       test      r8d,r8d
       jne       short 000000000000F928
       mov       rax,19F5B402028
       mov       rax,[rax]
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       cmp       ecx,r8d
       jne       short 000000000000F938
       mov       rax,rsi
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       ecx,r8d
       call      0
       mov       rbx,rax
       mov       r8d,[rbx+8]
       lea       rcx,[rbx+0C]
       mov       edx,edi
       lea       rdx,[rsi+rdx*2+0C]
       add       r8,r8
       call      qword ptr [0BE10]
       mov       rax,rbx
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       rcx,rsi
       mov       edx,edi
       call      qword ptr [3378]
       int       3
; Total bytes of code 130

Docs

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

@performanceautofiler
Copy link
Author

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in System.Text.Tests.Perf_StringBuilder

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
ctor_string - Duration of single invocation 12.66 μs 13.60 μs 1.07 0.00 False 77196.85812469317 85892.55499153976 1.1126431447870684 Trace Trace
ToString_MultipleSegments - Duration of single invocation 17.90 μs 20.23 μs 1.13 0.00 False Trace Trace
ToString_SingleSegment - Duration of single invocation 19.99 ns 21.55 ns 1.08 0.10 False 165.4446324497086 176.55788519460774 1.0671720356251346 Trace Trace
ctor_capacity - Duration of single invocation 5.64 μs 6.65 μs 1.18 0.02 False Trace Trace
ToString_SingleSegment - Duration of single invocation 17.46 μs 19.52 μs 1.12 0.01 False 76311.18881118881 88518.3299389002 1.159965285797272 Trace Trace

graph
graph
graph
graph
graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Text.Tests.Perf_StringBuilder*'

Payloads

Baseline
Compare

Histogram

System.Text.Tests.Perf_StringBuilder.ctor_string(length: 100000)


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 13.595019322653178 > 13.35945507770302.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -31.058546171960497 (T) = (0 -13690.99464511575) / Math.Sqrt((10692.615067473482 / (20)) + (21455.909721610522 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.08019530044747622 = (12674.554906362015 - 13690.99464511575) / 12674.554906362015 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.Text.Tests.Perf_StringBuilder.ctor_string(Int32)
       push      rdi
       push      rsi
       sub       rsp,28
       cmp       edx,64
       je        short 000000000000F591
       mov       rsi,[rcx+8]
       jmp       short 000000000000F595
       mov       rsi,[rcx+10]
       mov       rcx,offset MT_System.Text.StringBuilder
       call      000000000000C390
       mov       rdi,rax
       mov       rdx,rsi
       test      rdx,rdx
       jne       short 000000000000F5B6
       xor       edx,edx
       xor       r9d,r9d
       jmp       short 000000000000F5BA
       mov       r9d,[rdx+8]
       mov       dword ptr [rsp+20],10
       mov       rcx,rdi
       xor       r8d,r8d
       call      qword ptr [50D8]
       mov       rax,rdi
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 88
; System.Text.StringBuilder..ctor(System.String, Int32, Int32, Int32)
       push      r14
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,20
       mov       rbx,rcx
       mov       rdi,rdx
       mov       ebp,r8d
       mov       esi,r9d
       mov       ecx,[rsp+70]
       test      ecx,ecx
       jl        near ptr 000000000000F74D
       test      esi,esi
       jl        near ptr 000000000000F7B6
       test      ebp,ebp
       jl        near ptr 000000000000F81F
       test      rdi,rdi
       je        near ptr 000000000000F720
       mov       edx,[rdi+8]
       sub       edx,esi
       cmp       edx,ebp
       jl        near ptr 000000000000F888
       mov       dword ptr [rbx+20],7FFFFFFF
       test      ecx,ecx
       je        near ptr 000000000000F732
       cmp       ecx,esi
       jl        short 000000000000F712
       mov       edx,ecx
       mov       ecx,edx
       cmp       ecx,400
       jge       short 000000000000F716
       movsxd    rdx,ecx
       mov       rcx,offset MT_System.Char[]
       call      000000000000C4B0
       lea       rcx,[rbx+8]
       mov       rdx,rax
       call      0000000000000010
       mov       [rbx+18],esi
       mov       r8d,ebp
       mov       ecx,esi
       add       r8,rcx
       mov       ecx,[rdi+8]
       cmp       r8,rcx
       ja        near ptr 000000000000F87C
       mov       r8d,ebp
       lea       rdx,[rdi+r8*2+0C]
       mov       r8,[rbx+8]
       test      r8,r8
       je        short 000000000000F73C
       lea       rcx,[r8+10]
       mov       r14d,[r8+8]
       cmp       esi,r14d
       ja        short 000000000000F746
       mov       r8d,esi
       add       r8,r8
       call      qword ptr [0BE10]
       nop
       add       rsp,20
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       ret
       mov       edx,esi
       jmp       short 000000000000F69D
       xor       edx,edx
       call      qword ptr [3858]
       jmp       short 000000000000F6B9
       mov       rdx,1769A802028
       mov       rdi,[rdx]
       jmp       near ptr 000000000000F67B
       mov       ecx,10
       jmp       near ptr 000000000000F697
       xor       ecx,ecx
       xor       r14d,r14d
       cmp       esi,r14d
       jbe       short 000000000000F6FA
       call      qword ptr [0B4B0]
       int       3
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rdi,rax
       mov       ecx,133C6
       mov       rdx,7FFBA9304000
       call      00000000000014A0
       mov       rbx,rax
       mov       ecx,9FF3
       mov       rdx,7FFBA9304000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [7030]
       mov       rcx,rax
       mov       rdx,rbx
       call      qword ptr [7060]
       mov       r8,rax
       mov       rdx,rbx
       mov       rcx,rdi
       call      qword ptr [1828]
       mov       rcx,rdi
       call      0000000000004690
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rbp,rax
       mov       ecx,57
       mov       rdx,7FFBA9304000
       call      00000000000014A0
       mov       r14,rax
       mov       ecx,9FAD
       mov       rdx,7FFBA9304000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [7030]
       mov       rcx,rax
       mov       rdx,r14
       call      qword ptr [7060]
       mov       r8,rax
       mov       rdx,r14
       mov       rcx,rbp
       call      qword ptr [1828]
       mov       rcx,rbp
       call      0000000000004690
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,163D
       mov       rdx,7FFBA9304000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,0A50B
       mov       rdx,7FFBA9304000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [7030]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       mov       ecx,21
       call      qword ptr [0B7E0]
       int       3
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,57
       mov       rdx,7FFBA9304000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,9B73
       mov       rdx,7FFBA9304000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [7030]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       int       3
; Total bytes of code 678

Compare Jit Disasm

; System.Text.Tests.Perf_StringBuilder.ctor_string(Int32)
       push      rdi
       push      rsi
       sub       rsp,28
       cmp       edx,64
       je        short 000000000000F591
       mov       rsi,[rcx+8]
       jmp       short 000000000000F595
       mov       rsi,[rcx+10]
       mov       rcx,offset MT_System.Text.StringBuilder
       call      0000000000002AE0
       mov       rdi,rax
       mov       rdx,rsi
       test      rdx,rdx
       jne       short 000000000000F5B6
       xor       edx,edx
       xor       r9d,r9d
       jmp       short 000000000000F5BA
       mov       r9d,[rdx+8]
       mov       dword ptr [rsp+20],10
       mov       rcx,rdi
       xor       r8d,r8d
       call      qword ptr [50D8]
       mov       rax,rdi
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 88
; System.Text.StringBuilder..ctor(System.String, Int32, Int32, Int32)
       push      r14
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,20
       mov       rbx,rcx
       mov       rdi,rdx
       mov       ebp,r8d
       mov       esi,r9d
       mov       ecx,[rsp+70]
       test      ecx,ecx
       jl        near ptr 000000000000F74D
       test      esi,esi
       jl        near ptr 000000000000F7B6
       test      ebp,ebp
       jl        near ptr 000000000000F81F
       test      rdi,rdi
       je        near ptr 000000000000F720
       mov       edx,[rdi+8]
       sub       edx,esi
       cmp       edx,ebp
       jl        near ptr 000000000000F888
       mov       dword ptr [rbx+20],7FFFFFFF
       test      ecx,ecx
       je        near ptr 000000000000F732
       cmp       ecx,esi
       jl        short 000000000000F712
       mov       edx,ecx
       mov       ecx,edx
       cmp       ecx,400
       jge       short 000000000000F716
       movsxd    rdx,ecx
       mov       rcx,offset MT_System.Char[]
       call      0000000000002C00
       lea       rcx,[rbx+8]
       mov       rdx,rax
       call      0000000000000010
       mov       [rbx+18],esi
       mov       r8d,ebp
       mov       ecx,esi
       add       r8,rcx
       mov       ecx,[rdi+8]
       cmp       r8,rcx
       ja        near ptr 000000000000F87C
       mov       r8d,ebp
       lea       rdx,[rdi+r8*2+0C]
       mov       r8,[rbx+8]
       test      r8,r8
       je        short 000000000000F73C
       lea       rcx,[r8+10]
       mov       r14d,[r8+8]
       cmp       esi,r14d
       ja        short 000000000000F746
       mov       r8d,esi
       add       r8,r8
       call      qword ptr [0BE10]
       nop
       add       rsp,20
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       ret
       mov       edx,esi
       jmp       short 000000000000F69D
       xor       edx,edx
       call      qword ptr [3888]
       jmp       short 000000000000F6B9
       mov       rdx,1D400002028
       mov       rdi,[rdx]
       jmp       near ptr 000000000000F67B
       mov       ecx,10
       jmp       near ptr 000000000000F697
       xor       ecx,ecx
       xor       r14d,r14d
       cmp       esi,r14d
       jbe       short 000000000000F6FA
       call      qword ptr [0B4B0]
       int       3
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      0000000000002AE0
       mov       rdi,rax
       mov       ecx,13438
       mov       rdx,7FFEFA904000
       call      000000000000A140
       mov       rbx,rax
       mov       ecx,9FF3
       mov       rdx,7FFEFA904000
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [7030]
       mov       rcx,rax
       mov       rdx,rbx
       call      qword ptr [7060]
       mov       r8,rax
       mov       rdx,rbx
       mov       rcx,rdi
       call      qword ptr [1828]
       mov       rcx,rdi
       call      0000000000002B00
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      0000000000002AE0
       mov       rbp,rax
       mov       ecx,57
       mov       rdx,7FFEFA904000
       call      000000000000A140
       mov       r14,rax
       mov       ecx,9FAD
       mov       rdx,7FFEFA904000
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [7030]
       mov       rcx,rax
       mov       rdx,r14
       call      qword ptr [7060]
       mov       r8,rax
       mov       rdx,r14
       mov       rcx,rbp
       call      qword ptr [1828]
       mov       rcx,rbp
       call      0000000000002B00
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      0000000000002AE0
       mov       rsi,rax
       mov       ecx,163D
       mov       rdx,7FFEFA904000
       call      000000000000A140
       mov       rdi,rax
       mov       ecx,0A50B
       mov       rdx,7FFEFA904000
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [7030]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000002B00
       mov       ecx,21
       call      qword ptr [0B7E0]
       int       3
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      0000000000002AE0
       mov       rsi,rax
       mov       ecx,57
       mov       rdx,7FFEFA904000
       call      000000000000A140
       mov       rdi,rax
       mov       ecx,9B73
       mov       rdx,7FFEFA904000
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [7030]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000002B00
       int       3
; Total bytes of code 678

System.Text.Tests.Perf_StringBuilder.ToString_MultipleSegments(length: 100000)


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 20.230884065582757 > 18.865677769793727.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -48.806108192098336 (T) = (0 -20159.389230137567) / Math.Sqrt((11690.582266945079 / (20)) + (57894.01518532321 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.1224987470609612 = (17959.386843790162 - 20159.389230137567) / 17959.386843790162 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.Text.Tests.Perf_StringBuilder.ToString_MultipleSegments(Int32)
       cmp       edx,64
       je        short 000000000000F6AB
       mov       rcx,[rcx+30]
       jmp       short 000000000000F6AF
       mov       rcx,[rcx+28]
       mov       rax,[rcx]
       mov       rax,[rax+40]
       jmp       qword ptr [rax+8]
; Total bytes of code 26

Compare Jit Disasm

; System.Text.Tests.Perf_StringBuilder.ToString_MultipleSegments(Int32)
       cmp       edx,64
       je        short 000000000000F6AB
       mov       rcx,[rcx+30]
       jmp       short 000000000000F6AF
       mov       rcx,[rcx+28]
       mov       rax,[rcx]
       mov       rax,[rax+40]
       jmp       qword ptr [rax+8]
; Total bytes of code 26

System.Text.Tests.Perf_StringBuilder.ToString_SingleSegment(length: 100)


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 21.54589796172715 > 20.373563373235378.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -16.442533335947903 (T) = (0 -21.744141077962475) / Math.Sqrt((0.19954438060651367 / (17)) + (0.1843188896116171 / (40))) is less than -2.0040447832881556 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (17) + (40) - 2, .025) and -0.10702575817320856 = (19.64194682682381 - 21.744141077962475) / 19.64194682682381 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.Text.Tests.Perf_StringBuilder.ToString_SingleSegment(Int32)
       cmp       edx,64
       je        short 000000000000F4DB
       mov       rcx,[rcx+20]
       jmp       short 000000000000F4DF
       mov       rcx,[rcx+18]
       mov       rax,[rcx]
       mov       rax,[rax+40]
       jmp       qword ptr [rax+8]
; Total bytes of code 26

Compare Jit Disasm

; System.Text.Tests.Perf_StringBuilder.ToString_SingleSegment(Int32)
       cmp       edx,64
       je        short 000000000000F4DB
       mov       rcx,[rcx+20]
       jmp       short 000000000000F4DF
       mov       rcx,[rcx+18]
       mov       rax,[rcx]
       mov       rax,[rax+40]
       jmp       qword ptr [rax+8]
; Total bytes of code 26

System.Text.Tests.Perf_StringBuilder.ctor_capacity(length: 100000)


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 6.6549921288853175 > 5.876136269339164.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -35.12141632343292 (T) = (0 -6682.214721738113) / Math.Sqrt((9005.794156178663 / (20)) + (18791.84932039333 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.18966670468439126 = (5616.879665057828 - 6682.214721738113) / 5616.879665057828 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.Text.Tests.Perf_StringBuilder.ctor_capacity(Int32)
       push      rdi
       push      rsi
       sub       rsp,28
       mov       esi,edx
       mov       rcx,offset MT_System.Text.StringBuilder
       call      000000000000C390
       mov       rdi,rax
       mov       rcx,rdi
       mov       edx,esi
       mov       r8d,7FFFFFFF
       call      qword ptr [50F0]
       mov       rax,rdi
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 53
; System.Text.StringBuilder..ctor(Int32, Int32)
       push      rdi
       push      rsi
       sub       rsp,28
       mov       rsi,rcx
       cmp       edx,r8d
       jg        short 000000000000F463
       test      r8d,r8d
       jle       near ptr 000000000000F4C0
       test      edx,edx
       jl        near ptr 000000000000F51D
       test      edx,edx
       je        short 000000000000F445
       mov       [rsi+20],r8d
       cmp       edx,400
       jge       short 000000000000F452
       movsxd    rdx,edx
       mov       rcx,offset MT_System.Char[]
       call      000000000000C4B0
       lea       rcx,[rsi+8]
       mov       rdx,rax
       call      0000000000000010
       nop
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       r8d,10
       jl        short 000000000000F45E
       mov       edx,10
       jmp       short 000000000000F413
       mov       ecx,edx
       xor       edx,edx
       call      qword ptr [3078]
       jmp       short 000000000000F431
       mov       edx,r8d
       jmp       short 000000000000F450
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,133C6
       mov       rdx,7FF96F1F4000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,94A7
       mov       rdx,7FF96F1F4000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [57E0]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,1780B
       mov       rdx,7FF96F1F4000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,0A4C3
       mov       rdx,7FF96F1F4000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [57E0]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,133C6
       mov       rdx,7FF96F1F4000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,9FF3
       mov       rdx,7FF96F1F4000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [57E0]
       mov       rcx,rax
       mov       rdx,rdi
       call      qword ptr [5810]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       int       3
; Total bytes of code 407

Compare Jit Disasm

; System.Text.Tests.Perf_StringBuilder.ctor_capacity(Int32)
       push      rdi
       push      rsi
       sub       rsp,28
       mov       esi,edx
       mov       rcx,offset MT_System.Text.StringBuilder
       call      0000000000002AE0
       mov       rdi,rax
       mov       rcx,rdi
       mov       edx,esi
       mov       r8d,7FFFFFFF
       call      qword ptr [50F0]
       mov       rax,rdi
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 53
; System.Text.StringBuilder..ctor(Int32, Int32)
       push      rdi
       push      rsi
       sub       rsp,28
       mov       rsi,rcx
       cmp       edx,r8d
       jg        short 000000000000F463
       test      r8d,r8d
       jle       near ptr 000000000000F4C0
       test      edx,edx
       jl        near ptr 000000000000F51D
       test      edx,edx
       je        short 000000000000F445
       mov       [rsi+20],r8d
       cmp       edx,400
       jge       short 000000000000F452
       movsxd    rdx,edx
       mov       rcx,offset MT_System.Char[]
       call      0000000000002C00
       lea       rcx,[rsi+8]
       mov       rdx,rax
       call      0000000000000010
       nop
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       r8d,10
       jl        short 000000000000F45E
       mov       edx,10
       jmp       short 000000000000F413
       mov       ecx,edx
       xor       edx,edx
       call      qword ptr [30A8]
       jmp       short 000000000000F431
       mov       edx,r8d
       jmp       short 000000000000F450
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      0000000000002AE0
       mov       rsi,rax
       mov       ecx,13438
       mov       rdx,7FFE65654000
       call      000000000000A140
       mov       rdi,rax
       mov       ecx,94A7
       mov       rdx,7FFE65654000
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [57E0]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000002B00
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      0000000000002AE0
       mov       rsi,rax
       mov       ecx,1787D
       mov       rdx,7FFE65654000
       call      000000000000A140
       mov       rdi,rax
       mov       ecx,0A4C3
       mov       rdx,7FFE65654000
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [57E0]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000002B00
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      0000000000002AE0
       mov       rsi,rax
       mov       ecx,13438
       mov       rdx,7FFE65654000
       call      000000000000A140
       mov       rdi,rax
       mov       ecx,9FF3
       mov       rdx,7FFE65654000
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [57E0]
       mov       rcx,rax
       mov       rdx,rdi
       call      qword ptr [5810]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000002B00
       int       3
; Total bytes of code 407

System.Text.Tests.Perf_StringBuilder.ToString_SingleSegment(length: 100000)


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 19.51956369731801 > 18.35949961235687.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -44.346632808796635 (T) = (0 -19703.436998307712) / Math.Sqrt((17067.166063658922 / (20)) + (62431.90843076265 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.12433617756790508 = (17524.50680803403 - 19703.436998307712) / 17524.50680803403 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.Text.Tests.Perf_StringBuilder.ToString_SingleSegment(Int32)
       cmp       edx,64
       je        short 000000000000F6BB
       mov       rcx,[rcx+20]
       jmp       short 000000000000F6BF
       mov       rcx,[rcx+18]
       mov       rax,[rcx]
       mov       rax,[rax+40]
       jmp       qword ptr [rax+8]
; Total bytes of code 26

Compare Jit Disasm

; System.Text.Tests.Perf_StringBuilder.ToString_SingleSegment(Int32)
       cmp       edx,64
       je        short 000000000000F6BB
       mov       rcx,[rcx+20]
       jmp       short 000000000000F6BF
       mov       rcx,[rcx+18]
       mov       rax,[rcx]
       mov       rax,[rax+40]
       jmp       qword ptr [rax+8]
; Total bytes of code 26

Docs

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

@performanceautofiler
Copy link
Author

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in System.Tests.Perf_Enum

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
GetName - Duration of single invocation 13.79 ns 16.44 ns 1.19 0.30 False Trace Trace

graph
Test Report

Repro

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

Payloads

Baseline
Compare

Histogram

System.Tests.Perf_Enum.GetName


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 16.435826842842935 > 14.705141493681714.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -11.962059344569935 (T) = (0 -17.005653170505813) / Math.Sqrt((0.457129861104052 / (20)) + (0.6075818458048562 / (39))) is less than -2.0024654592901125 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (39) - 2, .025) and -0.15996453046556997 = (14.660494113281487 - 17.005653170505813) / 14.660494113281487 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_Enum.GetName()
       push      rdi
       push      rsi
       sub       rsp,28
       mov       esi,[rcx+0C]
       mov       rcx,offset MT_System.Tests.Perf_Enum+Colors
       call      000000000000D240
       mov       rdi,rax
       mov       ecx,esi
       call      qword ptr [17F8]
       mov       rsi,rax
       mov       rcx,rdi
       mov       edx,1
       call      qword ptr [1540]
       mov       rdi,rax
       mov       rcx,[rdi+8]
       mov       r8d,[rcx+8]
       add       rcx,10
       cmp       r8d,20
       jg        short 000000000000FE38
       mov       rdx,rsi
       call      qword ptr [1600]
       test      eax,eax
       jl        short 000000000000FE4D
       mov       rdx,[rdi+10]
       cmp       eax,[rdx+8]
       jae       short 000000000000FE51
       mov       eax,eax
       mov       rax,[rdx+rax*8+10]
       jmp       short 000000000000FE46
       mov       edx,r8d
       mov       r8,rsi
       call      qword ptr [3C00]
       jmp       short 000000000000FE22
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       xor       eax,eax
       jmp       short 000000000000FE46
       call      0000000000006930
       int       3
; Total bytes of code 135
; System.Enum.ToUInt64[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors)
       push      rsi
       sub       rsp,20
       mov       [rsp+30],ecx
       mov       rcx,offset MT_System.Tests.Perf_Enum+Colors
       call      000000000000D240
       mov       rcx,rax
       call      qword ptr [8C00]
       add       eax,0FFFFFFFD
       cmp       eax,9
       ja        short 000000000000F60C
       mov       eax,eax
       lea       rcx,[0F650]
       mov       ecx,[rcx+rax*4]
       lea       rdx,[0F579]
       add       rcx,rdx
       jmp       rcx
       movsx     rax,byte ptr [rsp+30]
       cdqe
       jmp       short 000000000000F606
       movzx     eax,byte ptr [rsp+30]
       jmp       short 000000000000F606
       cmp       byte ptr [rsp+30],0
       jne       short 000000000000F5CD
       xor       eax,eax
       jmp       short 000000000000F5D2
       mov       eax,1
       jmp       short 000000000000F606
       movsx     rax,word ptr [rsp+30]
       cdqe
       jmp       short 000000000000F606
       movzx     eax,word ptr [rsp+30]
       jmp       short 000000000000F606
       movzx     eax,word ptr [rsp+30]
       jmp       short 000000000000F606
       mov       eax,[rsp+30]
       jmp       short 000000000000F606
       mov       eax,[rsp+30]
       cdqe
       jmp       short 000000000000F606
       mov       rax,[rsp+30]
       jmp       short 000000000000F606
       mov       rax,[rsp+30]
       add       rsp,20
       pop       rsi
       ret
       mov       rcx,offset MT_System.InvalidOperationException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,0DCA9
       mov       rdx,7FFEC9714000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [3030]
       mov       rdx,rax
       mov       rcx,rsi
       call      qword ptr [0D2B8]
       mov       rcx,rsi
       call      0000000000004690
       int       3
; Total bytes of code 224
; System.Enum.GetEnumInfo(System.RuntimeType, Boolean)
       push      rbp
       push      r15
       push      r14
       push      r13
       push      r12
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,0A8
       vzeroupper
       lea       rbp,[rsp+0E0]
       vxorps    xmm4,xmm4,xmm4
       vmovdqa   xmmword ptr [rbp+0FFB0],xmm4
       xor       esi,esi
       mov       [rbp+0FFC0],rsi
       mov       rsi,rcx
       mov       edi,edx
       lea       rcx,[rbp+0FF50]
       mov       rdx,r10
       call      00000000000042A0
       mov       rbx,rax
       mov       rcx,rsp
       mov       [rbp+0FF70],rcx
       mov       rcx,rbp
       mov       [rbp+0FF80],rcx
       mov       rcx,[rsi+10]
       test      rcx,rcx
       je        short 000000000000FA56
       mov       rcx,[rcx]
       test      rcx,rcx
       je        short 000000000000FA51
       mov       r14,[rcx+78]
       test      r14,r14
       je        short 000000000000FA21
       mov       rcx,offset MT_System.Enum+EnumInfo
       cmp       [r14],rcx
       je        short 000000000000FA21
       xor       r14d,r14d
       test      r14,r14
       je        near ptr 000000000000FB31
       test      dil,dil
       je        short 000000000000FA3A
       cmp       qword ptr [r14+10],0
       je        near ptr 000000000000FB31
       mov       rax,r14
       add       rsp,0A8
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r12
       pop       r13
       pop       r14
       pop       r15
       pop       rbp
       ret
       xor       r14d,r14d
       jmp       short 000000000000FA0A
       xor       ecx,ecx
       jmp       short 000000000000FA01
       mov       eax,1
       mov       [rbp+0FF90],rcx
       mov       [rbp+0FF98],r9
       lea       rcx,[rbp+0FF90]
       mov       r9d,eax
       mov       rax,offset MD_System.Enum.GetEnumValuesAndNames(System.Runtime.CompilerServices.QCallTypeHandle, System.Runtime.CompilerServices.ObjectHandleOnStack, System.Runtime.CompilerServices.ObjectHandleOnStack, BOOL)
       mov       [rbp+0FF60],rax
       lea       rax,[0FAA2]
       mov       [rbp+0FF78],rax
       lea       rax,[rbp+0FF50]
       mov       [rbx+10],rax
       mov       byte ptr [rbx+0C],0
       call      qword ptr [9898]
       mov       byte ptr [rbx+0C],1
       cmp       dword ptr [5D3C],0
       je        short 000000000000FAB5
       call      qword ptr [8368]
       mov       rcx,[rbp+0FF58]
       mov       [rbx+10],rcx
       mov       rcx,offset MT_System.FlagsAttribute
       call      000000000000D240
       mov       rdx,rax
       mov       rcx,[rbp+10]
       xor       r8d,r8d
       call      qword ptr [89C0]
       mov       r14d,eax
       mov       rcx,offset MT_System.Enum+EnumInfo
       call      000000000000C390
       mov       rsi,rax
       mov       rcx,rsi
       mov       edx,r14d
       mov       r8,[rbp+0FFC0]
       mov       r9,[rbp+0FFB8]
       call      qword ptr [15D0]
       mov       r14,rsi
       mov       rsi,[rbp+10]
       mov       rcx,[rsi+10]
       test      rcx,rcx
       je        short 000000000000FB7A
       mov       rax,[rcx]
       test      rax,rax
       je        short 000000000000FB7A
       lea       rcx,[rax+78]
       mov       rdx,r14
       call      0000000000000010
       jmp       near ptr 000000000000FA3A
       xor       ecx,ecx
       mov       [rbp+0FFC0],rcx
       mov       [rbp+0FFB8],rcx
       mov       [rbp+10],rsi
       mov       [rbp+0FFB0],rsi
       vxorps    xmm0,xmm0,xmm0
       vmovupd   [rbp+0FFA0],xmm0
       lea       rcx,[rbp+0FFA0]
       lea       rdx,[rbp+0FFB0]
       call      qword ptr [3318]
       lea       rdx,[rbp+0FFC0]
       lea       r8,[rbp+0FFB8]
       mov       rcx,[rbp+0FFA0]
       mov       r9,[rbp+0FFA8]
       test      dil,dil
       jne       near ptr 000000000000FA5A
       xor       eax,eax
       jmp       near ptr 000000000000FA5F
       mov       rcx,rsi
       call      qword ptr [72B8]
       jmp       short 000000000000FB20
; Total bytes of code 485
; System.SpanHelpers.IndexOf[[System.UInt64, System.Private.CoreLib]](UInt64 ByRef, UInt64, Int32)
       xor       r9d,r9d
       cmp       r8d,8
       jge       short 000000000000FD33
       cmp       r8d,4
       jl        short 000000000000FD09
       add       r8d,0FFFFFFFC
       mov       rax,[rcx+r9*8]
       cmp       rdx,rax
       je        short 000000000000FD1B
       mov       rax,[rcx+r9*8+8]
       cmp       rdx,rax
       je        short 000000000000FD2D
       mov       rax,[rcx+r9*8+10]
       cmp       rdx,rax
       jne       short 000000000000FCF5
       lea       eax,[r9+2]
       ret
       mov       rax,[rcx+r9*8+18]
       cmp       rdx,rax
       jne       short 000000000000FD05
       lea       eax,[r9+3]
       jmp       short 000000000000FCF4
       add       r9,4
       test      r8d,r8d
       jle       near ptr 000000000000FD95
       mov       rax,[rcx+r9*8]
       cmp       rdx,rax
       jne       short 000000000000FD20
       mov       eax,r9d
       jmp       short 000000000000FCF4
       inc       r9
       dec       r8d
       test      r8d,r8d
       jle       short 000000000000FD95
       jmp       short 000000000000FD12
       lea       eax,[r9+1]
       jmp       short 000000000000FCF4
       add       r8d,0FFFFFFF8
       mov       rax,[rcx+r9*8]
       cmp       rdx,rax
       je        short 000000000000FD1B
       mov       rax,[rcx+r9*8+8]
       cmp       rdx,rax
       je        short 000000000000FD2D
       mov       rax,[rcx+r9*8+10]
       cmp       rdx,rax
       je        short 000000000000FCF0
       mov       rax,[rcx+r9*8+18]
       cmp       rdx,rax
       je        short 000000000000FCFF
       mov       rax,[rcx+r9*8+20]
       cmp       rdx,rax
       je        short 000000000000FD9B
       mov       rax,[rcx+r9*8+28]
       cmp       rdx,rax
       je        short 000000000000FDA4
       mov       rax,[rcx+r9*8+30]
       cmp       rdx,rax
       je        short 000000000000FDAD
       mov       rax,[rcx+r9*8+38]
       cmp       rdx,rax
       je        short 000000000000FDB6
       add       r9,8
       cmp       r8d,8
       jge       short 000000000000FD33
       jmp       near ptr 000000000000FCC9
       mov       eax,0FFFFFFFF
       ret
       lea       eax,[r9+4]
       jmp       near ptr 000000000000FCF4
       lea       eax,[r9+5]
       jmp       near ptr 000000000000FCF4
       lea       eax,[r9+6]
       jmp       near ptr 000000000000FCF4
       lea       eax,[r9+7]
       jmp       near ptr 000000000000FCF4
; Total bytes of code 255

Compare Jit Disasm

; System.Tests.Perf_Enum.GetName()
       push      rdi
       push      rsi
       sub       rsp,28
       mov       esi,[rcx+0C]
       mov       rcx,offset MT_System.Tests.Perf_Enum+Colors
       call      0000000000005E90
       mov       rdi,rax
       mov       ecx,esi
       call      qword ptr [17F8]
       mov       rsi,rax
       mov       rcx,rdi
       mov       edx,1
       call      qword ptr [1540]
       mov       rdi,rax
       mov       rcx,[rdi+8]
       mov       r8d,[rcx+8]
       add       rcx,10
       cmp       r8d,20
       jg        short 000000000000FE38
       mov       rdx,rsi
       call      qword ptr [1600]
       test      eax,eax
       jl        short 000000000000FE4D
       mov       rdx,[rdi+10]
       cmp       eax,[rdx+8]
       jae       short 000000000000FE51
       mov       eax,eax
       mov       rax,[rdx+rax*8+10]
       jmp       short 000000000000FE46
       mov       edx,r8d
       mov       r8,rsi
       call      qword ptr [3C00]
       jmp       short 000000000000FE22
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       xor       eax,eax
       jmp       short 000000000000FE46
       call      000000000000AB50
       int       3
; Total bytes of code 135
; System.Enum.ToUInt64[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors)
       push      rsi
       sub       rsp,20
       mov       [rsp+30],ecx
       mov       rcx,offset MT_System.Tests.Perf_Enum+Colors
       call      0000000000005E90
       mov       rcx,rax
       call      qword ptr [8C30]
       add       eax,0FFFFFFFD
       cmp       eax,9
       ja        short 000000000000F60C
       mov       eax,eax
       lea       rcx,[0F650]
       mov       ecx,[rcx+rax*4]
       lea       rdx,[0F579]
       add       rcx,rdx
       jmp       rcx
       movsx     rax,byte ptr [rsp+30]
       cdqe
       jmp       short 000000000000F606
       movzx     eax,byte ptr [rsp+30]
       jmp       short 000000000000F606
       cmp       byte ptr [rsp+30],0
       jne       short 000000000000F5CD
       xor       eax,eax
       jmp       short 000000000000F5D2
       mov       eax,1
       jmp       short 000000000000F606
       movsx     rax,word ptr [rsp+30]
       cdqe
       jmp       short 000000000000F606
       movzx     eax,word ptr [rsp+30]
       jmp       short 000000000000F606
       movzx     eax,word ptr [rsp+30]
       jmp       short 000000000000F606
       mov       eax,[rsp+30]
       jmp       short 000000000000F606
       mov       eax,[rsp+30]
       cdqe
       jmp       short 000000000000F606
       mov       rax,[rsp+30]
       jmp       short 000000000000F606
       mov       rax,[rsp+30]
       add       rsp,20
       pop       rsi
       ret
       mov       rcx,offset MT_System.InvalidOperationException
       call      0000000000002AE0
       mov       rsi,rax
       mov       ecx,0DCA9
       mov       rdx,7FF9A6824000
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [3030]
       mov       rdx,rax
       mov       rcx,rsi
       call      qword ptr [0D2B8]
       mov       rcx,rsi
       call      0000000000002B00
       int       3
; Total bytes of code 224
; System.Enum.GetEnumInfo(System.RuntimeType, Boolean)
       push      rbp
       push      r15
       push      r14
       push      r13
       push      r12
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,0A8
       vzeroupper
       lea       rbp,[rsp+0E0]
       vxorps    xmm4,xmm4,xmm4
       vmovdqa   xmmword ptr [rbp+0FFB0],xmm4
       xor       esi,esi
       mov       [rbp+0FFC0],rsi
       mov       rsi,rcx
       mov       edi,edx
       lea       rcx,[rbp+0FF50]
       mov       rdx,r10
       call      0000000000000320
       mov       rbx,rax
       mov       rcx,rsp
       mov       [rbp+0FF70],rcx
       mov       rcx,rbp
       mov       [rbp+0FF80],rcx
       mov       rcx,[rsi+10]
       test      rcx,rcx
       je        short 000000000000FA56
       mov       rcx,[rcx]
       test      rcx,rcx
       je        short 000000000000FA51
       mov       r14,[rcx+78]
       test      r14,r14
       je        short 000000000000FA21
       mov       rcx,offset MT_System.Enum+EnumInfo
       cmp       [r14],rcx
       je        short 000000000000FA21
       xor       r14d,r14d
       test      r14,r14
       je        near ptr 000000000000FB31
       test      dil,dil
       je        short 000000000000FA3A
       cmp       qword ptr [r14+10],0
       je        near ptr 000000000000FB31
       mov       rax,r14
       add       rsp,0A8
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r12
       pop       r13
       pop       r14
       pop       r15
       pop       rbp
       ret
       xor       r14d,r14d
       jmp       short 000000000000FA0A
       xor       ecx,ecx
       jmp       short 000000000000FA01
       mov       eax,1
       mov       [rbp+0FF90],rcx
       mov       [rbp+0FF98],r9
       lea       rcx,[rbp+0FF90]
       mov       r9d,eax
       mov       rax,offset MD_System.Enum.GetEnumValuesAndNames(System.Runtime.CompilerServices.QCallTypeHandle, System.Runtime.CompilerServices.ObjectHandleOnStack, System.Runtime.CompilerServices.ObjectHandleOnStack, BOOL)
       mov       [rbp+0FF60],rax
       lea       rax,[0FAA2]
       mov       [rbp+0FF78],rax
       lea       rax,[rbp+0FF50]
       mov       [rbx+10],rax
       mov       byte ptr [rbx+0C],0
       call      qword ptr [98A8]
       mov       byte ptr [rbx+0C],1
       cmp       dword ptr [0AE3C],0
       je        short 000000000000FAB5
       call      qword ptr [0D388]
       mov       rcx,[rbp+0FF58]
       mov       [rbx+10],rcx
       mov       rcx,offset MT_System.FlagsAttribute
       call      0000000000005E90
       mov       rdx,rax
       mov       rcx,[rbp+10]
       xor       r8d,r8d
       call      qword ptr [89F0]
       mov       r14d,eax
       mov       rcx,offset MT_System.Enum+EnumInfo
       call      0000000000002AE0
       mov       rsi,rax
       mov       rcx,rsi
       mov       edx,r14d
       mov       r8,[rbp+0FFC0]
       mov       r9,[rbp+0FFB8]
       call      qword ptr [15D0]
       mov       r14,rsi
       mov       rsi,[rbp+10]
       mov       rcx,[rsi+10]
       test      rcx,rcx
       je        short 000000000000FB7A
       mov       rax,[rcx]
       test      rax,rax
       je        short 000000000000FB7A
       lea       rcx,[rax+78]
       mov       rdx,r14
       call      0000000000000010
       jmp       near ptr 000000000000FA3A
       xor       ecx,ecx
       mov       [rbp+0FFC0],rcx
       mov       [rbp+0FFB8],rcx
       mov       [rbp+10],rsi
       mov       [rbp+0FFB0],rsi
       vxorps    xmm0,xmm0,xmm0
       vmovupd   [rbp+0FFA0],xmm0
       lea       rcx,[rbp+0FFA0]
       lea       rdx,[rbp+0FFB0]
       call      qword ptr [3318]
       lea       rdx,[rbp+0FFC0]
       lea       r8,[rbp+0FFB8]
       mov       rcx,[rbp+0FFA0]
       mov       r9,[rbp+0FFA8]
       test      dil,dil
       jne       near ptr 000000000000FA5A
       xor       eax,eax
       jmp       near ptr 000000000000FA5F
       mov       rcx,rsi
       call      qword ptr [72B8]
       jmp       short 000000000000FB20
; Total bytes of code 485
; System.SpanHelpers.IndexOf[[System.UInt64, System.Private.CoreLib]](UInt64 ByRef, UInt64, Int32)
       xor       r9d,r9d
       cmp       r8d,8
       jge       short 000000000000FD33
       cmp       r8d,4
       jl        short 000000000000FD09
       add       r8d,0FFFFFFFC
       mov       rax,[rcx+r9*8]
       cmp       rdx,rax
       je        short 000000000000FD1B
       mov       rax,[rcx+r9*8+8]
       cmp       rdx,rax
       je        short 000000000000FD2D
       mov       rax,[rcx+r9*8+10]
       cmp       rdx,rax
       jne       short 000000000000FCF5
       lea       eax,[r9+2]
       ret
       mov       rax,[rcx+r9*8+18]
       cmp       rdx,rax
       jne       short 000000000000FD05
       lea       eax,[r9+3]
       jmp       short 000000000000FCF4
       add       r9,4
       test      r8d,r8d
       jle       near ptr 000000000000FD95
       mov       rax,[rcx+r9*8]
       cmp       rdx,rax
       jne       short 000000000000FD20
       mov       eax,r9d
       jmp       short 000000000000FCF4
       inc       r9
       dec       r8d
       test      r8d,r8d
       jle       short 000000000000FD95
       jmp       short 000000000000FD12
       lea       eax,[r9+1]
       jmp       short 000000000000FCF4
       add       r8d,0FFFFFFF8
       mov       rax,[rcx+r9*8]
       cmp       rdx,rax
       je        short 000000000000FD1B
       mov       rax,[rcx+r9*8+8]
       cmp       rdx,rax
       je        short 000000000000FD2D
       mov       rax,[rcx+r9*8+10]
       cmp       rdx,rax
       je        short 000000000000FCF0
       mov       rax,[rcx+r9*8+18]
       cmp       rdx,rax
       je        short 000000000000FCFF
       mov       rax,[rcx+r9*8+20]
       cmp       rdx,rax
       je        short 000000000000FD9B
       mov       rax,[rcx+r9*8+28]
       cmp       rdx,rax
       je        short 000000000000FDA4
       mov       rax,[rcx+r9*8+30]
       cmp       rdx,rax
       je        short 000000000000FDAD
       mov       rax,[rcx+r9*8+38]
       cmp       rdx,rax
       je        short 000000000000FDB6
       add       r9,8
       cmp       r8d,8
       jge       short 000000000000FD33
       jmp       near ptr 000000000000FCC9
       mov       eax,0FFFFFFFF
       ret
       lea       eax,[r9+4]
       jmp       near ptr 000000000000FCF4
       lea       eax,[r9+5]
       jmp       near ptr 000000000000FCF4
       lea       eax,[r9+6]
       jmp       near ptr 000000000000FCF4
       lea       eax,[r9+7]
       jmp       near ptr 000000000000FCF4
; Total bytes of code 255

Docs

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

### Run Information
Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in System.Tests.Perf_UInt64

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
ToString - Duration of single invocation 12.56 ns 14.41 ns 1.15 0.02 False 147.6735683935935 159.93688359121776 1.0830433999193336 Trace Trace
ToString - Duration of single invocation 1.87 ns 3.39 ns 1.81 0.05 False 36.73997235555904 38.86913436315943 1.0579521940570604 Trace Trace

graph
graph
Test Report

Repro

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

Payloads

Baseline
Compare

Histogram

System.Tests.Perf_UInt64.ToString(value: 12345)


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 14.406219049462521 > 12.712896705003274.
IsChangePoint: Marked as a change because one of 6/27/2022 8:54:23 AM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -58.53941563413774 (T) = (0 -14.568209540655166) / Math.Sqrt((0.024473817936951595 / (20)) + (0.026415393019022338 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.21126676433966982 = (12.027251113917192 - 14.568209540655166) / 12.027251113917192 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_UInt64.ToString(UInt64)
       sub       rsp,28
       mov       rcx,rdx
       call      qword ptr [9540]
       nop
       add       rsp,28
       ret
; Total bytes of code 19
; System.Number.UInt64ToDecStr(UInt64)
       push      rdi
       push      rsi
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       mov       rsi,rcx
       mov       eax,1
       cmp       rsi,989680
       jae       near ptr 000000000000F6AB
       mov       edx,esi
       cmp       edx,0A
       jb        short 000000000000F5C1
       cmp       edx,64
       jb        near ptr 000000000000F635
       cmp       edx,3E8
       jae       near ptr 000000000000F666
       add       eax,2
       mov       edi,eax
       cmp       edi,1
       je        short 000000000000F639
       mov       ecx,edi
       call      0
       mov       rcx,rax
       test      rcx,rcx
       je        near ptr 000000000000F69E
       lea       rax,[rcx+0C]
       mov       [rsp+20],rax
       mov       r8,[rsp+20]
       movsxd    rax,edi
       lea       r8,[r8+rax*2]
       mov       rdx,0CCCCCCCCCCCD
       mov       rax,rsi
       mul       rdx
       shr       rdx,3
       lea       rax,[rdx+rdx*4]
       add       rax,rax
       sub       rsi,rax
       add       r8,0FFFFFFFFFFFFFFFE
       add       rsi,30
       mov       eax,esi
       mov       [r8],ax
       test      rdx,rdx
       mov       rsi,rdx
       jne       short 000000000000F5F0
       xor       eax,eax
       mov       [rsp+20],rax
       mov       rax,rcx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       inc       eax
       jmp       short 000000000000F5C1
       mov       rax,2614A8002C8
       mov       rax,[rax]
       test      rsi,rsi
       jl        short 000000000000F6A6
       mov       rcx,rsi
       mov       edx,[rax+8]
       cmp       rcx,rdx
       jae       near ptr 000000000000F6F6
       mov       rax,[rax+rcx*8+10]
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       edx,2710
       jae       short 000000000000F676
       add       eax,3
       jmp       near ptr 000000000000F5C1
       cmp       edx,186A0
       jae       short 000000000000F686
       add       eax,4
       jmp       near ptr 000000000000F5C1
       cmp       edx,0F4240
       jae       short 000000000000F696
       add       eax,5
       jmp       near ptr 000000000000F5C1
       add       eax,6
       jmp       near ptr 000000000000F5C1
       xor       r8d,r8d
       jmp       near ptr 000000000000F5E9
       call      00000000000065F0
       mov       rax,5AF3107A4000
       cmp       rsi,rax
       jb        short 000000000000F6D8
       mov       rdx,4DC35095CD81
       mov       rax,rsi
       mul       rdx
       shr       rdx,2A
       mov       eax,0F
       jmp       near ptr 000000000000F5A4
       mov       rdx,94D5E57A42BD
       mov       rax,rsi
       mul       rdx
       shr       rdx,17
       mov       eax,8
       jmp       near ptr 000000000000F5A4
       call      0000000000006930
       int       3
; Total bytes of code 380

Compare Jit Disasm

; System.Tests.Perf_UInt64.ToString(UInt64)
       sub       rsp,28
       mov       rcx,rdx
       call      qword ptr [9540]
       nop
       add       rsp,28
       ret
; Total bytes of code 19
; System.Number.UInt64ToDecStr(UInt64)
       push      rdi
       push      rsi
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       mov       rsi,rcx
       mov       eax,1
       cmp       rsi,989680
       jae       near ptr 000000000000F6AB
       mov       edx,esi
       cmp       edx,0A
       jb        short 000000000000F5C1
       cmp       edx,64
       jb        near ptr 000000000000F635
       cmp       edx,3E8
       jae       near ptr 000000000000F666
       add       eax,2
       mov       edi,eax
       cmp       edi,1
       je        short 000000000000F639
       mov       ecx,edi
       call      0
       mov       rcx,rax
       test      rcx,rcx
       je        near ptr 000000000000F69E
       lea       rax,[rcx+0C]
       mov       [rsp+20],rax
       mov       r8,[rsp+20]
       movsxd    rax,edi
       lea       r8,[r8+rax*2]
       mov       rdx,0CCCCCCCCCCCD
       mov       rax,rsi
       mul       rdx
       shr       rdx,3
       lea       rax,[rdx+rdx*4]
       add       rax,rax
       sub       rsi,rax
       add       r8,0FFFFFFFFFFFFFFFE
       add       rsi,30
       mov       eax,esi
       mov       [r8],ax
       test      rdx,rdx
       mov       rsi,rdx
       jne       short 000000000000F5F0
       xor       eax,eax
       mov       [rsp+20],rax
       mov       rax,rcx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       inc       eax
       jmp       short 000000000000F5C1
       mov       rax,233AC4002C8
       mov       rax,[rax]
       test      rsi,rsi
       jl        short 000000000000F6A6
       mov       rcx,rsi
       mov       edx,[rax+8]
       cmp       rcx,rdx
       jae       near ptr 000000000000F6F6
       mov       rax,[rax+rcx*8+10]
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       edx,2710
       jae       short 000000000000F676
       add       eax,3
       jmp       near ptr 000000000000F5C1
       cmp       edx,186A0
       jae       short 000000000000F686
       add       eax,4
       jmp       near ptr 000000000000F5C1
       cmp       edx,0F4240
       jae       short 000000000000F696
       add       eax,5
       jmp       near ptr 000000000000F5C1
       add       eax,6
       jmp       near ptr 000000000000F5C1
       xor       r8d,r8d
       jmp       near ptr 000000000000F5E9
       call      000000000000A810
       mov       rax,5AF3107A4000
       cmp       rsi,rax
       jb        short 000000000000F6D8
       mov       rdx,4DC35095CD81
       mov       rax,rsi
       mul       rdx
       shr       rdx,2A
       mov       eax,0F
       jmp       near ptr 000000000000F5A4
       mov       rdx,94D5E57A42BD
       mov       rax,rsi
       mul       rdx
       shr       rdx,17
       mov       eax,8
       jmp       near ptr 000000000000F5A4
       call      000000000000AB50
       int       3
; Total bytes of code 380

System.Tests.Perf_UInt64.ToString(value: 0)


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 3.3854396269975484 > 1.9590601909264393.
IsChangePoint: Marked as a change because one of 6/27/2022 8:54:23 AM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -128.38467072283456 (T) = (0 -3.3837989285385546) / Math.Sqrt((0.0031727666543285345 / (20)) + (2.829279638443663E-05 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.9191551236538521 = (1.7631711406924668 - 3.3837989285385546) / 1.7631711406924668 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_UInt64.ToString(UInt64)
       sub       rsp,28
       mov       rcx,rdx
       call      qword ptr [9540]
       nop
       add       rsp,28
       ret
; Total bytes of code 19
; System.Number.UInt64ToDecStr(UInt64)
       push      rdi
       push      rsi
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       mov       rsi,rcx
       mov       eax,1
       cmp       rsi,989680
       jae       near ptr 000000000000F6AB
       mov       edx,esi
       cmp       edx,0A
       jb        short 000000000000F5C1
       cmp       edx,64
       jb        near ptr 000000000000F635
       cmp       edx,3E8
       jae       near ptr 000000000000F666
       add       eax,2
       mov       edi,eax
       cmp       edi,1
       je        short 000000000000F639
       mov       ecx,edi
       call      0
       mov       rcx,rax
       test      rcx,rcx
       je        near ptr 000000000000F69E
       lea       rax,[rcx+0C]
       mov       [rsp+20],rax
       mov       r8,[rsp+20]
       movsxd    rax,edi
       lea       r8,[r8+rax*2]
       mov       rdx,0CCCCCCCCCCCD
       mov       rax,rsi
       mul       rdx
       shr       rdx,3
       lea       rax,[rdx+rdx*4]
       add       rax,rax
       sub       rsi,rax
       add       r8,0FFFFFFFFFFFFFFFE
       add       rsi,30
       mov       eax,esi
       mov       [r8],ax
       test      rdx,rdx
       mov       rsi,rdx
       jne       short 000000000000F5F0
       xor       eax,eax
       mov       [rsp+20],rax
       mov       rax,rcx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       inc       eax
       jmp       short 000000000000F5C1
       mov       rax,1C6450002C8
       mov       rax,[rax]
       test      rsi,rsi
       jl        short 000000000000F6A6
       mov       rcx,rsi
       mov       edx,[rax+8]
       cmp       rcx,rdx
       jae       near ptr 000000000000F6F6
       mov       rax,[rax+rcx*8+10]
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       edx,2710
       jae       short 000000000000F676
       add       eax,3
       jmp       near ptr 000000000000F5C1
       cmp       edx,186A0
       jae       short 000000000000F686
       add       eax,4
       jmp       near ptr 000000000000F5C1
       cmp       edx,0F4240
       jae       short 000000000000F696
       add       eax,5
       jmp       near ptr 000000000000F5C1
       add       eax,6
       jmp       near ptr 000000000000F5C1
       xor       r8d,r8d
       jmp       near ptr 000000000000F5E9
       call      00000000000065F0
       mov       rax,5AF3107A4000
       cmp       rsi,rax
       jb        short 000000000000F6D8
       mov       rdx,4DC35095CD81
       mov       rax,rsi
       mul       rdx
       shr       rdx,2A
       mov       eax,0F
       jmp       near ptr 000000000000F5A4
       mov       rdx,94D5E57A42BD
       mov       rax,rsi
       mul       rdx
       shr       rdx,17
       mov       eax,8
       jmp       near ptr 000000000000F5A4
       call      0000000000006930
       int       3
; Total bytes of code 380

Compare Jit Disasm

; System.Tests.Perf_UInt64.ToString(UInt64)
       sub       rsp,28
       mov       rcx,rdx
       call      qword ptr [9540]
       nop
       add       rsp,28
       ret
; Total bytes of code 19
; System.Number.UInt64ToDecStr(UInt64)
       push      rdi
       push      rsi
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       mov       rsi,rcx
       mov       eax,1
       cmp       rsi,989680
       jae       near ptr 000000000000F6AB
       mov       edx,esi
       cmp       edx,0A
       jb        short 000000000000F5C1
       cmp       edx,64
       jb        near ptr 000000000000F635
       cmp       edx,3E8
       jae       near ptr 000000000000F666
       add       eax,2
       mov       edi,eax
       cmp       edi,1
       je        short 000000000000F639
       mov       ecx,edi
       call      0
       mov       rcx,rax
       test      rcx,rcx
       je        near ptr 000000000000F69E
       lea       rax,[rcx+0C]
       mov       [rsp+20],rax
       mov       r8,[rsp+20]
       movsxd    rax,edi
       lea       r8,[r8+rax*2]
       mov       rdx,0CCCCCCCCCCCD
       mov       rax,rsi
       mul       rdx
       shr       rdx,3
       lea       rax,[rdx+rdx*4]
       add       rax,rax
       sub       rsi,rax
       add       r8,0FFFFFFFFFFFFFFFE
       add       rsi,30
       mov       eax,esi
       mov       [r8],ax
       test      rdx,rdx
       mov       rsi,rdx
       jne       short 000000000000F5F0
       xor       eax,eax
       mov       [rsp+20],rax
       mov       rax,rcx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       inc       eax
       jmp       short 000000000000F5C1
       mov       rax,1C1AF4002C8
       mov       rax,[rax]
       test      rsi,rsi
       jl        short 000000000000F6A6
       mov       rcx,rsi
       mov       edx,[rax+8]
       cmp       rcx,rdx
       jae       near ptr 000000000000F6F6
       mov       rax,[rax+rcx*8+10]
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       edx,2710
       jae       short 000000000000F676
       add       eax,3
       jmp       near ptr 000000000000F5C1
       cmp       edx,186A0
       jae       short 000000000000F686
       add       eax,4
       jmp       near ptr 000000000000F5C1
       cmp       edx,0F4240
       jae       short 000000000000F696
       add       eax,5
       jmp       near ptr 000000000000F5C1
       add       eax,6
       jmp       near ptr 000000000000F5C1
       xor       r8d,r8d
       jmp       near ptr 000000000000F5E9
       call      000000000000A810
       mov       rax,5AF3107A4000
       cmp       rsi,rax
       jb        short 000000000000F6D8
       mov       rdx,4DC35095CD81
       mov       rax,rsi
       mul       rdx
       shr       rdx,2A
       mov       eax,0F
       jmp       near ptr 000000000000F5A4
       mov       rdx,94D5E57A42BD
       mov       rax,rsi
       mul       rdx
       shr       rdx,17
       mov       eax,8
       jmp       near ptr 000000000000F5A4
       call      000000000000AB50
       int       3
; Total bytes of code 380

Docs

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

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in System.Collections.Concurrent.AddRemoveFromSameThreads<Int32>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
ConcurrentStack - Duration of single invocation 144.49 ms 161.54 ms 1.12 0.13 False

graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Collections.Concurrent.AddRemoveFromSameThreads&lt;Int32&gt;*'

Payloads

Baseline
Compare

Histogram

System.Collections.Concurrent.AddRemoveFromSameThreads<Int32>.ConcurrentStack(Size: 2000000)


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 161.54208421052633 > 149.93782737499998.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -12.788101300974736 (T) = (0 -162395776.10457516) / Math.Sqrt((30869442709952.25 / (20)) + (7486488576710.868 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.11556575845445657 = (145572571.4722222 - 162395776.10457516) / 145572571.4722222 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.

Docs

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

@performanceautofiler
Copy link
Author

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in System.IO.Tests.StringReaderReadToEndTests

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
ReadToEndAsync - Duration of single invocation 16.63 ns 19.15 ns 1.15 0.21 False 151.73380602820245 145.51019401694694 0.9589833526610494 Trace Trace
ReadToEndAsync - Duration of single invocation 16.73 ns 18.85 ns 1.13 0.28 False 151.73377877290875 146.73630928874616 0.9670642257473728 Trace Trace
ReadToEndAsync - Duration of single invocation 16.63 ns 18.27 ns 1.10 0.21 False 149.0907647105535 143.1276207408293 0.9600032639090615 Trace Trace
ReadToEndAsync - Duration of single invocation 16.51 ns 18.57 ns 1.12 0.24 False 152.1176948534132 142.9601981172961 0.939799924361583 Trace Trace
ReadToEndAsync - Duration of single invocation 16.36 ns 18.54 ns 1.13 0.25 False 149.49328313395273 143.0508632960979 0.9569049545049986 Trace Trace
ReadToEnd - Duration of single invocation 8.04 ns 9.22 ns 1.15 0.25 False
ReadToEndAsync - Duration of single invocation 16.66 ns 19.03 ns 1.14 0.21 False 151.70368675238734 142.8488120556285 0.9416304581231973 Trace Trace

graph
graph
graph
graph
graph
graph
graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.IO.Tests.StringReaderReadToEndTests*'

Payloads

Baseline
Compare

Histogram

System.IO.Tests.StringReaderReadToEndTests.ReadToEndAsync(LineLengthRange: [ 33, 128])


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 19.145602487551198 > 17.436576497902372.
IsChangePoint: Marked as a change because one of 6/29/2022 1:11:29 AM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -10.909131855365734 (T) = (0 -18.780740095686276) / Math.Sqrt((0.16344891624205368 / (20)) + (1.0794574915390898 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.12222971134031009 = (16.735201274662312 - 18.780740095686276) / 16.735201274662312 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.IO.Tests.StringReaderReadToEndTests.ReadToEndAsync()
       push      rbp
       push      rdi
       push      rsi
       sub       rsp,30
       lea       rbp,[rsp+40]
       mov       [rbp+0FFE0],rsp
       mov       rsi,rcx
       mov       rcx,offset MT_System.IO.StringReader
       call      000000000000C390
       mov       rdi,rax
       mov       rdx,[rsi+8]
       test      rdx,rdx
       je        near ptr 00000000000085D8
       lea       rcx,[rdi+8]
       call      0000000000000010
       mov       rcx,rdi
       mov       [rbp+0FFE8],rcx
       call      qword ptr [0B0B8]
       mov       rsi,rax
       test      rsi,rsi
       je        short 0000000000008597
       mov       rcx,offset MT_System.Threading.Tasks.Task`1[[System.String, System.Private.CoreLib]]
       call      000000000000C390
       mov       rdi,rax
       mov       dword ptr [rdi+34],1000000
       lea       rcx,[rdi+38]
       mov       rdx,rsi
       call      0000000000000010
       jmp       short 00000000000085B8
       mov       rcx,7FF7F5464BE0
       mov       edx,2F
       call      00000000000019F0
       mov       rcx,16BC90095D8
       mov       rdi,[rcx]
       xor       ecx,ecx
       mov       rax,[rbp+0FFE8]
       mov       [rax+8],rcx
       mov       [rax+10],ecx
       mov       rcx,rax
       call      000000000000F440
       mov       rax,rdi
       add       rsp,30
       pop       rsi
       pop       rdi
       pop       rbp
       ret
       mov       ecx,11
       call      qword ptr [0B7B0]
       int       3
       push      rbp
       push      rdi
       push      rsi
       sub       rsp,30
       mov       rbp,[rcx+20]
       mov       [rsp+20],rbp
       lea       rbp,[rbp+40]
       xor       ecx,ecx
       mov       rax,[rbp+0FFE8]
       mov       [rax+8],rcx
       mov       [rax+10],ecx
       mov       rcx,rax
       call      000000000000F440
       nop
       add       rsp,30
       pop       rsi
       pop       rdi
       pop       rbp
       ret
; Total bytes of code 246
; System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib]].GetAwaiter()
       push      rax
       mov       [rsp],rcx
       cmp       [rcx],ecx
       mov       rax,rcx
       add       rsp,8
       ret
; Total bytes of code 15
; System.Runtime.CompilerServices.TaskAwaiter`1[[System.__Canon, System.Private.CoreLib]].GetResult()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi]
       mov       eax,[rcx+34]
       and       eax,11000000
       cmp       eax,1000000
       jne       short 0000000000008827
       mov       rax,[rsi]
       mov       rax,[rax+38]
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [0D978]
       jmp       short 000000000000881A
; Total bytes of code 47
; System.IO.StringReader.ReadToEnd()
       sub       rsp,28
       mov       rax,[rcx+8]
       test      rax,rax
       je        short 000000000000873E
       mov       edx,[rcx+10]
       mov       r8d,[rax+8]
       mov       [rcx+10],r8d
       test      edx,edx
       je        short 0000000000008738
       sub       r8d,edx
       mov       rcx,rax
       call      qword ptr [3360]
       nop
       add       rsp,28
       ret
       call      qword ptr [51B0]
       int       3
; Total bytes of code 53

Compare Jit Disasm

; System.IO.Tests.StringReaderReadToEndTests.ReadToEndAsync()
       push      rbp
       push      rdi
       push      rsi
       sub       rsp,30
       lea       rbp,[rsp+40]
       mov       [rbp+0FFE0],rsp
       mov       rsi,rcx
       mov       rcx,offset MT_System.IO.StringReader
       call      0000000000002AE0
       mov       rdi,rax
       mov       rdx,[rsi+8]
       test      rdx,rdx
       je        near ptr 0000000000008298
       lea       rcx,[rdi+8]
       call      0000000000000010
       mov       rcx,rdi
       mov       [rbp+0FFE8],rcx
       call      qword ptr [0B1C0]
       mov       rsi,rax
       test      rsi,rsi
       je        short 0000000000008257
       mov       rcx,offset MT_System.Threading.Tasks.Task`1[[System.String, System.Private.CoreLib]]
       call      0000000000002AE0
       mov       rdi,rax
       mov       dword ptr [rdi+34],1000000
       lea       rcx,[rdi+38]
       mov       rdx,rsi
       call      0000000000000010
       jmp       short 0000000000008278
       mov       rcx,7FFF00B14BF0
       mov       edx,2F
       call      0000000000001230
       mov       rcx,135608095D8
       mov       rdi,[rcx]
       xor       ecx,ecx
       mov       rax,[rbp+0FFE8]
       mov       [rax+8],rcx
       mov       [rax+10],ecx
       mov       rcx,rax
       call      0000000000000FB0
       mov       rax,rdi
       add       rsp,30
       pop       rsi
       pop       rdi
       pop       rbp
       ret
       mov       ecx,11
       call      qword ptr [0B7B0]
       int       3
       push      rbp
       push      rdi
       push      rsi
       sub       rsp,30
       mov       rbp,[rcx+20]
       mov       [rsp+20],rbp
       lea       rbp,[rbp+40]
       xor       ecx,ecx
       mov       rax,[rbp+0FFE8]
       mov       [rax+8],rcx
       mov       [rax+10],ecx
       mov       rcx,rax
       call      0000000000000FB0
       nop
       add       rsp,30
       pop       rsi
       pop       rdi
       pop       rbp
       ret
; Total bytes of code 246
; System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib]].GetAwaiter()
       push      rax
       mov       [rsp],rcx
       cmp       [rcx],ecx
       mov       rax,rcx
       add       rsp,8
       ret
; Total bytes of code 15
; System.Runtime.CompilerServices.TaskAwaiter`1[[System.__Canon, System.Private.CoreLib]].GetResult()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi]
       mov       eax,[rcx+34]
       and       eax,11000000
       cmp       eax,1000000
       jne       short 00000000000084E7
       mov       rax,[rsi]
       mov       rax,[rax+38]
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [0DCD8]
       jmp       short 00000000000084DA
; Total bytes of code 47
; System.IO.StringReader.ReadToEnd()
       sub       rsp,28
       mov       rax,[rcx+8]
       test      rax,rax
       je        short 00000000000083FB
       mov       edx,[rcx+10]
       mov       r8d,[rax+8]
       mov       [rcx+10],r8d
       test      edx,edx
       je        short 00000000000083F5
       mov       rcx,rax
       call      qword ptr [3348]
       nop
       add       rsp,28
       ret
       call      qword ptr [51B0]
       int       3
; Total bytes of code 50

System.IO.Tests.StringReaderReadToEndTests.ReadToEndAsync(LineLengthRange: [1025, 2048])


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 18.846334127176313 > 17.276622078182186.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -4.344364750748496 (T) = (0 -18.638817075314982) / Math.Sqrt((1.517468131878421 / (20)) + (0.4639128409405887 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.0740390097370154 = (17.353947953788758 - 18.638817075314982) / 17.353947953788758 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.IO.Tests.StringReaderReadToEndTests.ReadToEndAsync()
       push      rbp
       push      rdi
       push      rsi
       sub       rsp,30
       lea       rbp,[rsp+40]
       mov       [rbp+0FFE0],rsp
       mov       rsi,rcx
       mov       rcx,offset MT_System.IO.StringReader
       call      000000000000C390
       mov       rdi,rax
       mov       rdx,[rsi+8]
       test      rdx,rdx
       je        near ptr 0000000000008658
       lea       rcx,[rdi+8]
       call      0000000000000010
       mov       rcx,rdi
       mov       [rbp+0FFE8],rcx
       call      qword ptr [0B0B8]
       mov       rsi,rax
       test      rsi,rsi
       je        short 0000000000008617
       mov       rcx,offset MT_System.Threading.Tasks.Task`1[[System.String, System.Private.CoreLib]]
       call      000000000000C390
       mov       rdi,rax
       mov       dword ptr [rdi+34],1000000
       lea       rcx,[rdi+38]
       mov       rdx,rsi
       call      0000000000000010
       jmp       short 0000000000008638
       mov       rcx,7FF7F5474BE0
       mov       edx,2F
       call      00000000000019F0
       mov       rcx,1D7A74095D8
       mov       rdi,[rcx]
       xor       ecx,ecx
       mov       rax,[rbp+0FFE8]
       mov       [rax+8],rcx
       mov       [rax+10],ecx
       mov       rcx,rax
       call      000000000000F440
       mov       rax,rdi
       add       rsp,30
       pop       rsi
       pop       rdi
       pop       rbp
       ret
       mov       ecx,11
       call      qword ptr [0B7B0]
       int       3
       push      rbp
       push      rdi
       push      rsi
       sub       rsp,30
       mov       rbp,[rcx+20]
       mov       [rsp+20],rbp
       lea       rbp,[rbp+40]
       xor       ecx,ecx
       mov       rax,[rbp+0FFE8]
       mov       [rax+8],rcx
       mov       [rax+10],ecx
       mov       rcx,rax
       call      000000000000F440
       nop
       add       rsp,30
       pop       rsi
       pop       rdi
       pop       rbp
       ret
; Total bytes of code 246
; System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib]].GetAwaiter()
       push      rax
       mov       [rsp],rcx
       cmp       [rcx],ecx
       mov       rax,rcx
       add       rsp,8
       ret
; Total bytes of code 15
; System.Runtime.CompilerServices.TaskAwaiter`1[[System.__Canon, System.Private.CoreLib]].GetResult()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi]
       mov       eax,[rcx+34]
       and       eax,11000000
       cmp       eax,1000000
       jne       short 0000000000008527
       mov       rax,[rsi]
       mov       rax,[rax+38]
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [0D978]
       jmp       short 000000000000851A
; Total bytes of code 47
; System.IO.StringReader.ReadToEnd()
       sub       rsp,28
       mov       rax,[rcx+8]
       test      rax,rax
       je        short 00000000000087BE
       mov       edx,[rcx+10]
       mov       r8d,[rax+8]
       mov       [rcx+10],r8d
       test      edx,edx
       je        short 00000000000087B8
       sub       r8d,edx
       mov       rcx,rax
       call      qword ptr [3360]
       nop
       add       rsp,28
       ret
       call      qword ptr [51B0]
       int       3
; Total bytes of code 53

Compare Jit Disasm

; System.IO.Tests.StringReaderReadToEndTests.ReadToEndAsync()
       push      rbp
       push      rdi
       push      rsi
       sub       rsp,30
       lea       rbp,[rsp+40]
       mov       [rbp+0FFE0],rsp
       mov       rsi,rcx
       mov       rcx,offset MT_System.IO.StringReader
       call      0000000000002AE0
       mov       rdi,rax
       mov       rdx,[rsi+8]
       test      rdx,rdx
       je        near ptr 0000000000008298
       lea       rcx,[rdi+8]
       call      0000000000000010
       mov       rcx,rdi
       mov       [rbp+0FFE8],rcx
       call      qword ptr [0B1C0]
       mov       rsi,rax
       test      rsi,rsi
       je        short 0000000000008257
       mov       rcx,offset MT_System.Threading.Tasks.Task`1[[System.String, System.Private.CoreLib]]
       call      0000000000002AE0
       mov       rdi,rax
       mov       dword ptr [rdi+34],1000000
       lea       rcx,[rdi+38]
       mov       rdx,rsi
       call      0000000000000010
       jmp       short 0000000000008278
       mov       rcx,7FFF00B34BF0
       mov       edx,2F
       call      0000000000001230
       mov       rcx,2284C8095D8
       mov       rdi,[rcx]
       xor       ecx,ecx
       mov       rax,[rbp+0FFE8]
       mov       [rax+8],rcx
       mov       [rax+10],ecx
       mov       rcx,rax
       call      0000000000000FB0
       mov       rax,rdi
       add       rsp,30
       pop       rsi
       pop       rdi
       pop       rbp
       ret
       mov       ecx,11
       call      qword ptr [0B7B0]
       int       3
       push      rbp
       push      rdi
       push      rsi
       sub       rsp,30
       mov       rbp,[rcx+20]
       mov       [rsp+20],rbp
       lea       rbp,[rbp+40]
       xor       ecx,ecx
       mov       rax,[rbp+0FFE8]
       mov       [rax+8],rcx
       mov       [rax+10],ecx
       mov       rcx,rax
       call      0000000000000FB0
       nop
       add       rsp,30
       pop       rsi
       pop       rdi
       pop       rbp
       ret
; Total bytes of code 246
; System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib]].GetAwaiter()
       push      rax
       mov       [rsp],rcx
       cmp       [rcx],ecx
       mov       rax,rcx
       add       rsp,8
       ret
; Total bytes of code 15
; System.Runtime.CompilerServices.TaskAwaiter`1[[System.__Canon, System.Private.CoreLib]].GetResult()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi]
       mov       eax,[rcx+34]
       and       eax,11000000
       cmp       eax,1000000
       jne       short 00000000000084E7
       mov       rax,[rsi]
       mov       rax,[rax+38]
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [0DCD8]
       jmp       short 00000000000084DA
; Total bytes of code 47
; System.IO.StringReader.ReadToEnd()
       sub       rsp,28
       mov       rax,[rcx+8]
       test      rax,rax
       je        short 00000000000083FB
       mov       edx,[rcx+10]
       mov       r8d,[rax+8]
       mov       [rcx+10],r8d
       test      edx,edx
       je        short 00000000000083F5
       mov       rcx,rax
       call      qword ptr [3348]
       nop
       add       rsp,28
       ret
       call      qword ptr [51B0]
       int       3
; Total bytes of code 50

System.IO.Tests.StringReaderReadToEndTests.ReadToEndAsync(LineLengthRange: [ 1, 1])


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 18.27065055640008 > 17.317477031316233.
IsChangePoint: Marked as a change because one of 6/28/2022 10:14:54 AM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -23.34985327875806 (T) = (0 -18.6208834850431) / Math.Sqrt((0.048741299659951075 / (20)) + (0.21737662496927534 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.1251797227205874 = (16.549252629632726 - 18.6208834850431) / 16.549252629632726 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.IO.Tests.StringReaderReadToEndTests.ReadToEndAsync()
       push      rbp
       push      rdi
       push      rsi
       sub       rsp,30
       lea       rbp,[rsp+40]
       mov       [rbp+0FFE0],rsp
       mov       rsi,rcx
       mov       rcx,offset MT_System.IO.StringReader
       call      000000000000C390
       mov       rdi,rax
       mov       rdx,[rsi+8]
       test      rdx,rdx
       je        near ptr 00000000000085D8
       lea       rcx,[rdi+8]
       call      0000000000000010
       mov       rcx,rdi
       mov       [rbp+0FFE8],rcx
       call      qword ptr [0B0B8]
       mov       rsi,rax
       test      rsi,rsi
       je        short 0000000000008597
       mov       rcx,offset MT_System.Threading.Tasks.Task`1[[System.String, System.Private.CoreLib]]
       call      000000000000C390
       mov       rdi,rax
       mov       dword ptr [rdi+34],1000000
       lea       rcx,[rdi+38]
       mov       rdx,rsi
       call      0000000000000010
       jmp       short 00000000000085B8
       mov       rcx,7FF7F5474BE0
       mov       edx,2F
       call      00000000000019F0
       mov       rcx,277F8C095D8
       mov       rdi,[rcx]
       xor       ecx,ecx
       mov       rax,[rbp+0FFE8]
       mov       [rax+8],rcx
       mov       [rax+10],ecx
       mov       rcx,rax
       call      000000000000F440
       mov       rax,rdi
       add       rsp,30
       pop       rsi
       pop       rdi
       pop       rbp
       ret
       mov       ecx,11
       call      qword ptr [0B7B0]
       int       3
       push      rbp
       push      rdi
       push      rsi
       sub       rsp,30
       mov       rbp,[rcx+20]
       mov       [rsp+20],rbp
       lea       rbp,[rbp+40]
       xor       ecx,ecx
       mov       rax,[rbp+0FFE8]
       mov       [rax+8],rcx
       mov       [rax+10],ecx
       mov       rcx,rax
       call      000000000000F440
       nop
       add       rsp,30
       pop       rsi
       pop       rdi
       pop       rbp
       ret
; Total bytes of code 246
; System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib]].GetAwaiter()
       push      rax
       mov       [rsp],rcx
       cmp       [rcx],ecx
       mov       rax,rcx
       add       rsp,8
       ret
; Total bytes of code 15
; System.Runtime.CompilerServices.TaskAwaiter`1[[System.__Canon, System.Private.CoreLib]].GetResult()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi]
       mov       eax,[rcx+34]
       and       eax,11000000
       cmp       eax,1000000
       jne       short 0000000000008827
       mov       rax,[rsi]
       mov       rax,[rax+38]
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [0D978]
       jmp       short 000000000000881A
; Total bytes of code 47
; System.IO.StringReader.ReadToEnd()
       sub       rsp,28
       mov       rax,[rcx+8]
       test      rax,rax
       je        short 000000000000873E
       mov       edx,[rcx+10]
       mov       r8d,[rax+8]
       mov       [rcx+10],r8d
       test      edx,edx
       je        short 0000000000008738
       sub       r8d,edx
       mov       rcx,rax
       call      qword ptr [3360]
       nop
       add       rsp,28
       ret
       call      qword ptr [51B0]
       int       3
; Total bytes of code 53

Compare Jit Disasm

; System.IO.Tests.StringReaderReadToEndTests.ReadToEndAsync()
       push      rbp
       push      rdi
       push      rsi
       sub       rsp,30
       lea       rbp,[rsp+40]
       mov       [rbp+0FFE0],rsp
       mov       rsi,rcx
       mov       rcx,offset MT_System.IO.StringReader
       call      0000000000002AE0
       mov       rdi,rax
       mov       rdx,[rsi+8]
       test      rdx,rdx
       je        near ptr 0000000000008298
       lea       rcx,[rdi+8]
       call      0000000000000010
       mov       rcx,rdi
       mov       [rbp+0FFE8],rcx
       call      qword ptr [0B1C0]
       mov       rsi,rax
       test      rsi,rsi
       je        short 0000000000008257
       mov       rcx,offset MT_System.Threading.Tasks.Task`1[[System.String, System.Private.CoreLib]]
       call      0000000000002AE0
       mov       rdi,rax
       mov       dword ptr [rdi+34],1000000
       lea       rcx,[rdi+38]
       mov       rdx,rsi
       call      0000000000000010
       jmp       short 0000000000008278
       mov       rcx,7FFF00B24BF0
       mov       edx,2F
       call      0000000000001230
       mov       rcx,1591A0095D8
       mov       rdi,[rcx]
       xor       ecx,ecx
       mov       rax,[rbp+0FFE8]
       mov       [rax+8],rcx
       mov       [rax+10],ecx
       mov       rcx,rax
       call      0000000000000FB0
       mov       rax,rdi
       add       rsp,30
       pop       rsi
       pop       rdi
       pop       rbp
       ret
       mov       ecx,11
       call      qword ptr [0B7B0]
       int       3
       push      rbp
       push      rdi
       push      rsi
       sub       rsp,30
       mov       rbp,[rcx+20]
       mov       [rsp+20],rbp
       lea       rbp,[rbp+40]
       xor       ecx,ecx
       mov       rax,[rbp+0FFE8]
       mov       [rax+8],rcx
       mov       [rax+10],ecx
       mov       rcx,rax
       call      0000000000000FB0
       nop
       add       rsp,30
       pop       rsi
       pop       rdi
       pop       rbp
       ret
; Total bytes of code 246
; System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib]].GetAwaiter()
       push      rax
       mov       [rsp],rcx
       cmp       [rcx],ecx
       mov       rax,rcx
       add       rsp,8
       ret
; Total bytes of code 15
; System.Runtime.CompilerServices.TaskAwaiter`1[[System.__Canon, System.Private.CoreLib]].GetResult()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi]
       mov       eax,[rcx+34]
       and       eax,11000000
       cmp       eax,1000000
       jne       short 00000000000084E7
       mov       rax,[rsi]
       mov       rax,[rax+38]
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [0DCD8]
       jmp       short 00000000000084DA
; Total bytes of code 47
; System.IO.StringReader.ReadToEnd()
       sub       rsp,28
       mov       rax,[rcx+8]
       test      rax,rax
       je        short 00000000000083FB
       mov       edx,[rcx+10]
       mov       r8d,[rax+8]
       mov       [rcx+10],r8d
       test      edx,edx
       je        short 00000000000083F5
       mov       rcx,rax
       call      qword ptr [3348]
       nop
       add       rsp,28
       ret
       call      qword ptr [51B0]
       int       3
; Total bytes of code 50

System.IO.Tests.StringReaderReadToEndTests.ReadToEndAsync(LineLengthRange: [ 9, 32])


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 18.568099099584433 > 17.348412121959004.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -11.488825072065273 (T) = (0 -18.713084617473363) / Math.Sqrt((0.44101920034757436 / (20)) + (0.1249754401737981 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.1079267248364103 = (16.890182534622426 - 18.713084617473363) / 16.890182534622426 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.IO.Tests.StringReaderReadToEndTests.ReadToEndAsync()
       push      rbp
       push      rdi
       push      rsi
       sub       rsp,30
       lea       rbp,[rsp+40]
       mov       [rbp+0FFE0],rsp
       mov       rsi,rcx
       mov       rcx,offset MT_System.IO.StringReader
       call      000000000000C390
       mov       rdi,rax
       mov       rdx,[rsi+8]
       test      rdx,rdx
       je        near ptr 00000000000085D8
       lea       rcx,[rdi+8]
       call      0000000000000010
       mov       rcx,rdi
       mov       [rbp+0FFE8],rcx
       call      qword ptr [0B0B8]
       mov       rsi,rax
       test      rsi,rsi
       je        short 0000000000008597
       mov       rcx,offset MT_System.Threading.Tasks.Task`1[[System.String, System.Private.CoreLib]]
       call      000000000000C390
       mov       rdi,rax
       mov       dword ptr [rdi+34],1000000
       lea       rcx,[rdi+38]
       mov       rdx,rsi
       call      0000000000000010
       jmp       short 00000000000085B8
       mov       rcx,7FF7F5464BE0
       mov       edx,2F
       call      00000000000019F0
       mov       rcx,208554095D8
       mov       rdi,[rcx]
       xor       ecx,ecx
       mov       rax,[rbp+0FFE8]
       mov       [rax+8],rcx
       mov       [rax+10],ecx
       mov       rcx,rax
       call      000000000000F440
       mov       rax,rdi
       add       rsp,30
       pop       rsi
       pop       rdi
       pop       rbp
       ret
       mov       ecx,11
       call      qword ptr [0B7B0]
       int       3
       push      rbp
       push      rdi
       push      rsi
       sub       rsp,30
       mov       rbp,[rcx+20]
       mov       [rsp+20],rbp
       lea       rbp,[rbp+40]
       xor       ecx,ecx
       mov       rax,[rbp+0FFE8]
       mov       [rax+8],rcx
       mov       [rax+10],ecx
       mov       rcx,rax
       call      000000000000F440
       nop
       add       rsp,30
       pop       rsi
       pop       rdi
       pop       rbp
       ret
; Total bytes of code 246
; System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib]].GetAwaiter()
       push      rax
       mov       [rsp],rcx
       cmp       [rcx],ecx
       mov       rax,rcx
       add       rsp,8
       ret
; Total bytes of code 15
; System.Runtime.CompilerServices.TaskAwaiter`1[[System.__Canon, System.Private.CoreLib]].GetResult()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi]
       mov       eax,[rcx+34]
       and       eax,11000000
       cmp       eax,1000000
       jne       short 0000000000008827
       mov       rax,[rsi]
       mov       rax,[rax+38]
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [0D978]
       jmp       short 000000000000881A
; Total bytes of code 47
; System.IO.StringReader.ReadToEnd()
       sub       rsp,28
       mov       rax,[rcx+8]
       test      rax,rax
       je        short 000000000000873E
       mov       edx,[rcx+10]
       mov       r8d,[rax+8]
       mov       [rcx+10],r8d
       test      edx,edx
       je        short 0000000000008738
       sub       r8d,edx
       mov       rcx,rax
       call      qword ptr [3360]
       nop
       add       rsp,28
       ret
       call      qword ptr [51B0]
       int       3
; Total bytes of code 53

Compare Jit Disasm

; System.IO.Tests.StringReaderReadToEndTests.ReadToEndAsync()
       push      rbp
       push      rdi
       push      rsi
       sub       rsp,30
       lea       rbp,[rsp+40]
       mov       [rbp+0FFE0],rsp
       mov       rsi,rcx
       mov       rcx,offset MT_System.IO.StringReader
       call      0000000000002AE0
       mov       rdi,rax
       mov       rdx,[rsi+8]
       test      rdx,rdx
       je        near ptr 0000000000008278
       lea       rcx,[rdi+8]
       call      0000000000000010
       mov       rcx,rdi
       mov       [rbp+0FFE8],rcx
       call      qword ptr [0B1C0]
       mov       rsi,rax
       test      rsi,rsi
       je        short 0000000000008237
       mov       rcx,offset MT_System.Threading.Tasks.Task`1[[System.String, System.Private.CoreLib]]
       call      0000000000002AE0
       mov       rdi,rax
       mov       dword ptr [rdi+34],1000000
       lea       rcx,[rdi+38]
       mov       rdx,rsi
       call      0000000000000010
       jmp       short 0000000000008258
       mov       rcx,7FFF00B24BF0
       mov       edx,2F
       call      0000000000001230
       mov       rcx,1A39B8095D8
       mov       rdi,[rcx]
       xor       ecx,ecx
       mov       rax,[rbp+0FFE8]
       mov       [rax+8],rcx
       mov       [rax+10],ecx
       mov       rcx,rax
       call      0000000000000FB0
       mov       rax,rdi
       add       rsp,30
       pop       rsi
       pop       rdi
       pop       rbp
       ret
       mov       ecx,11
       call      qword ptr [0B7B0]
       int       3
       push      rbp
       push      rdi
       push      rsi
       sub       rsp,30
       mov       rbp,[rcx+20]
       mov       [rsp+20],rbp
       lea       rbp,[rbp+40]
       xor       ecx,ecx
       mov       rax,[rbp+0FFE8]
       mov       [rax+8],rcx
       mov       [rax+10],ecx
       mov       rcx,rax
       call      0000000000000FB0
       nop
       add       rsp,30
       pop       rsi
       pop       rdi
       pop       rbp
       ret
; Total bytes of code 246
; System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib]].GetAwaiter()
       push      rax
       mov       [rsp],rcx
       cmp       [rcx],ecx
       mov       rax,rcx
       add       rsp,8
       ret
; Total bytes of code 15
; System.Runtime.CompilerServices.TaskAwaiter`1[[System.__Canon, System.Private.CoreLib]].GetResult()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi]
       mov       eax,[rcx+34]
       and       eax,11000000
       cmp       eax,1000000
       jne       short 00000000000084C7
       mov       rax,[rsi]
       mov       rax,[rax+38]
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [0DCD8]
       jmp       short 00000000000084BA
; Total bytes of code 47
; System.IO.StringReader.ReadToEnd()
       sub       rsp,28
       mov       rax,[rcx+8]
       test      rax,rax
       je        short 00000000000083DB
       mov       edx,[rcx+10]
       mov       r8d,[rax+8]
       mov       [rcx+10],r8d
       test      edx,edx
       je        short 00000000000083D5
       mov       rcx,rax
       call      qword ptr [3348]
       nop
       add       rsp,28
       ret
       call      qword ptr [51B0]
       int       3
; Total bytes of code 50

System.IO.Tests.StringReaderReadToEndTests.ReadToEndAsync(LineLengthRange: [ 0, 0])


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 18.54120355306514 > 17.296030348870133.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -5.576069413114465 (T) = (0 -18.639425696472507) / Math.Sqrt((1.5395510004551336 / (20)) + (0.5303222565294639 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.09873660958132248 = (16.964416707271752 - 18.639425696472507) / 16.964416707271752 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.IO.Tests.StringReaderReadToEndTests.ReadToEndAsync()
       push      rbp
       push      rdi
       push      rsi
       sub       rsp,30
       lea       rbp,[rsp+40]
       mov       [rbp+0FFE0],rsp
       mov       rsi,rcx
       mov       rcx,offset MT_System.IO.StringReader
       call      000000000000C390
       mov       rdi,rax
       mov       rdx,[rsi+8]
       test      rdx,rdx
       je        near ptr 00000000000086F8
       lea       rcx,[rdi+8]
       call      0000000000000010
       mov       rcx,rdi
       mov       [rbp+0FFE8],rcx
       call      qword ptr [0B0B8]
       mov       rsi,rax
       test      rsi,rsi
       je        short 00000000000086B7
       mov       rcx,offset MT_System.Threading.Tasks.Task`1[[System.String, System.Private.CoreLib]]
       call      000000000000C390
       mov       rdi,rax
       mov       dword ptr [rdi+34],1000000
       lea       rcx,[rdi+38]
       mov       rdx,rsi
       call      0000000000000010
       jmp       short 00000000000086D8
       mov       rcx,7FF7F5514BE0
       mov       edx,2F
       call      00000000000019F0
       mov       rcx,2784C8095D8
       mov       rdi,[rcx]
       xor       ecx,ecx
       mov       rax,[rbp+0FFE8]
       mov       [rax+8],rcx
       mov       [rax+10],ecx
       mov       rcx,rax
       call      000000000000F440
       mov       rax,rdi
       add       rsp,30
       pop       rsi
       pop       rdi
       pop       rbp
       ret
       mov       ecx,11
       call      qword ptr [0B7B0]
       int       3
       push      rbp
       push      rdi
       push      rsi
       sub       rsp,30
       mov       rbp,[rcx+20]
       mov       [rsp+20],rbp
       lea       rbp,[rbp+40]
       xor       ecx,ecx
       mov       rax,[rbp+0FFE8]
       mov       [rax+8],rcx
       mov       [rax+10],ecx
       mov       rcx,rax
       call      000000000000F440
       nop
       add       rsp,30
       pop       rsi
       pop       rdi
       pop       rbp
       ret
; Total bytes of code 246
; System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib]].GetAwaiter()
       push      rax
       mov       [rsp],rcx
       cmp       [rcx],ecx
       mov       rax,rcx
       add       rsp,8
       ret
; Total bytes of code 15
; System.Runtime.CompilerServices.TaskAwaiter`1[[System.__Canon, System.Private.CoreLib]].GetResult()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi]
       mov       eax,[rcx+34]
       and       eax,11000000
       cmp       eax,1000000
       jne       short 0000000000008827
       mov       rax,[rsi]
       mov       rax,[rax+38]
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [0FE70]
       jmp       short 000000000000881A
; Total bytes of code 47
; System.IO.StringReader.ReadToEnd()
       sub       rsp,28
       mov       rax,[rcx+8]
       test      rax,rax
       je        short 00000000000085CE
       mov       edx,[rcx+10]
       mov       r8d,[rax+8]
       mov       [rcx+10],r8d
       test      edx,edx
       je        short 00000000000085C8
       sub       r8d,edx
       mov       rcx,rax
       call      qword ptr [3360]
       nop
       add       rsp,28
       ret
       call      qword ptr [51B0]
       int       3
; Total bytes of code 53

Compare Jit Disasm

; System.IO.Tests.StringReaderReadToEndTests.ReadToEndAsync()
       push      rbp
       push      rdi
       push      rsi
       sub       rsp,30
       lea       rbp,[rsp+40]
       mov       [rbp+0FFE0],rsp
       mov       rsi,rcx
       mov       rcx,offset MT_System.IO.StringReader
       call      0000000000002AE0
       mov       rdi,rax
       mov       rdx,[rsi+8]
       test      rdx,rdx
       je        near ptr 0000000000008278
       lea       rcx,[rdi+8]
       call      0000000000000010
       mov       rcx,rdi
       mov       [rbp+0FFE8],rcx
       call      qword ptr [0B1C0]
       mov       rsi,rax
       test      rsi,rsi
       je        short 0000000000008237
       mov       rcx,offset MT_System.Threading.Tasks.Task`1[[System.String, System.Private.CoreLib]]
       call      0000000000002AE0
       mov       rdi,rax
       mov       dword ptr [rdi+34],1000000
       lea       rcx,[rdi+38]
       mov       rdx,rsi
       call      0000000000000010
       jmp       short 0000000000008258
       mov       rcx,7FFF00B94BF0
       mov       edx,2F
       call      0000000000001230
       mov       rcx,24F428095D8
       mov       rdi,[rcx]
       xor       ecx,ecx
       mov       rax,[rbp+0FFE8]
       mov       [rax+8],rcx
       mov       [rax+10],ecx
       mov       rcx,rax
       call      0000000000000FB0
       mov       rax,rdi
       add       rsp,30
       pop       rsi
       pop       rdi
       pop       rbp
       ret
       mov       ecx,11
       call      qword ptr [0B7B0]
       int       3
       push      rbp
       push      rdi
       push      rsi
       sub       rsp,30
       mov       rbp,[rcx+20]
       mov       [rsp+20],rbp
       lea       rbp,[rbp+40]
       xor       ecx,ecx
       mov       rax,[rbp+0FFE8]
       mov       [rax+8],rcx
       mov       [rax+10],ecx
       mov       rcx,rax
       call      0000000000000FB0
       nop
       add       rsp,30
       pop       rsi
       pop       rdi
       pop       rbp
       ret
; Total bytes of code 246
; System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib]].GetAwaiter()
       push      rax
       mov       [rsp],rcx
       cmp       [rcx],ecx
       mov       rax,rcx
       add       rsp,8
       ret
; Total bytes of code 15
; System.Runtime.CompilerServices.TaskAwaiter`1[[System.__Canon, System.Private.CoreLib]].GetResult()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi]
       mov       eax,[rcx+34]
       and       eax,11000000
       cmp       eax,1000000
       jne       short 00000000000084C7
       mov       rax,[rsi]
       mov       rax,[rax+38]
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [0DCD8]
       jmp       short 00000000000084BA
; Total bytes of code 47
; System.IO.StringReader.ReadToEnd()
       sub       rsp,28
       mov       rax,[rcx+8]
       test      rax,rax
       je        short 00000000000083DB
       mov       edx,[rcx+10]
       mov       r8d,[rax+8]
       mov       [rcx+10],r8d
       test      edx,edx
       je        short 00000000000083D5
       mov       rcx,rax
       call      qword ptr [3348]
       nop
       add       rsp,28
       ret
       call      qword ptr [51B0]
       int       3
; Total bytes of code 50

System.IO.Tests.StringReaderReadToEndTests.ReadToEnd(LineLengthRange: [ 33, 128])


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 9.217979676776038 > 8.362310259044031.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -7.19714779222927 (T) = (0 -9.112636558781357) / Math.Sqrt((0.05952608887205485 / (20)) + (0.7420724488826166 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.13107189950274092 = (8.056637745829946 - 9.112636558781357) / 8.056637745829946 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.IO.Tests.StringReaderReadToEndTests.ReadToEnd()
       push      rbp
       push      rdi
       push      rsi
       sub       rsp,30
       lea       rbp,[rsp+40]
       mov       [rbp+0FFE0],rsp
       mov       rsi,rcx
       mov       rcx,offset MT_System.IO.StringReader
       call      000000000000C390
       mov       rdi,rax
       mov       rdx,[rsi+8]
       test      rdx,rdx
       je        short 0000000000008507
       lea       rcx,[rdi+8]
       call      0000000000000010
       mov       rcx,rdi
       mov       [rbp+0FFE8],rcx
       call      qword ptr [9FE8]
       mov       rsi,rax
       xor       ecx,ecx
       mov       rax,[rbp+0FFE8]
       mov       [rax+8],rcx
       mov       [rax+10],ecx
       mov       rcx,rax
       call      000000000000F440
       mov       rax,rsi
       add       rsp,30
       pop       rsi
       pop       rdi
       pop       rbp
       ret
       mov       ecx,11
       call      qword ptr [0B7B0]
       int       3
       push      rbp
       push      rdi
       push      rsi
       sub       rsp,30
       mov       rbp,[rcx+20]
       mov       [rsp+20],rbp
       lea       rbp,[rbp+40]
       xor       ecx,ecx
       mov       rax,[rbp+0FFE8]
       mov       [rax+8],rcx
       mov       [rax+10],ecx
       mov       rcx,rax
       call      000000000000F440
       nop
       add       rsp,30
       pop       rsi
       pop       rdi
       pop       rbp
       ret
; Total bytes of code 165
; System.IO.StringReader.ReadToEnd()
       sub       rsp,28
       mov       rax,[rcx+8]
       test      rax,rax
       je        short 00000000000085DE
       mov       edx,[rcx+10]
       mov       r8d,[rax+8]
       mov       [rcx+10],r8d
       test      edx,edx
       je        short 00000000000085D8
       sub       r8d,edx
       mov       rcx,rax
       call      qword ptr [3360]
       nop
       add       rsp,28
       ret
       call      qword ptr [3990]
       int       3
; Total bytes of code 53

System.IO.Tests.StringReaderReadToEndTests.ReadToEndAsync(LineLengthRange: [ 129, 1024])


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 19.033486696110355 > 17.66133672721919.
IsChangePoint: Marked as a change because one of 8/9/2022 4:14:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -8.084908912376113 (T) = (0 -18.84045407330948) / Math.Sqrt((0.8210405851534628 / (21)) + (0.6426304607725588 / (39))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (21) + (39) - 2, .025) and -0.1125491498046884 = (16.93449145740391 - 18.84045407330948) / 16.93449145740391 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.IO.Tests.StringReaderReadToEndTests.ReadToEndAsync()
       push      rbp
       push      rdi
       push      rsi
       sub       rsp,30
       lea       rbp,[rsp+40]
       mov       [rbp+0FFE0],rsp
       mov       rsi,rcx
       mov       rcx,offset MT_System.IO.StringReader
       call      000000000000C390
       mov       rdi,rax
       mov       rdx,[rsi+8]
       test      rdx,rdx
       je        near ptr 00000000000085F8
       lea       rcx,[rdi+8]
       call      0000000000000010
       mov       rcx,rdi
       mov       [rbp+0FFE8],rcx
       call      qword ptr [0B0B8]
       mov       rsi,rax
       test      rsi,rsi
       je        short 00000000000085B7
       mov       rcx,offset MT_System.Threading.Tasks.Task`1[[System.String, System.Private.CoreLib]]
       call      000000000000C390
       mov       rdi,rax
       mov       dword ptr [rdi+34],1000000
       lea       rcx,[rdi+38]
       mov       rdx,rsi
       call      0000000000000010
       jmp       short 00000000000085D8
       mov       rcx,7FF7F5464BE0
       mov       edx,2F
       call      00000000000019F0
       mov       rcx,211C7C095D8
       mov       rdi,[rcx]
       xor       ecx,ecx
       mov       rax,[rbp+0FFE8]
       mov       [rax+8],rcx
       mov       [rax+10],ecx
       mov       rcx,rax
       call      000000000000F440
       mov       rax,rdi
       add       rsp,30
       pop       rsi
       pop       rdi
       pop       rbp
       ret
       mov       ecx,11
       call      qword ptr [0B7B0]
       int       3
       push      rbp
       push      rdi
       push      rsi
       sub       rsp,30
       mov       rbp,[rcx+20]
       mov       [rsp+20],rbp
       lea       rbp,[rbp+40]
       xor       ecx,ecx
       mov       rax,[rbp+0FFE8]
       mov       [rax+8],rcx
       mov       [rax+10],ecx
       mov       rcx,rax
       call      000000000000F440
       nop
       add       rsp,30
       pop       rsi
       pop       rdi
       pop       rbp
       ret
; Total bytes of code 246
; System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib]].GetAwaiter()
       push      rax
       mov       [rsp],rcx
       cmp       [rcx],ecx
       mov       rax,rcx
       add       rsp,8
       ret
; Total bytes of code 15
; System.Runtime.CompilerServices.TaskAwaiter`1[[System.__Canon, System.Private.CoreLib]].GetResult()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi]
       mov       eax,[rcx+34]
       and       eax,11000000
       cmp       eax,1000000
       jne       short 0000000000008847
       mov       rax,[rsi]
       mov       rax,[rax+38]
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [0D978]
       jmp       short 000000000000883A
; Total bytes of code 47
; System.IO.StringReader.ReadToEnd()
       sub       rsp,28
       mov       rax,[rcx+8]
       test      rax,rax
       je        short 000000000000875E
       mov       edx,[rcx+10]
       mov       r8d,[rax+8]
       mov       [rcx+10],r8d
       test      edx,edx
       je        short 0000000000008758
       sub       r8d,edx
       mov       rcx,rax
       call      qword ptr [3360]
       nop
       add       rsp,28
       ret
       call      qword ptr [51B0]
       int       3
; Total bytes of code 53

Compare Jit Disasm

; System.IO.Tests.StringReaderReadToEndTests.ReadToEndAsync()
       push      rbp
       push      rdi
       push      rsi
       sub       rsp,30
       lea       rbp,[rsp+40]
       mov       [rbp+0FFE0],rsp
       mov       rsi,rcx
       mov       rcx,offset MT_System.IO.StringReader
       call      0000000000002AE0
       mov       rdi,rax
       mov       rdx,[rsi+8]
       test      rdx,rdx
       je        near ptr 0000000000008278
       lea       rcx,[rdi+8]
       call      0000000000000010
       mov       rcx,rdi
       mov       [rbp+0FFE8],rcx
       call      qword ptr [0B1C0]
       mov       rsi,rax
       test      rsi,rsi
       je        short 0000000000008237
       mov       rcx,offset MT_System.Threading.Tasks.Task`1[[System.String, System.Private.CoreLib]]
       call      0000000000002AE0
       mov       rdi,rax
       mov       dword ptr [rdi+34],1000000
       lea       rcx,[rdi+38]
       mov       rdx,rsi
       call      0000000000000010
       jmp       short 0000000000008258
       mov       rcx,7FFF00B24BF0
       mov       edx,2F
       call      0000000000001230
       mov       rcx,23AD24095D8
       mov       rdi,[rcx]
       xor       ecx,ecx
       mov       rax,[rbp+0FFE8]
       mov       [rax+8],rcx
       mov       [rax+10],ecx
       mov       rcx,rax
       call      0000000000000FB0
       mov       rax,rdi
       add       rsp,30
       pop       rsi
       pop       rdi
       pop       rbp
       ret
       mov       ecx,11
       call      qword ptr [0B7B0]
       int       3
       push      rbp
       push      rdi
       push      rsi
       sub       rsp,30
       mov       rbp,[rcx+20]
       mov       [rsp+20],rbp
       lea       rbp,[rbp+40]
       xor       ecx,ecx
       mov       rax,[rbp+0FFE8]
       mov       [rax+8],rcx
       mov       [rax+10],ecx
       mov       rcx,rax
       call      0000000000000FB0
       nop
       add       rsp,30
       pop       rsi
       pop       rdi
       pop       rbp
       ret
; Total bytes of code 246
; System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib]].GetAwaiter()
       push      rax
       mov       [rsp],rcx
       cmp       [rcx],ecx
       mov       rax,rcx
       add       rsp,8
       ret
; Total bytes of code 15
; System.Runtime.CompilerServices.TaskAwaiter`1[[System.__Canon, System.Private.CoreLib]].GetResult()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi]
       mov       eax,[rcx+34]
       and       eax,11000000
       cmp       eax,1000000
       jne       short 00000000000084C7
       mov       rax,[rsi]
       mov       rax,[rax+38]
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [0DCD8]
       jmp       short 00000000000084BA
; Total bytes of code 47
; System.IO.StringReader.ReadToEnd()
       sub       rsp,28
       mov       rax,[rcx+8]
       test      rax,rax
       je        short 00000000000083DB
       mov       edx,[rcx+10]
       mov       r8d,[rax+8]
       mov       [rcx+10],r8d
       test      edx,edx
       je        short 00000000000083D5
       mov       rcx,rax
       call      qword ptr [3348]
       nop
       add       rsp,28
       ret
       call      qword ptr [51B0]
       int       3
; Total bytes of code 50

Docs

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

@performanceautofiler
Copy link
Author

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in System.Threading.Tests.Perf_CancellationToken

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
CreateLinkedTokenSource1 - Duration of single invocation 48.65 ns 52.86 ns 1.09 0.05 False 405.1485707464072 455.75074074478687 1.1248978119437891 Trace Trace
CreateLinkedTokenSource3 - Duration of single invocation 133.46 ns 149.60 ns 1.12 0.00 False Trace Trace
RegisterAndUnregister_Serial - Duration of single invocation 44.91 ns 57.95 ns 1.29 0.37 False 381.89965829395726 429.3822913714973 1.124332745647527 Trace Trace

graph
graph
graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Threading.Tests.Perf_CancellationToken*'

Payloads

Baseline
Compare

Histogram

System.Threading.Tests.Perf_CancellationToken.CreateLinkedTokenSource1


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 52.8588023934335 > 50.47234926136703.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -36.633017895862736 (T) = (0 -52.9515644884558) / Math.Sqrt((0.10967204892904692 / (20)) + (0.3794585845599543 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.09247335824658234 = (48.469433225761186 - 52.9515644884558) / 48.469433225761186 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.Threading.Tests.Perf_CancellationToken.CreateLinkedTokenSource1()
       push      rsi
       sub       rsp,20
       mov       rcx,[rcx+20]
       xor       edx,edx
       call      qword ptr [0FF30]
       mov       rsi,rax
       mov       rcx,offset MT_System.Threading.CancellationTokenSource
       cmp       [rsi],rcx
       jne       short 000000000000F311
       mov       rcx,rsi
       mov       edx,1
       call      qword ptr [2680]
       mov       rcx,rsi
       call      qword ptr [0BAC8]
       nop
       add       rsp,20
       pop       rsi
       ret
       mov       rcx,rsi
       mov       edx,1
       mov       rax,[rsi]
       mov       rax,[rax+40]
       call      qword ptr [rax+28]
       jmp       short 000000000000F301
; Total bytes of code 85
; System.Threading.CancellationTokenSource.CreateLinkedTokenSource(System.Threading.CancellationToken, System.Threading.CancellationToken)
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       mov       rsi,rcx
       mov       rdi,rdx
       test      rsi,rsi
       je        short 000000000000F383
       test      rdi,rdi
       je        short 000000000000F395
       mov       rcx,offset MT_System.Threading.CancellationTokenSource+Linked2CancellationTokenSource
       call      000000000000C390
       mov       rbx,rax
       mov       rcx,rbx
       mov       rdx,rsi
       mov       r8,rdi
       call      qword ptr [19A8]
       mov       rax,rbx
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       rcx,rdi
       call      qword ptr [0FF48]
       nop
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       rcx,offset MT_System.Threading.CancellationTokenSource+Linked1CancellationTokenSource
       call      000000000000C390
       mov       rdi,rax
       mov       rcx,rdi
       mov       rdx,rsi
       call      qword ptr [1978]
       mov       rax,rdi
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 126
; System.Threading.CancellationTokenSource.Dispose(Boolean)
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,28
       mov       rsi,rcx
       test      dl,dl
       je        short 000000000000FB7F
       cmp       byte ptr [rsi+24],0
       jne       short 000000000000FB7F
       mov       rcx,[rsi+8]
       test      rcx,rcx
       jne       short 000000000000FB88
       xor       ecx,ecx
       mov       [rsi+18],rcx
       cmp       qword ptr [rsi+10],0
       jne       short 000000000000FBB9
       mov       byte ptr [rsi+24],1
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       ret
       xor       eax,eax
       mov       [rsi+8],rax
       call      qword ptr [7048]
       jmp       short 000000000000FB6E
       mov       rcx,rbx
       mov       edx,1
       mov       rax,[rbp+40]
       call      qword ptr [rax+30]
       mov       rcx,rbx
       call      qword ptr [0BAC8]
       mov       rcx,rdi
       call      qword ptr [0BAC8]
       jmp       short 000000000000FB7B
       lea       rcx,[rsi+10]
       xor       edx,edx
       call      000000000000EFA0
       mov       rdi,rax
       test      rdi,rdi
       je        short 000000000000FB7B
       cmp       dword ptr [rsi+20],1
       je        short 000000000000FB7B
       mov       rbx,[rdi+8]
       test      rbx,rbx
       je        short 000000000000FBAE
       mov       rbp,[rbx]
       mov       rcx,offset MT_Microsoft.Win32.SafeHandles.SafeFileHandle
       cmp       rbp,rcx
       jne       short 000000000000FB96
       mov       rcx,rbx
       mov       edx,1
       call      qword ptr [93C0]
       jmp       short 000000000000FBA5
; Total bytes of code 173
; System.GC.SuppressFinalize(System.Object)
       sub       rsp,28
       test      rcx,rcx
       je        short 000000000000F262
       add       rsp,28
       jmp       near ptr 000000000000F440
       mov       ecx,135D
       mov       rdx,7FF924EB4000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [33F0]
       int       3
; Total bytes of code 48

Compare Jit Disasm

; System.Threading.Tests.Perf_CancellationToken.CreateLinkedTokenSource1()
       push      rsi
       sub       rsp,20
       mov       rcx,[rcx+20]
       xor       edx,edx
       call      qword ptr [0FF30]
       mov       rsi,rax
       mov       rcx,offset MT_System.Threading.CancellationTokenSource
       cmp       [rsi],rcx
       jne       short 000000000000F311
       mov       rcx,rsi
       mov       edx,1
       call      qword ptr [27C8]
       mov       rcx,rsi
       call      qword ptr [0BAC8]
       nop
       add       rsp,20
       pop       rsi
       ret
       mov       rcx,rsi
       mov       edx,1
       mov       rax,[rsi]
       mov       rax,[rax+40]
       call      qword ptr [rax+28]
       jmp       short 000000000000F301
; Total bytes of code 85
; System.Threading.CancellationTokenSource.CreateLinkedTokenSource(System.Threading.CancellationToken, System.Threading.CancellationToken)
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       mov       rsi,rcx
       mov       rdi,rdx
       test      rsi,rsi
       je        short 000000000000F383
       test      rdi,rdi
       je        short 000000000000F395
       mov       rcx,offset MT_System.Threading.CancellationTokenSource+Linked2CancellationTokenSource
       call      0000000000002AE0
       mov       rbx,rax
       mov       rcx,rbx
       mov       rdx,rsi
       mov       r8,rdi
       call      qword ptr [19A8]
       mov       rax,rbx
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       rcx,rdi
       call      qword ptr [0FF48]
       nop
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       rcx,offset MT_System.Threading.CancellationTokenSource+Linked1CancellationTokenSource
       call      0000000000002AE0
       mov       rdi,rax
       mov       rcx,rdi
       mov       rdx,rsi
       call      qword ptr [1978]
       mov       rax,rdi
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 126
; System.Threading.CancellationTokenSource.Dispose(Boolean)
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,28
       mov       rsi,rcx
       test      dl,dl
       je        short 000000000000FB7F
       cmp       byte ptr [rsi+24],0
       jne       short 000000000000FB7F
       mov       rcx,[rsi+8]
       test      rcx,rcx
       jne       short 000000000000FB88
       xor       ecx,ecx
       mov       [rsi+18],rcx
       cmp       qword ptr [rsi+10],0
       jne       short 000000000000FBB9
       mov       byte ptr [rsi+24],1
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       ret
       xor       eax,eax
       mov       [rsi+8],rax
       call      qword ptr [7048]
       jmp       short 000000000000FB6E
       mov       rcx,rbx
       mov       edx,1
       mov       rax,[rbp+40]
       call      qword ptr [rax+30]
       mov       rcx,rbx
       call      qword ptr [0BAC8]
       mov       rcx,rdi
       call      qword ptr [0BAC8]
       jmp       short 000000000000FB7B
       lea       rcx,[rsi+10]
       xor       edx,edx
       call      000000000000EB70
       mov       rdi,rax
       test      rdi,rdi
       je        short 000000000000FB7B
       cmp       dword ptr [rsi+20],1
       je        short 000000000000FB7B
       mov       rbx,[rdi+8]
       test      rbx,rbx
       je        short 000000000000FBAE
       mov       rbp,[rbx]
       mov       rcx,offset MT_Microsoft.Win32.SafeHandles.SafeFileHandle
       cmp       rbp,rcx
       jne       short 000000000000FB96
       mov       rcx,rbx
       mov       edx,1
       call      qword ptr [93C0]
       jmp       short 000000000000FBA5
; Total bytes of code 173
; System.GC.SuppressFinalize(System.Object)
       sub       rsp,28
       test      rcx,rcx
       je        short 000000000000F262
       add       rsp,28
       jmp       near ptr 0000000000000FB0
       mov       ecx,135D
       mov       rdx,7FF94E2A4000
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [33F0]
       int       3
; Total bytes of code 48

System.Threading.Tests.Perf_CancellationToken.CreateLinkedTokenSource3


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 149.5979406932832 > 141.00197335933873.
IsChangePoint: Marked as a change because one of 7/6/2022 12:32:56 PM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -108.06865258929506 (T) = (0 -149.86947636351547) / Math.Sqrt((0.15920062825587517 / (20)) + (0.509372731894824 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.11573761048725632 = (134.32322703369803 - 149.86947636351547) / 134.32322703369803 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.Threading.Tests.Perf_CancellationToken.CreateLinkedTokenSource3()
       push      rsi
       sub       rsp,20
       mov       rcx,[rcx+10]
       call      qword ptr [0FF60]
       mov       rsi,rax
       mov       rcx,offset MT_System.Threading.CancellationTokenSource
       cmp       [rsi],rcx
       jne       short 000000000000F8DD
       mov       rcx,rsi
       mov       edx,1
       call      qword ptr [2680]
       mov       rcx,rsi
       add       rsp,20
       pop       rsi
       jmp       qword ptr [0BAC8]
       mov       rcx,rsi
       mov       edx,1
       mov       rax,[rsi]
       mov       rax,[rax+40]
       call      qword ptr [rax+28]
       jmp       short 000000000000F8CF
; Total bytes of code 81
; System.Threading.CancellationTokenSource.CreateLinkedTokenSource(System.Threading.CancellationToken[])
       push      rdi
       push      rsi
       sub       rsp,28
       mov       rsi,rcx
       test      rsi,rsi
       je        short 000000000000F95C
       mov       edi,[rsi+8]
       cmp       edi,2
       ja        near ptr 000000000000F9D9
       mov       ecx,edi
       lea       rax,[0FA08]
       mov       eax,[rax+rcx*4]
       lea       rdx,[0F919]
       add       rax,rdx
       jmp       rax
       test      edi,edi
       je        near ptr 000000000000F9FF
       mov       rcx,[rsi+10]
       call      qword ptr [0FF48]
       nop
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       mov       ecx,165EF
       mov       rdx,7FF9B1F34000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [33F0]
       int       3
       mov       rcx,offset MT_System.ArgumentException
       call      000000000000C390
       mov       rdi,rax
       mov       ecx,0AE63
       mov       rdx,7FF9B1F34000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [74E0]
       mov       rdx,rax
       mov       rcx,rdi
       call      qword ptr [0BB88]
       mov       rcx,rdi
       call      0000000000004690
       test      edi,edi
       je        short 000000000000F9FF
       mov       rcx,[rsi+10]
       cmp       edi,1
       jbe       short 000000000000F9FF
       mov       rdx,[rsi+18]
       call      qword ptr [0FF30]
       jmp       near ptr 000000000000F954
       mov       rcx,offset MT_System.Threading.CancellationTokenSource+LinkedNCancellationTokenSource
       call      000000000000C390
       mov       rdi,rax
       mov       rcx,rdi
       mov       rdx,rsi
       call      qword ptr [17E0]
       mov       rax,rdi
       jmp       near ptr 000000000000F954
       call      0000000000006930
       int       3
; Total bytes of code 245
; System.Threading.CancellationTokenSource.Dispose(Boolean)
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,28
       mov       rsi,rcx
       test      dl,dl
       je        short 000000000000FC8F
       cmp       byte ptr [rsi+24],0
       jne       short 000000000000FC8F
       mov       rcx,[rsi+8]
       test      rcx,rcx
       jne       short 000000000000FC98
       xor       ecx,ecx
       mov       [rsi+18],rcx
       cmp       qword ptr [rsi+10],0
       jne       short 000000000000FCC9
       mov       byte ptr [rsi+24],1
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       ret
       xor       eax,eax
       mov       [rsi+8],rax
       call      qword ptr [50A8]
       jmp       short 000000000000FC7E
       mov       rcx,rbx
       mov       edx,1
       mov       rax,[rbp+40]
       call      qword ptr [rax+30]
       mov       rcx,rbx
       call      qword ptr [0BAC8]
       mov       rcx,rdi
       call      qword ptr [0BAC8]
       jmp       short 000000000000FC8B
       lea       rcx,[rsi+10]
       xor       edx,edx
       call      000000000000EFA0
       mov       rdi,rax
       test      rdi,rdi
       je        short 000000000000FC8B
       cmp       dword ptr [rsi+20],1
       je        short 000000000000FC8B
       mov       rbx,[rdi+8]
       test      rbx,rbx
       je        short 000000000000FCBE
       mov       rbp,[rbx]
       mov       rcx,offset MT_Microsoft.Win32.SafeHandles.SafeFileHandle
       cmp       rbp,rcx
       jne       short 000000000000FCA6
       mov       rcx,rbx
       mov       edx,1
       call      qword ptr [93C0]
       jmp       short 000000000000FCB5
; Total bytes of code 173
; System.GC.SuppressFinalize(System.Object)
       sub       rsp,28
       test      rcx,rcx
       je        short 000000000000F242
       add       rsp,28
       jmp       near ptr 000000000000F440
       mov       ecx,135D
       mov       rdx,7FF9B1F34000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [33F0]
       int       3
; Total bytes of code 48

Compare Jit Disasm

; System.Threading.Tests.Perf_CancellationToken.CreateLinkedTokenSource3()
       push      rsi
       sub       rsp,20
       mov       rcx,[rcx+10]
       call      qword ptr [0FF60]
       mov       rsi,rax
       mov       rcx,offset MT_System.Threading.CancellationTokenSource
       cmp       [rsi],rcx
       jne       short 000000000000F8DD
       mov       rcx,rsi
       mov       edx,1
       call      qword ptr [27C8]
       mov       rcx,rsi
       add       rsp,20
       pop       rsi
       jmp       qword ptr [0BAC8]
       mov       rcx,rsi
       mov       edx,1
       mov       rax,[rsi]
       mov       rax,[rax+40]
       call      qword ptr [rax+28]
       jmp       short 000000000000F8CF
; Total bytes of code 81
; System.Threading.CancellationTokenSource.CreateLinkedTokenSource(System.Threading.CancellationToken[])
       push      rdi
       push      rsi
       sub       rsp,28
       mov       rsi,rcx
       test      rsi,rsi
       je        short 000000000000F95C
       mov       edi,[rsi+8]
       cmp       edi,2
       ja        near ptr 000000000000F9D9
       mov       ecx,edi
       lea       rax,[0FA08]
       mov       eax,[rax+rcx*4]
       lea       rdx,[0F919]
       add       rax,rdx
       jmp       rax
       test      edi,edi
       je        near ptr 000000000000F9FF
       mov       rcx,[rsi+10]
       call      qword ptr [0FF48]
       nop
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       mov       ecx,16661
       mov       rdx,7FFF40D64000
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [33F0]
       int       3
       mov       rcx,offset MT_System.ArgumentException
       call      0000000000002AE0
       mov       rdi,rax
       mov       ecx,0AE63
       mov       rdx,7FFF40D64000
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [74E0]
       mov       rdx,rax
       mov       rcx,rdi
       call      qword ptr [0BB88]
       mov       rcx,rdi
       call      0000000000002B00
       test      edi,edi
       je        short 000000000000F9FF
       mov       rcx,[rsi+10]
       cmp       edi,1
       jbe       short 000000000000F9FF
       mov       rdx,[rsi+18]
       call      qword ptr [0FF30]
       jmp       near ptr 000000000000F954
       mov       rcx,offset MT_System.Threading.CancellationTokenSource+LinkedNCancellationTokenSource
       call      0000000000002AE0
       mov       rdi,rax
       mov       rcx,rdi
       mov       rdx,rsi
       call      qword ptr [17E0]
       mov       rax,rdi
       jmp       near ptr 000000000000F954
       call      000000000000AB50
       int       3
; Total bytes of code 245
; System.Threading.CancellationTokenSource.Dispose(Boolean)
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,28
       mov       rsi,rcx
       test      dl,dl
       je        short 000000000000FC8F
       cmp       byte ptr [rsi+24],0
       jne       short 000000000000FC8F
       mov       rcx,[rsi+8]
       test      rcx,rcx
       jne       short 000000000000FC98
       xor       ecx,ecx
       mov       [rsi+18],rcx
       cmp       qword ptr [rsi+10],0
       jne       short 000000000000FCC9
       mov       byte ptr [rsi+24],1
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       ret
       xor       eax,eax
       mov       [rsi+8],rax
       call      qword ptr [50D8]
       jmp       short 000000000000FC7E
       mov       rcx,rbx
       mov       edx,1
       mov       rax,[rbp+40]
       call      qword ptr [rax+30]
       mov       rcx,rbx
       call      qword ptr [0BAC8]
       mov       rcx,rdi
       call      qword ptr [0BAC8]
       jmp       short 000000000000FC8B
       lea       rcx,[rsi+10]
       xor       edx,edx
       call      000000000000EB70
       mov       rdi,rax
       test      rdi,rdi
       je        short 000000000000FC8B
       cmp       dword ptr [rsi+20],1
       je        short 000000000000FC8B
       mov       rbx,[rdi+8]
       test      rbx,rbx
       je        short 000000000000FCBE
       mov       rbp,[rbx]
       mov       rcx,offset MT_Microsoft.Win32.SafeHandles.SafeFileHandle
       cmp       rbp,rcx
       jne       short 000000000000FCA6
       mov       rcx,rbx
       mov       edx,1
       call      qword ptr [93C0]
       jmp       short 000000000000FCB5
; Total bytes of code 173
; System.GC.SuppressFinalize(System.Object)
       sub       rsp,28
       test      rcx,rcx
       je        short 000000000000F242
       add       rsp,28
       jmp       near ptr 0000000000000FB0
       mov       ecx,135D
       mov       rdx,7FFF40D64000
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [33F0]
       int       3
; Total bytes of code 48

System.Threading.Tests.Perf_CancellationToken.RegisterAndUnregister_Serial


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 57.9490610655706 > 48.37367566472857.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -10.041342702297701 (T) = (0 -54.135875377103524) / Math.Sqrt((3.5988776099298634 / (20)) + (15.482704731650589 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.16234443216891647 = (46.57472766147882 - 54.135875377103524) / 46.57472766147882 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.Threading.Tests.Perf_CancellationToken.RegisterAndUnregister_Serial()
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,30
       xor       eax,eax
       mov       [rsp+20],rax
       mov       [rsp+28],rax
       cmp       [rcx],cl
       add       rcx,18
       mov       rsi,rcx
       mov       rcx,164488088A0
       mov       r8,[rcx]
       test      r8,r8
       jne       short 000000000000F479
       mov       rcx,offset MT_System.Action
       call      000000000000C390
       mov       rdi,rax
       mov       rdx,16448808898
       mov       rdx,[rdx]
       lea       rcx,[rdi+8]
       call      0000000000000010
       mov       rdx,offset System.Threading.Tests.Perf_CancellationToken+<>c.<RegisterAndUnregister_Serial>b__5_0()
       mov       [rdi+18],rdx
       mov       rcx,164488088A0
       mov       rdx,rdi
       call      0000000000000010
       mov       r8,rdi
       lea       rdx,[rsp+20]
       mov       rcx,rsi
       xor       r9d,r9d
       call      qword ptr [15A0]
       mov       rsi,[rsp+20]
       test      rsi,rsi
       jne       short 000000000000F49C
       add       rsp,30
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       rcx,[rsi+8]
       mov       rdx,[rsp+28]
       mov       r8,rsi
       cmp       [rcx],ecx
       call      qword ptr [3030]
       test      eax,eax
       jne       short 000000000000F494
       mov       rdi,[rsp+28]
       mov       rax,[rsi+8]
       mov       rax,[rax+8]
       cmp       dword ptr [rax+20],0
       je        short 000000000000F494
       cmp       dword ptr [rax+20],2
       je        short 000000000000F494
       mov       rax,[rsi+8]
       mov       ebx,[rax+30]
       call      000000000000A600
       cmp       ebx,eax
       je        short 000000000000F494
       mov       rcx,[rsi+8]
       mov       rdx,rdi
       cmp       [rcx],ecx
       call      qword ptr [3060]
       jmp       short 000000000000F494
; Total bytes of code 238
; System.Threading.CancellationToken.Register(System.Action, Boolean)
       push      r14
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,30
       mov       rsi,rcx
       mov       rdi,rdx
       mov       rbx,r8
       mov       ebp,r9d
       test      rbx,rbx
       je        near ptr 000000000000F5DB
       mov       rcx,164488007F0
       mov       r8,[rcx]
       test      r8,r8
       je        short 000000000000F58E
       movzx     ecx,bpl
       mov       [rsp+20],ecx
       mov       dword ptr [rsp+28],1
       mov       rcx,rsi
       mov       rdx,rdi
       mov       r9,rbx
       call      qword ptr [1630]
       mov       rax,rdi
       add       rsp,30
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       ret
       mov       rcx,offset MT_System.Action`1[[System.Object, System.Private.CoreLib]]
       call      000000000000C390
       mov       r14,rax
       mov       rdx,164488007E8
       mov       rdx,[rdx]
       lea       rcx,[r14+8]
       call      0000000000000010
       mov       rdx,offset System.Threading.CancellationToken+<>c.<Register>b__12_0(System.Object)
       mov       [r14+18],rdx
       mov       rcx,164488007F0
       mov       rdx,r14
       call      0000000000000010
       mov       r8,r14
       jmp       short 000000000000F561
       mov       ecx,165DD
       mov       rdx,7FFF40C74000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [33F0]
       int       3
; Total bytes of code 201
; System.Threading.CancellationTokenSource+Registrations.Unregister(Int64, CallbackNode)
       push      rbp
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,28
       lea       rbp,[rsp+40]
       mov       [rbp+0FFE0],rsp
       mov       [rbp+10],rcx
       mov       rdi,rdx
       mov       rsi,r8
       test      rdi,rdi
       je        near ptr 000000000000FC75
       cmp       [rcx],cl
       lea       rbx,[rcx+34]
       mov       rax,rbx
       mov       edx,1
       xchg      edx,[rax]
       test      edx,edx
       jne       near ptr 000000000000FC67
       cmp       [rsi+40],rdi
       jne       short 000000000000FBEB
       mov       rcx,[rbp+10]
       cmp       [rcx+10],rsi
       jne       short 000000000000FC02
       mov       rdx,[rsi+18]
       lea       rcx,[rcx+10]
       call      0000000000000010
       jmp       short 000000000000FC13
       xor       eax,eax
       jmp       short 000000000000FC5A
       mov       rdx,[rsi+18]
       lea       rcx,[rdx+10]
       mov       rdx,[rsi+10]
       call      0000000000000010
       jmp       short 000000000000FC1A
       mov       rdx,[rsi+10]
       lea       rcx,[rdx+18]
       mov       rdx,[rsi+18]
       call      0000000000000010
       cmp       qword ptr [rsi+18],0
       jne       short 000000000000FBEF
       xor       edx,edx
       mov       [rsi+40],rdx
       mov       [rsi+20],rdx
       mov       [rsi+28],rdx
       mov       [rsi+30],rdx
       mov       [rsi+38],rdx
       mov       [rsi+10],rdx
       mov       rcx,[rbp+10]
       mov       rdx,[rcx+18]
       lea       rcx,[rsi+18]
       call      0000000000000010
       mov       rcx,[rbp+10]
       lea       rcx,[rcx+18]
       mov       rdx,rsi
       call      0000000000000010
       mov       eax,1
       xor       edx,edx
       mov       [rbx],edx
       add       rsp,28
       pop       rbx
       pop       rsi
       pop       rdi
       pop       rbp
       ret
       mov       rcx,rax
       call      qword ptr [30C0]
       jmp       near ptr 000000000000FBCC
       xor       eax,eax
       add       rsp,28
       pop       rbx
       pop       rsi
       pop       rdi
       pop       rbp
       ret
       push      rbp
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,28
       mov       rbp,[rcx+20]
       mov       [rsp+20],rbp
       lea       rbp,[rbp+40]
       mov       rcx,[rbp+10]
       lea       rbx,[rcx+34]
       xor       eax,eax
       mov       [rbx],eax
       add       rsp,28
       pop       rbx
       pop       rsi
       pop       rdi
       pop       rbp
       ret
; Total bytes of code 282

Compare Jit Disasm

; System.Threading.Tests.Perf_CancellationToken.RegisterAndUnregister_Serial()
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,30
       xor       eax,eax
       mov       [rsp+20],rax
       mov       [rsp+28],rax
       cmp       [rcx],cl
       add       rcx,18
       mov       rsi,rcx
       mov       rcx,28D470088A0
       mov       r8,[rcx]
       test      r8,r8
       jne       short 000000000000F479
       mov       rcx,offset MT_System.Action
       call      0000000000002AE0
       mov       rdi,rax
       mov       rdx,28D47008898
       mov       rdx,[rdx]
       lea       rcx,[rdi+8]
       call      0000000000000010
       mov       rdx,offset System.Threading.Tests.Perf_CancellationToken+<>c.<RegisterAndUnregister_Serial>b__5_0()
       mov       [rdi+18],rdx
       mov       rcx,28D470088A0
       mov       rdx,rdi
       call      0000000000000010
       mov       r8,rdi
       lea       rdx,[rsp+20]
       mov       rcx,rsi
       xor       r9d,r9d
       call      qword ptr [15A0]
       mov       rsi,[rsp+20]
       test      rsi,rsi
       jne       short 000000000000F49C
       add       rsp,30
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       rcx,[rsi+8]
       mov       rdx,[rsp+28]
       mov       r8,rsi
       cmp       [rcx],ecx
       call      qword ptr [3030]
       test      eax,eax
       jne       short 000000000000F494
       mov       rdi,[rsp+28]
       mov       rax,[rsi+8]
       mov       rax,[rax+8]
       cmp       dword ptr [rax+20],0
       je        short 000000000000F494
       cmp       dword ptr [rax+20],2
       je        short 000000000000F494
       mov       rax,[rsi+8]
       mov       ebx,[rax+30]
       call      0000000000009E60
       cmp       ebx,eax
       je        short 000000000000F494
       mov       rcx,[rsi+8]
       mov       rdx,rdi
       cmp       [rcx],ecx
       call      qword ptr [3060]
       jmp       short 000000000000F494
; Total bytes of code 238
; System.Threading.CancellationToken.Register(System.Action, Boolean)
       push      r14
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,30
       mov       rsi,rcx
       mov       rdi,rdx
       mov       rbx,r8
       mov       ebp,r9d
       test      rbx,rbx
       je        near ptr 000000000000F5DB
       mov       rcx,28D470007F0
       mov       r8,[rcx]
       test      r8,r8
       je        short 000000000000F58E
       movzx     ecx,bpl
       mov       [rsp+20],ecx
       mov       dword ptr [rsp+28],1
       mov       rcx,rsi
       mov       rdx,rdi
       mov       r9,rbx
       call      qword ptr [1630]
       mov       rax,rdi
       add       rsp,30
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       ret
       mov       rcx,offset MT_System.Action`1[[System.Object, System.Private.CoreLib]]
       call      0000000000002AE0
       mov       r14,rax
       mov       rdx,28D470007E8
       mov       rdx,[rdx]
       lea       rcx,[r14+8]
       call      0000000000000010
       mov       rdx,offset System.Threading.CancellationToken+<>c.<Register>b__12_0(System.Object)
       mov       [r14+18],rdx
       mov       rcx,28D470007F0
       mov       rdx,r14
       call      0000000000000010
       mov       r8,r14
       jmp       short 000000000000F561
       mov       ecx,1664F
       mov       rdx,7FFA83714000
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [33F0]
       int       3
; Total bytes of code 201
; System.Threading.CancellationTokenSource+Registrations.Unregister(Int64, CallbackNode)
       push      rbp
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,28
       lea       rbp,[rsp+40]
       mov       [rbp+0FFE0],rsp
       mov       [rbp+10],rcx
       mov       rdi,rdx
       mov       rsi,r8
       test      rdi,rdi
       je        near ptr 000000000000FC75
       cmp       [rcx],cl
       lea       rbx,[rcx+34]
       mov       rax,rbx
       mov       edx,1
       xchg      edx,[rax]
       test      edx,edx
       jne       near ptr 000000000000FC67
       cmp       [rsi+40],rdi
       jne       short 000000000000FBEB
       mov       rcx,[rbp+10]
       cmp       [rcx+10],rsi
       jne       short 000000000000FC02
       mov       rdx,[rsi+18]
       lea       rcx,[rcx+10]
       call      0000000000000010
       jmp       short 000000000000FC13
       xor       eax,eax
       jmp       short 000000000000FC5A
       mov       rdx,[rsi+18]
       lea       rcx,[rdx+10]
       mov       rdx,[rsi+10]
       call      0000000000000010
       jmp       short 000000000000FC1A
       mov       rdx,[rsi+10]
       lea       rcx,[rdx+18]
       mov       rdx,[rsi+18]
       call      0000000000000010
       cmp       qword ptr [rsi+18],0
       jne       short 000000000000FBEF
       xor       edx,edx
       mov       [rsi+40],rdx
       mov       [rsi+20],rdx
       mov       [rsi+28],rdx
       mov       [rsi+30],rdx
       mov       [rsi+38],rdx
       mov       [rsi+10],rdx
       mov       rcx,[rbp+10]
       mov       rdx,[rcx+18]
       lea       rcx,[rsi+18]
       call      0000000000000010
       mov       rcx,[rbp+10]
       lea       rcx,[rcx+18]
       mov       rdx,rsi
       call      0000000000000010
       mov       eax,1
       xor       edx,edx
       mov       [rbx],edx
       add       rsp,28
       pop       rbx
       pop       rsi
       pop       rdi
       pop       rbp
       ret
       mov       rcx,rax
       call      qword ptr [30C0]
       jmp       near ptr 000000000000FBCC
       xor       eax,eax
       add       rsp,28
       pop       rbx
       pop       rsi
       pop       rdi
       pop       rbp
       ret
       push      rbp
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,28
       mov       rbp,[rcx+20]
       mov       [rsp+20],rbp
       lea       rbp,[rbp+40]
       mov       rcx,[rbp+10]
       lea       rbx,[rcx+34]
       xor       eax,eax
       mov       [rbx],eax
       add       rsp,28
       pop       rbx
       pop       rsi
       pop       rdi
       pop       rbp
       ret
; Total bytes of code 282

Docs

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

### Run Information
Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in System.Tests.Perf_Int64

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
ToString - Duration of single invocation 13.07 ns 15.03 ns 1.15 0.03 False 157.27229615454024 167.61846627453883 1.065785077047722 Trace Trace

graph
Test Report

Repro

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

Payloads

Baseline
Compare

Histogram

System.Tests.Perf_Int64.ToString(value: 12345)


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 15.030204856429826 > 13.534769624503234.
IsChangePoint: Marked as a change because one of 6/27/2022 8:54:23 AM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -46.10523961072432 (T) = (0 -15.245007009266734) / Math.Sqrt((0.026690086968810093 / (20)) + (0.03828888417885378 / (39))) is less than -2.0024654592901125 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (39) - 2, .025) and -0.17034583399241562 = (13.026070214870803 - 15.245007009266734) / 13.026070214870803 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_Int64.ToString(Int64)
       sub       rsp,28
       mov       rcx,rdx
       call      qword ptr [9450]
       nop
       add       rsp,28
       ret
; Total bytes of code 19
; System.Number.Int64ToDecStr(Int64)
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       test      rsi,rsi
       jge       short 000000000000F41A
       call      qword ptr [5858]
       mov       r8,[rax+28]
       mov       rcx,rsi
       mov       edx,0FFFFFFFF
       add       rsp,20
       pop       rsi
       jmp       qword ptr [9468]
       mov       rcx,rsi
       add       rsp,20
       pop       rsi
       jmp       qword ptr [9540]
; Total bytes of code 56

Compare Jit Disasm

; System.Tests.Perf_Int64.ToString(Int64)
       sub       rsp,28
       mov       rcx,rdx
       call      qword ptr [9450]
       nop
       add       rsp,28
       ret
; Total bytes of code 19
; System.Number.Int64ToDecStr(Int64)
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       test      rsi,rsi
       jge       short 000000000000F41A
       call      qword ptr [5858]
       mov       r8,[rax+28]
       mov       rcx,rsi
       mov       edx,0FFFFFFFF
       add       rsp,20
       pop       rsi
       jmp       qword ptr [9468]
       mov       rcx,rsi
       add       rsp,20
       pop       rsi
       jmp       qword ptr [9540]
; Total bytes of code 56

Docs

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

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in Benchstone.BenchI.NDhrystone

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
Test - Duration of single invocation 389.18 ms 438.41 ms 1.13 0.19 False 4004666666.6666665 4279333333.3333335 1.0685866489096056 Trace Trace

graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'Benchstone.BenchI.NDhrystone*'

Payloads

Baseline
Compare

Histogram

Benchstone.BenchI.NDhrystone.Test


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 438.4080928571429 > 409.78875.
IsChangePoint: Marked as a change because one of 7/29/2022 9:55:54 PM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -12.80327022759974 (T) = (0 -448023717.6978022) / Math.Sqrt((113336535208627.9 / (20)) + (294266253459614.44 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.11498834090112595 = (401819195.1098901 - 448023717.6978022) / 401819195.1098901 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
; 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+40],0B
       jne       short 0000000000005A69
       mov       rcx,[rbp+10]
       call      qword ptr [0B258]
       nop
       add       rsp,20
       pop       rbp
       ret
       xor       eax,eax
       add       rsp,20
       pop       rbp
       ret
; Total bytes of code 49

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+40],0B
       jne       short 0000000000005AE9
       mov       rcx,[rbp+10]
       call      qword ptr [0B258]
       nop
       add       rsp,20
       pop       rbp
       ret
       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 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in System.Tests.Perf_Object

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
GetType_ - Duration of single invocation 0.83 ns 2.18 ns 2.63 0.50 False 20.15266211047425 22.183521472429252 1.1007737514191474 Trace Trace
ctor - Duration of single invocation 2.27 ns 4.72 ns 2.08 0.31 False 28.065070967930435 39.28148150191385 1.3996573016615654 Trace Trace

graph
graph
Test Report

Repro

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

Payloads

Baseline
Compare

Histogram

System.Tests.Perf_Object.GetType_


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 2.1799783824609267 > 0.9349834219857247.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -19.695475919555207 (T) = (0 -2.2447278247228977) / Math.Sqrt((0.08276760817485616 / (20)) + (0.021901318749257315 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -1.5038821252896595 = (0.8964990013111013 - 2.2447278247228977) / 0.8964990013111013 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_Object.GetType_()
       sub       rsp,28
       mov       rcx,[rcx+8]
       call      000000000000B080
       nop
       add       rsp,28
       ret
; Total bytes of code 19

Compare Jit Disasm

; System.Tests.Perf_Object.GetType_()
       sub       rsp,28
       mov       rcx,[rcx+8]
       call      000000000000CAB0
       nop
       add       rsp,28
       ret
; Total bytes of code 19

System.Tests.Perf_Object.ctor


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 4.723818946192575 > 2.4501735953594044.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -50.840910442960265 (T) = (0 -4.431940781746897) / Math.Sqrt((0.012452771421806178 / (20)) + (0.03961439995167622 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.8543217160725144 = (2.3900603349098586 - 4.431940781746897) / 2.3900603349098586 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_Object.ctor()
       sub       rsp,28
       mov       rcx,offset MT_System.Object
       call      000000000000C390
       nop
       add       rsp,28
       ret
; Total bytes of code 25

Compare Jit Disasm

; System.Tests.Perf_Object.ctor()
       sub       rsp,28
       mov       rcx,offset MT_System.Object
       call      0000000000002AE0
       nop
       add       rsp,28
       ret
; Total bytes of code 25

Docs

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

@performanceautofiler
Copy link
Author

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
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
ObjObjrefValueType - Duration of single invocation 878.00 μs 1.14 ms 1.30 0.30 False 7413020.833333333 8922916.666666666 1.20368158504883 Trace Trace
FooObjCastIfIsa - Duration of single invocation 376.90 μs 524.17 μs 1.39 0.00 False 3729791.6666666665 4340660.91954023 1.1637810653964757 Trace Trace
IFooObjIsIFooInterAlia - Duration of single invocation 405.38 μs 509.17 μs 1.26 0.01 False 3631517.0940170935 4240277.777777778 1.1676326086316968 Trace Trace
FooObjIsFoo - Duration of single invocation 561.78 μs 883.08 μs 1.57 0.00 False Trace Trace
IFooObjIsDescendantOfIFoo - Duration of single invocation 575.56 μs 665.48 μs 1.16 0.01 False Trace Trace
ObjScalarValueType - Duration of single invocation 476.81 μs 681.10 μs 1.43 0.07 False 4284895.833333334 5798913.043478261 1.3533381601407874 Trace Trace
FooObjIsDescendant - Duration of single invocation 498.94 μs 608.42 μs 1.22 0.02 False Trace Trace
ObjFooIsObj - Duration of single invocation 374.22 μs 627.40 μs 1.68 0.04 False 3622193.8775510206 4842013.888888889 1.3367627610708108 Trace Trace
ObjInt - Duration of single invocation 528.90 μs 665.96 μs 1.26 0.10 False 4072526.0416666665 5584375 1.3712312561946478 Trace Trace
IFooFooIsIFoo - Duration of single invocation 374.25 μs 626.97 μs 1.68 0.04 False 3622363.9455782315 4842187.5 1.3367479283551256 Trace Trace
IFooObjIsIFoo - Duration of single invocation 575.62 μs 665.12 μs 1.16 0.01 False Trace Trace

graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
Test Report

Repro

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

Payloads

Baseline
Compare

Histogram

PerfLabTests.CastingPerf2.CastingPerf.ObjObjrefValueType


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.1391391900510204 > 900.9220707236843.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -17.125347528166426 (T) = (0 -1123717.8201736766) / Math.Sqrt((3485394152.678112 / (20)) + (2201957829.150149 / (39))) is less than -2.0024654592901125 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (39) - 2, .025) and -0.3012211183996397 = (863587.136946968 - 1123717.8201736766) / 863587.136946968 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.ObjObjrefValueType()
       push      r15
       push      r14
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,28
       xor       ebx,ebx
       mov       rbp,7FF8E7B1BD7C
       cmp       dword ptr [rbp],0
       jle       short 000000000000F4EB
       mov       r14,offset MT_PerfLabTests.CastingPerf2.FooORVT
       mov       rcx,r14
       call      000000000000C390
       mov       r15,rax
       mov       rax,11E05C07F90
       mov       rsi,[rax]
       add       rsi,8
       lea       rdi,[r15+8]
       call      000000000000C000
       call      000000000000C000
       mov       rcx,11E05C07FB8
       mov       rdx,r15
       call      0000000000000010
       inc       ebx
       cmp       ebx,[rbp]
       jl        short 000000000000F4A8
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
; Total bytes of code 120

Compare Jit Disasm

; PerfLabTests.CastingPerf2.CastingPerf.ObjObjrefValueType()
       push      r15
       push      r14
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,28
       xor       ebx,ebx
       mov       rbp,7FFB26E0BEC4
       cmp       dword ptr [rbp],0
       jle       short 000000000000F4EB
       mov       r14,offset MT_PerfLabTests.CastingPerf2.FooORVT
       mov       rcx,r14
       call      0000000000002AE0
       mov       r15,rax
       mov       rax,2044CC07F90
       mov       rsi,[rax]
       add       rsi,8
       lea       rdi,[r15+8]
       call      0000000000002430
       call      0000000000002430
       mov       rcx,2044CC07FB8
       mov       rdx,r15
       call      0000000000000010
       inc       ebx
       cmp       ebx,[rbp]
       jl        short 000000000000F4A8
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
; Total bytes of code 120

PerfLabTests.CastingPerf2.CastingPerf.FooObjCastIfIsa


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 524.1727083333333 > 398.75557562064455.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -165.8697536770946 (T) = (0 -528002.66788663) / Math.Sqrt((3657315.0819472065 / (20)) + (24229640.866787057 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.3869095797678901 = (380704.46378703025 - 528002.66788663) / 380704.46378703025 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.FooObjCastIfIsa()
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       xor       esi,esi
       mov       edi,[0BD7C]
       test      edi,edi
       jle       short 000000000000F530
       mov       rdx,1B80E807FB8
       mov       rbx,[rdx]
       mov       rdx,rbx
       mov       rcx,offset MT_PerfLabTests.CastingPerf2.Foo
       call      qword ptr [0B828]
       test      rax,rax
       je        short 000000000000F52A
       mov       rdx,rbx
       mov       rax,rdx
       test      rax,rax
       je        short 000000000000F518
       mov       rcx,offset MT_PerfLabTests.CastingPerf2.Foo
       cmp       [rax],rcx
       je        short 000000000000F518
       call      qword ptr [0B8B8]
       mov       rcx,1B80E808008
       mov       rdx,rax
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F4D3
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 120
; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfClass(Void*, System.Object)
       mov       rax,rdx
       test      rax,rax
       je        short 000000000000F3CD
       cmp       [rax],rcx
       jne       short 000000000000F3CE
       ret
       mov       rdx,[rax]
       mov       rdx,[rdx+10]
       cmp       rdx,rcx
       je        short 000000000000F40B
       test      rdx,rdx
       je        short 000000000000F409
       mov       rdx,[rdx+10]
       cmp       rdx,rcx
       je        short 000000000000F40B
       test      rdx,rdx
       je        short 000000000000F409
       mov       rdx,[rdx+10]
       cmp       rdx,rcx
       je        short 000000000000F40B
       test      rdx,rdx
       je        short 000000000000F409
       mov       rdx,[rdx+10]
       cmp       rdx,rcx
       je        short 000000000000F40B
       test      rdx,rdx
       jne       short 000000000000F40C
       xor       eax,eax
       ret
       mov       rdx,[rdx+10]
       jmp       short 000000000000F3D5
; Total bytes of code 82

Compare Jit Disasm

; PerfLabTests.CastingPerf2.CastingPerf.FooObjCastIfIsa()
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       xor       esi,esi
       mov       edi,[0BEC4]
       test      edi,edi
       jle       short 000000000000F530
       mov       rdx,1676E807FB8
       mov       rbx,[rdx]
       mov       rdx,rbx
       mov       rcx,offset MT_PerfLabTests.CastingPerf2.Foo
       call      qword ptr [0B828]
       test      rax,rax
       je        short 000000000000F52A
       mov       rdx,rbx
       mov       rax,rdx
       test      rax,rax
       je        short 000000000000F518
       mov       rcx,offset MT_PerfLabTests.CastingPerf2.Foo
       cmp       [rax],rcx
       je        short 000000000000F518
       call      qword ptr [0B8B8]
       mov       rcx,1676E808008
       mov       rdx,rax
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F4D3
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 120
; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfClass(Void*, System.Object)
       mov       rax,rdx
       test      rax,rax
       je        short 000000000000F3CD
       cmp       [rax],rcx
       jne       short 000000000000F3CE
       ret
       mov       rdx,[rax]
       mov       rdx,[rdx+10]
       cmp       rdx,rcx
       je        short 000000000000F40B
       test      rdx,rdx
       je        short 000000000000F409
       mov       rdx,[rdx+10]
       cmp       rdx,rcx
       je        short 000000000000F40B
       test      rdx,rdx
       je        short 000000000000F409
       mov       rdx,[rdx+10]
       cmp       rdx,rcx
       je        short 000000000000F40B
       test      rdx,rdx
       je        short 000000000000F409
       mov       rdx,[rdx+10]
       cmp       rdx,rcx
       je        short 000000000000F40B
       test      rdx,rdx
       jne       short 000000000000F40C
       xor       eax,eax
       ret
       mov       rdx,[rdx+10]
       jmp       short 000000000000F3D5
; Total bytes of code 82

PerfLabTests.CastingPerf2.CastingPerf.IFooObjIsIFooInterAlia


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 509.1674479166667 > 427.4255445884147.
IsChangePoint: Marked as a change because one of 6/27/2022 8:54:23 AM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -70.49905772316129 (T) = (0 -509829.5039003499) / Math.Sqrt((32591712.10144398 / (20)) + (4344600.95914772 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.22295597932408484 = (416882.9561486975 - 509829.5039003499) / 416882.9561486975 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.IFooObjIsIFooInterAlia()
       push      rdi
       push      rsi
       sub       rsp,28
       xor       esi,esi
       mov       edi,[0BD7C]
       test      edi,edi
       jle       short 000000000000F447
       mov       rdx,20CB2C07FB8
       mov       rdx,[rdx]
       mov       rcx,offset MT_PerfLabTests.CastingPerf2.IFoo_5
       call      qword ptr [0B888]
       mov       rcx,20CB2C080A8
       mov       rdx,rax
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F412
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 78
; System.Runtime.CompilerServices.CastHelpers.ChkCastInterface(Void*, System.Object)
       test      rdx,rdx
       je        short 000000000000F3B3
       mov       rax,[rdx]
       movzx     r8d,word ptr [rax+0E]
       test      r8,r8
       je        short 000000000000F3DB
       mov       rax,[rax+38]
       cmp       r8,4
       jl        short 000000000000F3CA
       cmp       [rax],rcx
       je        short 000000000000F3B3
       cmp       [rax+8],rcx
       je        short 000000000000F3B3
       cmp       [rax+10],rcx
       je        short 000000000000F3B3
       cmp       [rax+18],rcx
       jne       short 000000000000F3B7
       mov       rax,rdx
       ret
       add       rax,20
       add       r8,0FFFFFFFFFFFFFFFC
       cmp       r8,4
       jge       short 000000000000F39C
       test      r8,r8
       je        short 000000000000F3DB
       cmp       [rax],rcx
       je        short 000000000000F3B3
       add       rax,8
       dec       r8
       test      r8,r8
       jg        short 000000000000F3CA
       jmp       qword ptr [0B870]
; Total bytes of code 97

Compare Jit Disasm

; PerfLabTests.CastingPerf2.CastingPerf.IFooObjIsIFooInterAlia()
       push      rdi
       push      rsi
       sub       rsp,28
       xor       esi,esi
       mov       edi,[0BEC4]
       test      edi,edi
       jle       short 000000000000F447
       mov       rdx,1E6A1407FB8
       mov       rdx,[rdx]
       mov       rcx,offset MT_PerfLabTests.CastingPerf2.IFoo_5
       call      qword ptr [0B888]
       mov       rcx,1E6A14080A8
       mov       rdx,rax
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F412
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 78
; System.Runtime.CompilerServices.CastHelpers.ChkCastInterface(Void*, System.Object)
       test      rdx,rdx
       je        short 000000000000F3B3
       mov       rax,[rdx]
       movzx     r8d,word ptr [rax+0E]
       test      r8,r8
       je        short 000000000000F3DB
       mov       rax,[rax+38]
       cmp       r8,4
       jl        short 000000000000F3CA
       cmp       [rax],rcx
       je        short 000000000000F3B3
       cmp       [rax+8],rcx
       je        short 000000000000F3B3
       cmp       [rax+10],rcx
       je        short 000000000000F3B3
       cmp       [rax+18],rcx
       jne       short 000000000000F3B7
       mov       rax,rdx
       ret
       add       rax,20
       add       r8,0FFFFFFFFFFFFFFFC
       cmp       r8,4
       jge       short 000000000000F39C
       test      r8,r8
       je        short 000000000000F3DB
       cmp       [rax],rcx
       je        short 000000000000F3B3
       add       rax,8
       dec       r8
       test      r8,r8
       jg        short 000000000000F3CA
       jmp       qword ptr [0B870]
; 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 883.0788442460317 > 589.9029657451923.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -164.22334926378088 (T) = (0 -878366.8063169323) / Math.Sqrt((41381319.79497726 / (20)) + (55647551.368918724 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.5332408455364337 = (572882.4723617501 - 878366.8063169323) / 572882.4723617501 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
       sub       rsp,28
       xor       esi,esi
       mov       edi,[0BD78]
       test      edi,edi
       jle       short 000000000000F454
       mov       rcx,1C866807FB8
       mov       rdx,[rcx]
       mov       rax,rdx
       test      rax,rax
       je        short 000000000000F43C
       mov       rcx,offset MT_PerfLabTests.CastingPerf2.Foo
       cmp       [rax],rcx
       je        short 000000000000F43C
       call      qword ptr [0B8B8]
       mov       rcx,1C866808008
       mov       rdx,rax
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F412
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 91

Compare Jit Disasm

; PerfLabTests.CastingPerf2.CastingPerf.FooObjIsFoo()
       push      rdi
       push      rsi
       sub       rsp,28
       xor       esi,esi
       mov       edi,[0BEC0]
       test      edi,edi
       jle       short 000000000000F454
       mov       rcx,1B7E4807FB8
       mov       rdx,[rcx]
       mov       rax,rdx
       test      rax,rax
       je        short 000000000000F43C
       mov       rcx,offset MT_PerfLabTests.CastingPerf2.Foo
       cmp       [rax],rcx
       je        short 000000000000F43C
       call      qword ptr [0B8B8]
       mov       rcx,1B7E4808008
       mov       rdx,rax
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F412
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 91

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 665.4848028273809 > 602.1578515625.
IsChangePoint: Marked as a change because one of 6/27/2022 8:54:23 AM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -53.24307469302879 (T) = (0 -666039.7923968285) / Math.Sqrt((78741016.29123984 / (20)) + (6975495.0586340595 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.19344751641385027 = (558080.5047868286 - 666039.7923968285) / 558080.5047868286 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
       sub       rsp,28
       xor       esi,esi
       mov       edi,[0BD7C]
       test      edi,edi
       jle       short 000000000000F447
       mov       rdx,2237F807FB8
       mov       rdx,[rdx]
       mov       rcx,offset MT_PerfLabTests.CastingPerf2.IFoo
       call      qword ptr [0B888]
       mov       rcx,2237F808058
       mov       rdx,rax
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F412
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 78
; System.Runtime.CompilerServices.CastHelpers.ChkCastInterface(Void*, System.Object)
       test      rdx,rdx
       je        short 000000000000F3B3
       mov       rax,[rdx]
       movzx     r8d,word ptr [rax+0E]
       test      r8,r8
       je        short 000000000000F3DB
       mov       rax,[rax+38]
       cmp       r8,4
       jl        short 000000000000F3CA
       cmp       [rax],rcx
       je        short 000000000000F3B3
       cmp       [rax+8],rcx
       je        short 000000000000F3B3
       cmp       [rax+10],rcx
       je        short 000000000000F3B3
       cmp       [rax+18],rcx
       jne       short 000000000000F3B7
       mov       rax,rdx
       ret
       add       rax,20
       add       r8,0FFFFFFFFFFFFFFFC
       cmp       r8,4
       jge       short 000000000000F39C
       test      r8,r8
       je        short 000000000000F3DB
       cmp       [rax],rcx
       je        short 000000000000F3B3
       add       rax,8
       dec       r8
       test      r8,r8
       jg        short 000000000000F3CA
       jmp       qword ptr [0B870]
; Total bytes of code 97

Compare Jit Disasm

; PerfLabTests.CastingPerf2.CastingPerf.IFooObjIsDescendantOfIFoo()
       push      rdi
       push      rsi
       sub       rsp,28
       xor       esi,esi
       mov       edi,[0BEC4]
       test      edi,edi
       jle       short 000000000000F447
       mov       rdx,1BCA0407FB8
       mov       rdx,[rdx]
       mov       rcx,offset MT_PerfLabTests.CastingPerf2.IFoo
       call      qword ptr [0B888]
       mov       rcx,1BCA0408058
       mov       rdx,rax
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F412
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 78
; System.Runtime.CompilerServices.CastHelpers.ChkCastInterface(Void*, System.Object)
       test      rdx,rdx
       je        short 000000000000F3B3
       mov       rax,[rdx]
       movzx     r8d,word ptr [rax+0E]
       test      r8,r8
       je        short 000000000000F3DB
       mov       rax,[rax+38]
       cmp       r8,4
       jl        short 000000000000F3CA
       cmp       [rax],rcx
       je        short 000000000000F3B3
       cmp       [rax+8],rcx
       je        short 000000000000F3B3
       cmp       [rax+10],rcx
       je        short 000000000000F3B3
       cmp       [rax+18],rcx
       jne       short 000000000000F3B7
       mov       rax,rdx
       ret
       add       rax,20
       add       r8,0FFFFFFFFFFFFFFFC
       cmp       r8,4
       jge       short 000000000000F39C
       test      r8,r8
       je        short 000000000000F3DB
       cmp       [rax],rcx
       je        short 000000000000F3B3
       add       rax,8
       dec       r8
       test      r8,r8
       jg        short 000000000000F3CA
       jmp       qword ptr [0B870]
; Total bytes of code 97

PerfLabTests.CastingPerf2.CastingPerf.ObjScalarValueType


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 681.0996354166666 > 500.2655113636364.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -29.938535788676802 (T) = (0 -678014.4180947093) / Math.Sqrt((670041318.5030626 / (20)) + (471740200.0290008 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.422839304383032 = (476522.13149165723 - 678014.4180947093) / 476522.13149165723 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.ObjScalarValueType()
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       xor       esi,esi
       mov       rdi,7FF9F846BD7C
       cmp       dword ptr [rdi],0
       jle       short 000000000000F4B7
       mov       rbx,offset MT_PerfLabTests.CastingPerf2.FooSVT
       mov       rcx,rbx
       call      000000000000C390
       mov       rdx,183D6007F88
       mov       rdx,[rdx]
       mov       rdx,[rdx+8]
       mov       [rax+8],rdx
       mov       rcx,183D6007FB8
       mov       rdx,rax
       call      0000000000000010
       inc       esi
       cmp       esi,[rdi]
       jl        short 000000000000F482
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 95

Compare Jit Disasm

; PerfLabTests.CastingPerf2.CastingPerf.ObjScalarValueType()
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       xor       esi,esi
       mov       rdi,7FFD64FBBEC4
       cmp       dword ptr [rdi],0
       jle       short 000000000000F4B7
       mov       rbx,offset MT_PerfLabTests.CastingPerf2.FooSVT
       mov       rcx,rbx
       call      0000000000002AE0
       mov       rdx,10693407F88
       mov       rdx,[rdx]
       mov       rdx,[rdx+8]
       mov       [rax+8],rdx
       mov       rcx,10693407FB8
       mov       rdx,rax
       call      0000000000000010
       inc       esi
       cmp       esi,[rdi]
       jl        short 000000000000F482
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 95

PerfLabTests.CastingPerf2.CastingPerf.FooObjIsDescendant


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 608.4169551282052 > 523.9016305588942.
IsChangePoint: Marked as a change because one of 7/6/2022 12:32:56 PM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -122.81543120733322 (T) = (0 -604872.0369152204) / Math.Sqrt((1732567.1671475202 / (20)) + (25849738.21195942 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.2103921534837409 = (499732.28525505774 - 604872.0369152204) / 499732.28525505774 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.FooObjIsDescendant()
       push      rdi
       push      rsi
       sub       rsp,28
       xor       esi,esi
       mov       edi,[0BD7C]
       test      edi,edi
       jle       short 000000000000F4B4
       mov       rcx,1863F807FB8
       mov       rdx,[rcx]
       mov       rax,rdx
       test      rax,rax
       je        short 000000000000F49C
       mov       rcx,offset MT_PerfLabTests.CastingPerf2.Foo
       cmp       [rax],rcx
       je        short 000000000000F49C
       call      qword ptr [0B8B8]
       mov       rcx,1863F808008
       mov       rdx,rax
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F472
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 91
; System.Runtime.CompilerServices.CastHelpers.ChkCastClassSpecial(Void*, System.Object)
       mov       rax,[rdx]
       cmp       rcx,rax
       je        short 000000000000F391
       mov       rax,[rax+10]
       cmp       rax,rcx
       jne       short 000000000000F395
       mov       rax,rdx
       ret
       test      rax,rax
       je        short 000000000000F3C4
       mov       rax,[rax+10]
       cmp       rax,rcx
       je        short 000000000000F391
       test      rax,rax
       je        short 000000000000F3C4
       mov       rax,[rax+10]
       cmp       rax,rcx
       je        short 000000000000F391
       test      rax,rax
       je        short 000000000000F3C4
       mov       rax,[rax+10]
       cmp       rax,rcx
       je        short 000000000000F391
       test      rax,rax
       jne       short 000000000000F388
       jmp       qword ptr [0B870]
; Total bytes of code 74

Compare Jit Disasm

; PerfLabTests.CastingPerf2.CastingPerf.FooObjIsDescendant()
       push      rdi
       push      rsi
       sub       rsp,28
       xor       esi,esi
       mov       edi,[0BEC4]
       test      edi,edi
       jle       short 000000000000F4B4
       mov       rcx,1EECD807FB8
       mov       rdx,[rcx]
       mov       rax,rdx
       test      rax,rax
       je        short 000000000000F49C
       mov       rcx,offset MT_PerfLabTests.CastingPerf2.Foo
       cmp       [rax],rcx
       je        short 000000000000F49C
       call      qword ptr [0B8B8]
       mov       rcx,1EECD808008
       mov       rdx,rax
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F472
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 91
; System.Runtime.CompilerServices.CastHelpers.ChkCastClassSpecial(Void*, System.Object)
       mov       rax,[rdx]
       cmp       rcx,rax
       je        short 000000000000F391
       mov       rax,[rax+10]
       cmp       rax,rcx
       jne       short 000000000000F395
       mov       rax,rdx
       ret
       test      rax,rax
       je        short 000000000000F3C4
       mov       rax,[rax+10]
       cmp       rax,rcx
       je        short 000000000000F391
       test      rax,rax
       je        short 000000000000F3C4
       mov       rax,[rax+10]
       cmp       rax,rcx
       je        short 000000000000F391
       test      rax,rax
       je        short 000000000000F3C4
       mov       rax,[rax+10]
       cmp       rax,rcx
       je        short 000000000000F391
       test      rax,rax
       jne       short 000000000000F388
       jmp       qword ptr [0B870]
; Total bytes of code 74

PerfLabTests.CastingPerf2.CastingPerf.ObjFooIsObj


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 627.3951736111112 > 392.95850260416665.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -52.26456353455032 (T) = (0 -630528.1837335342) / Math.Sqrt((667412479.900424 / (20)) + (35082144.47427317 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.9420703920836275 = (324668.0379371043 - 630528.1837335342) / 324668.0379371043 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.ObjFooIsObj()
       push      rdi
       push      rsi
       xor       esi,esi
       mov       edi,[0BD78]
       test      edi,edi
       jle       short 000000000000F430
       mov       rdx,2775C007F98
       mov       rdx,[rdx]
       mov       rcx,2775C007FB8
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F40E
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 51

Compare Jit Disasm

; PerfLabTests.CastingPerf2.CastingPerf.ObjFooIsObj()
       push      rdi
       push      rsi
       xor       esi,esi
       mov       edi,[0BEC0]
       test      edi,edi
       jle       short 000000000000F430
       mov       rdx,29B34807F98
       mov       rdx,[rdx]
       mov       rcx,29B34807FB8
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F40E
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 51

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 665.9593936011904 > 475.6186013392857.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -39.35047723259015 (T) = (0 -676211.5575285342) / Math.Sqrt((463746695.5678667 / (20)) + (269200547.9266146 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.4669088301710727 = (460977.22204703995 - 676211.5575285342) / 460977.22204703995 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      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       xor       esi,esi
       mov       rdi,7FF91792BD7C
       cmp       dword ptr [rdi],0
       jle       short 000000000000F4AB
       mov       rbx,offset MT_System.Int32
       mov       rcx,rbx
       call      000000000000C390
       mov       edx,[0BD84]
       mov       [rax+8],edx
       mov       rcx,183F2807FB8
       mov       rdx,rax
       call      0000000000000010
       inc       esi
       cmp       esi,[rdi]
       jl        short 000000000000F482
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 83

Compare Jit Disasm

; PerfLabTests.CastingPerf2.CastingPerf.ObjInt()
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       xor       esi,esi
       mov       rdi,7FFE7C32BEC4
       cmp       dword ptr [rdi],0
       jle       short 000000000000F4AB
       mov       rbx,offset MT_System.Int32
       mov       rcx,rbx
       call      0000000000002AE0
       mov       edx,[0BECC]
       mov       [rax+8],edx
       mov       rcx,26A38407FB8
       mov       rdx,rax
       call      0000000000000010
       inc       esi
       cmp       esi,[rdi]
       jl        short 000000000000F482
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 83

PerfLabTests.CastingPerf2.CastingPerf.IFooFooIsIFoo


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 626.9664930555556 > 392.9094651442308.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -52.84766574894581 (T) = (0 -629463.0912317804) / Math.Sqrt((652108365.058048 / (20)) + (28250370.90447056 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.9401161862899491 = (324446.07992034324 - 629463.0912317804) / 324446.07992034324 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.IFooFooIsIFoo()
       push      rdi
       push      rsi
       xor       esi,esi
       mov       edi,[0BD78]
       test      edi,edi
       jle       short 000000000000F430
       mov       rdx,20A91007F98
       mov       rdx,[rdx]
       mov       rcx,20A91008058
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F40E
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 51

Compare Jit Disasm

; PerfLabTests.CastingPerf2.CastingPerf.IFooFooIsIFoo()
       push      rdi
       push      rsi
       xor       esi,esi
       mov       edi,[0BEC0]
       test      edi,edi
       jle       short 000000000000F430
       mov       rdx,198C2807F98
       mov       rdx,[rdx]
       mov       rcx,198C2808058
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F40E
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 51

PerfLabTests.CastingPerf2.CastingPerf.IFooObjIsIFoo


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 665.1163194444445 > 602.1778671874999.
IsChangePoint: Marked as a change because one of 6/27/2022 8:54:23 AM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -54.86781295064951 (T) = (0 -666037.4760049786) / Math.Sqrt((71128222.89195432 / (20)) + (8364132.5926333405 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.19027329172994378 = (559566.8495904495 - 666037.4760049786) / 559566.8495904495 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.IFooObjIsIFoo()
       push      rdi
       push      rsi
       sub       rsp,28
       xor       esi,esi
       mov       edi,[0BD7C]
       test      edi,edi
       jle       short 000000000000EFC7
       mov       rdx,24D5B407FB8
       mov       rdx,[rdx]
       mov       rcx,offset MT_PerfLabTests.CastingPerf2.IFoo
       call      qword ptr [0B888]
       mov       rcx,24D5B408058
       mov       rdx,rax
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000EF92
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 78
; System.Runtime.CompilerServices.CastHelpers.ChkCastInterface(Void*, System.Object)
       test      rdx,rdx
       je        short 000000000000E5D3
       mov       rax,[rdx]
       movzx     r8d,word ptr [rax+0E]
       test      r8,r8
       je        short 000000000000E5FB
       mov       rax,[rax+38]
       cmp       r8,4
       jl        short 000000000000E5EA
       cmp       [rax],rcx
       je        short 000000000000E5D3
       cmp       [rax+8],rcx
       je        short 000000000000E5D3
       cmp       [rax+10],rcx
       je        short 000000000000E5D3
       cmp       [rax+18],rcx
       jne       short 000000000000E5D7
       mov       rax,rdx
       ret
       add       rax,20
       add       r8,0FFFFFFFFFFFFFFFC
       cmp       r8,4
       jge       short 000000000000E5BC
       test      r8,r8
       je        short 000000000000E5FB
       cmp       [rax],rcx
       je        short 000000000000E5D3
       add       rax,8
       dec       r8
       test      r8,r8
       jg        short 000000000000E5EA
       jmp       qword ptr [0B870]
; Total bytes of code 97

Compare Jit Disasm

; PerfLabTests.CastingPerf2.CastingPerf.IFooObjIsIFoo()
       push      rdi
       push      rsi
       sub       rsp,28
       xor       esi,esi
       mov       edi,[0BEC4]
       test      edi,edi
       jle       short 000000000000F447
       mov       rdx,29DC7407FB8
       mov       rdx,[rdx]
       mov       rcx,offset MT_PerfLabTests.CastingPerf2.IFoo
       call      qword ptr [0B888]
       mov       rcx,29DC7408058
       mov       rdx,rax
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F412
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 78
; System.Runtime.CompilerServices.CastHelpers.ChkCastInterface(Void*, System.Object)
       test      rdx,rdx
       je        short 000000000000F3B3
       mov       rax,[rdx]
       movzx     r8d,word ptr [rax+0E]
       test      r8,r8
       je        short 000000000000F3DB
       mov       rax,[rax+38]
       cmp       r8,4
       jl        short 000000000000F3CA
       cmp       [rax],rcx
       je        short 000000000000F3B3
       cmp       [rax+8],rcx
       je        short 000000000000F3B3
       cmp       [rax+10],rcx
       je        short 000000000000F3B3
       cmp       [rax+18],rcx
       jne       short 000000000000F3B7
       mov       rax,rdx
       ret
       add       rax,20
       add       r8,0FFFFFFFFFFFFFFFC
       cmp       r8,4
       jge       short 000000000000F39C
       test      r8,r8
       je        short 000000000000F3DB
       cmp       [rax],rcx
       je        short 000000000000F3B3
       add       rax,8
       dec       r8
       test      r8,r8
       jg        short 000000000000F3CA
       jmp       qword ptr [0B870]
; Total bytes of code 97

Docs

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

@performanceautofiler
Copy link
Author

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in System.Net.Primitives.Tests.IPAddressPerformanceTests

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
Ctor_Span - Duration of single invocation 5.81 ns 7.24 ns 1.25 0.26 False 69.67113729863992 80.59044939995894 1.156726479926892 Trace Trace
ToString - Duration of single invocation 0.22 ns 1.65 ns 7.64 0.13 False 19.95050054734972 21.73014843699477 1.089203169886455 Trace Trace
ToString - Duration of single invocation 0.29 ns 1.72 ns 5.96 0.19 False 19.77541124595707 21.728024890863917 1.0987394709834943

graph
graph
graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Net.Primitives.Tests.IPAddressPerformanceTests*'

Payloads

Baseline
Compare

Histogram

System.Net.Primitives.Tests.IPAddressPerformanceTests.Ctor_Span(address: [143, 24, 20, 36])


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 7.244795701685631 > 6.082976993020706.
IsChangePoint: Marked as a change because one of 7/2/2022 7:35:06 PM, 7/6/2022 3:55:24 AM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -24.696826067918362 (T) = (0 -7.309452172162186) / Math.Sqrt((0.0527983507256097 / (20)) + (0.04551799312727905 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.26210488505876833 = (5.7914776011835425 - 7.309452172162186) / 5.7914776011835425 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.Net.Primitives.Tests.IPAddressPerformanceTests.Ctor_Span(Byte[])
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,30
       xor       eax,eax
       mov       [rsp+20],rax
       test      rdx,rdx
       je        short 000000000000FEFE
       lea       rsi,[rdx+10]
       mov       edi,[rdx+8]
       mov       rcx,offset MT_System.Net.IPAddress
       call      000000000000C390
       mov       rbx,rax
       mov       [rsp+20],rsi
       mov       [rsp+28],edi
       mov       rcx,rbx
       lea       rdx,[rsp+20]
       call      qword ptr [1120]
       mov       rax,rbx
       add       rsp,30
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       xor       esi,esi
       xor       edi,edi
       jmp       short 000000000000FECA
; Total bytes of code 84
; System.Net.IPAddress..ctor(System.ReadOnlySpan`1<Byte>)
       push      rdi
       push      rsi
       sub       rsp,28
       mov       rsi,rcx
       mov       rdi,[rdx]
       mov       ecx,[rdx+8]
       cmp       ecx,4
       jne       short 000000000000FF97
       mov       ecx,4
       cmp       ecx,4
       jl        near ptr 0000000000000063
       mov       ecx,[rdi]
       xor       edx,edx
       mov       [rsi+10],rdx
       mov       [rsi+1C],edx
       mov       [rsi+18],ecx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       ecx,10
       jne       short 6
       mov       rcx,offset MT_System.UInt16[]
       mov       edx,8
       call      000000000000C4B0
       lea       rcx,[rsi+8]
       mov       rdx,rax
       call      0000000000000010
       xor       ecx,ecx
       mov       rax,[rsi+8]
       lea       edx,[rcx+rcx]
       mov       r8d,edx
       inc       edx
       mov       r9,rax
       mov       r8d,r8d
       movzx     r8d,byte ptr [rdi+r8]
       shl       r8d,8
       mov       edx,edx
       movzx     edx,byte ptr [rdi+rdx]
       add       edx,r8d
       movzx     edx,dx
       cmp       ecx,[r9+8]
       jae       near ptr 000000000000006F
       mov       r8d,ecx
       mov       [r9+r8*2+10],dx
       inc       ecx
       cmp       ecx,8
       jl        short 000000000000FFC2
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       mov       rcx,offset MT_System.ArgumentException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,189
       mov       rdx,7FFEFAEA2490
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [1D68]
       mov       rdi,rax
       mov       ecx,0B02
       mov       rdx,7FFEFAEA2490
       call      00000000000014A0
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [0BBD0]
       mov       rcx,rsi
       call      0000000000004690
       mov       ecx,29
       call      qword ptr [0B7E0]
       int       3
       call      0000000000006930
       int       3
; Total bytes of code 277

Compare Jit Disasm

; System.Net.Primitives.Tests.IPAddressPerformanceTests.Ctor_Span(Byte[])
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,30
       xor       eax,eax
       mov       [rsp+20],rax
       test      rdx,rdx
       je        short 000000000000FEFE
       lea       rsi,[rdx+10]
       mov       edi,[rdx+8]
       mov       rcx,offset MT_System.Net.IPAddress
       call      0000000000002AE0
       mov       rbx,rax
       mov       [rsp+20],rsi
       mov       [rsp+28],edi
       mov       rcx,rbx
       lea       rdx,[rsp+20]
       call      qword ptr [1120]
       mov       rax,rbx
       add       rsp,30
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       xor       esi,esi
       xor       edi,edi
       jmp       short 000000000000FECA
; Total bytes of code 84
; System.Net.IPAddress..ctor(System.ReadOnlySpan`1<Byte>)
       push      rdi
       push      rsi
       sub       rsp,28
       mov       rsi,rcx
       mov       rdi,[rdx]
       mov       ecx,[rdx+8]
       cmp       ecx,4
       jne       short 000000000000FF97
       mov       ecx,4
       cmp       ecx,4
       jl        near ptr 0000000000000063
       mov       ecx,[rdi]
       xor       edx,edx
       mov       [rsi+10],rdx
       mov       [rsi+1C],edx
       mov       [rsi+18],ecx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       ecx,10
       jne       short 6
       mov       rcx,offset MT_System.UInt16[]
       mov       edx,8
       call      0000000000002C00
       lea       rcx,[rsi+8]
       mov       rdx,rax
       call      0000000000000010
       xor       ecx,ecx
       mov       rax,[rsi+8]
       lea       edx,[rcx+rcx]
       mov       r8d,edx
       inc       edx
       mov       r9,rax
       mov       r8d,r8d
       movzx     r8d,byte ptr [rdi+r8]
       shl       r8d,8
       mov       edx,edx
       movzx     edx,byte ptr [rdi+rdx]
       add       edx,r8d
       movzx     edx,dx
       cmp       ecx,[r9+8]
       jae       near ptr 000000000000006F
       mov       r8d,ecx
       mov       [r9+r8*2+10],dx
       inc       ecx
       cmp       ecx,8
       jl        short 000000000000FFC2
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       mov       rcx,offset MT_System.ArgumentException
       call      0000000000002AE0
       mov       rsi,rax
       mov       ecx,189
       mov       rdx,7FFCEEF625D8
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [1D68]
       mov       rdi,rax
       mov       ecx,0B02
       mov       rdx,7FFCEEF625D8
       call      000000000000A140
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [0BBD0]
       mov       rcx,rsi
       call      0000000000002B00
       mov       ecx,29
       call      qword ptr [0B7E0]
       int       3
       call      000000000000AB50
       int       3
; Total bytes of code 277

System.Net.Primitives.Tests.IPAddressPerformanceTests.ToString(address: 143.24.20.36)


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.65492173209289 > 0.22458504868467719.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -159.39280747354283 (T) = (0 -1.6528015057149443) / Math.Sqrt((0.001510178896393494 / (20)) + (8.953767478782256E-05 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -5.681664516462246 = (0.2473637372308624 - 1.6528015057149443) / 0.2473637372308624 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.Net.Primitives.Tests.IPAddressPerformanceTests.ToString(System.Net.IPAddress)
       mov       rcx,rdx
       mov       rax,[rdx]
       mov       rax,[rax+40]
       jmp       qword ptr [rax+8]
; Total bytes of code 14

Compare Jit Disasm

; System.Net.Primitives.Tests.IPAddressPerformanceTests.ToString(System.Net.IPAddress)
       mov       rcx,rdx
       mov       rax,[rdx]
       mov       rax,[rax+40]
       jmp       qword ptr [rax+8]
; Total bytes of code 14

System.Net.Primitives.Tests.IPAddressPerformanceTests.ToString(address: 1020:3040:5060:7080:9010:1112:1314:1516)


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.7176243523620773 > 0.30210424328990987.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -234.5415064713326 (T) = (0 -1.7080929694664906) / Math.Sqrt((0.0007154329175903445 / (20)) + (0.00014291973699360154 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -6.209448877773808 = (0.23692420855253077 - 1.7080929694664906) / 0.23692420855253077 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.Net.Primitives.Tests.IPAddressPerformanceTests.ToString(System.Net.IPAddress)
       mov       rcx,rdx
       mov       rax,[rdx]
       mov       rax,[rax+40]
       jmp       qword ptr [rax+8]
; Total bytes of code 14

Compare Jit Disasm

; System.Net.Primitives.Tests.IPAddressPerformanceTests.ToString(System.Net.IPAddress)
       mov       rcx,rdx
       mov       rax,[rdx]
       mov       rax,[rax+40]
       jmp       qword ptr [rax+8]
; Total bytes of code 14

Docs

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

### Run Information
Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in System.Collections.CtorDefaultSize<String>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
SortedSet - Duration of single invocation 15.68 ns 17.08 ns 1.09 0.36 False
HashSet - Duration of single invocation 14.91 ns 16.69 ns 1.12 0.34 False
ConcurrentStack - Duration of single invocation 3.01 ns 4.68 ns 1.56 0.33 False
LinkedList - Duration of single invocation 3.53 ns 5.67 ns 1.61 0.28 False

graph
graph
graph
graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Collections.CtorDefaultSize&lt;String&gt;*'

Payloads

Baseline
Compare

Histogram

System.Collections.CtorDefaultSize<String>.SortedSet


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 17.079643855496528 > 16.530979964334172.
IsChangePoint: Marked as a change because one of 7/13/2022 12:52:03 AM, 7/18/2022 3:18:54 PM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -9.113780838750493 (T) = (0 -17.2612048476351) / Math.Sqrt((0.6585614926128625 / (20)) + (0.1315784751317134 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.11170610761489522 = (15.526769826485951 - 17.2612048476351) / 15.526769826485951 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.

```#### System.Collections.CtorDefaultSize&lt;String&gt;.HashSet

```log

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 16.68612767091959 > 15.682100757643266.
IsChangePoint: Marked as a change because one of 7/3/2022 4:26:07 AM, 7/4/2022 6:29:12 PM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -9.885335072257517 (T) = (0 -17.0484948102498) / Math.Sqrt((0.3346450132669051 / (20)) + (0.8330600059203501 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.12659900290824408 = (15.13270894634221 - 17.0484948102498) / 15.13270894634221 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.

```#### System.Collections.CtorDefaultSize&lt;String&gt;.ConcurrentStack

```log

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 4.6833447665490056 > 3.166568159133229.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -21.53220961111819 (T) = (0 -4.9095268554528815) / Math.Sqrt((0.12417050335795192 / (20)) + (0.030421987406990085 / (39))) is less than -2.0024654592901125 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (39) - 2, .025) and -0.5788881811726942 = (3.1094835682450976 - 4.9095268554528815) / 3.1094835682450976 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.

```#### System.Collections.CtorDefaultSize&lt;String&gt;.LinkedList

```log

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.674197801153622 > 3.8161022989598044.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -30.356075724164345 (T) = (0 -5.7995153309722145) / Math.Sqrt((0.0838204176827697 / (20)) + (0.023020393458266352 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.5658580818610588 = (3.7037298578676783 - 5.7995153309722145) / 3.7037298578676783 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.

Docs

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

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in System.Tests.Perf_SByte

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
ToString - Duration of single invocation 9.54 ns 11.43 ns 1.20 0.05 False Trace Trace

graph
Test Report

Repro

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

Payloads

Baseline
Compare

Histogram

System.Tests.Perf_SByte.ToString(value: 127)


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 11.429898753915896 > 9.668705185101045.
IsChangePoint: Marked as a change because one of 6/27/2022 8:54:23 AM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -45.84063122149927 (T) = (0 -11.612960898974617) / Math.Sqrt((0.04937637003687664 / (20)) + (0.025818528912190476 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.28252127051320614 = (9.05479009664116 - 11.612960898974617) / 9.05479009664116 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_SByte.ToString(SByte)
       sub       rsp,28
       movsx     rcx,dl
       call      qword ptr [9300]
       nop
       add       rsp,28
       ret
; Total bytes of code 20
; System.Number.Int32ToDecStr(Int32)
       push      rdi
       push      rsi
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       mov       esi,ecx
       test      esi,esi
       jl        near ptr 000000000000F5DD
       mov       ecx,esi
       mov       eax,1
       cmp       ecx,186A0
       jae       near ptr 000000000000F5C3
       cmp       ecx,0A
       jae       short 000000000000F53A
       mov       edi,eax
       cmp       edi,1
       jne       short 000000000000F543
       mov       rcx,224464002C8
       mov       rcx,[rcx]
       cmp       esi,[rcx+8]
       jae       near ptr 000000000000F603
       mov       eax,esi
       mov       rax,[rcx+rax*8+10]
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       ecx,64
       jae       short 000000000000F59B
       inc       eax
       jmp       short 000000000000F50F
       mov       ecx,edi
       call      0
       test      rax,rax
       je        near ptr 000000000000F5FC
       lea       rdx,[rax+0C]
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       movsxd    rcx,edi
       lea       rdx,[rdx+rcx*2]
       mov       ecx,0CCCCCCCD
       mov       r8d,esi
       imul      rcx,r8
       shr       rcx,23
       lea       r8d,[rcx+rcx*4]
       add       r8d,r8d
       sub       esi,r8d
       add       rdx,0FFFFFFFFFFFFFFFE
       add       esi,30
       mov       [rdx],si
       test      ecx,ecx
       mov       esi,ecx
       jne       short 000000000000F568
       xor       edx,edx
       mov       [rsp+20],rdx
       jmp       short 000000000000F533
       cmp       ecx,3E8
       jae       short 000000000000F5AB
       add       eax,2
       jmp       near ptr 000000000000F50F
       cmp       ecx,2710
       jae       short 000000000000F5BB
       add       eax,3
       jmp       near ptr 000000000000F50F
       add       eax,4
       jmp       near ptr 000000000000F50F
       mov       ecx,esi
       shr       ecx,5
       imul      rcx,0A7C5AC5
       shr       rcx,27
       mov       eax,6
       jmp       near ptr 000000000000F50A
       call      qword ptr [5858]
       mov       r8,[rax+28]
       mov       ecx,esi
       mov       edx,0FFFFFFFF
       call      qword ptr [9318]
       nop
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       xor       edx,edx
       jmp       near ptr 000000000000F561
       call      0000000000006930
       int       3
; Total bytes of code 297

Compare Jit Disasm

; System.Tests.Perf_SByte.ToString(SByte)
       sub       rsp,28
       movsx     rcx,dl
       call      qword ptr [9300]
       nop
       add       rsp,28
       ret
; Total bytes of code 20
; System.Number.Int32ToDecStr(Int32)
       push      rdi
       push      rsi
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       mov       esi,ecx
       test      esi,esi
       jl        near ptr 000000000000F5DD
       mov       ecx,esi
       mov       eax,1
       cmp       ecx,186A0
       jae       near ptr 000000000000F5C3
       cmp       ecx,0A
       jae       short 000000000000F53A
       mov       edi,eax
       cmp       edi,1
       jne       short 000000000000F543
       mov       rcx,1CC0A4002C8
       mov       rcx,[rcx]
       cmp       esi,[rcx+8]
       jae       near ptr 000000000000F603
       mov       eax,esi
       mov       rax,[rcx+rax*8+10]
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       ecx,64
       jae       short 000000000000F59B
       inc       eax
       jmp       short 000000000000F50F
       mov       ecx,edi
       call      0
       test      rax,rax
       je        near ptr 000000000000F5FC
       lea       rdx,[rax+0C]
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       movsxd    rcx,edi
       lea       rdx,[rdx+rcx*2]
       mov       ecx,0CCCCCCCD
       mov       r8d,esi
       imul      rcx,r8
       shr       rcx,23
       lea       r8d,[rcx+rcx*4]
       add       r8d,r8d
       sub       esi,r8d
       add       rdx,0FFFFFFFFFFFFFFFE
       add       esi,30
       mov       [rdx],si
       test      ecx,ecx
       mov       esi,ecx
       jne       short 000000000000F568
       xor       edx,edx
       mov       [rsp+20],rdx
       jmp       short 000000000000F533
       cmp       ecx,3E8
       jae       short 000000000000F5AB
       add       eax,2
       jmp       near ptr 000000000000F50F
       cmp       ecx,2710
       jae       short 000000000000F5BB
       add       eax,3
       jmp       near ptr 000000000000F50F
       add       eax,4
       jmp       near ptr 000000000000F50F
       mov       ecx,esi
       shr       ecx,5
       imul      rcx,0A7C5AC5
       shr       rcx,27
       mov       eax,6
       jmp       near ptr 000000000000F50A
       call      qword ptr [5858]
       mov       r8,[rax+28]
       mov       ecx,esi
       mov       edx,0FFFFFFFF
       call      qword ptr [9318]
       nop
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       xor       edx,edx
       jmp       near ptr 000000000000F561
       call      000000000000AB50
       int       3
; Total bytes of code 297

Docs

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

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in ByteMark

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
BenchBitOps - Duration of single invocation 767.82 ms 841.25 ms 1.10 0.23 False 6537533333.333333 7486266666.666667 1.1451209936469413 Trace Trace
BenchStringSort - Duration of single invocation 1.48 secs 1.64 secs 1.11 0.00 False 7172400000 7928600000 1.105431933522949 Trace Trace

graph
graph
Test Report

Repro

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

Payloads

Baseline
Compare

Histogram

ByteMark.BenchBitOps


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 841.2536 > 695.6341710937501.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -16.049406013993924 (T) = (0 -860181160.7010663) / Math.Sqrt((1697989243656410.2 / (20)) + (1172993787368041 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.24907978543055687 = (688651894.5661765 - 860181160.7010663) / 688651894.5661765 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
; 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+38],0B
       jne       short 0000000000004F22
       mov       rcx,[rbp+10]
       call      qword ptr [0B240]
       nop
       add       rsp,20
       pop       rbp
       ret
; Total bytes of code 41

Compare Jit Disasm

ByteMark.BenchStringSort


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.6362770214285716 > 1.5175663730769233.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -37.04855220647291 (T) = (0 -1642408488.32326) / Math.Sqrt((445799367281957.7 / (20)) + (286138616351365.2 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.13947233595277336 = (1441376360.357143 - 1642408488.32326) / 1441376360.357143 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
; 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+38],0B
       jne       short 00000000000058E2
       mov       rcx,[rbp+10]
       call      qword ptr [0B228]
       nop
       add       rsp,20
       pop       rbp
       ret
; Total bytes of code 41

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+38],0B
       jne       short 0000000000006422
       mov       rcx,[rbp+10]
       call      qword ptr [0B228]
       nop
       add       rsp,20
       pop       rbp
       ret
; Total bytes of code 41

Docs

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

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in System.Collections.CtorFromCollection<String>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
ConcurrentQueue - Duration of single invocation 8.02 μs 8.43 μs 1.05 0.00 False
Dictionary - Duration of single invocation 5.01 μs 5.37 μs 1.07 0.05 False

graph
graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Collections.CtorFromCollection&lt;String&gt;*'

Payloads

Baseline
Compare

Histogram

System.Collections.CtorFromCollection<String>.ConcurrentQueue(Size: 512)


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 8.434007593863232 > 8.406622894329136.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -54.78877485119516 (T) = (0 -8436.93134301469) / Math.Sqrt((931.3993397691705 / (20)) + (570.4323768522723 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.05335090964032175 = (8009.611294583277 - 8436.93134301469) / 8009.611294583277 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.

```#### System.Collections.CtorFromCollection&lt;String&gt;.Dictionary(Size: 512)

```log

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.369570708738377 > 4.885196473530303.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -24.048450177220566 (T) = (0 -5342.051736120492) / Math.Sqrt((11204.801245483995 / (20)) + (9894.798073175429 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.146699825616227 = (4658.631332092265 - 5342.051736120492) / 4658.631332092265 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.

Docs

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

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in System.Reflection.Activator<EmptyStruct>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
CreateInstanceType - Duration of single invocation 9.22 ns 10.92 ns 1.18 0.10 False

graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Reflection.Activator&lt;EmptyStruct&gt;*'

Payloads

Baseline
Compare

Histogram

System.Reflection.Activator<EmptyStruct>.CreateInstanceType


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 10.923804996183858 > 9.432173180945805.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -11.957591093422339 (T) = (0 -11.190535716927945) / Math.Sqrt((0.2823936340048121 / (7)) + (0.05581750864885459 / (40))) is less than -2.0141033888794695 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (7) + (40) - 2, .025) and -0.27926454661727557 = (8.74763218172408 - 11.190535716927945) / 8.74763218172408 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.

Docs

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

@performanceautofiler
Copy link
Author

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in System.Numerics.Tests.Perf_BigInteger

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
ToByteArray - Duration of single invocation 13.05 ns 15.83 ns 1.21 0.04 False 160.59670367020573 171.56791988632173 1.0683153263135836 Trace Trace
ToByteArray - Duration of single invocation 13.97 ns 16.05 ns 1.15 0.15 False 199.8950235261908 210.71773554549483 1.0541419782663373 Trace Trace

graph
graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Numerics.Tests.Perf_BigInteger*'

Payloads

Baseline
Compare

Histogram

System.Numerics.Tests.Perf_BigInteger.ToByteArray(numberString: 123)


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 15.827833336302293 > 14.143110439803486.
IsChangePoint: Marked as a change because one of 7/2/2022 7:35:06 PM, 7/6/2022 3:55:24 AM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -18.784321387645992 (T) = (0 -15.913060910828301) / Math.Sqrt((0.18133241177545711 / (20)) + (0.0849209952646038 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.14268430742019886 = (13.926034345176841 - 15.913060910828301) / 13.926034345176841 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.Numerics.Tests.Perf_BigInteger.ToByteArray(BigIntegerData)
       sub       rsp,58
       vxorps    xmm4,xmm4,xmm4
       vmovdqa   xmmword ptr [rsp+30],xmm4
       vmovdqa   xmmword ptr [rsp+40],xmm4
       xor       eax,eax
       mov       [rsp+50],rax
       add       rdx,18
       mov       r8,[rdx]
       mov       [rsp+48],r8
       mov       r8d,[rdx+8]
       mov       [rsp+50],r8d
       xor       r8d,r8d
       mov       [rsp+30],r8
       xor       r8d,r8d
       mov       [rsp+38],r8d
       mov       [rsp+20],r8d
       lea       r8,[rsp+40]
       mov       [rsp+28],r8
       lea       r8,[rsp+30]
       lea       rcx,[rsp+48]
       xor       edx,edx
       xor       r9d,r9d
       call      qword ptr [1648]
       nop
       add       rsp,58
       ret
; Total bytes of code 106
; System.Numerics.BigInteger.TryGetBytes(GetBytesMode, System.Span`1<Byte>, Boolean, Boolean, Int32 ByRef)
       push      r15
       push      r14
       push      r13
       push      r12
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,38
       mov       rsi,[rsp+0A8]
       mov       rdi,[r8]
       mov       ebx,[r8+8]
       mov       ebp,[rcx+8]
       test      ebp,ebp
       jne       short 000000000000284E
       test      edx,edx
       je        short 00000000000027F3
       cmp       edx,1
       je        short 000000000000280C
       jmp       short 0000000000002817
       xchg      ax,ax
       mov       rcx,offset MT_System.Byte[]
       mov       edx,1
       call      000000000000C4B0
       jmp       near ptr 0000000000002B43
       mov       dword ptr [rsi],1
       jmp       near ptr 0000000000002A15
       mov       dword ptr [rsi],1
       test      ebx,ebx
       je        near ptr 0000000000002A15
       mov       byte ptr [rdi],0
       mov       rcx,7FFF6C232F38
       mov       edx,11
       call      000000000000C560
       mov       rdx,153EBC090A8
       mov       rax,[rdx]
       jmp       near ptr 0000000000002B43
       movzx     eax,r9b
       test      eax,eax
       je        short 000000000000285E
       test      ebp,ebp
       jl        near ptr 0000000000002B59
       xor       r14d,r14d
       mov       r15,[rcx]
       test      r15,r15
       jne       short 0000000000002882
       test      ebp,ebp
       jl        short 0000000000002871
       xor       ecx,ecx
       jmp       short 0000000000002876
       mov       ecx,0FF
       movzx     r12d,cl
       mov       r13d,ebp
       jmp       short 00000000000028F8
       nop       dword ptr [rax]
       cmp       ebp,0FFFFFFFF
       jne       short 00000000000028DC
       mov       r12d,0FF
       mov       ecx,[r15+8]
       test      ecx,ecx
       je        near ptr 0000000000002B9D
       cmp       dword ptr [r15+10],0
       jne       short 00000000000028B7
       inc       r14d
       cmp       r14d,ecx
       jae       near ptr 0000000000002B9D
       mov       r8d,r14d
       cmp       dword ptr [r15+r8*4+10],0
       je        short 00000000000028A0
       lea       r8d,[rcx+0FFFF]
       cmp       r8d,ecx
       jae       near ptr 0000000000002B9D
       mov       ecx,r8d
       mov       ecx,[r15+rcx*4+10]
       mov       r13d,ecx
       not       r13d
       cmp       r8d,r14d
       jne       short 00000000000028F8
       inc       r13d
       jmp       short 00000000000028F8
       xor       r12d,r12d
       mov       ecx,[r15+8]
       lea       r8d,[rcx+0FFFF]
       cmp       r8d,ecx
       jae       near ptr 0000000000002B9D
       mov       ecx,r8d
       mov       r13d,[r15+rcx*4+10]
       mov       ecx,r13d
       shr       ecx,18
       movzx     ecx,cl
       cmp       ecx,r12d
       je        short 000000000000290E
       mov       r9d,3
       jmp       short 0000000000002941
       mov       ecx,r13d
       shr       ecx,10
       movzx     ecx,cl
       cmp       ecx,r12d
       je        short 0000000000002924
       mov       r9d,2
       jmp       short 0000000000002941
       mov       ecx,r13d
       shr       ecx,8
       movzx     ecx,cl
       cmp       ecx,r12d
       je        short 000000000000293A
       mov       r9d,1
       jmp       short 0000000000002941
       movzx     ecx,r13b
       xor       r9d,r9d
       and       ecx,80
       mov       r8d,r12d
       and       r8d,80
       cmp       ecx,r8d
       je        short 000000000000295F
       xor       ecx,ecx
       test      eax,eax
       sete      cl
       jmp       short 0000000000002961
       xor       ecx,ecx
       movzx     eax,cl
       mov       [rsp+30],eax
       mov       [rsp+34],r9d
       lea       ecx,[r9+1]
       test      eax,eax
       jne       short 000000000000297A
       xor       r8d,r8d
       jmp       short 0000000000002980
       mov       r8d,1
       add       ecx,r8d
       test      r15,r15
       je        short 00000000000029A9
       mov       r8d,[r15+8]
       sub       r8d,1
       jo        near ptr 0000000000002B54
       imul      r8d,4
       jo        near ptr 0000000000002B54
       add       ecx,r8d
       jo        near ptr 0000000000002B54
       test      edx,edx
       je        short 00000000000029B4
       cmp       edx,1
       je        short 00000000000029D3
       jmp       short 00000000000029D7
       mov       [rsp+2C],ecx
       movsxd    rdx,ecx
       mov       rcx,offset MT_System.Byte[]
       call      000000000000C4B0
       lea       rdi,[rax+10]
       mov       ebx,[rax+8]
       jmp       short 0000000000002A02
       mov       [rsi],ecx
       jmp       short 0000000000002A15
       mov       [rsi],ecx
       mov       [rsp+2C],ecx
       cmp       ebx,ecx
       jl        short 0000000000002A15
       mov       rcx,7FFF6C232F38
       mov       edx,11
       call      000000000000C560
       mov       rax,153EBC090A8
       mov       rax,[rax]
       mov       esi,[rsp+0A0]
       movzx     ecx,sil
       test      ecx,ecx
       jne       short 0000000000002A28
       xor       edx,edx
       jmp       short 0000000000002A2F
       xor       eax,eax
       add       rsp,38
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r12
       pop       r13
       pop       r14
       pop       r15
       ret
       mov       esi,[rsp+2C]
       lea       edx,[rsi+0FFFF]
       test      ecx,ecx
       jne       short 0000000000002A3A
       mov       ecx,1
       jmp       short 0000000000002A3F
       mov       ecx,0FFFFFFFF
       test      r15,r15
       je        near ptr 0000000000002ACB
       xor       r8d,r8d
       mov       r9d,[r15+8]
       dec       r9d
       test      r9d,r9d
       jle       short 0000000000002ACB
       mov       r10d,r8d
       mov       r10d,[r15+r10*4+10]
       cmp       ebp,0FFFFFFFF
       jne       short 0000000000002A6F
       not       r10d
       cmp       r8d,r14d
       jg        short 0000000000002A6F
       inc       r10d
       cmp       edx,ebx
       jae       near ptr 0000000000002B9D
       mov       r11d,edx
       mov       [rdi+r11],r10b
       add       edx,ecx
       cmp       edx,ebx
       jae       near ptr 0000000000002B9D
       mov       r11d,edx
       mov       esi,r10d
       shr       esi,8
       mov       [rdi+r11],sil
       add       edx,ecx
       cmp       edx,ebx
       jae       near ptr 0000000000002B9D
       mov       r11d,edx
       mov       esi,r10d
       shr       esi,10
       mov       [rdi+r11],sil
       add       edx,ecx
       cmp       edx,ebx
       jae       near ptr 0000000000002B9D
       mov       r11d,edx
       shr       r10d,18
       mov       [rdi+r11],r10b
       add       edx,ecx
       inc       r8d
       cmp       r9d,r8d
       jg        short 0000000000002A57
       cmp       edx,ebx
       jae       near ptr 0000000000002B9D
       mov       r8d,edx
       mov       [rdi+r8],r13b
       mov       esi,[rsp+34]
       test      esi,esi
       je        short 0000000000002B30
       add       edx,ecx
       cmp       edx,ebx
       jae       near ptr 0000000000002B9D
       mov       r8d,edx
       mov       r9d,r13d
       shr       r9d,8
       mov       [rdi+r8],r9b
       cmp       esi,1
       je        short 0000000000002B30
       add       edx,ecx
       cmp       edx,ebx
       jae       near ptr 0000000000002B9D
       mov       r8d,edx
       mov       r9d,r13d
       shr       r9d,10
       mov       [rdi+r8],r9b
       cmp       esi,2
       je        short 0000000000002B30
       add       edx,ecx
       cmp       edx,ebx
       jae       short 0000000000002B9D
       mov       r8d,edx
       mov       r9d,r13d
       shr       r9d,18
       mov       [rdi+r8],r9b
       cmp       dword ptr [rsp+30],0
       je        short 0000000000002B43
       add       edx,ecx
       cmp       edx,ebx
       jae       short 0000000000002B9D
       mov       ecx,edx
       mov       [rdi+rcx],r12b
       add       rsp,38
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r12
       pop       r13
       pop       r14
       pop       r15
       ret
       call      00000000000065F0
       mov       rcx,offset MT_System.OverflowException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,34B
       mov       rdx,7FFF6C232AA0
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [1018]
       mov       rdx,rax
       mov       rcx,rsi
       call      qword ptr [3480]
       mov       rcx,rsi
       call      0000000000004690
       int       3
       call      0000000000006930
       int       3
; Total bytes of code 995

Compare Jit Disasm

; System.Numerics.Tests.Perf_BigInteger.ToByteArray(BigIntegerData)
       sub       rsp,58
       vxorps    xmm4,xmm4,xmm4
       vmovdqa   xmmword ptr [rsp+30],xmm4
       vmovdqa   xmmword ptr [rsp+40],xmm4
       xor       eax,eax
       mov       [rsp+50],rax
       add       rdx,18
       mov       r8,[rdx]
       mov       [rsp+48],r8
       mov       r8d,[rdx+8]
       mov       [rsp+50],r8d
       xor       r8d,r8d
       mov       [rsp+30],r8
       xor       r8d,r8d
       mov       [rsp+38],r8d
       mov       [rsp+20],r8d
       lea       r8,[rsp+40]
       mov       [rsp+28],r8
       lea       r8,[rsp+30]
       lea       rcx,[rsp+48]
       xor       edx,edx
       xor       r9d,r9d
       call      qword ptr [1648]
       nop
       add       rsp,58
       ret
; Total bytes of code 106
; System.Numerics.BigInteger.TryGetBytes(GetBytesMode, System.Span`1<Byte>, Boolean, Boolean, Int32 ByRef)
       push      r15
       push      r14
       push      r13
       push      r12
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,38
       mov       rsi,[rsp+0A8]
       mov       rdi,[r8]
       mov       ebx,[r8+8]
       mov       ebp,[rcx+8]
       test      ebp,ebp
       jne       short 000000000000284E
       test      edx,edx
       je        short 00000000000027F3
       cmp       edx,1
       je        short 000000000000280C
       jmp       short 0000000000002817
       xchg      ax,ax
       mov       rcx,offset MT_System.Byte[]
       mov       edx,1
       call      0000000000002C00
       jmp       near ptr 0000000000002B43
       mov       dword ptr [rsi],1
       jmp       near ptr 0000000000002A15
       mov       dword ptr [rsi],1
       test      ebx,ebx
       je        near ptr 0000000000002A15
       mov       byte ptr [rdi],0
       mov       rcx,7FF9F84F3090
       mov       edx,12
       call      0000000000002CB0
       mov       rdx,29B0A8090A8
       mov       rax,[rdx]
       jmp       near ptr 0000000000002B43
       movzx     eax,r9b
       test      eax,eax
       je        short 000000000000285E
       test      ebp,ebp
       jl        near ptr 0000000000002B59
       xor       r14d,r14d
       mov       r15,[rcx]
       test      r15,r15
       jne       short 0000000000002882
       test      ebp,ebp
       jl        short 0000000000002871
       xor       ecx,ecx
       jmp       short 0000000000002876
       mov       ecx,0FF
       movzx     r12d,cl
       mov       r13d,ebp
       jmp       short 00000000000028F8
       nop       dword ptr [rax]
       cmp       ebp,0FFFFFFFF
       jne       short 00000000000028DC
       mov       r12d,0FF
       mov       ecx,[r15+8]
       test      ecx,ecx
       je        near ptr 0000000000002B9D
       cmp       dword ptr [r15+10],0
       jne       short 00000000000028B7
       inc       r14d
       cmp       r14d,ecx
       jae       near ptr 0000000000002B9D
       mov       r8d,r14d
       cmp       dword ptr [r15+r8*4+10],0
       je        short 00000000000028A0
       lea       r8d,[rcx+0FFFF]
       cmp       r8d,ecx
       jae       near ptr 0000000000002B9D
       mov       ecx,r8d
       mov       ecx,[r15+rcx*4+10]
       mov       r13d,ecx
       not       r13d
       cmp       r8d,r14d
       jne       short 00000000000028F8
       inc       r13d
       jmp       short 00000000000028F8
       xor       r12d,r12d
       mov       ecx,[r15+8]
       lea       r8d,[rcx+0FFFF]
       cmp       r8d,ecx
       jae       near ptr 0000000000002B9D
       mov       ecx,r8d
       mov       r13d,[r15+rcx*4+10]
       mov       ecx,r13d
       shr       ecx,18
       movzx     ecx,cl
       cmp       ecx,r12d
       je        short 000000000000290E
       mov       r9d,3
       jmp       short 0000000000002941
       mov       ecx,r13d
       shr       ecx,10
       movzx     ecx,cl
       cmp       ecx,r12d
       je        short 0000000000002924
       mov       r9d,2
       jmp       short 0000000000002941
       mov       ecx,r13d
       shr       ecx,8
       movzx     ecx,cl
       cmp       ecx,r12d
       je        short 000000000000293A
       mov       r9d,1
       jmp       short 0000000000002941
       movzx     ecx,r13b
       xor       r9d,r9d
       and       ecx,80
       mov       r8d,r12d
       and       r8d,80
       cmp       ecx,r8d
       je        short 000000000000295F
       xor       ecx,ecx
       test      eax,eax
       sete      cl
       jmp       short 0000000000002961
       xor       ecx,ecx
       movzx     eax,cl
       mov       [rsp+30],eax
       mov       [rsp+34],r9d
       lea       ecx,[r9+1]
       test      eax,eax
       jne       short 000000000000297A
       xor       r8d,r8d
       jmp       short 0000000000002980
       mov       r8d,1
       add       ecx,r8d
       test      r15,r15
       je        short 00000000000029A9
       mov       r8d,[r15+8]
       sub       r8d,1
       jo        near ptr 0000000000002B54
       imul      r8d,4
       jo        near ptr 0000000000002B54
       add       ecx,r8d
       jo        near ptr 0000000000002B54
       test      edx,edx
       je        short 00000000000029B4
       cmp       edx,1
       je        short 00000000000029D3
       jmp       short 00000000000029D7
       mov       [rsp+2C],ecx
       movsxd    rdx,ecx
       mov       rcx,offset MT_System.Byte[]
       call      0000000000002C00
       lea       rdi,[rax+10]
       mov       ebx,[rax+8]
       jmp       short 0000000000002A02
       mov       [rsi],ecx
       jmp       short 0000000000002A15
       mov       [rsi],ecx
       mov       [rsp+2C],ecx
       cmp       ebx,ecx
       jl        short 0000000000002A15
       mov       rcx,7FF9F84F3090
       mov       edx,12
       call      0000000000002CB0
       mov       rax,29B0A8090A8
       mov       rax,[rax]
       mov       esi,[rsp+0A0]
       movzx     ecx,sil
       test      ecx,ecx
       jne       short 0000000000002A28
       xor       edx,edx
       jmp       short 0000000000002A2F
       xor       eax,eax
       add       rsp,38
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r12
       pop       r13
       pop       r14
       pop       r15
       ret
       mov       esi,[rsp+2C]
       lea       edx,[rsi+0FFFF]
       test      ecx,ecx
       jne       short 0000000000002A3A
       mov       ecx,1
       jmp       short 0000000000002A3F
       mov       ecx,0FFFFFFFF
       test      r15,r15
       je        near ptr 0000000000002ACB
       xor       r8d,r8d
       mov       r9d,[r15+8]
       dec       r9d
       test      r9d,r9d
       jle       short 0000000000002ACB
       mov       r10d,r8d
       mov       r10d,[r15+r10*4+10]
       cmp       ebp,0FFFFFFFF
       jne       short 0000000000002A6F
       not       r10d
       cmp       r8d,r14d
       jg        short 0000000000002A6F
       inc       r10d
       cmp       edx,ebx
       jae       near ptr 0000000000002B9D
       mov       r11d,edx
       mov       [rdi+r11],r10b
       add       edx,ecx
       cmp       edx,ebx
       jae       near ptr 0000000000002B9D
       mov       r11d,edx
       mov       esi,r10d
       shr       esi,8
       mov       [rdi+r11],sil
       add       edx,ecx
       cmp       edx,ebx
       jae       near ptr 0000000000002B9D
       mov       r11d,edx
       mov       esi,r10d
       shr       esi,10
       mov       [rdi+r11],sil
       add       edx,ecx
       cmp       edx,ebx
       jae       near ptr 0000000000002B9D
       mov       r11d,edx
       shr       r10d,18
       mov       [rdi+r11],r10b
       add       edx,ecx
       inc       r8d
       cmp       r9d,r8d
       jg        short 0000000000002A57
       cmp       edx,ebx
       jae       near ptr 0000000000002B9D
       mov       r8d,edx
       mov       [rdi+r8],r13b
       mov       esi,[rsp+34]
       test      esi,esi
       je        short 0000000000002B30
       add       edx,ecx
       cmp       edx,ebx
       jae       near ptr 0000000000002B9D
       mov       r8d,edx
       mov       r9d,r13d
       shr       r9d,8
       mov       [rdi+r8],r9b
       cmp       esi,1
       je        short 0000000000002B30
       add       edx,ecx
       cmp       edx,ebx
       jae       near ptr 0000000000002B9D
       mov       r8d,edx
       mov       r9d,r13d
       shr       r9d,10
       mov       [rdi+r8],r9b
       cmp       esi,2
       je        short 0000000000002B30
       add       edx,ecx
       cmp       edx,ebx
       jae       short 0000000000002B9D
       mov       r8d,edx
       mov       r9d,r13d
       shr       r9d,18
       mov       [rdi+r8],r9b
       cmp       dword ptr [rsp+30],0
       je        short 0000000000002B43
       add       edx,ecx
       cmp       edx,ebx
       jae       short 0000000000002B9D
       mov       ecx,edx
       mov       [rdi+rcx],r12b
       add       rsp,38
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r12
       pop       r13
       pop       r14
       pop       r15
       ret
       call      000000000000A810
       mov       rcx,offset MT_System.OverflowException
       call      0000000000002AE0
       mov       rsi,rax
       mov       ecx,34B
       mov       rdx,7FF9F84F2BE8
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [1018]
       mov       rdx,rax
       mov       rcx,rsi
       call      qword ptr [3480]
       mov       rcx,rsi
       call      0000000000002B00
       int       3
       call      000000000000AB50
       int       3
; Total bytes of code 995

System.Numerics.Tests.Perf_BigInteger.ToByteArray(numberString: -2147483648)


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 16.05342469664651 > 14.993737220391436.
IsChangePoint: Marked as a change because one of 7/2/2022 7:35:06 PM, 7/6/2022 3:55:24 AM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -19.986530032878612 (T) = (0 -16.24199875551821) / Math.Sqrt((0.16541636278037125 / (20)) + (0.06799508381887506 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.1400872968643163 = (14.246276403736825 - 16.24199875551821) / 14.246276403736825 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.Numerics.Tests.Perf_BigInteger.ToByteArray(BigIntegerData)
       sub       rsp,58
       vxorps    xmm4,xmm4,xmm4
       vmovdqa   xmmword ptr [rsp+30],xmm4
       vmovdqa   xmmword ptr [rsp+40],xmm4
       xor       eax,eax
       mov       [rsp+50],rax
       add       rdx,18
       mov       r8,[rdx]
       mov       [rsp+48],r8
       mov       r8d,[rdx+8]
       mov       [rsp+50],r8d
       xor       r8d,r8d
       mov       [rsp+30],r8
       xor       r8d,r8d
       mov       [rsp+38],r8d
       mov       [rsp+20],r8d
       lea       r8,[rsp+40]
       mov       [rsp+28],r8
       lea       r8,[rsp+30]
       lea       rcx,[rsp+48]
       xor       edx,edx
       xor       r9d,r9d
       call      qword ptr [1648]
       nop
       add       rsp,58
       ret
; Total bytes of code 106
; System.Numerics.BigInteger.TryGetBytes(GetBytesMode, System.Span`1<Byte>, Boolean, Boolean, Int32 ByRef)
       push      r15
       push      r14
       push      r13
       push      r12
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,38
       mov       rsi,[rsp+0A8]
       mov       rdi,[r8]
       mov       ebx,[r8+8]
       mov       ebp,[rcx+8]
       test      ebp,ebp
       jne       short 00000000000028AE
       test      edx,edx
       je        short 0000000000002853
       cmp       edx,1
       je        short 000000000000286C
       jmp       short 0000000000002877
       xchg      ax,ax
       mov       rcx,offset MT_System.Byte[]
       mov       edx,1
       call      000000000000C4B0
       jmp       near ptr 0000000000002BA3
       mov       dword ptr [rsi],1
       jmp       near ptr 0000000000002A75
       mov       dword ptr [rsi],1
       test      ebx,ebx
       je        near ptr 0000000000002A75
       mov       byte ptr [rdi],0
       mov       rcx,7FFF6C2A2F38
       mov       edx,11
       call      000000000000C560
       mov       rdx,298000090A8
       mov       rax,[rdx]
       jmp       near ptr 0000000000002BA3
       movzx     eax,r9b
       test      eax,eax
       je        short 00000000000028BE
       test      ebp,ebp
       jl        near ptr 0000000000002BB9
       xor       r14d,r14d
       mov       r15,[rcx]
       test      r15,r15
       jne       short 00000000000028E2
       test      ebp,ebp
       jl        short 00000000000028D1
       xor       ecx,ecx
       jmp       short 00000000000028D6
       mov       ecx,0FF
       movzx     r12d,cl
       mov       r13d,ebp
       jmp       short 0000000000002958
       nop       dword ptr [rax]
       cmp       ebp,0FFFFFFFF
       jne       short 000000000000293C
       mov       r12d,0FF
       mov       ecx,[r15+8]
       test      ecx,ecx
       je        near ptr 0000000000002BFD
       cmp       dword ptr [r15+10],0
       jne       short 0000000000002917
       inc       r14d
       cmp       r14d,ecx
       jae       near ptr 0000000000002BFD
       mov       r8d,r14d
       cmp       dword ptr [r15+r8*4+10],0
       je        short 0000000000002900
       lea       r8d,[rcx+0FFFF]
       cmp       r8d,ecx
       jae       near ptr 0000000000002BFD
       mov       ecx,r8d
       mov       ecx,[r15+rcx*4+10]
       mov       r13d,ecx
       not       r13d
       cmp       r8d,r14d
       jne       short 0000000000002958
       inc       r13d
       jmp       short 0000000000002958
       xor       r12d,r12d
       mov       ecx,[r15+8]
       lea       r8d,[rcx+0FFFF]
       cmp       r8d,ecx
       jae       near ptr 0000000000002BFD
       mov       ecx,r8d
       mov       r13d,[r15+rcx*4+10]
       mov       ecx,r13d
       shr       ecx,18
       movzx     ecx,cl
       cmp       ecx,r12d
       je        short 000000000000296E
       mov       r9d,3
       jmp       short 00000000000029A1
       mov       ecx,r13d
       shr       ecx,10
       movzx     ecx,cl
       cmp       ecx,r12d
       je        short 0000000000002984
       mov       r9d,2
       jmp       short 00000000000029A1
       mov       ecx,r13d
       shr       ecx,8
       movzx     ecx,cl
       cmp       ecx,r12d
       je        short 000000000000299A
       mov       r9d,1
       jmp       short 00000000000029A1
       movzx     ecx,r13b
       xor       r9d,r9d
       and       ecx,80
       mov       r8d,r12d
       and       r8d,80
       cmp       ecx,r8d
       je        short 00000000000029BF
       xor       ecx,ecx
       test      eax,eax
       sete      cl
       jmp       short 00000000000029C1
       xor       ecx,ecx
       movzx     eax,cl
       mov       [rsp+30],eax
       mov       [rsp+34],r9d
       lea       ecx,[r9+1]
       test      eax,eax
       jne       short 00000000000029DA
       xor       r8d,r8d
       jmp       short 00000000000029E0
       mov       r8d,1
       add       ecx,r8d
       test      r15,r15
       je        short 0000000000002A09
       mov       r8d,[r15+8]
       sub       r8d,1
       jo        near ptr 0000000000002BB4
       imul      r8d,4
       jo        near ptr 0000000000002BB4
       add       ecx,r8d
       jo        near ptr 0000000000002BB4
       test      edx,edx
       je        short 0000000000002A14
       cmp       edx,1
       je        short 0000000000002A33
       jmp       short 0000000000002A37
       mov       [rsp+2C],ecx
       movsxd    rdx,ecx
       mov       rcx,offset MT_System.Byte[]
       call      000000000000C4B0
       lea       rdi,[rax+10]
       mov       ebx,[rax+8]
       jmp       short 0000000000002A62
       mov       [rsi],ecx
       jmp       short 0000000000002A75
       mov       [rsi],ecx
       mov       [rsp+2C],ecx
       cmp       ebx,ecx
       jl        short 0000000000002A75
       mov       rcx,7FFF6C2A2F38
       mov       edx,11
       call      000000000000C560
       mov       rax,298000090A8
       mov       rax,[rax]
       mov       esi,[rsp+0A0]
       movzx     ecx,sil
       test      ecx,ecx
       jne       short 0000000000002A88
       xor       edx,edx
       jmp       short 0000000000002A8F
       xor       eax,eax
       add       rsp,38
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r12
       pop       r13
       pop       r14
       pop       r15
       ret
       mov       esi,[rsp+2C]
       lea       edx,[rsi+0FFFF]
       test      ecx,ecx
       jne       short 0000000000002A9A
       mov       ecx,1
       jmp       short 0000000000002A9F
       mov       ecx,0FFFFFFFF
       test      r15,r15
       je        near ptr 0000000000002B2B
       xor       r8d,r8d
       mov       r9d,[r15+8]
       dec       r9d
       test      r9d,r9d
       jle       short 0000000000002B2B
       mov       r10d,r8d
       mov       r10d,[r15+r10*4+10]
       cmp       ebp,0FFFFFFFF
       jne       short 0000000000002ACF
       not       r10d
       cmp       r8d,r14d
       jg        short 0000000000002ACF
       inc       r10d
       cmp       edx,ebx
       jae       near ptr 0000000000002BFD
       mov       r11d,edx
       mov       [rdi+r11],r10b
       add       edx,ecx
       cmp       edx,ebx
       jae       near ptr 0000000000002BFD
       mov       r11d,edx
       mov       esi,r10d
       shr       esi,8
       mov       [rdi+r11],sil
       add       edx,ecx
       cmp       edx,ebx
       jae       near ptr 0000000000002BFD
       mov       r11d,edx
       mov       esi,r10d
       shr       esi,10
       mov       [rdi+r11],sil
       add       edx,ecx
       cmp       edx,ebx
       jae       near ptr 0000000000002BFD
       mov       r11d,edx
       shr       r10d,18
       mov       [rdi+r11],r10b
       add       edx,ecx
       inc       r8d
       cmp       r9d,r8d
       jg        short 0000000000002AB7
       cmp       edx,ebx
       jae       near ptr 0000000000002BFD
       mov       r8d,edx
       mov       [rdi+r8],r13b
       mov       esi,[rsp+34]
       test      esi,esi
       je        short 0000000000002B90
       add       edx,ecx
       cmp       edx,ebx
       jae       near ptr 0000000000002BFD
       mov       r8d,edx
       mov       r9d,r13d
       shr       r9d,8
       mov       [rdi+r8],r9b
       cmp       esi,1
       je        short 0000000000002B90
       add       edx,ecx
       cmp       edx,ebx
       jae       near ptr 0000000000002BFD
       mov       r8d,edx
       mov       r9d,r13d
       shr       r9d,10
       mov       [rdi+r8],r9b
       cmp       esi,2
       je        short 0000000000002B90
       add       edx,ecx
       cmp       edx,ebx
       jae       short 0000000000002BFD
       mov       r8d,edx
       mov       r9d,r13d
       shr       r9d,18
       mov       [rdi+r8],r9b
       cmp       dword ptr [rsp+30],0
       je        short 0000000000002BA3
       add       edx,ecx
       cmp       edx,ebx
       jae       short 0000000000002BFD
       mov       ecx,edx
       mov       [rdi+rcx],r12b
       add       rsp,38
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r12
       pop       r13
       pop       r14
       pop       r15
       ret
       call      00000000000065F0
       mov       rcx,offset MT_System.OverflowException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,34B
       mov       rdx,7FFF6C2A2AA0
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [1018]
       mov       rdx,rax
       mov       rcx,rsi
       call      qword ptr [3480]
       mov       rcx,rsi
       call      0000000000004690
       int       3
       call      0000000000006930
       int       3
; Total bytes of code 995

Compare Jit Disasm

; System.Numerics.Tests.Perf_BigInteger.ToByteArray(BigIntegerData)
       sub       rsp,58
       vxorps    xmm4,xmm4,xmm4
       vmovdqa   xmmword ptr [rsp+30],xmm4
       vmovdqa   xmmword ptr [rsp+40],xmm4
       xor       eax,eax
       mov       [rsp+50],rax
       add       rdx,18
       mov       r8,[rdx]
       mov       [rsp+48],r8
       mov       r8d,[rdx+8]
       mov       [rsp+50],r8d
       xor       r8d,r8d
       mov       [rsp+30],r8
       xor       r8d,r8d
       mov       [rsp+38],r8d
       mov       [rsp+20],r8d
       lea       r8,[rsp+40]
       mov       [rsp+28],r8
       lea       r8,[rsp+30]
       lea       rcx,[rsp+48]
       xor       edx,edx
       xor       r9d,r9d
       call      qword ptr [1648]
       nop
       add       rsp,58
       ret
; Total bytes of code 106
; System.Numerics.BigInteger.TryGetBytes(GetBytesMode, System.Span`1<Byte>, Boolean, Boolean, Int32 ByRef)
       push      r15
       push      r14
       push      r13
       push      r12
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,38
       mov       rsi,[rsp+0A8]
       mov       rdi,[r8]
       mov       ebx,[r8+8]
       mov       ebp,[rcx+8]
       test      ebp,ebp
       jne       short 00000000000028AE
       test      edx,edx
       je        short 0000000000002853
       cmp       edx,1
       je        short 000000000000286C
       jmp       short 0000000000002877
       xchg      ax,ax
       mov       rcx,offset MT_System.Byte[]
       mov       edx,1
       call      0000000000002C00
       jmp       near ptr 0000000000002BA3
       mov       dword ptr [rsi],1
       jmp       near ptr 0000000000002A75
       mov       dword ptr [rsi],1
       test      ebx,ebx
       je        near ptr 0000000000002A75
       mov       byte ptr [rdi],0
       mov       rcx,7FF9F8583090
       mov       edx,12
       call      0000000000002CB0
       mov       rdx,20A0C8090A8
       mov       rax,[rdx]
       jmp       near ptr 0000000000002BA3
       movzx     eax,r9b
       test      eax,eax
       je        short 00000000000028BE
       test      ebp,ebp
       jl        near ptr 0000000000002BB9
       xor       r14d,r14d
       mov       r15,[rcx]
       test      r15,r15
       jne       short 00000000000028E2
       test      ebp,ebp
       jl        short 00000000000028D1
       xor       ecx,ecx
       jmp       short 00000000000028D6
       mov       ecx,0FF
       movzx     r12d,cl
       mov       r13d,ebp
       jmp       short 0000000000002958
       nop       dword ptr [rax]
       cmp       ebp,0FFFFFFFF
       jne       short 000000000000293C
       mov       r12d,0FF
       mov       ecx,[r15+8]
       test      ecx,ecx
       je        near ptr 0000000000002BFD
       cmp       dword ptr [r15+10],0
       jne       short 0000000000002917
       inc       r14d
       cmp       r14d,ecx
       jae       near ptr 0000000000002BFD
       mov       r8d,r14d
       cmp       dword ptr [r15+r8*4+10],0
       je        short 0000000000002900
       lea       r8d,[rcx+0FFFF]
       cmp       r8d,ecx
       jae       near ptr 0000000000002BFD
       mov       ecx,r8d
       mov       ecx,[r15+rcx*4+10]
       mov       r13d,ecx
       not       r13d
       cmp       r8d,r14d
       jne       short 0000000000002958
       inc       r13d
       jmp       short 0000000000002958
       xor       r12d,r12d
       mov       ecx,[r15+8]
       lea       r8d,[rcx+0FFFF]
       cmp       r8d,ecx
       jae       near ptr 0000000000002BFD
       mov       ecx,r8d
       mov       r13d,[r15+rcx*4+10]
       mov       ecx,r13d
       shr       ecx,18
       movzx     ecx,cl
       cmp       ecx,r12d
       je        short 000000000000296E
       mov       r9d,3
       jmp       short 00000000000029A1
       mov       ecx,r13d
       shr       ecx,10
       movzx     ecx,cl
       cmp       ecx,r12d
       je        short 0000000000002984
       mov       r9d,2
       jmp       short 00000000000029A1
       mov       ecx,r13d
       shr       ecx,8
       movzx     ecx,cl
       cmp       ecx,r12d
       je        short 000000000000299A
       mov       r9d,1
       jmp       short 00000000000029A1
       movzx     ecx,r13b
       xor       r9d,r9d
       and       ecx,80
       mov       r8d,r12d
       and       r8d,80
       cmp       ecx,r8d
       je        short 00000000000029BF
       xor       ecx,ecx
       test      eax,eax
       sete      cl
       jmp       short 00000000000029C1
       xor       ecx,ecx
       movzx     eax,cl
       mov       [rsp+30],eax
       mov       [rsp+34],r9d
       lea       ecx,[r9+1]
       test      eax,eax
       jne       short 00000000000029DA
       xor       r8d,r8d
       jmp       short 00000000000029E0
       mov       r8d,1
       add       ecx,r8d
       test      r15,r15
       je        short 0000000000002A09
       mov       r8d,[r15+8]
       sub       r8d,1
       jo        near ptr 0000000000002BB4
       imul      r8d,4
       jo        near ptr 0000000000002BB4
       add       ecx,r8d
       jo        near ptr 0000000000002BB4
       test      edx,edx
       je        short 0000000000002A14
       cmp       edx,1
       je        short 0000000000002A33
       jmp       short 0000000000002A37
       mov       [rsp+2C],ecx
       movsxd    rdx,ecx
       mov       rcx,offset MT_System.Byte[]
       call      0000000000002C00
       lea       rdi,[rax+10]
       mov       ebx,[rax+8]
       jmp       short 0000000000002A62
       mov       [rsi],ecx
       jmp       short 0000000000002A75
       mov       [rsi],ecx
       mov       [rsp+2C],ecx
       cmp       ebx,ecx
       jl        short 0000000000002A75
       mov       rcx,7FF9F8583090
       mov       edx,12
       call      0000000000002CB0
       mov       rax,20A0C8090A8
       mov       rax,[rax]
       mov       esi,[rsp+0A0]
       movzx     ecx,sil
       test      ecx,ecx
       jne       short 0000000000002A88
       xor       edx,edx
       jmp       short 0000000000002A8F
       xor       eax,eax
       add       rsp,38
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r12
       pop       r13
       pop       r14
       pop       r15
       ret
       mov       esi,[rsp+2C]
       lea       edx,[rsi+0FFFF]
       test      ecx,ecx
       jne       short 0000000000002A9A
       mov       ecx,1
       jmp       short 0000000000002A9F
       mov       ecx,0FFFFFFFF
       test      r15,r15
       je        near ptr 0000000000002B2B
       xor       r8d,r8d
       mov       r9d,[r15+8]
       dec       r9d
       test      r9d,r9d
       jle       short 0000000000002B2B
       mov       r10d,r8d
       mov       r10d,[r15+r10*4+10]
       cmp       ebp,0FFFFFFFF
       jne       short 0000000000002ACF
       not       r10d
       cmp       r8d,r14d
       jg        short 0000000000002ACF
       inc       r10d
       cmp       edx,ebx
       jae       near ptr 0000000000002BFD
       mov       r11d,edx
       mov       [rdi+r11],r10b
       add       edx,ecx
       cmp       edx,ebx
       jae       near ptr 0000000000002BFD
       mov       r11d,edx
       mov       esi,r10d
       shr       esi,8
       mov       [rdi+r11],sil
       add       edx,ecx
       cmp       edx,ebx
       jae       near ptr 0000000000002BFD
       mov       r11d,edx
       mov       esi,r10d
       shr       esi,10
       mov       [rdi+r11],sil
       add       edx,ecx
       cmp       edx,ebx
       jae       near ptr 0000000000002BFD
       mov       r11d,edx
       shr       r10d,18
       mov       [rdi+r11],r10b
       add       edx,ecx
       inc       r8d
       cmp       r9d,r8d
       jg        short 0000000000002AB7
       cmp       edx,ebx
       jae       near ptr 0000000000002BFD
       mov       r8d,edx
       mov       [rdi+r8],r13b
       mov       esi,[rsp+34]
       test      esi,esi
       je        short 0000000000002B90
       add       edx,ecx
       cmp       edx,ebx
       jae       near ptr 0000000000002BFD
       mov       r8d,edx
       mov       r9d,r13d
       shr       r9d,8
       mov       [rdi+r8],r9b
       cmp       esi,1
       je        short 0000000000002B90
       add       edx,ecx
       cmp       edx,ebx
       jae       near ptr 0000000000002BFD
       mov       r8d,edx
       mov       r9d,r13d
       shr       r9d,10
       mov       [rdi+r8],r9b
       cmp       esi,2
       je        short 0000000000002B90
       add       edx,ecx
       cmp       edx,ebx
       jae       short 0000000000002BFD
       mov       r8d,edx
       mov       r9d,r13d
       shr       r9d,18
       mov       [rdi+r8],r9b
       cmp       dword ptr [rsp+30],0
       je        short 0000000000002BA3
       add       edx,ecx
       cmp       edx,ebx
       jae       short 0000000000002BFD
       mov       ecx,edx
       mov       [rdi+rcx],r12b
       add       rsp,38
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r12
       pop       r13
       pop       r14
       pop       r15
       ret
       call      000000000000A810
       mov       rcx,offset MT_System.OverflowException
       call      0000000000002AE0
       mov       rsi,rax
       mov       ecx,34B
       mov       rdx,7FF9F8582BE8
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [1018]
       mov       rdx,rax
       mov       rcx,rsi
       call      qword ptr [3480]
       mov       rcx,rsi
       call      0000000000002B00
       int       3
       call      000000000000AB50
       int       3
; Total bytes of code 995

Docs

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

### Run Information
Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in System.Tests.Perf_Array

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
ArrayResize - Duration of single invocation 100.24 ns 128.63 ns 1.28 0.18 False 657.1666666666666 837.25 1.2740299264519401 Trace Trace

graph
Test Report

Repro

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

Payloads

Baseline
Compare

Histogram

System.Tests.Perf_Array.ArrayResize


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 128.6268325 > 105.7096758173077.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -39.14629331379754 (T) = (0 -125.58176075299141) / Math.Sqrt((3.1118961163306795 / (20)) + (10.258895471383422 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.25015699591093254 = (100.45279206031695 - 125.58176075299141) / 100.45279206031695 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
; 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+80],0B
       jne       short 000000000000E155
       mov       rcx,[rbp+10]
       call      qword ptr [0B300]
       nop
       add       rsp,20
       pop       rbp
       ret
; Total bytes of code 44

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+80],0B
       jne       short 000000000000E1F5
       mov       rcx,[rbp+10]
       call      qword ptr [0B300]
       nop
       add       rsp,20
       pop       rbp
       ret
; Total bytes of code 44

Docs

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

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in System.Collections.CtorDefaultSizeNonGeneric

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
ArrayList - Duration of single invocation 4.35 ns 6.35 ns 1.46 0.16 False Trace Trace
Stack - Duration of single invocation 11.40 ns 12.41 ns 1.09 0.12 False Trace Trace

graph
graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Collections.CtorDefaultSizeNonGeneric*'

Payloads

Baseline
Compare

Histogram

System.Collections.CtorDefaultSizeNonGeneric.ArrayList


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 6.349900159528348 > 4.665627355285841.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -17.850062885980364 (T) = (0 -6.281287252496692) / Math.Sqrt((0.15152383853908083 / (20)) + (0.04016358805409424 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.3572829154659268 = (4.627839325849362 - 6.281287252496692) / 4.627839325849362 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.Collections.CtorDefaultSizeNonGeneric.ArrayList()
       push      rsi
       sub       rsp,20
       mov       rcx,offset MT_System.Collections.ArrayList
       call      000000000000C390
       mov       rsi,rax
       mov       rdx,1FD3DC01FF8
       mov       rdx,[rdx]
       lea       rcx,[rsi+8]
       call      0000000000000010
       mov       rax,rsi
       add       rsp,20
       pop       rsi
       ret
; Total bytes of code 54

Compare Jit Disasm

; System.Collections.CtorDefaultSizeNonGeneric.ArrayList()
       push      rsi
       sub       rsp,20
       mov       rcx,offset MT_System.Collections.ArrayList
       call      0000000000002AE0
       mov       rsi,rax
       mov       rdx,1AE24801FF8
       mov       rdx,[rdx]
       lea       rcx,[rsi+8]
       call      0000000000000010
       mov       rax,rsi
       add       rsp,20
       pop       rsi
       ret
; Total bytes of code 54

System.Collections.CtorDefaultSizeNonGeneric.Stack


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 12.414858880552014 > 12.013110389620458.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -23.183718536412478 (T) = (0 -12.662280430428078) / Math.Sqrt((0.02506237368913924 / (20)) + (0.05871379775120969 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.1055910344236124 = (11.452951440610603 - 12.662280430428078) / 11.452951440610603 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.Collections.CtorDefaultSizeNonGeneric.Stack()
       push      rsi
       sub       rsp,20
       mov       rcx,offset MT_System.Collections.Stack
       call      000000000000C390
       mov       rsi,rax
       mov       rcx,offset MT_System.Object[]
       mov       edx,0A
       call      000000000000C510
       lea       rcx,[rsi+8]
       mov       rdx,rax
       call      0000000000000010
       xor       eax,eax
       mov       [rsi+10],eax
       mov       [rsi+14],eax
       mov       rax,rsi
       add       rsp,20
       pop       rsi
       ret
; Total bytes of code 72

Compare Jit Disasm

; System.Collections.CtorDefaultSizeNonGeneric.Stack()
       push      rsi
       sub       rsp,20
       mov       rcx,offset MT_System.Collections.Stack
       call      0000000000002AE0
       mov       rsi,rax
       mov       rcx,offset MT_System.Object[]
       mov       edx,0A
       call      0000000000002C60
       lea       rcx,[rsi+8]
       mov       rdx,rax
       call      0000000000000010
       xor       eax,eax
       mov       [rsi+10],eax
       mov       [rsi+14],eax
       mov       rax,rsi
       add       rsp,20
       pop       rsi
       ret
; Total bytes of code 72

Docs

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

@performanceautofiler
Copy link
Author

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in System.Tests.Perf_Int16

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
ToString - Duration of single invocation 12.10 ns 13.76 ns 1.14 0.06 False Trace Trace

graph
Test Report

Repro

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

Payloads

Baseline
Compare

Histogram

System.Tests.Perf_Int16.ToString(value: 32767)


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 13.756061183541616 > 12.157771960058437.
IsChangePoint: Marked as a change because one of 6/27/2022 8:54:23 AM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -36.894595702433605 (T) = (0 -14.303807128445163) / Math.Sqrt((0.04306353375013142 / (20)) + (0.15500533332627361 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.2504169716470244 = (11.439229835152087 - 14.303807128445163) / 11.439229835152087 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_Int16.ToString(Int16)
       sub       rsp,28
       movsx     rcx,dx
       call      qword ptr [9300]
       nop
       add       rsp,28
       ret
; Total bytes of code 20
; System.Number.Int32ToDecStr(Int32)
       push      rdi
       push      rsi
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       mov       esi,ecx
       test      esi,esi
       jl        near ptr 000000000000F5DD
       mov       ecx,esi
       mov       eax,1
       cmp       ecx,186A0
       jae       near ptr 000000000000F5C3
       cmp       ecx,0A
       jae       short 000000000000F53A
       mov       edi,eax
       cmp       edi,1
       jne       short 000000000000F543
       mov       rcx,1B3610002C8
       mov       rcx,[rcx]
       cmp       esi,[rcx+8]
       jae       near ptr 000000000000F603
       mov       eax,esi
       mov       rax,[rcx+rax*8+10]
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       ecx,64
       jae       short 000000000000F59B
       inc       eax
       jmp       short 000000000000F50F
       mov       ecx,edi
       call      0
       test      rax,rax
       je        near ptr 000000000000F5FC
       lea       rdx,[rax+0C]
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       movsxd    rcx,edi
       lea       rdx,[rdx+rcx*2]
       mov       ecx,0CCCCCCCD
       mov       r8d,esi
       imul      rcx,r8
       shr       rcx,23
       lea       r8d,[rcx+rcx*4]
       add       r8d,r8d
       sub       esi,r8d
       add       rdx,0FFFFFFFFFFFFFFFE
       add       esi,30
       mov       [rdx],si
       test      ecx,ecx
       mov       esi,ecx
       jne       short 000000000000F568
       xor       edx,edx
       mov       [rsp+20],rdx
       jmp       short 000000000000F533
       cmp       ecx,3E8
       jae       short 000000000000F5AB
       add       eax,2
       jmp       near ptr 000000000000F50F
       cmp       ecx,2710
       jae       short 000000000000F5BB
       add       eax,3
       jmp       near ptr 000000000000F50F
       add       eax,4
       jmp       near ptr 000000000000F50F
       mov       ecx,esi
       shr       ecx,5
       imul      rcx,0A7C5AC5
       shr       rcx,27
       mov       eax,6
       jmp       near ptr 000000000000F50A
       call      qword ptr [5858]
       mov       r8,[rax+28]
       mov       ecx,esi
       mov       edx,0FFFFFFFF
       call      qword ptr [9318]
       nop
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       xor       edx,edx
       jmp       near ptr 000000000000F561
       call      0000000000006930
       int       3
; Total bytes of code 297

Compare Jit Disasm

; System.Tests.Perf_Int16.ToString(Int16)
       sub       rsp,28
       movsx     rcx,dx
       call      qword ptr [9300]
       nop
       add       rsp,28
       ret
; Total bytes of code 20
; System.Number.Int32ToDecStr(Int32)
       push      rdi
       push      rsi
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       mov       esi,ecx
       test      esi,esi
       jl        near ptr 000000000000F5DD
       mov       ecx,esi
       mov       eax,1
       cmp       ecx,186A0
       jae       near ptr 000000000000F5C3
       cmp       ecx,0A
       jae       short 000000000000F53A
       mov       edi,eax
       cmp       edi,1
       jne       short 000000000000F543
       mov       rcx,25D8C8002C8
       mov       rcx,[rcx]
       cmp       esi,[rcx+8]
       jae       near ptr 000000000000F603
       mov       eax,esi
       mov       rax,[rcx+rax*8+10]
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       ecx,64
       jae       short 000000000000F59B
       inc       eax
       jmp       short 000000000000F50F
       mov       ecx,edi
       call      0
       test      rax,rax
       je        near ptr 000000000000F5FC
       lea       rdx,[rax+0C]
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       movsxd    rcx,edi
       lea       rdx,[rdx+rcx*2]
       mov       ecx,0CCCCCCCD
       mov       r8d,esi
       imul      rcx,r8
       shr       rcx,23
       lea       r8d,[rcx+rcx*4]
       add       r8d,r8d
       sub       esi,r8d
       add       rdx,0FFFFFFFFFFFFFFFE
       add       esi,30
       mov       [rdx],si
       test      ecx,ecx
       mov       esi,ecx
       jne       short 000000000000F568
       xor       edx,edx
       mov       [rsp+20],rdx
       jmp       short 000000000000F533
       cmp       ecx,3E8
       jae       short 000000000000F5AB
       add       eax,2
       jmp       near ptr 000000000000F50F
       cmp       ecx,2710
       jae       short 000000000000F5BB
       add       eax,3
       jmp       near ptr 000000000000F50F
       add       eax,4
       jmp       near ptr 000000000000F50F
       mov       ecx,esi
       shr       ecx,5
       imul      rcx,0A7C5AC5
       shr       rcx,27
       mov       eax,6
       jmp       near ptr 000000000000F50A
       call      qword ptr [5858]
       mov       r8,[rax+28]
       mov       ecx,esi
       mov       edx,0FFFFFFFF
       call      qword ptr [9318]
       nop
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       xor       edx,edx
       jmp       near ptr 000000000000F561
       call      000000000000AB50
       int       3
; Total bytes of code 297

Docs

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

### Run Information
Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in System.Tests.Perf_GC<Byte>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
AllocateUninitializedArray - Duration of single invocation 435.67 ns 523.37 ns 1.20 0.01 False
AllocateArray - Duration of single invocation 699.96 ns 776.90 ns 1.11 0.01 False
AllocateUninitializedArray - Duration of single invocation 176.90 ns 189.86 ns 1.07 0.01 False
AllocateUninitializedArray - Duration of single invocation 43.49 ns 46.10 ns 1.06 0.21 False

graph
graph
graph
graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Tests.Perf_GC&lt;Byte&gt;*'

Payloads

Baseline
Compare

Histogram

System.Tests.Perf_GC<Byte>.AllocateUninitializedArray(length: 10000, pinned: True)


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.3681565219284 > 452.8249394787412.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -64.2386338196772 (T) = (0 -529.0355374674971) / Math.Sqrt((17.43161077799998 / (20)) + (53.329818864331095 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.2199603039179217 = (433.64979644705744 - 529.0355374674971) / 433.64979644705744 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.

```#### System.Tests.Perf_GC&lt;Byte&gt;.AllocateArray(length: 10000, pinned: True)

```log

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 776.8973268741505 > 706.8051003397796.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -38.07211917203886 (T) = (0 -774.8242518288273) / Math.Sqrt((80.07426649258561 / (20)) + (81.67644257468983 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.13741832375922503 = (681.2130907720864 - 774.8242518288273) / 681.2130907720864 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.

```#### System.Tests.Perf_GC&lt;Byte&gt;.AllocateUninitializedArray(length: 1000, pinned: True)

```log

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 189.85690272350948 > 187.41165283864103.
IsChangePoint: Marked as a change because one of 6/17/2022 8:24:28 PM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -19.41417524311558 (T) = (0 -190.20227229306644) / Math.Sqrt((3.561033392667478 / (20)) + (4.608983440271304 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.058510935943699785 = (179.68852832256704 - 190.20227229306644) / 179.68852832256704 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.

```#### System.Tests.Perf_GC&lt;Byte&gt;.AllocateUninitializedArray(length: 1000, pinned: False)

```log

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 46.097186020970874 > 45.673160389643606.
IsChangePoint: Marked as a change because one of 8/9/2022 4:14:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -8.517798222005593 (T) = (0 -46.46054311704352) / Math.Sqrt((1.0377024639193047 / (21)) + (0.8548667229052257 / (39))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (21) + (39) - 2, .025) and -0.05148673386232912 = (44.185572314720794 - 46.46054311704352) / 44.185572314720794 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.

Docs

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

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in System.Collections.CtorDefaultSize<Int32>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
Stack - Duration of single invocation 4.29 ns 6.47 ns 1.51 0.21 False
LinkedList - Duration of single invocation 3.14 ns 4.68 ns 1.49 0.34 False
Dictionary - Duration of single invocation 4.95 ns 6.69 ns 1.35 0.17 False
ConcurrentStack - Duration of single invocation 2.48 ns 4.45 ns 1.79 0.36 False
SortedSet - Duration of single invocation 4.89 ns 6.52 ns 1.33 0.15 False
SortedList - Duration of single invocation 10.24 ns 12.18 ns 1.19 0.14 False
Queue - Duration of single invocation 4.63 ns 6.75 ns 1.46 0.12 False
List - Duration of single invocation 4.28 ns 5.89 ns 1.38 0.20 False
HashSet - Duration of single invocation 4.10 ns 5.96 ns 1.46 0.20 False

graph
graph
graph
graph
graph
graph
graph
graph
graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Collections.CtorDefaultSize&lt;Int32&gt;*'

Payloads

Baseline
Compare

Histogram

System.Collections.CtorDefaultSize<Int32>.Stack


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 6.470786113573551 > 4.589809042757351.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -33.192463352110785 (T) = (0 -6.2681113251720415) / Math.Sqrt((0.02124096543375175 / (20)) + (0.07312174429842645 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.39797784609113385 = (4.483698609887288 - 6.2681113251720415) / 4.483698609887288 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.

```#### System.Collections.CtorDefaultSize&lt;Int32&gt;.LinkedList

```log

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 4.677195807072021 > 3.1049666724938927.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -47.873913723771594 (T) = (0 -4.79599633353647) / Math.Sqrt((0.012212565048682525 / (20)) + (0.030254292021756893 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.5849475954772169 = (3.0259652415147698 - 4.79599633353647) / 3.0259652415147698 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.

```#### System.Collections.CtorDefaultSize&lt;Int32&gt;.Dictionary

```log

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 6.685929206811964 > 4.993871900371687.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -43.98454551328586 (T) = (0 -6.577188697175667) / Math.Sqrt((0.016405424078826874 / (20)) + (0.03147224813533291 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.36628542791699137 = (4.813919963417237 - 6.577188697175667) / 4.813919963417237 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.

```#### System.Collections.CtorDefaultSize&lt;Int32&gt;.ConcurrentStack

```log

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 4.451034041307593 > 2.4486309177770247.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -61.395843424324596 (T) = (0 -4.1694514600738914) / Math.Sqrt((0.005833316896680374 / (20)) + (0.022126219085355725 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.748247867886203 = (2.384931528682573 - 4.1694514600738914) / 2.384931528682573 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.

```#### System.Collections.CtorDefaultSize&lt;Int32&gt;.SortedSet

```log

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 6.518215879675685 > 5.13843160387654.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -23.646750193540715 (T) = (0 -6.685774548009164) / Math.Sqrt((0.07152410739227569 / (20)) + (0.03050464831173529 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.30373510650419855 = (5.128169453023495 - 6.685774548009164) / 5.128169453023495 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.

```#### System.Collections.CtorDefaultSize&lt;Int32&gt;.SortedList

```log

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 12.180633856979304 > 10.878618365457568.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -14.421371197260138 (T) = (0 -12.191097669105726) / Math.Sqrt((0.19775575463751055 / (20)) + (0.01839306595680866 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.13679349385310702 = (10.724109290760088 - 12.191097669105726) / 10.724109290760088 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.

```#### System.Collections.CtorDefaultSize&lt;Int32&gt;.Queue

```log

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 6.752356161878487 > 4.801494616274443.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -55.65624469022207 (T) = (0 -6.504311063826238) / Math.Sqrt((0.008046887416547481 / (20)) + (0.028506412943562574 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.40002448641411953 = (4.645855216779615 - 6.504311063826238) / 4.645855216779615 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.

```#### System.Collections.CtorDefaultSize&lt;Int32&gt;.List

```log

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.886581529341046 > 4.66189350237304.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -17.030581924161464 (T) = (0 -6.025782238472299) / Math.Sqrt((0.12494509873958554 / (20)) + (0.039538468315041216 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.3165038181061331 = (4.577109580389015 - 6.025782238472299) / 4.577109580389015 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.

```#### System.Collections.CtorDefaultSize&lt;Int32&gt;.HashSet

```log

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.964542127094708 > 4.2792831525689135.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -17.54067257346122 (T) = (0 -6.147588961003239) / Math.Sqrt((0.21212322496574285 / (20)) + (0.03990376384253138 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.44374163968238783 = (4.258094933353631 - 6.147588961003239) / 4.258094933353631 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.

Docs

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

@performanceautofiler
Copy link
Author

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in Microsoft.Extensions.DependencyInjection.GetService

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
NoDI - Duration of single invocation 2.39 ns 3.79 ns 1.58 0.33 False Trace Trace
Transient - Duration of single invocation 28.29 ns 31.30 ns 1.11 0.36 False 277.22736978785525 288.0521682998485 1.039046644349282 Trace Trace

graph
graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'Microsoft.Extensions.DependencyInjection.GetService*'

Payloads

Baseline
Compare

Histogram

Microsoft.Extensions.DependencyInjection.GetService.NoDI


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 3.7852503684934646 > 2.507731367679689.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -49.50544546392655 (T) = (0 -3.9234027066616504) / Math.Sqrt((0.004421348503006363 / (20)) + (0.02848542408038713 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.6272306464763667 = (2.411091946404435 - 3.9234027066616504) / 2.411091946404435 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
; Microsoft.Extensions.DependencyInjection.GetService.NoDI()
       sub       rsp,28
       mov       rcx,offset MT_Microsoft.Extensions.DependencyInjection.ServiceProviderEngineBenchmark+A
       call      000000000000C390
       nop
       add       rsp,28
       ret
; Total bytes of code 25

Compare Jit Disasm

; Microsoft.Extensions.DependencyInjection.GetService.NoDI()
       sub       rsp,28
       mov       rcx,offset MT_Microsoft.Extensions.DependencyInjection.ServiceProviderEngineBenchmark+A
       call      0000000000002AE0
       nop
       add       rsp,28
       ret
; Total bytes of code 25

Microsoft.Extensions.DependencyInjection.GetService.Transient


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 31.29840814862656 > 30.29498246319837.
IsChangePoint: Marked as a change because one of 6/28/2022 10:14:54 AM, 7/24/2022 10:50:09 PM, 8/12/2022 9:58:48 AM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -3.7804845652205743 (T) = (0 -33.09333814326374) / Math.Sqrt((4.773680182149249 / (39)) + (6.595253275497794 / (20))) is less than -2.0024654592901125 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (39) + (20) - 2, .025) and -0.08320841601459109 = (30.5512195566416 - 33.09333814326374) / 30.5512195566416 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
; Microsoft.Extensions.DependencyInjection.GetService.Transient()
       push      rsi
       sub       rsp,20
       mov       rsi,[rcx+8]
       test      rsi,rsi
       je        short 000000000000C38C
       mov       rcx,offset MT_Microsoft.Extensions.DependencyInjection.ServiceProviderEngineBenchmark+A
       call      000000000000D240
       mov       rdx,rax
       mov       rcx,rsi
       mov       r11,7FFEBF5D0560
       call      qword ptr [r11]
       mov       r8,rax
       test      r8,r8
       je        short 000000000000C383
       mov       rcx,offset MT_Microsoft.Extensions.DependencyInjection.ServiceProviderEngineBenchmark+A
       cmp       [r8],rcx
       je        short 000000000000C383
       mov       rdx,rax
       call      qword ptr [0B8B8]
       mov       r8,rax
       mov       rax,r8
       add       rsp,20
       pop       rsi
       ret
       mov       ecx,360
       mov       rdx,7FFEBFC20F28
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [71B0]
       int       3
; Total bytes of code 122

Compare Jit Disasm

; Microsoft.Extensions.DependencyInjection.GetService.Transient()
       push      rsi
       sub       rsp,20
       mov       rsi,[rcx+8]
       test      rsi,rsi
       je        short 000000000000C38C
       mov       rcx,offset MT_Microsoft.Extensions.DependencyInjection.ServiceProviderEngineBenchmark+A
       call      0000000000005E90
       mov       rdx,rax
       mov       rcx,rsi
       mov       r11,7FFE84820560
       call      qword ptr [r11]
       mov       r8,rax
       test      r8,r8
       je        short 000000000000C383
       mov       rcx,offset MT_Microsoft.Extensions.DependencyInjection.ServiceProviderEngineBenchmark+A
       cmp       [r8],rcx
       je        short 000000000000C383
       mov       rdx,rax
       call      qword ptr [0B8B8]
       mov       r8,rax
       mov       rax,r8
       add       rsp,20
       pop       rsi
       ret
       mov       ecx,360
       mov       rdx,7FFE84E70FA0
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [71B0]
       int       3
; Total bytes of code 122

Docs

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

### Run Information
Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in System.Text.Tests.Perf_Encoding

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
GetChars - Duration of single invocation 29.99 ns 33.93 ns 1.13 0.01 False 367.9115805523227 379.1011793872403 1.0304138261103915 Trace Trace
GetEncoder - Duration of single invocation 7.57 ns 9.30 ns 1.23 0.17 False 76.44415332811516 79.34593515288546 1.0379594998235537 Trace Trace
GetString - Duration of single invocation 24.84 ns 26.98 ns 1.09 0.04 False 305.95906893119394 317.332449645762 1.03717288313858 Trace Trace
GetEncoder - Duration of single invocation 7.55 ns 9.08 ns 1.20 0.18 False 76.43639984981009 79.84337002968786 1.0445726144424925 Trace Trace
GetBytes - Duration of single invocation 19.80 ns 21.10 ns 1.07 0.05 False Trace Trace

graph
graph
graph
graph
graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Text.Tests.Perf_Encoding*'

Payloads

Baseline
Compare

Histogram

System.Text.Tests.Perf_Encoding.GetChars(size: 16, encName: "utf-8")


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 33.926243644992276 > 31.230915095877418.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -20.743945411136878 (T) = (0 -32.66492185244365) / Math.Sqrt((0.13822395416538674 / (20)) + (0.41740743157517185 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.0912742141628035 = (29.93282662461085 - 32.66492185244365) / 29.93282662461085 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.Text.Tests.Perf_Encoding.GetChars()
       mov       [rsp+8],rcx
       mov       rax,[rcx+10]
       mov       rcx,rax
       mov       rdx,[rsp+8]
       mov       rdx,[rdx+20]
       mov       rax,[rax]
       mov       rax,[rax+60]
       jmp       qword ptr [rax+10]
; Total bytes of code 32

Compare Jit Disasm

; System.Text.Tests.Perf_Encoding.GetChars()
       mov       [rsp+8],rcx
       mov       rax,[rcx+10]
       mov       rcx,rax
       mov       rdx,[rsp+8]
       mov       rdx,[rdx+20]
       mov       rax,[rax]
       mov       rax,[rax+60]
       jmp       qword ptr [rax+10]
; Total bytes of code 32

System.Text.Tests.Perf_Encoding.GetEncoder(size: 16, encName: "ascii")


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 9.295350757793619 > 7.87446730379944.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -12.225365986462801 (T) = (0 -9.23860001386331) / Math.Sqrt((0.23621698584078935 / (20)) + (0.0788802641372791 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.18392938173281548 = (7.803337054057707 - 9.23860001386331) / 7.803337054057707 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.Text.Tests.Perf_Encoding.GetEncoder()
       mov       rcx,[rcx+10]
       mov       rax,[rcx]
       mov       rax,[rax+68]
       jmp       qword ptr [rax+10]
; Total bytes of code 15

Compare Jit Disasm

; System.Text.Tests.Perf_Encoding.GetEncoder()
       mov       rcx,[rcx+10]
       mov       rax,[rcx]
       mov       rax,[rax+68]
       jmp       qword ptr [rax+10]
; Total bytes of code 15

System.Text.Tests.Perf_Encoding.GetString(size: 16, encName: "ascii")


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 26.97508527786508 > 26.069942162579313.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -19.67651283380698 (T) = (0 -26.909335457227588) / Math.Sqrt((0.09945381434117727 / (20)) + (0.18101776813792286 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.07673113057581112 = (24.991694484431868 - 26.909335457227588) / 24.991694484431868 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.Text.Tests.Perf_Encoding.GetString()
       mov       [rsp+8],rcx
       mov       rax,[rcx+10]
       mov       rcx,rax
       mov       rdx,[rsp+8]
       mov       rdx,[rdx+20]
       mov       rax,[rax]
       mov       rax,[rax+68]
       jmp       qword ptr [rax+28]
; Total bytes of code 32

Compare Jit Disasm

; System.Text.Tests.Perf_Encoding.GetString()
       mov       [rsp+8],rcx
       mov       rax,[rcx+10]
       mov       rcx,rax
       mov       rdx,[rsp+8]
       mov       rdx,[rdx+20]
       mov       rax,[rax]
       mov       rax,[rax+68]
       jmp       qword ptr [rax+28]
; Total bytes of code 32

System.Text.Tests.Perf_Encoding.GetEncoder(size: 512, encName: "ascii")


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 9.079221861086449 > 7.958330484303827.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -21.513458279197636 (T) = (0 -9.245481712605804) / Math.Sqrt((0.05598898260743587 / (20)) + (0.09937499495946367 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.2035770148365556 = (7.681670220215471 - 9.245481712605804) / 7.681670220215471 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.Text.Tests.Perf_Encoding.GetEncoder()
       mov       rcx,[rcx+10]
       mov       rax,[rcx]
       mov       rax,[rax+68]
       jmp       qword ptr [rax+10]
; Total bytes of code 15

Compare Jit Disasm

; System.Text.Tests.Perf_Encoding.GetEncoder()
       mov       rcx,[rcx+10]
       mov       rax,[rcx]
       mov       rax,[rax+68]
       jmp       qword ptr [rax+10]
; Total bytes of code 15

System.Text.Tests.Perf_Encoding.GetBytes(size: 16, encName: "utf-8")


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 21.103960346990068 > 20.467336992674717.
IsChangePoint: Marked as a change because one of 7/2/2022 7:35:06 PM, 7/6/2022 3:55:24 AM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -27.84679969484177 (T) = (0 -21.199606504343503) / Math.Sqrt((0.035878301767625874 / (20)) + (0.08688615423634008 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.09018353153387962 = (19.44590602512205 - 21.199606504343503) / 19.44590602512205 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.Text.Tests.Perf_Encoding.GetBytes()
       mov       [rsp+8],rcx
       mov       rax,[rcx+10]
       mov       rcx,rax
       mov       rdx,[rsp+8]
       mov       rdx,[rdx+18]
       mov       rax,[rax]
       mov       rax,[rax+58]
       jmp       qword ptr [rax+10]
; Total bytes of code 32

Compare Jit Disasm

; System.Text.Tests.Perf_Encoding.GetBytes()
       mov       [rsp+8],rcx
       mov       rax,[rcx+10]
       mov       rcx,rax
       mov       rdx,[rsp+8]
       mov       rdx,[rdx+18]
       mov       rax,[rax]
       mov       rax,[rax+58]
       jmp       qword ptr [rax+10]
; Total bytes of code 32

Docs

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

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in System.Tests.Perf_Version

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
Ctor2 - Duration of single invocation 4.55 ns 5.67 ns 1.25 0.20 False Trace Trace
Ctor3 - Duration of single invocation 4.71 ns 5.81 ns 1.23 0.22 False Trace Trace
Ctor4 - Duration of single invocation 5.02 ns 6.36 ns 1.27 0.17 False 58.815554863439864 69.75776892877016 1.1860428604428936 Trace Trace

graph
graph
graph
Test Report

Repro

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

Payloads

Baseline
Compare

Histogram

System.Tests.Perf_Version.Ctor2


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.668523920861539 > 4.754215566975446.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -8.555843300217264 (T) = (0 -5.784108860185962) / Math.Sqrt((0.18689133019638365 / (17)) + (0.036155885379870294 / (40))) is less than -2.0040447832881556 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (17) + (40) - 2, .025) and -0.19238479107363873 = (4.850874401859718 - 5.784108860185962) / 4.850874401859718 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_Version.Ctor2()
       push      rsi
       sub       rsp,20
       mov       rcx,offset MT_System.Version
       call      000000000000C390
       mov       rsi,rax
       mov       rcx,rsi
       mov       edx,1
       mov       r8d,2
       call      qword ptr [1030]
       mov       rax,rsi
       add       rsp,20
       pop       rsi
       ret
; Total bytes of code 52
; System.Version..ctor(Int32, Int32)
       push      rdi
       push      rsi
       sub       rsp,28
       test      edx,edx
       jl        short 000000000000F41B
       test      r8d,r8d
       jl        short 000000000000F478
       mov       [rcx+8],edx
       mov       [rcx+0C],r8d
       mov       dword ptr [rcx+10],0FFFFFFFF
       mov       dword ptr [rcx+14],0FFFFFFFF
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,13F04
       mov       rdx,7FFE96E24000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,0A7B1
       mov       rdx,7FFE96E24000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [57E0]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,13F10
       mov       rdx,7FFE96E24000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,0A7B1
       mov       rdx,7FFE96E24000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [57E0]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       int       3
; Total bytes of code 230

Compare Jit Disasm

; System.Tests.Perf_Version.Ctor2()
       push      rsi
       sub       rsp,20
       mov       rcx,offset MT_System.Version
       call      0000000000002AE0
       mov       rsi,rax
       mov       rcx,rsi
       mov       edx,1
       mov       r8d,2
       call      qword ptr [1030]
       mov       rax,rsi
       add       rsp,20
       pop       rsi
       ret
; Total bytes of code 52
; System.Version..ctor(Int32, Int32)
       push      rdi
       push      rsi
       sub       rsp,28
       test      edx,edx
       jl        short 000000000000F41B
       test      r8d,r8d
       jl        short 000000000000F478
       mov       [rcx+8],edx
       mov       [rcx+0C],r8d
       mov       dword ptr [rcx+10],0FFFFFFFF
       mov       dword ptr [rcx+14],0FFFFFFFF
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      0000000000002AE0
       mov       rsi,rax
       mov       ecx,13F76
       mov       rdx,7FFED9154000
       call      000000000000A140
       mov       rdi,rax
       mov       ecx,0A7B1
       mov       rdx,7FFED9154000
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [57E0]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000002B00
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      0000000000002AE0
       mov       rsi,rax
       mov       ecx,13F82
       mov       rdx,7FFED9154000
       call      000000000000A140
       mov       rdi,rax
       mov       ecx,0A7B1
       mov       rdx,7FFED9154000
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [57E0]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000002B00
       int       3
; Total bytes of code 230

System.Tests.Perf_Version.Ctor3


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.807951337039416 > 4.951713843976096.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -24.37474551196403 (T) = (0 -5.948229923127497) / Math.Sqrt((0.006242402528577049 / (20)) + (0.07891965710663092 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.2436066095002034 = (4.783047852663028 - 5.948229923127497) / 4.783047852663028 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_Version.Ctor3()
       push      rsi
       sub       rsp,20
       mov       rcx,offset MT_System.Version
       call      000000000000C390
       mov       rsi,rax
       mov       rcx,rsi
       mov       edx,1
       mov       r8d,2
       mov       r9d,3
       call      qword ptr [1018]
       mov       rax,rsi
       add       rsp,20
       pop       rsi
       ret
; Total bytes of code 58
; System.Version..ctor(Int32, Int32, Int32)
       push      rdi
       push      rsi
       sub       rsp,28
       test      edx,edx
       jl        short 000000000000F425
       test      r8d,r8d
       jl        near ptr 000000000000F482
       test      r9d,r9d
       jl        near ptr 000000000000F4DF
       mov       [rcx+8],edx
       mov       [rcx+0C],r8d
       mov       [rcx+10],r9d
       mov       dword ptr [rcx+14],0FFFFFFFF
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,13F04
       mov       rdx,7FF7F0AC4000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,0A7B1
       mov       rdx,7FF7F0AC4000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [57E0]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,13F10
       mov       rdx,7FF7F0AC4000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,0A7B1
       mov       rdx,7FF7F0AC4000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [57E0]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,13F1C
       mov       rdx,7FF7F0AC4000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,0A7B1
       mov       rdx,7FF7F0AC4000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [57E0]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       int       3
; Total bytes of code 333

Compare Jit Disasm

; System.Tests.Perf_Version.Ctor3()
       push      rsi
       sub       rsp,20
       mov       rcx,offset MT_System.Version
       call      0000000000002AE0
       mov       rsi,rax
       mov       rcx,rsi
       mov       edx,1
       mov       r8d,2
       mov       r9d,3
       call      qword ptr [1018]
       mov       rax,rsi
       add       rsp,20
       pop       rsi
       ret
; Total bytes of code 58
; System.Version..ctor(Int32, Int32, Int32)
       push      rdi
       push      rsi
       sub       rsp,28
       test      edx,edx
       jl        short 000000000000F425
       test      r8d,r8d
       jl        near ptr 000000000000F482
       test      r9d,r9d
       jl        near ptr 000000000000F4DF
       mov       [rcx+8],edx
       mov       [rcx+0C],r8d
       mov       [rcx+10],r9d
       mov       dword ptr [rcx+14],0FFFFFFFF
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      0000000000002AE0
       mov       rsi,rax
       mov       ecx,13F76
       mov       rdx,7FFCD6424000
       call      000000000000A140
       mov       rdi,rax
       mov       ecx,0A7B1
       mov       rdx,7FFCD6424000
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [57E0]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000002B00
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      0000000000002AE0
       mov       rsi,rax
       mov       ecx,13F82
       mov       rdx,7FFCD6424000
       call      000000000000A140
       mov       rdi,rax
       mov       ecx,0A7B1
       mov       rdx,7FFCD6424000
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [57E0]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000002B00
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      0000000000002AE0
       mov       rsi,rax
       mov       ecx,13F8E
       mov       rdx,7FFCD6424000
       call      000000000000A140
       mov       rdi,rax
       mov       ecx,0A7B1
       mov       rdx,7FFCD6424000
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [57E0]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000002B00
       int       3
; Total bytes of code 333

System.Tests.Perf_Version.Ctor4


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 6.3560675495200645 > 5.186516316509947.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -33.54862603331765 (T) = (0 -6.471727356758629) / Math.Sqrt((0.03365866298303315 / (20)) + (0.03345017875923697 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.351692039612352 = (4.787871177087525 - 6.471727356758629) / 4.787871177087525 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_Version.Ctor4()
       push      rsi
       sub       rsp,30
       mov       rcx,offset MT_System.Version
       call      000000000000C390
       mov       rsi,rax
       mov       dword ptr [rsp+20],4
       mov       rcx,rsi
       mov       edx,1
       mov       r8d,2
       mov       r9d,3
       call      qword ptr [1000]
       mov       rax,rsi
       add       rsp,30
       pop       rsi
       ret
; Total bytes of code 66
; System.Version..ctor(Int32, Int32, Int32, Int32)
       push      rdi
       push      rsi
       sub       rsp,28
       mov       eax,[rsp+60]
       test      edx,edx
       jl        short 000000000000F44D
       test      r8d,r8d
       jl        near ptr 000000000000F4AA
       test      r9d,r9d
       jl        near ptr 000000000000F507
       test      eax,eax
       jl        near ptr 000000000000F564
       mov       [rcx+8],edx
       mov       [rcx+0C],r8d
       mov       [rcx+10],r9d
       mov       [rcx+14],eax
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,13F04
       mov       rdx,7FFB18D54000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,0A7B1
       mov       rdx,7FFB18D54000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [57E0]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,13F10
       mov       rdx,7FFB18D54000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,0A7B1
       mov       rdx,7FFB18D54000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [57E0]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,13F1C
       mov       rdx,7FFB18D54000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,0A7B1
       mov       rdx,7FFB18D54000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [57E0]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,13F28
       mov       rdx,7FFB18D54000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,0A7B1
       mov       rdx,7FFB18D54000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [57E0]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       int       3
; Total bytes of code 434

Compare Jit Disasm

; System.Tests.Perf_Version.Ctor4()
       push      rsi
       sub       rsp,30
       mov       rcx,offset MT_System.Version
       call      0000000000002AE0
       mov       rsi,rax
       mov       dword ptr [rsp+20],4
       mov       rcx,rsi
       mov       edx,1
       mov       r8d,2
       mov       r9d,3
       call      qword ptr [1000]
       mov       rax,rsi
       add       rsp,30
       pop       rsi
       ret
; Total bytes of code 66
; System.Version..ctor(Int32, Int32, Int32, Int32)
       push      rdi
       push      rsi
       sub       rsp,28
       mov       eax,[rsp+60]
       test      edx,edx
       jl        short 000000000000F44D
       test      r8d,r8d
       jl        near ptr 000000000000F4AA
       test      r9d,r9d
       jl        near ptr 000000000000F507
       test      eax,eax
       jl        near ptr 000000000000F564
       mov       [rcx+8],edx
       mov       [rcx+0C],r8d
       mov       [rcx+10],r9d
       mov       [rcx+14],eax
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      0000000000002AE0
       mov       rsi,rax
       mov       ecx,13F76
       mov       rdx,7FFB57614000
       call      000000000000A140
       mov       rdi,rax
       mov       ecx,0A7B1
       mov       rdx,7FFB57614000
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [57E0]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000002B00
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      0000000000002AE0
       mov       rsi,rax
       mov       ecx,13F82
       mov       rdx,7FFB57614000
       call      000000000000A140
       mov       rdi,rax
       mov       ecx,0A7B1
       mov       rdx,7FFB57614000
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [57E0]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000002B00
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      0000000000002AE0
       mov       rsi,rax
       mov       ecx,13F8E
       mov       rdx,7FFB57614000
       call      000000000000A140
       mov       rdi,rax
       mov       ecx,0A7B1
       mov       rdx,7FFB57614000
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [57E0]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000002B00
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      0000000000002AE0
       mov       rsi,rax
       mov       ecx,13F9A
       mov       rdx,7FFB57614000
       call      000000000000A140
       mov       rdi,rax
       mov       ecx,0A7B1
       mov       rdx,7FFB57614000
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [57E0]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000002B00
       int       3
; Total bytes of code 434

Docs

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

@performanceautofiler
Copy link
Author

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in System.Collections.Tests.Perf_BitArray

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
BitArrayLengthValueCtor - Duration of single invocation 15.33 ns 17.57 ns 1.15 0.19 False 148.149002092652 156.493856692507 1.0563274438705712 Trace Trace
BitArrayBitArrayCtor - Duration of single invocation 17.48 ns 18.75 ns 1.07 0.16 False 189.69209075376958 198.59977935139574 1.0469586716147739 Trace Trace
BitArrayNot - Duration of single invocation 1.37 ns 2.88 ns 2.10 0.12 False 31.734320683661647 34.239483846592584 1.0789417611268015 Trace Trace
BitArrayBitArrayCtor - Duration of single invocation 15.25 ns 16.79 ns 1.10 0.19 False 171.06606704468922 178.02538407466784 1.0406820426178418 Trace Trace
BitArrayLengthCtor - Duration of single invocation 13.03 ns 14.08 ns 1.08 0.21 False 121.17801130377475 126.2609841637296 1.0419463300747906 Trace Trace
BitArrayBoolArrayCtor - Duration of single invocation 14.32 ns 17.14 ns 1.20 0.08 False Trace Trace
BitArrayIntArrayCtor - Duration of single invocation 15.17 ns 16.70 ns 1.10 0.21 False Trace Trace
BitArrayLengthCtor - Duration of single invocation 9.70 ns 11.83 ns 1.22 0.22 False 108.2707233882555 114.5499335190146 1.057995457444595 Trace Trace

graph
graph
graph
graph
graph
graph
graph
graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Collections.Tests.Perf_BitArray*'

Payloads

Baseline
Compare

Histogram

System.Collections.Tests.Perf_BitArray.BitArrayLengthValueCtor(Size: 4)


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 17.57309846889641 > 16.140541700787477.
IsChangePoint: Marked as a change because one of 7/2/2022 7:35:06 PM, 7/6/2022 3:55:24 AM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -6.447192989841848 (T) = (0 -16.772019925781642) / Math.Sqrt((0.7478205756903464 / (20)) + (0.21638991435974575 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.08639722061444668 = (15.438202167247528 - 16.772019925781642) / 15.438202167247528 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.Collections.Tests.Perf_BitArray.BitArrayLengthValueCtor()
       push      rdi
       push      rsi
       sub       rsp,28
       mov       rsi,rcx
       mov       rcx,offset MT_System.Collections.BitArray
       call      000000000000C390
       mov       rdi,rax
       mov       edx,[rsi+30]
       mov       rcx,rdi
       mov       r8d,1
       call      qword ptr [1018]
       mov       rax,rdi
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 55
; System.Collections.BitArray..ctor(Int32, Boolean)
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       mov       rsi,rcx
       mov       edi,edx
       mov       ebx,r8d
       test      edi,edi
       jl        short 0000000000000243
       lea       edx,[rdi+1F]
       shr       edx,5
       movsxd    rdx,edx
       mov       rcx,offset MT_System.Int32[]
       call      000000000000C4B0
       lea       rcx,[rsi+8]
       mov       rdx,rax
       call      0000000000000010
       mov       [rsi+10],edi
       test      bl,bl
       je        short 0000000000000236
       mov       rcx,[rsi+8]
       mov       edx,0FFFFFFFF
       call      qword ptr [37E0]
       and       edi,1F
       jle       short 0000000000000236
       mov       rcx,[rsi+8]
       mov       eax,[rcx+8]
       lea       edx,[rax+0FFFF]
       cmp       edx,eax
       jae       near ptr 00000000000002B9
       mov       eax,edx
       mov       edx,1
       shlx      edx,edx,edi
       dec       edx
       mov       [rcx+rax*4+10],edx
       xor       ecx,ecx
       mov       [rsi+14],ecx
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       rcx,offset MT_System.Int32
       call      000000000000C390
       mov       rsi,rax
       mov       [rsi+8],edi
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rdi,rax
       mov       ecx,7AD
       mov       rdx,7FFA0171E098
       call      00000000000014A0
       mov       rbx,rax
       mov       ecx,81
       mov       rdx,7FFA0171E098
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [3810]
       mov       r9,rax
       mov       rdx,rbx
       mov       r8,rsi
       mov       rcx,rdi
       call      qword ptr [1858]
       mov       rcx,rdi
       call      0000000000004690
       int       3
       call      0000000000006930
       int       3
; Total bytes of code 255

Compare Jit Disasm

; System.Collections.Tests.Perf_BitArray.BitArrayLengthValueCtor()
       push      rdi
       push      rsi
       sub       rsp,28
       mov       rsi,rcx
       mov       rcx,offset MT_System.Collections.BitArray
       call      0000000000002AE0
       mov       rdi,rax
       mov       edx,[rsi+30]
       mov       rcx,rdi
       mov       r8d,1
       call      qword ptr [1018]
       mov       rax,rdi
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 55
; System.Collections.BitArray..ctor(Int32, Boolean)
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       mov       rsi,rcx
       mov       edi,edx
       mov       ebx,r8d
       test      edi,edi
       jl        short 0000000000000243
       lea       edx,[rdi+1F]
       shr       edx,5
       movsxd    rdx,edx
       mov       rcx,offset MT_System.Int32[]
       call      0000000000002C00
       lea       rcx,[rsi+8]
       mov       rdx,rax
       call      0000000000000010
       mov       [rsi+10],edi
       test      bl,bl
       je        short 0000000000000236
       mov       rcx,[rsi+8]
       mov       edx,0FFFFFFFF
       call      qword ptr [37E0]
       and       edi,1F
       jle       short 0000000000000236
       mov       rcx,[rsi+8]
       mov       eax,[rcx+8]
       lea       edx,[rax+0FFFF]
       cmp       edx,eax
       jae       near ptr 00000000000002B9
       mov       eax,edx
       mov       edx,1
       shlx      edx,edx,edi
       dec       edx
       mov       [rcx+rax*4+10],edx
       xor       ecx,ecx
       mov       [rsi+14],ecx
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       rcx,offset MT_System.Int32
       call      0000000000002AE0
       mov       rsi,rax
       mov       [rsi+8],edi
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      0000000000002AE0
       mov       rdi,rax
       mov       ecx,7AD
       mov       rdx,7FFE9735E1E0
       call      000000000000A140
       mov       rbx,rax
       mov       ecx,81
       mov       rdx,7FFE9735E1E0
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [3810]
       mov       r9,rax
       mov       rdx,rbx
       mov       r8,rsi
       mov       rcx,rdi
       call      qword ptr [1858]
       mov       rcx,rdi
       call      0000000000002B00
       int       3
       call      000000000000AB50
       int       3
; Total bytes of code 255

System.Collections.Tests.Perf_BitArray.BitArrayBitArrayCtor(Size: 512)


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 18.75145325273014 > 18.1465408235375.
IsChangePoint: Marked as a change because one of 6/27/2022 8:54:23 AM, 6/30/2022 12:21:07 PM, 8/9/2022 4:14:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -8.076647579513224 (T) = (0 -19.264130742213247) / Math.Sqrt((0.5279903859962829 / (21)) + (0.3088392158733344 / (39))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (21) + (39) - 2, .025) and -0.08252385485839356 = (17.79557157632634 - 19.264130742213247) / 17.79557157632634 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.Collections.Tests.Perf_BitArray.BitArrayBitArrayCtor()
       push      rdi
       push      rsi
       sub       rsp,28
       mov       rsi,rcx
       mov       rcx,offset MT_System.Collections.BitArray
       call      000000000000C390
       mov       rdi,rax
       mov       rdx,[rsi+8]
       mov       rcx,rdi
       call      qword ptr [1078]
       mov       rax,rdi
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 50
; System.Collections.BitArray..ctor(System.Collections.BitArray)
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       mov       rdi,rcx
       mov       rsi,rdx
       test      rsi,rsi
       je        short 000000000000019E
       mov       ebx,[rsi+10]
       add       ebx,1F
       shr       ebx,5
       movsxd    rdx,ebx
       mov       rcx,offset MT_System.Int32[]
       call      000000000000C4B0
       lea       rcx,[rdi+8]
       mov       rdx,rax
       call      0000000000000010
       mov       rcx,[rsi+8]
       mov       rdx,[rdi+8]
       mov       r8d,ebx
       call      qword ptr [9018]
       mov       ecx,[rsi+10]
       mov       [rdi+10],ecx
       mov       ecx,[rsi+14]
       mov       [rdi+14],ecx
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       ecx,7D5
       mov       rdx,7FF95FE7E098
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [33F0]
       int       3
; Total bytes of code 124

Compare Jit Disasm

; System.Collections.Tests.Perf_BitArray.BitArrayBitArrayCtor()
       push      rdi
       push      rsi
       sub       rsp,28
       mov       rsi,rcx
       mov       rcx,offset MT_System.Collections.BitArray
       call      0000000000002AE0
       mov       rdi,rax
       mov       rdx,[rsi+8]
       mov       rcx,rdi
       call      qword ptr [1078]
       mov       rax,rdi
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 50
; System.Collections.BitArray..ctor(System.Collections.BitArray)
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       mov       rdi,rcx
       mov       rsi,rdx
       test      rsi,rsi
       je        short 000000000000019E
       mov       ebx,[rsi+10]
       add       ebx,1F
       shr       ebx,5
       movsxd    rdx,ebx
       mov       rcx,offset MT_System.Int32[]
       call      0000000000002C00
       lea       rcx,[rdi+8]
       mov       rdx,rax
       call      0000000000000010
       mov       rcx,[rsi+8]
       mov       rdx,[rdi+8]
       mov       r8d,ebx
       call      qword ptr [9018]
       mov       ecx,[rsi+10]
       mov       [rdi+10],ecx
       mov       ecx,[rsi+14]
       mov       [rdi+14],ecx
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       ecx,7D5
       mov       rdx,7FFB26CCE1E0
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [33F0]
       int       3
; Total bytes of code 124

System.Collections.Tests.Perf_BitArray.BitArrayNot(Size: 4)


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 2.8767562585743582 > 1.440248896419278.
IsChangePoint: Marked as a change because one of 6/17/2022 12:17:51 PM, 7/7/2022 7:02:29 PM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -40.17095594543638 (T) = (0 -2.868288625239743) / Math.Sqrt((0.04517590577993649 / (20)) + (8.706959065728199E-05 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -1.993499084388648 = (0.9581725413574074 - 2.868288625239743) / 0.9581725413574074 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.Collections.Tests.Perf_BitArray.BitArrayNot()
       mov       rcx,[rcx+8]
       cmp       [rcx],ecx
       jmp       qword ptr [1150]
; Total bytes of code 12
; System.Collections.BitArray.Not()
       sub       rsp,28
       vzeroupper
       mov       rax,[rcx+8]
       mov       edx,[rcx+10]
       add       edx,1F
       shr       edx,5
       cmp       edx,7
       ja        near ptr 000000000000FDCE
       mov       edx,edx
       lea       r8,[0FE78]
       mov       r8d,[r8+rdx*4]
       lea       r9,[0FCE7]
       add       r8,r9
       jmp       r8
       mov       r9d,[rax+8]
       cmp       r9d,6
       jbe       near ptr 000000000000FE6F
       mov       r9d,[rax+28]
       mov       edx,r9d
       not       edx
       mov       [rax+28],edx
       mov       r9d,[rax+8]
       cmp       r9d,5
       jbe       near ptr 000000000000FE6F
       mov       r9d,[rax+24]
       mov       edx,r9d
       not       edx
       mov       [rax+24],edx
       mov       r9d,[rax+8]
       cmp       r9d,4
       jbe       near ptr 000000000000FE6F
       mov       r9d,[rax+20]
       mov       edx,r9d
       not       edx
       mov       [rax+20],edx
       mov       r9d,[rax+8]
       cmp       r9d,3
       jbe       near ptr 000000000000FE6F
       mov       r9d,[rax+1C]
       mov       edx,r9d
       not       edx
       mov       [rax+1C],edx
       mov       r9d,[rax+8]
       cmp       r9d,2
       jbe       near ptr 000000000000FE6F
       mov       r9d,[rax+18]
       mov       edx,r9d
       not       edx
       mov       [rax+18],edx
       mov       r9d,[rax+8]
       cmp       r9d,1
       jbe       near ptr 000000000000FE6F
       mov       r9d,[rax+14]
       mov       edx,r9d
       not       edx
       mov       [rax+14],edx
       mov       r9d,[rax+8]
       test      r9d,r9d
       je        near ptr 000000000000FE6F
       mov       edx,[rax+10]
       not       edx
       mov       [rax+10],edx
       jmp       near ptr 000000000000FE61
       nop
       xor       r8d,r8d
       cmp       [rax],al
       lea       r9,[rax+10]
       lea       r10d,[rdx+0FFF9]
       test      r10d,r10d
       jbe       short 000000000000FDFD
       mov       r11d,r8d
       vpcmpeqd  ymm0,ymm0,ymm0
       vpxor     ymm0,ymm0,[r9+r11*4]
       vmovdqu   ymmword ptr [r9+r11*4],ymm0
       add       r8d,8
       cmp       r8d,r10d
       jb        short 000000000000FDE0
       cmp       r8d,edx
       jae       short 000000000000FE61
       test      r8d,r8d
       jl        short 000000000000FE3A
       test      edx,edx
       jl        short 000000000000FE3A
       mov       r9d,[rax+8]
       cmp       r9d,edx
       jl        short 000000000000FE3A
       nop       dword ptr [rax]
       nop       dword ptr [rax+rax]
       mov       r9d,r8d
       mov       r10d,[rax+r9*4+10]
       not       r10d
       mov       [rax+r9*4+10],r10d
       inc       r8d
       cmp       r8d,edx
       jb        short 000000000000FE20
       jmp       short 000000000000FE61
       mov       r9d,[rax+8]
       cmp       r8d,r9d
       jae       short 000000000000FE6F
       mov       r10d,r8d
       mov       r9d,[rax+r10*4+10]
       mov       r10d,r9d
       not       r10d
       mov       r9d,r8d
       mov       [rax+r9*4+10],r10d
       inc       r8d
       cmp       r8d,edx
       jb        short 000000000000FE3A
       inc       dword ptr [rcx+14]
       mov       rax,rcx
       vzeroupper
       add       rsp,28
       ret
       call      0000000000006930
       int       3
; Total bytes of code 405

Compare Jit Disasm

; System.Collections.Tests.Perf_BitArray.BitArrayNot()
       mov       rcx,[rcx+8]
       cmp       [rcx],ecx
       jmp       qword ptr [1150]
; Total bytes of code 12
; System.Collections.BitArray.Not()
       sub       rsp,28
       vzeroupper
       mov       rax,[rcx+8]
       mov       edx,[rcx+10]
       add       edx,1F
       shr       edx,5
       cmp       edx,7
       ja        near ptr 000000000000FDCE
       mov       edx,edx
       lea       r8,[0FE78]
       mov       r8d,[r8+rdx*4]
       lea       r9,[0FCE7]
       add       r8,r9
       jmp       r8
       mov       r9d,[rax+8]
       cmp       r9d,6
       jbe       near ptr 000000000000FE6F
       mov       r9d,[rax+28]
       mov       edx,r9d
       not       edx
       mov       [rax+28],edx
       mov       r9d,[rax+8]
       cmp       r9d,5
       jbe       near ptr 000000000000FE6F
       mov       r9d,[rax+24]
       mov       edx,r9d
       not       edx
       mov       [rax+24],edx
       mov       r9d,[rax+8]
       cmp       r9d,4
       jbe       near ptr 000000000000FE6F
       mov       r9d,[rax+20]
       mov       edx,r9d
       not       edx
       mov       [rax+20],edx
       mov       r9d,[rax+8]
       cmp       r9d,3
       jbe       near ptr 000000000000FE6F
       mov       r9d,[rax+1C]
       mov       edx,r9d
       not       edx
       mov       [rax+1C],edx
       mov       r9d,[rax+8]
       cmp       r9d,2
       jbe       near ptr 000000000000FE6F
       mov       r9d,[rax+18]
       mov       edx,r9d
       not       edx
       mov       [rax+18],edx
       mov       r9d,[rax+8]
       cmp       r9d,1
       jbe       near ptr 000000000000FE6F
       mov       r9d,[rax+14]
       mov       edx,r9d
       not       edx
       mov       [rax+14],edx
       mov       r9d,[rax+8]
       test      r9d,r9d
       je        near ptr 000000000000FE6F
       mov       edx,[rax+10]
       not       edx
       mov       [rax+10],edx
       jmp       near ptr 000000000000FE61
       nop
       xor       r8d,r8d
       cmp       [rax],al
       lea       r9,[rax+10]
       lea       r10d,[rdx+0FFF9]
       test      r10d,r10d
       jbe       short 000000000000FDFD
       mov       r11d,r8d
       vpcmpeqd  ymm0,ymm0,ymm0
       vpxor     ymm0,ymm0,[r9+r11*4]
       vmovdqu   ymmword ptr [r9+r11*4],ymm0
       add       r8d,8
       cmp       r8d,r10d
       jb        short 000000000000FDE0
       cmp       r8d,edx
       jae       short 000000000000FE61
       test      r8d,r8d
       jl        short 000000000000FE3A
       test      edx,edx
       jl        short 000000000000FE3A
       mov       r9d,[rax+8]
       cmp       r9d,edx
       jl        short 000000000000FE3A
       nop       dword ptr [rax]
       nop       dword ptr [rax+rax]
       mov       r9d,r8d
       mov       r10d,[rax+r9*4+10]
       not       r10d
       mov       [rax+r9*4+10],r10d
       inc       r8d
       cmp       r8d,edx
       jb        short 000000000000FE20
       jmp       short 000000000000FE61
       mov       r9d,[rax+8]
       cmp       r8d,r9d
       jae       short 000000000000FE6F
       mov       r10d,r8d
       mov       r9d,[rax+r10*4+10]
       mov       r10d,r9d
       not       r10d
       mov       r9d,r8d
       mov       [rax+r9*4+10],r10d
       inc       r8d
       cmp       r8d,edx
       jb        short 000000000000FE3A
       inc       dword ptr [rcx+14]
       mov       rax,rcx
       vzeroupper
       add       rsp,28
       ret
       call      000000000000AB50
       int       3
; Total bytes of code 405

System.Collections.Tests.Perf_BitArray.BitArrayBitArrayCtor(Size: 4)


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 16.793611079256916 > 15.655302260194889.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -9.80424344045147 (T) = (0 -17.004390758815124) / Math.Sqrt((0.3831676007026498 / (20)) + (0.09183896767757523 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.0922422076128022 = (15.568333324144115 - 17.004390758815124) / 15.568333324144115 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.Collections.Tests.Perf_BitArray.BitArrayBitArrayCtor()
       push      rdi
       push      rsi
       sub       rsp,28
       mov       rsi,rcx
       mov       rcx,offset MT_System.Collections.BitArray
       call      000000000000C390
       mov       rdi,rax
       mov       rdx,[rsi+8]
       mov       rcx,rdi
       call      qword ptr [1078]
       mov       rax,rdi
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 50
; System.Collections.BitArray..ctor(System.Collections.BitArray)
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       mov       rdi,rcx
       mov       rsi,rdx
       test      rsi,rsi
       je        short 000000000000015E
       mov       ebx,[rsi+10]
       add       ebx,1F
       shr       ebx,5
       movsxd    rdx,ebx
       mov       rcx,offset MT_System.Int32[]
       call      000000000000C4B0
       lea       rcx,[rdi+8]
       mov       rdx,rax
       call      0000000000000010
       mov       rcx,[rsi+8]
       mov       rdx,[rdi+8]
       mov       r8d,ebx
       call      qword ptr [9018]
       mov       ecx,[rsi+10]
       mov       [rdi+10],ecx
       mov       ecx,[rsi+14]
       mov       [rdi+14],ecx
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       ecx,7D5
       mov       rdx,7FF95FEFE098
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [33F0]
       int       3
; Total bytes of code 124

Compare Jit Disasm

; System.Collections.Tests.Perf_BitArray.BitArrayBitArrayCtor()
       push      rdi
       push      rsi
       sub       rsp,28
       mov       rsi,rcx
       mov       rcx,offset MT_System.Collections.BitArray
       call      0000000000002AE0
       mov       rdi,rax
       mov       rdx,[rsi+8]
       mov       rcx,rdi
       call      qword ptr [1078]
       mov       rax,rdi
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 50
; System.Collections.BitArray..ctor(System.Collections.BitArray)
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       mov       rdi,rcx
       mov       rsi,rdx
       test      rsi,rsi
       je        short 000000000000015E
       mov       ebx,[rsi+10]
       add       ebx,1F
       shr       ebx,5
       movsxd    rdx,ebx
       mov       rcx,offset MT_System.Int32[]
       call      0000000000002C00
       lea       rcx,[rdi+8]
       mov       rdx,rax
       call      0000000000000010
       mov       rcx,[rsi+8]
       mov       rdx,[rdi+8]
       mov       r8d,ebx
       call      qword ptr [9018]
       mov       ecx,[rsi+10]
       mov       [rdi+10],ecx
       mov       ecx,[rsi+14]
       mov       [rdi+14],ecx
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       ecx,7D5
       mov       rdx,7FFB26D1E1E0
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [33F0]
       int       3
; Total bytes of code 124

System.Collections.Tests.Perf_BitArray.BitArrayLengthCtor(Size: 512)


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 14.081876676978128 > 12.998322547001663.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -7.549406628972143 (T) = (0 -14.100006892644057) / Math.Sqrt((0.5171242683128981 / (20)) + (0.31967497034033077 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.10926913102621565 = (12.711078401325159 - 14.100006892644057) / 12.711078401325159 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.Collections.Tests.Perf_BitArray.BitArrayLengthCtor()
       push      rdi
       push      rsi
       sub       rsp,28
       mov       rsi,rcx
       mov       rcx,offset MT_System.Collections.BitArray
       call      000000000000C390
       mov       rdi,rax
       mov       edx,[rsi+30]
       mov       rcx,rdi
       xor       r8d,r8d
       call      qword ptr [1018]
       mov       rax,rdi
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 52
; System.Collections.BitArray..ctor(Int32, Boolean)
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       mov       rsi,rcx
       mov       edi,edx
       mov       ebx,r8d
       test      edi,edi
       jl        short 000000000000F683
       lea       edx,[rdi+1F]
       shr       edx,5
       movsxd    rdx,edx
       mov       rcx,offset MT_System.Int32[]
       call      000000000000C4B0
       lea       rcx,[rsi+8]
       mov       rdx,rax
       call      0000000000000010
       mov       [rsi+10],edi
       test      bl,bl
       je        short 000000000000F676
       mov       rcx,[rsi+8]
       mov       edx,0FFFFFFFF
       call      qword ptr [37E0]
       and       edi,1F
       jle       short 000000000000F676
       mov       rcx,[rsi+8]
       mov       eax,[rcx+8]
       lea       edx,[rax+0FFFF]
       cmp       edx,eax
       jae       near ptr 000000000000F6F9
       mov       eax,edx
       mov       edx,1
       shlx      edx,edx,edi
       dec       edx
       mov       [rcx+rax*4+10],edx
       xor       ecx,ecx
       mov       [rsi+14],ecx
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       rcx,offset MT_System.Int32
       call      000000000000C390
       mov       rsi,rax
       mov       [rsi+8],edi
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rdi,rax
       mov       ecx,7AD
       mov       rdx,7FFB3B6BE098
       call      00000000000014A0
       mov       rbx,rax
       mov       ecx,81
       mov       rdx,7FFB3B6BE098
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [3810]
       mov       r9,rax
       mov       rdx,rbx
       mov       r8,rsi
       mov       rcx,rdi
       call      qword ptr [1858]
       mov       rcx,rdi
       call      0000000000004690
       int       3
       call      0000000000006930
       int       3
; Total bytes of code 255

Compare Jit Disasm

; System.Collections.Tests.Perf_BitArray.BitArrayLengthCtor()
       push      rdi
       push      rsi
       sub       rsp,28
       mov       rsi,rcx
       mov       rcx,offset MT_System.Collections.BitArray
       call      0000000000002AE0
       mov       rdi,rax
       mov       edx,[rsi+30]
       mov       rcx,rdi
       xor       r8d,r8d
       call      qword ptr [1018]
       mov       rax,rdi
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 52
; System.Collections.BitArray..ctor(Int32, Boolean)
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       mov       rsi,rcx
       mov       edi,edx
       mov       ebx,r8d
       test      edi,edi
       jl        short 000000000000F683
       lea       edx,[rdi+1F]
       shr       edx,5
       movsxd    rdx,edx
       mov       rcx,offset MT_System.Int32[]
       call      0000000000002C00
       lea       rcx,[rsi+8]
       mov       rdx,rax
       call      0000000000000010
       mov       [rsi+10],edi
       test      bl,bl
       je        short 000000000000F676
       mov       rcx,[rsi+8]
       mov       edx,0FFFFFFFF
       call      qword ptr [37E0]
       and       edi,1F
       jle       short 000000000000F676
       mov       rcx,[rsi+8]
       mov       eax,[rcx+8]
       lea       edx,[rax+0FFFF]
       cmp       edx,eax
       jae       near ptr 000000000000F6F9
       mov       eax,edx
       mov       edx,1
       shlx      edx,edx,edi
       dec       edx
       mov       [rcx+rax*4+10],edx
       xor       ecx,ecx
       mov       [rsi+14],ecx
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       rcx,offset MT_System.Int32
       call      0000000000002AE0
       mov       rsi,rax
       mov       [rsi+8],edi
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      0000000000002AE0
       mov       rdi,rax
       mov       ecx,7AD
       mov       rdx,7FF929CBE1E0
       call      000000000000A140
       mov       rbx,rax
       mov       ecx,81
       mov       rdx,7FF929CBE1E0
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [3810]
       mov       r9,rax
       mov       rdx,rbx
       mov       r8,rsi
       mov       rcx,rdi
       call      qword ptr [1858]
       mov       rcx,rdi
       call      0000000000002B00
       int       3
       call      000000000000AB50
       int       3
; Total bytes of code 255

System.Collections.Tests.Perf_BitArray.BitArrayBoolArrayCtor(Size: 4)


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 17.138351472606416 > 15.01697427195414.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -21.356386446044016 (T) = (0 -17.08619076673289) / Math.Sqrt((0.12408392794273947 / (20)) + (0.16502105476883797 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.14552262654659726 = (14.915629225275598 - 17.08619076673289) / 14.915629225275598 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.Collections.Tests.Perf_BitArray.BitArrayBoolArrayCtor()
       push      rdi
       push      rsi
       sub       rsp,28
       mov       rsi,rcx
       mov       rcx,offset MT_System.Collections.BitArray
       call      000000000000C390
       mov       rdi,rax
       mov       rdx,[rsi+20]
       mov       rcx,rdi
       call      qword ptr [1048]
       mov       rax,rdi
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 50
; System.Collections.BitArray..ctor(Boolean[])
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       vzeroupper
       mov       rsi,rcx
       mov       rdi,rdx
       test      rdi,rdi
       je        near ptr 0000000000000488
       mov       ebx,[rdi+8]
       mov       edx,ebx
       add       edx,1F
       shr       edx,5
       movsxd    rdx,edx
       mov       rcx,offset MT_System.Int32[]
       call      000000000000C4B0
       lea       rcx,[rsi+8]
       mov       rdx,rax
       call      0000000000000010
       mov       [rsi+10],ebx
       xor       ecx,ecx
       cmp       ebx,20
       jl        short 00000000000003F0
       lea       rdx,[rdi+10]
       cmp       ebx,20
       jb        short 00000000000003F0
       mov       eax,ecx
       vxorps    ymm0,ymm0,ymm0
       vpcmpeqb  ymm0,ymm0,[rdx+rax]
       vpmovmskb eax,ymm0
       mov       r8,[rsi+8]
       mov       r9d,ecx
       shr       r9d,5
       cmp       r9d,[r8+8]
       jae       near ptr 00000000000004A6
       mov       r9d,r9d
       not       eax
       mov       [r8+r9*4+10],eax
       add       ecx,20
       lea       eax,[rcx+20]
       cmp       ebx,eax
       jae       short 00000000000003B5
       cmp       ebx,ecx
       jbe       near ptr 0000000000000478
       test      ecx,ecx
       jl        short 000000000000043D
       nop       dword ptr [rax]
       mov       edx,ecx
       cmp       byte ptr [rdi+rdx+10],0
       je        short 0000000000000435
       mov       edx,ecx
       shr       edx,5
       mov       eax,ecx
       and       eax,1F
       mov       r8,[rsi+8]
       cmp       edx,[r8+8]
       jae       near ptr 00000000000004A6
       mov       edx,edx
       lea       rdx,[r8+rdx*4+10]
       mov       r8d,1
       shlx      eax,r8d,eax
       or        [rdx],eax
       inc       ecx
       cmp       ebx,ecx
       ja        short 0000000000000400
       jmp       short 0000000000000478
       cmp       ecx,ebx
       jae       short 00000000000004A6
       mov       edx,ecx
       cmp       byte ptr [rdi+rdx+10],0
       je        short 0000000000000472
       mov       edx,ecx
       shr       edx,5
       mov       eax,ecx
       and       eax,1F
       mov       r8,[rsi+8]
       cmp       edx,[r8+8]
       jae       short 00000000000004A6
       mov       edx,edx
       lea       rdx,[r8+rdx*4+10]
       mov       r8d,1
       shlx      eax,r8d,eax
       or        [rdx],eax
       inc       ecx
       cmp       ebx,ecx
       ja        short 000000000000043D
       xor       ecx,ecx
       mov       [rsi+14],ecx
       vzeroupper
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       ecx,7C7
       mov       rdx,7FFDC689E098
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [33F0]
       int       3
       call      0000000000006930
       int       3
; Total bytes of code 332

Compare Jit Disasm

; System.Collections.Tests.Perf_BitArray.BitArrayBoolArrayCtor()
       push      rdi
       push      rsi
       sub       rsp,28
       mov       rsi,rcx
       mov       rcx,offset MT_System.Collections.BitArray
       call      0000000000002AE0
       mov       rdi,rax
       mov       rdx,[rsi+20]
       mov       rcx,rdi
       call      qword ptr [1048]
       mov       rax,rdi
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 50
; System.Collections.BitArray..ctor(Boolean[])
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       vzeroupper
       mov       rsi,rcx
       mov       rdi,rdx
       test      rdi,rdi
       je        near ptr 00000000000006E8
       mov       ebx,[rdi+8]
       mov       edx,ebx
       add       edx,1F
       shr       edx,5
       movsxd    rdx,edx
       mov       rcx,offset MT_System.Int32[]
       call      0000000000002C00
       lea       rcx,[rsi+8]
       mov       rdx,rax
       call      0000000000000010
       mov       [rsi+10],ebx
       xor       ecx,ecx
       cmp       ebx,20
       jl        short 0000000000000650
       lea       rdx,[rdi+10]
       cmp       ebx,20
       jb        short 0000000000000650
       mov       eax,ecx
       vxorps    ymm0,ymm0,ymm0
       vpcmpeqb  ymm0,ymm0,[rdx+rax]
       vpmovmskb eax,ymm0
       mov       r8,[rsi+8]
       mov       r9d,ecx
       shr       r9d,5
       cmp       r9d,[r8+8]
       jae       near ptr 0000000000000706
       mov       r9d,r9d
       not       eax
       mov       [r8+r9*4+10],eax
       add       ecx,20
       lea       eax,[rcx+20]
       cmp       ebx,eax
       jae       short 0000000000000615
       cmp       ebx,ecx
       jbe       near ptr 00000000000006D8
       test      ecx,ecx
       jl        short 000000000000069D
       nop       dword ptr [rax]
       mov       edx,ecx
       cmp       byte ptr [rdi+rdx+10],0
       je        short 0000000000000695
       mov       edx,ecx
       shr       edx,5
       mov       eax,ecx
       and       eax,1F
       mov       r8,[rsi+8]
       cmp       edx,[r8+8]
       jae       near ptr 0000000000000706
       mov       edx,edx
       lea       rdx,[r8+rdx*4+10]
       mov       r8d,1
       shlx      eax,r8d,eax
       or        [rdx],eax
       inc       ecx
       cmp       ebx,ecx
       ja        short 0000000000000660
       jmp       short 00000000000006D8
       cmp       ecx,ebx
       jae       short 0000000000000706
       mov       edx,ecx
       cmp       byte ptr [rdi+rdx+10],0
       je        short 00000000000006D2
       mov       edx,ecx
       shr       edx,5
       mov       eax,ecx
       and       eax,1F
       mov       r8,[rsi+8]
       cmp       edx,[r8+8]
       jae       short 0000000000000706
       mov       edx,edx
       lea       rdx,[r8+rdx*4+10]
       mov       r8d,1
       shlx      eax,r8d,eax
       or        [rdx],eax
       inc       ecx
       cmp       ebx,ecx
       ja        short 000000000000069D
       xor       ecx,ecx
       mov       [rsi+14],ecx
       vzeroupper
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       ecx,7C7
       mov       rdx,7FFB39DAE1E0
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [33F0]
       int       3
       call      000000000000AB50
       int       3
; Total bytes of code 332

System.Collections.Tests.Perf_BitArray.BitArrayIntArrayCtor(Size: 4)


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 16.702934666210776 > 15.6936336303302.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -14.682807142289619 (T) = (0 -17.04913337603452) / Math.Sqrt((0.25611107953870504 / (20)) + (0.16417338339362914 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.12611276261198798 = (15.139810099025533 - 17.04913337603452) / 15.139810099025533 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.Collections.Tests.Perf_BitArray.BitArrayIntArrayCtor()
       push      rdi
       push      rsi
       sub       rsp,28
       mov       rsi,rcx
       mov       rcx,offset MT_System.Collections.BitArray
       call      000000000000C390
       mov       rdi,rax
       mov       rdx,[rsi+28]
       mov       rcx,rdi
       call      qword ptr [1060]
       mov       rax,rdi
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 50
; System.Collections.BitArray..ctor(Int32[])
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       mov       rsi,rcx
       mov       rdi,rdx
       test      rdi,rdi
       je        short 00000000000001DD
       mov       ebx,[rdi+8]
       cmp       ebx,3FFFFFF
       jg        short 00000000000001FB
       mov       edx,ebx
       mov       rcx,offset MT_System.Int32[]
       call      000000000000C4B0
       lea       rcx,[rsi+8]
       mov       rdx,rax
       call      0000000000000010
       mov       rdx,[rsi+8]
       mov       r8d,ebx
       mov       rcx,rdi
       call      qword ptr [9018]
       shl       ebx,5
       mov       [rsi+10],ebx
       xor       ecx,ecx
       mov       [rsi+14],ecx
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       ecx,7C7
       mov       rdx,7FFE84CBE098
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [33F0]
       int       3
       mov       rcx,offset MT_System.Int32
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,41D
       mov       rdx,7FFE84CBE098
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [37F8]
       mov       rdi,rax
       mov       dword ptr [rsi+8],20
       mov       rcx,offset MT_System.ArgumentException
       call      000000000000C390
       mov       rbx,rax
       mov       rdx,rsi
       mov       rcx,rdi
       call      qword ptr [3810]
       mov       rsi,rax
       mov       ecx,7C7
       mov       rdx,7FFE84CBE098
       call      00000000000014A0
       mov       r8,rax
       mov       rdx,rsi
       mov       rcx,rbx
       call      qword ptr [0BBD0]
       mov       rcx,rbx
       call      0000000000004690
       int       3
; Total bytes of code 257

Compare Jit Disasm

; System.Collections.Tests.Perf_BitArray.BitArrayIntArrayCtor()
       push      rdi
       push      rsi
       sub       rsp,28
       mov       rsi,rcx
       mov       rcx,offset MT_System.Collections.BitArray
       call      0000000000002AE0
       mov       rdi,rax
       mov       rdx,[rsi+28]
       mov       rcx,rdi
       call      qword ptr [1060]
       mov       rax,rdi
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 50
; System.Collections.BitArray..ctor(Int32[])
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       mov       rsi,rcx
       mov       rdi,rdx
       test      rdi,rdi
       je        short 000000000000041D
       mov       ebx,[rdi+8]
       cmp       ebx,3FFFFFF
       jg        short 000000000000043B
       mov       edx,ebx
       mov       rcx,offset MT_System.Int32[]
       call      0000000000002C00
       lea       rcx,[rsi+8]
       mov       rdx,rax
       call      0000000000000010
       mov       rdx,[rsi+8]
       mov       r8d,ebx
       mov       rcx,rdi
       call      qword ptr [9018]
       shl       ebx,5
       mov       [rsi+10],ebx
       xor       ecx,ecx
       mov       [rsi+14],ecx
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       ecx,7C7
       mov       rdx,7FFDB913E1E0
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [33F0]
       int       3
       mov       rcx,offset MT_System.Int32
       call      0000000000002AE0
       mov       rsi,rax
       mov       ecx,41D
       mov       rdx,7FFDB913E1E0
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [37F8]
       mov       rdi,rax
       mov       dword ptr [rsi+8],20
       mov       rcx,offset MT_System.ArgumentException
       call      0000000000002AE0
       mov       rbx,rax
       mov       rdx,rsi
       mov       rcx,rdi
       call      qword ptr [3810]
       mov       rsi,rax
       mov       ecx,7C7
       mov       rdx,7FFDB913E1E0
       call      000000000000A140
       mov       r8,rax
       mov       rdx,rsi
       mov       rcx,rbx
       call      qword ptr [0BBD0]
       mov       rcx,rbx
       call      0000000000002B00
       int       3
; Total bytes of code 257

System.Collections.Tests.Perf_BitArray.BitArrayLengthCtor(Size: 4)


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 11.825155332080518 > 10.173337147369208.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -7.71008634966178 (T) = (0 -11.755543496062547) / Math.Sqrt((0.8096751708670027 / (20)) + (0.06582658547246203 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.1555615941782822 = (10.173013325544012 - 11.755543496062547) / 10.173013325544012 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.Collections.Tests.Perf_BitArray.BitArrayLengthCtor()
       push      rdi
       push      rsi
       sub       rsp,28
       mov       rsi,rcx
       mov       rcx,offset MT_System.Collections.BitArray
       call      000000000000C390
       mov       rdi,rax
       mov       edx,[rsi+30]
       mov       rcx,rdi
       xor       r8d,r8d
       call      qword ptr [1018]
       mov       rax,rdi
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 52
; System.Collections.BitArray..ctor(Int32, Boolean)
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       mov       rsi,rcx
       mov       edi,edx
       mov       ebx,r8d
       test      edi,edi
       jl        short 000000000000F683
       lea       edx,[rdi+1F]
       shr       edx,5
       movsxd    rdx,edx
       mov       rcx,offset MT_System.Int32[]
       call      000000000000C4B0
       lea       rcx,[rsi+8]
       mov       rdx,rax
       call      0000000000000010
       mov       [rsi+10],edi
       test      bl,bl
       je        short 000000000000F676
       mov       rcx,[rsi+8]
       mov       edx,0FFFFFFFF
       call      qword ptr [37E0]
       and       edi,1F
       jle       short 000000000000F676
       mov       rcx,[rsi+8]
       mov       eax,[rcx+8]
       lea       edx,[rax+0FFFF]
       cmp       edx,eax
       jae       near ptr 000000000000F6F9
       mov       eax,edx
       mov       edx,1
       shlx      edx,edx,edi
       dec       edx
       mov       [rcx+rax*4+10],edx
       xor       ecx,ecx
       mov       [rsi+14],ecx
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       rcx,offset MT_System.Int32
       call      000000000000C390
       mov       rsi,rax
       mov       [rsi+8],edi
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rdi,rax
       mov       ecx,7AD
       mov       rdx,7FFB3B72E098
       call      00000000000014A0
       mov       rbx,rax
       mov       ecx,81
       mov       rdx,7FFB3B72E098
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [3810]
       mov       r9,rax
       mov       rdx,rbx
       mov       r8,rsi
       mov       rcx,rdi
       call      qword ptr [1858]
       mov       rcx,rdi
       call      0000000000004690
       int       3
       call      0000000000006930
       int       3
; Total bytes of code 255

Compare Jit Disasm

; System.Collections.Tests.Perf_BitArray.BitArrayLengthCtor()
       push      rdi
       push      rsi
       sub       rsp,28
       mov       rsi,rcx
       mov       rcx,offset MT_System.Collections.BitArray
       call      0000000000002AE0
       mov       rdi,rax
       mov       edx,[rsi+30]
       mov       rcx,rdi
       xor       r8d,r8d
       call      qword ptr [1018]
       mov       rax,rdi
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 52
; System.Collections.BitArray..ctor(Int32, Boolean)
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       mov       rsi,rcx
       mov       edi,edx
       mov       ebx,r8d
       test      edi,edi
       jl        short 000000000000F683
       lea       edx,[rdi+1F]
       shr       edx,5
       movsxd    rdx,edx
       mov       rcx,offset MT_System.Int32[]
       call      0000000000002C00
       lea       rcx,[rsi+8]
       mov       rdx,rax
       call      0000000000000010
       mov       [rsi+10],edi
       test      bl,bl
       je        short 000000000000F676
       mov       rcx,[rsi+8]
       mov       edx,0FFFFFFFF
       call      qword ptr [37E0]
       and       edi,1F
       jle       short 000000000000F676
       mov       rcx,[rsi+8]
       mov       eax,[rcx+8]
       lea       edx,[rax+0FFFF]
       cmp       edx,eax
       jae       near ptr 000000000000F6F9
       mov       eax,edx
       mov       edx,1
       shlx      edx,edx,edi
       dec       edx
       mov       [rcx+rax*4+10],edx
       xor       ecx,ecx
       mov       [rsi+14],ecx
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       rcx,offset MT_System.Int32
       call      0000000000002AE0
       mov       rsi,rax
       mov       [rsi+8],edi
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      0000000000002AE0
       mov       rdi,rax
       mov       ecx,7AD
       mov       rdx,7FF929D3E1E0
       call      000000000000A140
       mov       rbx,rax
       mov       ecx,81
       mov       rdx,7FF929D3E1E0
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [3810]
       mov       r9,rax
       mov       rdx,rbx
       mov       r8,rsi
       mov       rcx,rdi
       call      qword ptr [1858]
       mov       rcx,rdi
       call      0000000000002B00
       int       3
       call      000000000000AB50
       int       3
; Total bytes of code 255

Docs

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

@performanceautofiler
Copy link
Author

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in System.Tests.Perf_GC<Char>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
AllocateUninitializedArray - Duration of single invocation 699.43 ns 896.82 ns 1.28 0.04 False
AllocateUninitializedArray - Duration of single invocation 214.20 ns 234.51 ns 1.09 0.01 False
AllocateArray - Duration of single invocation 247.70 ns 265.31 ns 1.07 0.00 False
AllocateArray - Duration of single invocation 1.24 μs 1.41 μs 1.14 0.01 False

graph
graph
graph
graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Tests.Perf_GC&lt;Char&gt;*'

Payloads

Baseline
Compare

Histogram

System.Tests.Perf_GC<Char>.AllocateUninitializedArray(length: 10000, pinned: True)


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 896.8159780527611 > 731.7809902663686.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -42.58525379041189 (T) = (0 -916.651861674259) / Math.Sqrt((58.89722285618322 / (20)) + (949.1476730158917 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.3156785216941346 = (696.7141642579461 - 916.651861674259) / 696.7141642579461 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.

```#### System.Tests.Perf_GC&lt;Char&gt;.AllocateUninitializedArray(length: 1000, pinned: True)

```log

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 234.51250953370166 > 223.50619740060748.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -20.75314732672507 (T) = (0 -233.96996198408547) / Math.Sqrt((3.540776934527949 / (20)) + (31.653604018606885 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.09563393103797968 = (213.54756854091534 - 233.96996198408547) / 213.54756854091534 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.

```#### System.Tests.Perf_GC&lt;Char&gt;.AllocateArray(length: 1000, pinned: True)

```log

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 265.30625229806174 > 259.5524720918846.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -27.164671281609646 (T) = (0 -264.1448533818429) / Math.Sqrt((4.746892162687712 / (20)) + (10.094746687195205 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.07754785816996065 = (245.13514771441322 - 264.1448533818429) / 245.13514771441322 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.

```#### System.Tests.Perf_GC&lt;Char&gt;.AllocateArray(length: 10000, pinned: True)

```log

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.4087448308270676 > 1.2702806935833255.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -43.22271177306731 (T) = (0 -1414.1734673610351) / Math.Sqrt((224.79249663715404 / (20)) + (301.0807195193993 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.15261081451862857 = (1226.930590575488 - 1414.1734673610351) / 1226.930590575488 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.

Docs

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

### Run Information
Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in System.Xml.Linq.Perf_XDocument

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
Create - Duration of single invocation 3.77 ns 5.91 ns 1.57 0.22 False 36.00234469229011 46.20917343046596 1.2835045557563822 Trace Trace

graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Xml.Linq.Perf_XDocument*'

Payloads

Baseline
Compare

Histogram

System.Xml.Linq.Perf_XDocument.Create


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.91461656162288 > 3.884099620964606.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -50.08458971590841 (T) = (0 -5.745669236669544) / Math.Sqrt((0.007062661707122872 / (7)) + (0.026032612466330336 / (40))) is less than -2.0141033888794695 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (7) + (40) - 2, .025) and -0.550699548534917 = (3.705211136546719 - 5.745669236669544) / 3.705211136546719 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.Xml.Linq.Perf_XDocument.Create()
       sub       rsp,28
       mov       rcx,offset MT_System.Xml.Linq.XDocument
       call      000000000000C390
       nop
       add       rsp,28
       ret
; Total bytes of code 25

Compare Jit Disasm

; System.Xml.Linq.Perf_XDocument.Create()
       sub       rsp,28
       mov       rcx,offset MT_System.Xml.Linq.XDocument
       call      0000000000002AE0
       nop
       add       rsp,28
       ret
; Total bytes of code 25

Docs

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

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in System.Tests.Perf_UInt32

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
ToString - Duration of single invocation 1.03 ns 2.54 ns 2.46 0.04 False 34.13213275749153 35.70453251262417 1.046068019432144 Trace Trace
ToString - Duration of single invocation 10.92 ns 13.27 ns 1.22 0.03 False 138.67149372659676 150.94039967035067 1.088474607246556 Trace Trace
ToString - Duration of single invocation 18.29 ns 20.47 ns 1.12 0.03 False 210.96662523293898 223.22277160191516 1.058095190912039 Trace Trace

graph
graph
graph
Test Report

Repro

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

Payloads

Baseline
Compare

Histogram

System.Tests.Perf_UInt32.ToString(value: 0)


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 2.5371002415555544 > 1.0811338360230642.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -240.21782832508043 (T) = (0 -2.5433766791405863) / Math.Sqrt((0.0008444112211842843 / (20)) + (1.4915513273059036E-05 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -1.606914242828977 = (0.9756272904399644 - 2.5433766791405863) / 0.9756272904399644 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_UInt32.ToString(UInt32)
       sub       rsp,28
       mov       ecx,edx
       call      qword ptr [93F0]
       nop
       add       rsp,28
       ret
; Total bytes of code 18
; System.Number.UInt32ToDecStr(UInt32)
       push      rdi
       push      rsi
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       mov       esi,ecx
       mov       eax,esi
       mov       ecx,1
       cmp       eax,186A0
       jae       near ptr 000000000000F47D
       cmp       eax,0A
       jae       short 000000000000F3F1
       mov       edi,ecx
       cmp       edi,1
       jne       short 000000000000F3FA
       mov       rax,1FC410002C8
       mov       rax,[rax]
       cmp       esi,[rax+8]
       jae       near ptr 000000000000F49E
       mov       ecx,esi
       mov       rax,[rax+rcx*8+10]
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       eax,64
       jae       short 000000000000F457
       inc       ecx
       jmp       short 000000000000F3C6
       mov       ecx,edi
       call      0
       test      rax,rax
       je        near ptr 000000000000F497
       lea       rdx,[rax+0C]
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       movsxd    rcx,edi
       lea       rdx,[rdx+rcx*2]
       mov       ecx,0CCCCCCCD
       mov       r8d,esi
       imul      rcx,r8
       shr       rcx,23
       lea       r8d,[rcx+rcx*4]
       add       r8d,r8d
       sub       esi,r8d
       add       rdx,0FFFFFFFFFFFFFFFE
       add       esi,30
       mov       [rdx],si
       test      ecx,ecx
       mov       esi,ecx
       jne       short 000000000000F41F
       xor       edx,edx
       mov       [rsp+20],rdx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       eax,3E8
       jae       short 000000000000F466
       add       ecx,2
       jmp       near ptr 000000000000F3C6
       cmp       eax,2710
       jae       short 000000000000F475
       add       ecx,3
       jmp       near ptr 000000000000F3C6
       add       ecx,4
       jmp       near ptr 000000000000F3C6
       mov       eax,esi
       shr       eax,5
       imul      rax,0A7C5AC5
       shr       rax,27
       mov       ecx,6
       jmp       near ptr 000000000000F3C1
       xor       edx,edx
       jmp       near ptr 000000000000F418
       call      0000000000006930
       int       3
; Total bytes of code 260

Compare Jit Disasm

; System.Tests.Perf_UInt32.ToString(UInt32)
       sub       rsp,28
       mov       ecx,edx
       call      qword ptr [93F0]
       nop
       add       rsp,28
       ret
; Total bytes of code 18
; System.Number.UInt32ToDecStr(UInt32)
       push      rdi
       push      rsi
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       mov       esi,ecx
       mov       eax,esi
       mov       ecx,1
       cmp       eax,186A0
       jae       near ptr 000000000000F47D
       cmp       eax,0A
       jae       short 000000000000F3F1
       mov       edi,ecx
       cmp       edi,1
       jne       short 000000000000F3FA
       mov       rax,1E5DE0002C8
       mov       rax,[rax]
       cmp       esi,[rax+8]
       jae       near ptr 000000000000F49E
       mov       ecx,esi
       mov       rax,[rax+rcx*8+10]
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       eax,64
       jae       short 000000000000F457
       inc       ecx
       jmp       short 000000000000F3C6
       mov       ecx,edi
       call      0
       test      rax,rax
       je        near ptr 000000000000F497
       lea       rdx,[rax+0C]
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       movsxd    rcx,edi
       lea       rdx,[rdx+rcx*2]
       mov       ecx,0CCCCCCCD
       mov       r8d,esi
       imul      rcx,r8
       shr       rcx,23
       lea       r8d,[rcx+rcx*4]
       add       r8d,r8d
       sub       esi,r8d
       add       rdx,0FFFFFFFFFFFFFFFE
       add       esi,30
       mov       [rdx],si
       test      ecx,ecx
       mov       esi,ecx
       jne       short 000000000000F41F
       xor       edx,edx
       mov       [rsp+20],rdx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       eax,3E8
       jae       short 000000000000F466
       add       ecx,2
       jmp       near ptr 000000000000F3C6
       cmp       eax,2710
       jae       short 000000000000F475
       add       ecx,3
       jmp       near ptr 000000000000F3C6
       add       ecx,4
       jmp       near ptr 000000000000F3C6
       mov       eax,esi
       shr       eax,5
       imul      rax,0A7C5AC5
       shr       rax,27
       mov       ecx,6
       jmp       near ptr 000000000000F3C1
       xor       edx,edx
       jmp       near ptr 000000000000F418
       call      000000000000AB50
       int       3
; Total bytes of code 260

System.Tests.Perf_UInt32.ToString(value: 12345)


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 13.272826830310143 > 11.42823623973439.
IsChangePoint: Marked as a change because one of 6/27/2022 8:54:23 AM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -26.338099010229854 (T) = (0 -13.180446548904632) / Math.Sqrt((0.06444859949316877 / (20)) + (0.06743530951951933 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.16278737563426335 = (11.335216416255912 - 13.180446548904632) / 11.335216416255912 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_UInt32.ToString(UInt32)
       sub       rsp,28
       mov       ecx,edx
       call      qword ptr [93F0]
       nop
       add       rsp,28
       ret
; Total bytes of code 18
; System.Number.UInt32ToDecStr(UInt32)
       push      rdi
       push      rsi
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       mov       esi,ecx
       mov       eax,esi
       mov       ecx,1
       cmp       eax,186A0
       jae       near ptr 000000000000F47D
       cmp       eax,0A
       jae       short 000000000000F3F1
       mov       edi,ecx
       cmp       edi,1
       jne       short 000000000000F3FA
       mov       rax,1A360C002C8
       mov       rax,[rax]
       cmp       esi,[rax+8]
       jae       near ptr 000000000000F49E
       mov       ecx,esi
       mov       rax,[rax+rcx*8+10]
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       eax,64
       jae       short 000000000000F457
       inc       ecx
       jmp       short 000000000000F3C6
       mov       ecx,edi
       call      0
       test      rax,rax
       je        near ptr 000000000000F497
       lea       rdx,[rax+0C]
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       movsxd    rcx,edi
       lea       rdx,[rdx+rcx*2]
       mov       ecx,0CCCCCCCD
       mov       r8d,esi
       imul      rcx,r8
       shr       rcx,23
       lea       r8d,[rcx+rcx*4]
       add       r8d,r8d
       sub       esi,r8d
       add       rdx,0FFFFFFFFFFFFFFFE
       add       esi,30
       mov       [rdx],si
       test      ecx,ecx
       mov       esi,ecx
       jne       short 000000000000F41F
       xor       edx,edx
       mov       [rsp+20],rdx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       eax,3E8
       jae       short 000000000000F466
       add       ecx,2
       jmp       near ptr 000000000000F3C6
       cmp       eax,2710
       jae       short 000000000000F475
       add       ecx,3
       jmp       near ptr 000000000000F3C6
       add       ecx,4
       jmp       near ptr 000000000000F3C6
       mov       eax,esi
       shr       eax,5
       imul      rax,0A7C5AC5
       shr       rax,27
       mov       ecx,6
       jmp       near ptr 000000000000F3C1
       xor       edx,edx
       jmp       near ptr 000000000000F418
       call      0000000000006930
       int       3
; Total bytes of code 260

Compare Jit Disasm

; System.Tests.Perf_UInt32.ToString(UInt32)
       sub       rsp,28
       mov       ecx,edx
       call      qword ptr [93F0]
       nop
       add       rsp,28
       ret
; Total bytes of code 18
; System.Number.UInt32ToDecStr(UInt32)
       push      rdi
       push      rsi
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       mov       esi,ecx
       mov       eax,esi
       mov       ecx,1
       cmp       eax,186A0
       jae       near ptr 000000000000F47D
       cmp       eax,0A
       jae       short 000000000000F3F1
       mov       edi,ecx
       cmp       edi,1
       jne       short 000000000000F3FA
       mov       rax,29C174002C8
       mov       rax,[rax]
       cmp       esi,[rax+8]
       jae       near ptr 000000000000F49E
       mov       ecx,esi
       mov       rax,[rax+rcx*8+10]
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       eax,64
       jae       short 000000000000F457
       inc       ecx
       jmp       short 000000000000F3C6
       mov       ecx,edi
       call      0
       test      rax,rax
       je        near ptr 000000000000F497
       lea       rdx,[rax+0C]
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       movsxd    rcx,edi
       lea       rdx,[rdx+rcx*2]
       mov       ecx,0CCCCCCCD
       mov       r8d,esi
       imul      rcx,r8
       shr       rcx,23
       lea       r8d,[rcx+rcx*4]
       add       r8d,r8d
       sub       esi,r8d
       add       rdx,0FFFFFFFFFFFFFFFE
       add       esi,30
       mov       [rdx],si
       test      ecx,ecx
       mov       esi,ecx
       jne       short 000000000000F41F
       xor       edx,edx
       mov       [rsp+20],rdx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       eax,3E8
       jae       short 000000000000F466
       add       ecx,2
       jmp       near ptr 000000000000F3C6
       cmp       eax,2710
       jae       short 000000000000F475
       add       ecx,3
       jmp       near ptr 000000000000F3C6
       add       ecx,4
       jmp       near ptr 000000000000F3C6
       mov       eax,esi
       shr       eax,5
       imul      rax,0A7C5AC5
       shr       rax,27
       mov       ecx,6
       jmp       near ptr 000000000000F3C1
       xor       edx,edx
       jmp       near ptr 000000000000F418
       call      000000000000AB50
       int       3
; Total bytes of code 260

System.Tests.Perf_UInt32.ToString(value: 4294967295)


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 20.467470952615635 > 18.889329880639846.
IsChangePoint: Marked as a change because one of 6/27/2022 8:54:23 AM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -44.2949961286388 (T) = (0 -20.504303603853266) / Math.Sqrt((0.030865965817398065 / (20)) + (0.0597457281091598 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.13513765815054968 = (18.063274931130728 - 20.504303603853266) / 18.063274931130728 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_UInt32.ToString(UInt32)
       sub       rsp,28
       mov       ecx,edx
       call      qword ptr [93F0]
       nop
       add       rsp,28
       ret
; Total bytes of code 18
; System.Number.UInt32ToDecStr(UInt32)
       push      rdi
       push      rsi
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       mov       esi,ecx
       mov       eax,esi
       mov       ecx,1
       cmp       eax,186A0
       jae       near ptr 000000000000F47D
       cmp       eax,0A
       jae       short 000000000000F3F1
       mov       edi,ecx
       cmp       edi,1
       jne       short 000000000000F3FA
       mov       rax,1BD99C002C8
       mov       rax,[rax]
       cmp       esi,[rax+8]
       jae       near ptr 000000000000F49E
       mov       ecx,esi
       mov       rax,[rax+rcx*8+10]
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       eax,64
       jae       short 000000000000F457
       inc       ecx
       jmp       short 000000000000F3C6
       mov       ecx,edi
       call      0
       test      rax,rax
       je        near ptr 000000000000F497
       lea       rdx,[rax+0C]
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       movsxd    rcx,edi
       lea       rdx,[rdx+rcx*2]
       mov       ecx,0CCCCCCCD
       mov       r8d,esi
       imul      rcx,r8
       shr       rcx,23
       lea       r8d,[rcx+rcx*4]
       add       r8d,r8d
       sub       esi,r8d
       add       rdx,0FFFFFFFFFFFFFFFE
       add       esi,30
       mov       [rdx],si
       test      ecx,ecx
       mov       esi,ecx
       jne       short 000000000000F41F
       xor       edx,edx
       mov       [rsp+20],rdx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       eax,3E8
       jae       short 000000000000F466
       add       ecx,2
       jmp       near ptr 000000000000F3C6
       cmp       eax,2710
       jae       short 000000000000F475
       add       ecx,3
       jmp       near ptr 000000000000F3C6
       add       ecx,4
       jmp       near ptr 000000000000F3C6
       mov       eax,esi
       shr       eax,5
       imul      rax,0A7C5AC5
       shr       rax,27
       mov       ecx,6
       jmp       near ptr 000000000000F3C1
       xor       edx,edx
       jmp       near ptr 000000000000F418
       call      0000000000006930
       int       3
; Total bytes of code 260

Compare Jit Disasm

; System.Tests.Perf_UInt32.ToString(UInt32)
       sub       rsp,28
       mov       ecx,edx
       call      qword ptr [93F0]
       nop
       add       rsp,28
       ret
; Total bytes of code 18
; System.Number.UInt32ToDecStr(UInt32)
       push      rdi
       push      rsi
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       mov       esi,ecx
       mov       eax,esi
       mov       ecx,1
       cmp       eax,186A0
       jae       near ptr 000000000000F47D
       cmp       eax,0A
       jae       short 000000000000F3F1
       mov       edi,ecx
       cmp       edi,1
       jne       short 000000000000F3FA
       mov       rax,294880002C8
       mov       rax,[rax]
       cmp       esi,[rax+8]
       jae       near ptr 000000000000F49E
       mov       ecx,esi
       mov       rax,[rax+rcx*8+10]
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       eax,64
       jae       short 000000000000F457
       inc       ecx
       jmp       short 000000000000F3C6
       mov       ecx,edi
       call      0
       test      rax,rax
       je        near ptr 000000000000F497
       lea       rdx,[rax+0C]
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       movsxd    rcx,edi
       lea       rdx,[rdx+rcx*2]
       mov       ecx,0CCCCCCCD
       mov       r8d,esi
       imul      rcx,r8
       shr       rcx,23
       lea       r8d,[rcx+rcx*4]
       add       r8d,r8d
       sub       esi,r8d
       add       rdx,0FFFFFFFFFFFFFFFE
       add       esi,30
       mov       [rdx],si
       test      ecx,ecx
       mov       esi,ecx
       jne       short 000000000000F41F
       xor       edx,edx
       mov       [rsp+20],rdx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       eax,3E8
       jae       short 000000000000F466
       add       ecx,2
       jmp       near ptr 000000000000F3C6
       cmp       eax,2710
       jae       short 000000000000F475
       add       ecx,3
       jmp       near ptr 000000000000F3C6
       add       ecx,4
       jmp       near ptr 000000000000F3C6
       mov       eax,esi
       shr       eax,5
       imul      rax,0A7C5AC5
       shr       rax,27
       mov       ecx,6
       jmp       near ptr 000000000000F3C1
       xor       edx,edx
       jmp       near ptr 000000000000F418
       call      000000000000AB50
       int       3
; Total bytes of code 260

Docs

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

@performanceautofiler
Copy link
Author

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in System.Tests.Perf_Uri

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
PathAndQuery - Duration of single invocation 2.59 ns 4.08 ns 1.57 0.06 False Trace Trace

graph
Test Report

Repro

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

Payloads

Baseline
Compare

Histogram

System.Tests.Perf_Uri.PathAndQuery


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 4.076259061973574 > 2.716781591510871.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -62.380912356711406 (T) = (0 -4.067938405022274) / Math.Sqrt((0.015021961017434355 / (20)) + (0.00027007738362801187 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.7305592682237064 = (2.350649573069935 - 4.067938405022274) / 2.350649573069935 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_Uri.PathAndQuery()
       mov       rcx,[rcx+8]
       cmp       [rcx],ecx
       jmp       qword ptr [13F0]
; Total bytes of code 12
; System.Uri.get_PathAndQuery()
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       mov       rsi,rcx
       cmp       qword ptr [rsi+18],0
       je        short 0000000000008B74
       mov       rcx,rsi
       call      qword ptr [1198]
       mov       rdi,rax
       cmp       qword ptr [rdi+20],0
       jne       short 0000000000008B68
       mov       rcx,rsi
       mov       edx,30
       mov       r8d,1
       call      qword ptr [1AF8]
       mov       rbx,rax
       mov       rcx,rsi
       call      qword ptr [1048]
       test      eax,eax
       je        short 0000000000008B5C
       mov       r8d,[rbx+8]
       test      r8d,r8d
       je        short 0000000000008BB8
       cmp       word ptr [rbx+0C],2F
       jne       short 0000000000008B5C
       dec       r8d
       mov       rcx,rbx
       mov       edx,1
       call      qword ptr [3360]
       mov       rbx,rax
       lea       rcx,[rdi+20]
       mov       rdx,rbx
       call      0000000000000010
       mov       rax,[rdi+20]
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       rcx,offset MT_System.InvalidOperationException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,60F
       mov       rdx,7FF952D52730
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [3018]
       mov       rdx,rax
       mov       rcx,rsi
       call      qword ptr [0D2B8]
       mov       rcx,rsi
       call      0000000000004690
       int       3
       call      0000000000006930
       int       3
; Total bytes of code 206

Compare Jit Disasm

; System.Tests.Perf_Uri.PathAndQuery()
       mov       rcx,[rcx+8]
       cmp       [rcx],ecx
       jmp       qword ptr [13F0]
; Total bytes of code 12
; System.Uri.get_PathAndQuery()
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       mov       rsi,rcx
       cmp       qword ptr [rsi+18],0
       je        near ptr 0000000000008BAD
       mov       rcx,rsi
       call      qword ptr [1198]
       mov       rdi,rax
       cmp       qword ptr [rdi+20],0
       jne       near ptr 0000000000008BA1
       mov       rcx,rsi
       mov       edx,30
       mov       r8d,1
       call      qword ptr [1AF8]
       mov       rbx,rax
       mov       rcx,rsi
       call      qword ptr [1048]
       test      eax,eax
       je        short 0000000000008B95
       mov       ecx,[rbx+8]
       test      ecx,ecx
       je        near ptr 0000000000008BFF
       cmp       word ptr [rbx+0C],2F
       jne       short 0000000000008B95
       lea       r8d,[rcx+0FFFF]
       test      r8d,r8d
       jne       short 0000000000008B6A
       mov       rcx,20626802028
       mov       rsi,[rcx]
       jmp       short 0000000000008B92
       test      ecx,ecx
       je        near ptr 0000000000008BF0
       mov       ecx,r8d
       call      0
       mov       rsi,rax
       mov       r8d,[rsi+8]
       lea       rcx,[rsi+0C]
       lea       rdx,[rbx+0E]
       add       r8,r8
       call      qword ptr [0BE10]
       mov       rbx,rsi
       lea       rcx,[rdi+20]
       mov       rdx,rbx
       call      0000000000000010
       mov       rax,[rdi+20]
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       rcx,offset MT_System.InvalidOperationException
       call      0000000000002AE0
       mov       rbx,rax
       mov       ecx,60F
       mov       rdx,7FFCD6972878
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [3018]
       mov       rdx,rax
       mov       rcx,rbx
       call      qword ptr [0D2B8]
       mov       rcx,rbx
       call      0000000000002B00
       mov       rcx,rbx
       mov       edx,1
       call      qword ptr [3378]
       int       3
       call      000000000000AB50
       int       3
; Total bytes of code 277

Docs

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

### Run Information
Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in Microsoft.AspNetCore.Server.Kestrel.Performance.PipeThroughputBenchmark

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
Parse_ParallelAsync - Duration of single invocation 875.41 ns 941.15 ns 1.08 0.26 False 4974.591290509259 5412.571404569892 1.0880434368339427 Trace Trace

graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'Microsoft.AspNetCore.Server.Kestrel.Performance.PipeThroughputBenchmark*'

Payloads

Baseline
Compare

Histogram

Microsoft.AspNetCore.Server.Kestrel.Performance.PipeThroughputBenchmark.Parse_ParallelAsync(Length: 128, Chunks: 16)


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 941.1547358349115 > 933.8651070731028.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -8.739061689299817 (T) = (0 -960.9095621093181) / Math.Sqrt((490.5947724789684 / (20)) + (1398.1840549818376 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.07543404460455165 = (893.5085949065846 - 960.9095621093181) / 893.5085949065846 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
; Microsoft.AspNetCore.Server.Kestrel.Performance.PipeThroughputBenchmark.Parse_ParallelAsync()
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       mov       rsi,rcx
       mov       rdi,offset MT_System.Func`1[[System.Threading.Tasks.Task, System.Private.CoreLib]]
       mov       rcx,rdi
       call      000000000000C390
       mov       rbx,rax
       test      rsi,rsi
       je        near ptr 0000000000001604
       lea       rcx,[rbx+8]
       mov       rdx,rsi
       call      0000000000000010
       mov       rcx,offset Microsoft.AspNetCore.Server.Kestrel.Performance.PipeThroughputBenchmark.ParallelWriter()
       mov       [rbx+18],rcx
       mov       rcx,rbx
       xor       edx,edx
       call      qword ptr [1270]
       mov       rbx,rax
       mov       rcx,rdi
       call      000000000000C390
       mov       rdi,rax
       lea       rcx,[rdi+8]
       mov       rdx,rsi
       call      0000000000000010
       mov       rcx,offset Microsoft.AspNetCore.Server.Kestrel.Performance.PipeThroughputBenchmark.ParallelReader()
       mov       [rdi+18],rcx
       mov       rcx,rdi
       xor       edx,edx
       call      qword ptr [1270]
       mov       rsi,rax
       mov       rcx,offset MT_System.Threading.Tasks.Task[]
       mov       edx,2
       call      000000000000C510
       mov       rdi,rax
       lea       rcx,[rdi+10]
       mov       rdx,rbx
       call      0000000000000010
       lea       rcx,[rdi+18]
       mov       rdx,rsi
       call      0000000000000010
       mov       rcx,rdi
       call      qword ptr [1360]
       nop
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       call      qword ptr [0B630]
       int       3
; Total bytes of code 203
; System.Threading.Tasks.Task.GetAwaiter()
       mov       rax,rcx
       ret
; Total bytes of code 4
; System.Runtime.CompilerServices.TaskAwaiter.GetResult()
       mov       rcx,[rcx]
       mov       eax,[rcx+34]
       and       eax,11000000
       cmp       eax,1000000
       jne       short 00000000000019B3
       ret
       jmp       qword ptr [78A0]
; Total bytes of code 25
; Microsoft.AspNetCore.Server.Kestrel.Performance.PipeThroughputBenchmark.ParallelWriter()
       sub       rsp,58
       xor       eax,eax
       mov       [rsp+28],rax
       vxorps    xmm4,xmm4,xmm4
       vmovdqa   xmmword ptr [rsp+30],xmm4
       vmovdqa   xmmword ptr [rsp+40],xmm4
       mov       [rsp+50],rax
       xor       eax,eax
       mov       [rsp+40],rax
       mov       [rsp+28],rcx
       mov       dword ptr [rsp+30],0FFFFFFFF
       lea       rcx,[rsp+28]
       call      qword ptr [57F8]
       mov       rax,[rsp+40]
       test      rax,rax
       je        short 000000000000192E
       add       rsp,58
       ret
       lea       rcx,[rsp+40]
       call      qword ptr [3948]
       jmp       short 0000000000001929
; Total bytes of code 91
; System.Threading.Tasks.Task.Run(System.Func`1<System.Threading.Tasks.Task>, System.Threading.CancellationToken)
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,38
       mov       rsi,rcx
       mov       rdi,rdx
       test      rsi,rsi
       je        near ptr 000000000000F5FE
       test      rdi,rdi
       jne       near ptr 000000000000F57E
       mov       rbx,offset MT_System.Threading.Tasks.Task`1[[System.Threading.Tasks.Task, System.Private.CoreLib]]
       mov       rcx,rbx
       call      qword ptr [9228]
       mov       rcx,175DB000A70
       mov       rbp,[rcx]
       cmp       [rax],al
       mov       rcx,rbx
       call      000000000000C390
       mov       rbx,rax
       mov       r9,rdi
       mov       dword ptr [rsp+20],8
       mov       dword ptr [rsp+28],2000
       mov       [rsp+30],rbp
       mov       rcx,rbx
       mov       rdx,rsi
       xor       r8d,r8d
       call      qword ptr [0F198]
       call      qword ptr [0B8A0]
       mov       rsi,rax
       test      rsi,rsi
       je        near ptr 000000000000F572
       mov       rcx,175DB000850
       cmp       rsi,[rcx]
       je        short 000000000000F49A
       mov       rcx,rbx
       call      qword ptr [0F4E0]
       lea       rcx,[rax+8]
       mov       rdx,rsi
       call      0000000000000010
       mov       rcx,rbx
       xor       edx,edx
       call      qword ptr [0F6D8]
       mov       rcx,offset MT_System.Threading.Tasks.UnwrapPromise`1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib]]
       call      000000000000C390
       mov       rsi,rax
       mov       edi,[rbx+34]
       and       edi,4
       test      edi,0FFFFFFBB
       jne       near ptr 000000000000F5DF
       test      dil,4
       jne       near ptr 000000000000F60A
       mov       [rsp+20],edi
       mov       dword ptr [rsp+28],400
       xor       ecx,ecx
       mov       [rsp+30],rcx
       mov       rcx,rsi
       xor       r9d,r9d
       xor       edx,edx
       xor       r8d,r8d
       call      qword ptr [0F198]
       mov       byte ptr [rsi+3A],1
       mov       rcx,175DB000AB0
       mov       rcx,[rcx]
       cmp       byte ptr [rcx+9D],0
       jne       near ptr 000000000000F645
       cmp       byte ptr [5678],0
       jne       near ptr 000000000000F67B
       test      dword ptr [rbx+34],1600000
       jne       near ptr 000000000000F5B7
       test      dword ptr [rbx+34],1600000
       jne       short 000000000000F58A
       cmp       qword ptr [rbx+20],0
       jne       short 000000000000F553
       lea       rcx,[rbx+20]
       mov       rdx,rsi
       xor       r8d,r8d
       call      000000000000F030
       test      rax,rax
       je        short 000000000000F566
       mov       rcx,rbx
       mov       rdx,rsi
       xor       r8d,r8d
       call      qword ptr [0FF00]
       test      eax,eax
       je        short 000000000000F58A
       mov       rax,rsi
       add       rsp,38
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       ret
       or        dword ptr [rbx+34],20000000
       jmp       near ptr 000000000000F49A
       cmp       dword ptr [rdi+20],0
       je        near ptr 000000000000F410
       jmp       short 000000000000F5EB
       call      000000000000F050
       test      eax,eax
       jne       short 000000000000F5A1
       mov       rcx,rsi
       mov       rdx,rbx
       call      qword ptr [7F60]
       jmp       short 000000000000F566
       movzx     ecx,byte ptr [rsi+39]
       test      ecx,ecx
       jne       short 000000000000F5C5
       mov       rcx,rsi
       mov       rdx,rbx
       call      qword ptr [7F78]
       jmp       short 000000000000F566
       mov       rcx,rsi
       mov       rdx,rbx
       call      qword ptr [7F78]
       jmp       short 000000000000F566
       cmp       ecx,1
       jne       short 000000000000F566
       mov       rcx,rsi
       mov       rdx,rbx
       xor       r8d,r8d
       call      qword ptr [7F90]
       mov       byte ptr [rsi+39],2
       jmp       short 000000000000F566
       mov       ecx,2E
       call      qword ptr [0B7E0]
       int       3
       mov       rcx,rdi
       call      qword ptr [1198]
       nop
       add       rsp,38
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       ret
       mov       ecx,2F
       call      qword ptr [0B7B0]
       int       3
       mov       rcx,7FF881BB4BE0
       mov       edx,39F
       call      000000000000FE00
       mov       rbp,[rax+48]
       test      rbp,rbp
       je        near ptr 000000000000F4D3
       mov       rcx,rsi
       call      qword ptr [0F4E0]
       lea       rcx,[rax+30]
       mov       rdx,rbp
       call      0000000000000010
       jmp       near ptr 000000000000F4D3
       mov       rcx,175DB000AB0
       mov       rdi,[rcx]
       mov       rcx,rsi
       call      qword ptr [0F408]
       mov       edx,eax
       mov       rcx,rdi
       mov       r8,175DB005938
       mov       r8,[r8]
       xor       r9d,r9d
       call      qword ptr [30F0]
       jmp       near ptr 000000000000F515
       mov       rcx,rsi
       call      qword ptr [0F048]
       jmp       near ptr 000000000000F522
; Total bytes of code 665
; Microsoft.AspNetCore.Server.Kestrel.Performance.PipeThroughputBenchmark.ParallelReader()
       sub       rsp,78
       xor       eax,eax
       mov       [rsp+28],rax
       vxorps    xmm4,xmm4,xmm4
       vmovdqa   xmmword ptr [rsp+30],xmm4
       vmovdqa   xmmword ptr [rsp+40],xmm4
       vmovdqa   xmmword ptr [rsp+50],xmm4
       vmovdqa   xmmword ptr [rsp+60],xmm4
       mov       [rsp+70],rax
       xor       eax,eax
       mov       [rsp+40],rax
       mov       [rsp+28],rcx
       mov       dword ptr [rsp+38],0FFFFFFFF
       lea       rcx,[rsp+28]
       call      qword ptr [57C8]
       mov       rax,[rsp+40]
       test      rax,rax
       je        short 0000000000001FAA
       add       rsp,78
       ret
       lea       rcx,[rsp+40]
       call      qword ptr [3948]
       jmp       short 0000000000001FA5
; Total bytes of code 103
; System.Threading.Tasks.Task.WhenAll(System.Threading.Tasks.Task[])
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,28
       mov       rsi,rcx
       test      rsi,rsi
       je        near ptr 00000000000016FC
       mov       edi,[rsi+8]
       test      edi,edi
       je        short 00000000000016A3
       movsxd    rdx,edi
       mov       rcx,offset MT_System.Threading.Tasks.Task[]
       call      000000000000C510
       mov       rbx,rax
       xor       ebp,ebp
       test      edi,edi
       jle       short 00000000000016DA
       test      edi,edi
       jl        short 00000000000016B4
       mov       edx,[rsi+8]
       cmp       [rbx+8],edi
       jl        short 00000000000016B4
       mov       edx,ebp
       mov       rax,[rsi+rdx*8+10]
       test      rax,rax
       je        short 00000000000016EB
       lea       rcx,[rbx+rdx*8+10]
       mov       rdx,rax
       call      0000000000000010
       inc       ebp
       cmp       ebp,edi
       jl        short 0000000000001682
       jmp       short 00000000000016DA
       mov       rcx,rsi
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       jmp       qword ptr [1378]
       mov       edx,ebp
       mov       rax,[rsi+rdx*8+10]
       test      rax,rax
       je        short 00000000000016EB
       cmp       ebp,[rbx+8]
       jae       short 0000000000001708
       mov       edx,ebp
       lea       rcx,[rbx+rdx*8+10]
       mov       rdx,rax
       call      0000000000000010
       inc       ebp
       cmp       ebp,edi
       jl        short 00000000000016B4
       mov       rcx,rbx
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       jmp       qword ptr [1378]
       mov       ecx,1C
       mov       edx,33
       call      qword ptr [0B768]
       int       3
       mov       ecx,33
       call      qword ptr [0B7B0]
       int       3
       call      0000000000006930
       int       3
; Total bytes of code 206
; System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task)
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       test      dword ptr [rsi+34],1600000
       jne       short 0000000000001B52
       mov       rcx,rsi
       xor       r8d,r8d
       mov       edx,0FFFFFFFF
       call      qword ptr [0FAE0]
       mov       rcx,rsi
       call      qword ptr [0F270]
       mov       ecx,[rsi+34]
       and       ecx,1600000
       cmp       ecx,1000000
       je        short 0000000000001B75
       mov       rcx,rsi
       call      qword ptr [78B8]
       nop
       add       rsp,20
       pop       rsi
       ret
; Total bytes of code 76

Compare Jit Disasm

; Microsoft.AspNetCore.Server.Kestrel.Performance.PipeThroughputBenchmark.Parse_ParallelAsync()
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       mov       rsi,rcx
       mov       rdi,offset MT_System.Func`1[[System.Threading.Tasks.Task, System.Private.CoreLib]]
       mov       rcx,rdi
       call      0000000000002AE0
       mov       rbx,rax
       test      rsi,rsi
       je        near ptr 0000000000001604
       lea       rcx,[rbx+8]
       mov       rdx,rsi
       call      0000000000000010
       mov       rcx,offset Microsoft.AspNetCore.Server.Kestrel.Performance.PipeThroughputBenchmark.ParallelWriter()
       mov       [rbx+18],rcx
       mov       rcx,rbx
       xor       edx,edx
       call      qword ptr [1270]
       mov       rbx,rax
       mov       rcx,rdi
       call      0000000000002AE0
       mov       rdi,rax
       lea       rcx,[rdi+8]
       mov       rdx,rsi
       call      0000000000000010
       mov       rcx,offset Microsoft.AspNetCore.Server.Kestrel.Performance.PipeThroughputBenchmark.ParallelReader()
       mov       [rdi+18],rcx
       mov       rcx,rdi
       xor       edx,edx
       call      qword ptr [1270]
       mov       rsi,rax
       mov       rcx,offset MT_System.Threading.Tasks.Task[]
       mov       edx,2
       call      0000000000002C60
       mov       rdi,rax
       lea       rcx,[rdi+10]
       mov       rdx,rbx
       call      0000000000000010
       lea       rcx,[rdi+18]
       mov       rdx,rsi
       call      0000000000000010
       mov       rcx,rdi
       call      qword ptr [1360]
       nop
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       call      qword ptr [0B630]
       int       3
; Total bytes of code 203
; System.Threading.Tasks.Task.GetAwaiter()
       mov       rax,rcx
       ret
; Total bytes of code 4
; System.Runtime.CompilerServices.TaskAwaiter.GetResult()
       mov       rcx,[rcx]
       mov       eax,[rcx+34]
       and       eax,11000000
       cmp       eax,1000000
       jne       short 0000000000001913
       ret
       jmp       qword ptr [78A0]
; Total bytes of code 25
; Microsoft.AspNetCore.Server.Kestrel.Performance.PipeThroughputBenchmark.ParallelWriter()
       sub       rsp,58
       xor       eax,eax
       mov       [rsp+28],rax
       vxorps    xmm4,xmm4,xmm4
       vmovdqa   xmmword ptr [rsp+30],xmm4
       vmovdqa   xmmword ptr [rsp+40],xmm4
       mov       [rsp+50],rax
       xor       eax,eax
       mov       [rsp+40],rax
       mov       [rsp+28],rcx
       mov       dword ptr [rsp+30],0FFFFFFFF
       lea       rcx,[rsp+28]
       call      qword ptr [57C8]
       mov       rax,[rsp+40]
       test      rax,rax
       je        short 0000000000002A9E
       add       rsp,58
       ret
       lea       rcx,[rsp+40]
       call      qword ptr [37F8]
       jmp       short 0000000000002A99
; Total bytes of code 91
; System.Threading.Tasks.Task.Run(System.Func`1<System.Threading.Tasks.Task>, System.Threading.CancellationToken)
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,38
       mov       rsi,rcx
       mov       rdi,rdx
       test      rsi,rsi
       je        near ptr 000000000000F5FE
       test      rdi,rdi
       jne       near ptr 000000000000F57E
       mov       rbx,offset MT_System.Threading.Tasks.Task`1[[System.Threading.Tasks.Task, System.Private.CoreLib]]
       mov       rcx,rbx
       call      qword ptr [9228]
       mov       rcx,199BD800A70
       mov       rbp,[rcx]
       cmp       [rax],al
       mov       rcx,rbx
       call      0000000000002AE0
       mov       rbx,rax
       mov       r9,rdi
       mov       dword ptr [rsp+20],8
       mov       dword ptr [rsp+28],2000
       mov       [rsp+30],rbp
       mov       rcx,rbx
       mov       rdx,rsi
       xor       r8d,r8d
       call      qword ptr [0F198]
       call      qword ptr [0B8A0]
       mov       rsi,rax
       test      rsi,rsi
       je        near ptr 000000000000F572
       mov       rcx,199BD800850
       cmp       rsi,[rcx]
       je        short 000000000000F49A
       mov       rcx,rbx
       call      qword ptr [0F4E0]
       lea       rcx,[rax+8]
       mov       rdx,rsi
       call      0000000000000010
       mov       rcx,rbx
       xor       edx,edx
       call      qword ptr [0F6D8]
       mov       rcx,offset MT_System.Threading.Tasks.UnwrapPromise`1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib]]
       call      0000000000002AE0
       mov       rsi,rax
       mov       edi,[rbx+34]
       and       edi,4
       test      edi,0FFFFFFBB
       jne       near ptr 000000000000F5DF
       test      dil,4
       jne       near ptr 000000000000F60A
       mov       [rsp+20],edi
       mov       dword ptr [rsp+28],400
       xor       ecx,ecx
       mov       [rsp+30],rcx
       mov       rcx,rsi
       xor       r9d,r9d
       xor       edx,edx
       xor       r8d,r8d
       call      qword ptr [0F198]
       mov       byte ptr [rsi+3A],1
       mov       rcx,199BD800AB0
       mov       rcx,[rcx]
       cmp       byte ptr [rcx+9D],0
       jne       near ptr 000000000000F645
       cmp       byte ptr [5690],0
       jne       near ptr 000000000000F67B
       test      dword ptr [rbx+34],1600000
       jne       near ptr 000000000000F5B7
       test      dword ptr [rbx+34],1600000
       jne       short 000000000000F58A
       cmp       qword ptr [rbx+20],0
       jne       short 000000000000F553
       lea       rcx,[rbx+20]
       mov       rdx,rsi
       xor       r8d,r8d
       call      000000000000EC00
       test      rax,rax
       je        short 000000000000F566
       mov       rcx,rbx
       mov       rdx,rsi
       xor       r8d,r8d
       call      qword ptr [0FF00]
       test      eax,eax
       je        short 000000000000F58A
       mov       rax,rsi
       add       rsp,38
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       ret
       or        dword ptr [rbx+34],20000000
       jmp       near ptr 000000000000F49A
       cmp       dword ptr [rdi+20],0
       je        near ptr 000000000000F410
       jmp       short 000000000000F5EB
       call      0000000000000BC0
       test      eax,eax
       jne       short 000000000000F5A1
       mov       rcx,rsi
       mov       rdx,rbx
       call      qword ptr [7F60]
       jmp       short 000000000000F566
       movzx     ecx,byte ptr [rsi+39]
       test      ecx,ecx
       jne       short 000000000000F5C5
       mov       rcx,rsi
       mov       rdx,rbx
       call      qword ptr [7F78]
       jmp       short 000000000000F566
       mov       rcx,rsi
       mov       rdx,rbx
       call      qword ptr [7F78]
       jmp       short 000000000000F566
       cmp       ecx,1
       jne       short 000000000000F566
       mov       rcx,rsi
       mov       rdx,rbx
       xor       r8d,r8d
       call      qword ptr [7F90]
       mov       byte ptr [rsi+39],2
       jmp       short 000000000000F566
       mov       ecx,2E
       call      qword ptr [0B7E0]
       int       3
       mov       rcx,rdi
       call      qword ptr [1198]
       nop
       add       rsp,38
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       ret
       mov       ecx,2F
       call      qword ptr [0B7B0]
       int       3
       mov       rcx,7FFE976D4BF0
       mov       edx,3A0
       call      000000000000E5B0
       mov       rbp,[rax+48]
       test      rbp,rbp
       je        near ptr 000000000000F4D3
       mov       rcx,rsi
       call      qword ptr [0F4E0]
       lea       rcx,[rax+30]
       mov       rdx,rbp
       call      0000000000000010
       jmp       near ptr 000000000000F4D3
       mov       rcx,199BD800AB0
       mov       rdi,[rcx]
       mov       rcx,rsi
       call      qword ptr [0F408]
       mov       edx,eax
       mov       rcx,rdi
       mov       r8,199BD805928
       mov       r8,[r8]
       xor       r9d,r9d
       call      qword ptr [30F0]
       jmp       near ptr 000000000000F515
       mov       rcx,rsi
       call      qword ptr [0F048]
       jmp       near ptr 000000000000F522
; Total bytes of code 665
; Microsoft.AspNetCore.Server.Kestrel.Performance.PipeThroughputBenchmark.ParallelReader()
       sub       rsp,78
       xor       eax,eax
       mov       [rsp+28],rax
       vxorps    xmm4,xmm4,xmm4
       vmovdqa   xmmword ptr [rsp+30],xmm4
       vmovdqa   xmmword ptr [rsp+40],xmm4
       vmovdqa   xmmword ptr [rsp+50],xmm4
       vmovdqa   xmmword ptr [rsp+60],xmm4
       mov       [rsp+70],rax
       xor       eax,eax
       mov       [rsp+40],rax
       mov       [rsp+28],rcx
       mov       dword ptr [rsp+38],0FFFFFFFF
       lea       rcx,[rsp+28]
       call      qword ptr [57F8]
       mov       rax,[rsp+40]
       test      rax,rax
       je        short 000000000000308A
       add       rsp,78
       ret
       lea       rcx,[rsp+40]
       call      qword ptr [37F8]
       jmp       short 0000000000003085
; Total bytes of code 103
; System.Threading.Tasks.Task.WhenAll(System.Threading.Tasks.Task[])
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,28
       mov       rsi,rcx
       test      rsi,rsi
       je        near ptr 00000000000016FC
       mov       edi,[rsi+8]
       test      edi,edi
       je        short 00000000000016A3
       movsxd    rdx,edi
       mov       rcx,offset MT_System.Threading.Tasks.Task[]
       call      0000000000002C60
       mov       rbx,rax
       xor       ebp,ebp
       test      edi,edi
       jle       short 00000000000016DA
       test      edi,edi
       jl        short 00000000000016B4
       mov       edx,[rsi+8]
       cmp       [rbx+8],edi
       jl        short 00000000000016B4
       mov       edx,ebp
       mov       rax,[rsi+rdx*8+10]
       test      rax,rax
       je        short 00000000000016EB
       lea       rcx,[rbx+rdx*8+10]
       mov       rdx,rax
       call      0000000000000010
       inc       ebp
       cmp       ebp,edi
       jl        short 0000000000001682
       jmp       short 00000000000016DA
       mov       rcx,rsi
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       jmp       qword ptr [1378]
       mov       edx,ebp
       mov       rax,[rsi+rdx*8+10]
       test      rax,rax
       je        short 00000000000016EB
       cmp       ebp,[rbx+8]
       jae       short 0000000000001708
       mov       edx,ebp
       lea       rcx,[rbx+rdx*8+10]
       mov       rdx,rax
       call      0000000000000010
       inc       ebp
       cmp       ebp,edi
       jl        short 00000000000016B4
       mov       rcx,rbx
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       jmp       qword ptr [1378]
       mov       ecx,1C
       mov       edx,33
       call      qword ptr [0B768]
       int       3
       mov       ecx,33
       call      qword ptr [0B7B0]
       int       3
       call      000000000000AB50
       int       3
; Total bytes of code 206
; System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task)
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       test      dword ptr [rsi+34],1600000
       jne       short 0000000000001952
       mov       rcx,rsi
       xor       r8d,r8d
       mov       edx,0FFFFFFFF
       call      qword ptr [0FAE0]
       mov       rcx,rsi
       call      qword ptr [0F270]
       mov       ecx,[rsi+34]
       and       ecx,1600000
       cmp       ecx,1000000
       je        short 0000000000001975
       mov       rcx,rsi
       call      qword ptr [78B8]
       nop
       add       rsp,20
       pop       rsi
       ret
; Total bytes of code 76

Docs

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

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
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
CastToBaseClass - Duration of single invocation 2.25 μs 2.75 μs 1.22 0.31 False 21023.12853107345 22095.919023136248 1.0510290602313137 Trace Trace

graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Linq.Tests.Perf_Enumerable*'

Payloads

Baseline
Compare

Histogram

System.Linq.Tests.Perf_Enumerable.CastToBaseClass(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 2.7518820488721802 > 2.3745418802092937.
IsChangePoint: Marked as a change because one of 7/26/2022 4:40:06 AM, 7/27/2022 4:00:59 PM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -10.69730814129595 (T) = (0 -2654.4570447730484) / Math.Sqrt((1850.5518745605737 / (20)) + (41539.969856858734 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.15677806696938354 = (2294.698629381347 - 2654.4570447730484) / 2294.698629381347 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.CastToBaseClass(System.Linq.Tests.LinqTestData)
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       mov       rsi,rcx
       mov       rdi,[rdx+8]
       mov       rdx,rdi
       mov       rcx,offset MT_System.Collections.Generic.IEnumerable`1[[System.Object, System.Private.CoreLib]]
       call      qword ptr [0B7F8]
       mov       rdx,rax
       test      rdx,rdx
       je        short 000000000000176B
       jmp       short 00000000000017A0
       test      rdi,rdi
       je        short 00000000000017BB
       mov       rcx,offset MT_System.Linq.Enumerable+<CastIterator>d__67`1[[System.Object, System.Private.CoreLib]]
       call      000000000000C390
       mov       rbx,rax
       mov       dword ptr [rbx+28],0FFFFFFFE
       call      000000000000A600
       mov       [rbx+2C],eax
       lea       rcx,[rbx+18]
       mov       rdx,rdi
       call      0000000000000010
       mov       rdx,rbx
       mov       r8,[rsi+8]
       mov       rcx,offset MD_BenchmarkDotNet.Engines.ConsumerExtensions.Consume(System.Collections.Generic.IEnumerable`1<!!0>, BenchmarkDotNet.Engines.Consumer)
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       jmp       qword ptr [5870]
       mov       ecx,10
       call      qword ptr [0F780]
       int       3
; Total bytes of code 135
; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfAny(Void*, System.Object)
       push      rdi
       push      rsi
       test      rdx,rdx
       je        near ptr 0000000000001968
       mov       rax,[rdx]
       cmp       rax,rcx
       je        near ptr 0000000000001968
       mov       r8,2399D800D10
       mov       r8,[r8]
       add       r8,10
       rorx      r9,rax,20
       xor       r9,rcx
       mov       r10,79B97F4A7C15
       imul      r9,r10
       mov       r10d,[r8]
       shrx      r9,r9,r10
       xor       r10d,r10d
       lea       r11d,[r9+1]
       movsxd    r11,r11d
       lea       r11,[r11+r11*2]
       lea       r11,[r8+r11*8]
       mov       esi,[r11]
       mov       rdi,[r11+8]
       and       esi,0FFFFFFFE
       cmp       rdi,rax
       jne       short 0000000000001945
       mov       rdi,[r11+10]
       xor       rdi,rcx
       cmp       rdi,1
       ja        short 0000000000001945
       cmp       esi,[r11]
       jne       short 0000000000001959
       mov       r8d,edi
       cmp       r8d,1
       je        short 0000000000001968
       jmp       short 0000000000001961
       test      esi,esi
       je        short 0000000000001959
       inc       r10d
       add       r9d,r10d
       and       r9d,[r8+4]
       cmp       r10d,8
       jl        short 000000000000190A
       mov       r8d,2
       jmp       short 000000000000193D
       test      r8d,r8d
       jne       short 000000000000196E
       xor       edx,edx
       mov       rax,rdx
       pop       rsi
       pop       rdi
       ret
       pop       rsi
       pop       rdi
       jmp       near ptr 0000000000000580
; Total bytes of code 181
; BenchmarkDotNet.Engines.ConsumerExtensions.Consume[[System.__Canon, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<System.__Canon>, BenchmarkDotNet.Engines.Consumer)
       push      rbp
       push      r14
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,40
       lea       rbp,[rsp+60]
       xor       eax,eax
       mov       [rbp+0FFD0],rax
       mov       [rbp+0FFC0],rsp
       mov       [rbp+0FFD8],rcx
       mov       rsi,rcx
       mov       rbx,rdx
       mov       rdi,r8
       mov       r14,[rsi+10]
       mov       r11,[r14+10]
       test      r11,r11
       je        short 0000000000001A75
       jmp       short 0000000000001A8A
       mov       rcx,rsi
       mov       rdx,7FFBE676F020
       call      000000000000F380
       mov       r11,rax
       mov       rcx,rbx
       call      qword ptr [r11]
       mov       rbx,rax
       mov       [rbp+0FFC8],rbx
       mov       rcx,rbx
       mov       r11,7FFBE6100590
       call      qword ptr [r11]
       test      eax,eax
       je        short 0000000000001B18
       mov       r11,[r14+18]
       test      r11,r11
       je        short 0000000000001AB6
       jmp       short 0000000000001ACB
       mov       rcx,rsi
       mov       rdx,7FFBE676F0F8
       call      000000000000F380
       mov       r11,rax
       mov       rcx,rbx
       call      qword ptr [r11]
       mov       [rbp+0FFD0],rax
       mov       rdx,[r14+20]
       test      rdx,rdx
       je        short 0000000000001AE0
       jmp       short 0000000000001AF5
       mov       rcx,rsi
       mov       rdx,7FFBE676F260
       call      000000000000F380
       mov       rdx,rax
       lea       r8,[rbp+0FFD0]
       mov       rcx,rdi
       cmp       [rcx],ecx
       call      qword ptr [5B88]
       mov       rcx,rbx
       mov       r11,7FFBE6100590
       call      qword ptr [r11]
       test      eax,eax
       jne       short 0000000000001AAB
       mov       rcx,rbx
       mov       r11,7FFBE6100598
       call      qword ptr [r11]
       nop
       add       rsp,40
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r14
       pop       rbp
       ret
       push      rbp
       push      r14
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,30
       mov       rbp,[rcx+20]
       mov       [rsp+20],rbp
       lea       rbp,[rbp+60]
       cmp       qword ptr [rbp+0FFC8],0
       je        short 0000000000001B63
       mov       rcx,[rbp+0FFC8]
       mov       r11,7FFBE6100598
       call      qword ptr [r11]
       nop
       add       rsp,30
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r14
       pop       rbp
       ret
; Total bytes of code 303

Compare Jit Disasm

; System.Linq.Tests.Perf_Enumerable.CastToBaseClass(System.Linq.Tests.LinqTestData)
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       mov       rsi,rcx
       mov       rdi,[rdx+8]
       mov       rdx,rdi
       mov       rcx,offset MT_System.Collections.Generic.IEnumerable`1[[System.Object, System.Private.CoreLib]]
       call      qword ptr [0B7F8]
       mov       rdx,rax
       test      rdx,rdx
       je        short 000000000000176B
       jmp       short 00000000000017A0
       test      rdi,rdi
       je        short 00000000000017BB
       mov       rcx,offset MT_System.Linq.Enumerable+<CastIterator>d__67`1[[System.Object, System.Private.CoreLib]]
       call      0000000000002AE0
       mov       rbx,rax
       mov       dword ptr [rbx+28],0FFFFFFFE
       call      0000000000009E60
       mov       [rbx+2C],eax
       lea       rcx,[rbx+18]
       mov       rdx,rdi
       call      0000000000000010
       mov       rdx,rbx
       mov       r8,[rsi+8]
       mov       rcx,offset MD_BenchmarkDotNet.Engines.ConsumerExtensions.Consume(System.Collections.Generic.IEnumerable`1<!!0>, BenchmarkDotNet.Engines.Consumer)
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       jmp       qword ptr [5870]
       mov       ecx,10
       call      qword ptr [0F780]
       int       3
; Total bytes of code 135
; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfAny(Void*, System.Object)
       push      rdi
       push      rsi
       test      rdx,rdx
       je        near ptr 0000000000001968
       mov       rax,[rdx]
       cmp       rax,rcx
       je        near ptr 0000000000001968
       mov       r8,24415C00D10
       mov       r8,[r8]
       add       r8,10
       rorx      r9,rax,20
       xor       r9,rcx
       mov       r10,79B97F4A7C15
       imul      r9,r10
       mov       r10d,[r8]
       shrx      r9,r9,r10
       xor       r10d,r10d
       lea       r11d,[r9+1]
       movsxd    r11,r11d
       lea       r11,[r11+r11*2]
       lea       r11,[r8+r11*8]
       mov       esi,[r11]
       mov       rdi,[r11+8]
       and       esi,0FFFFFFFE
       cmp       rdi,rax
       jne       short 0000000000001945
       mov       rdi,[r11+10]
       xor       rdi,rcx
       cmp       rdi,1
       ja        short 0000000000001945
       cmp       esi,[r11]
       jne       short 0000000000001959
       mov       r8d,edi
       cmp       r8d,1
       je        short 0000000000001968
       jmp       short 0000000000001961
       test      esi,esi
       je        short 0000000000001959
       inc       r10d
       add       r9d,r10d
       and       r9d,[r8+4]
       cmp       r10d,8
       jl        short 000000000000190A
       mov       r8d,2
       jmp       short 000000000000193D
       test      r8d,r8d
       jne       short 000000000000196E
       xor       edx,edx
       mov       rax,rdx
       pop       rsi
       pop       rdi
       ret
       pop       rsi
       pop       rdi
       jmp       near ptr 0000000000008DE0
; Total bytes of code 181
; BenchmarkDotNet.Engines.ConsumerExtensions.Consume[[System.__Canon, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<System.__Canon>, BenchmarkDotNet.Engines.Consumer)
       push      rbp
       push      r14
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,40
       lea       rbp,[rsp+60]
       xor       eax,eax
       mov       [rbp+0FFD0],rax
       mov       [rbp+0FFC0],rsp
       mov       [rbp+0FFD8],rcx
       mov       rsi,rcx
       mov       rbx,rdx
       mov       rdi,r8
       mov       r14,[rsi+10]
       mov       r11,[r14+10]
       test      r11,r11
       je        short 0000000000001A75
       jmp       short 0000000000001A8A
       mov       rcx,rsi
       mov       rdx,7FF8CCBAFA58
       call      0000000000000EF0
       mov       r11,rax
       mov       rcx,rbx
       call      qword ptr [r11]
       mov       rbx,rax
       mov       [rbp+0FFC8],rbx
       mov       rcx,rbx
       mov       r11,7FF8CC540590
       call      qword ptr [r11]
       test      eax,eax
       je        short 0000000000001B18
       mov       r11,[r14+18]
       test      r11,r11
       je        short 0000000000001AB6
       jmp       short 0000000000001ACB
       mov       rcx,rsi
       mov       rdx,7FF8CCBAFB30
       call      0000000000000EF0
       mov       r11,rax
       mov       rcx,rbx
       call      qword ptr [r11]
       mov       [rbp+0FFD0],rax
       mov       rdx,[r14+20]
       test      rdx,rdx
       je        short 0000000000001AE0
       jmp       short 0000000000001AF5
       mov       rcx,rsi
       mov       rdx,7FF8CCBAFC98
       call      0000000000000EF0
       mov       rdx,rax
       lea       r8,[rbp+0FFD0]
       mov       rcx,rdi
       cmp       [rcx],ecx
       call      qword ptr [5B88]
       mov       rcx,rbx
       mov       r11,7FF8CC540590
       call      qword ptr [r11]
       test      eax,eax
       jne       short 0000000000001AAB
       mov       rcx,rbx
       mov       r11,7FF8CC540598
       call      qword ptr [r11]
       nop
       add       rsp,40
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r14
       pop       rbp
       ret
       push      rbp
       push      r14
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,30
       mov       rbp,[rcx+20]
       mov       [rsp+20],rbp
       lea       rbp,[rbp+60]
       cmp       qword ptr [rbp+0FFC8],0
       je        short 0000000000001B63
       mov       rcx,[rbp+0FFC8]
       mov       r11,7FF8CC540598
       call      qword ptr [r11]
       nop
       add       rsp,30
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r14
       pop       rbp
       ret
; Total bytes of code 303

Docs

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

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in System.Xml.Linq.Perf_XElementList

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
Enumerator - Duration of single invocation 241.53 ns 258.89 ns 1.07 0.02 False Trace Trace

graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Xml.Linq.Perf_XElementList*'

Payloads

Baseline
Compare

Histogram

System.Xml.Linq.Perf_XElementList.Enumerator


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 258.88528707801066 > 253.88985455469566.
IsChangePoint: Marked as a change because one of 6/22/2022 6:53:40 PM, 7/13/2022 7:22:00 AM, 7/24/2022 8:36:55 PM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -21.254495585108565 (T) = (0 -260.03731860865685) / Math.Sqrt((28.37754724544103 / (20)) + (2.280619586824209 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.11024569400050369 = (234.2160118375914 - 260.03731860865685) / 234.2160118375914 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.Xml.Linq.Perf_XElementList.Enumerator()
       push      rbp
       push      rsi
       sub       rsp,38
       lea       rbp,[rsp+40]
       mov       [rbp+0FFE0],rsp
       mov       r11,[rcx+10]
       mov       rsi,[rcx+8]
       mov       rcx,r11
       mov       r11,7FFCB2EF0558
       call      qword ptr [r11]
       mov       rcx,rax
       mov       [rbp+0FFF0],rcx
       mov       r11,7FFCB2EF0560
       call      qword ptr [r11]
       test      eax,eax
       je        short 00000000000090B1
       mov       rcx,[rbp+0FFF0]
       mov       r11,7FFCB2EF0568
       call      qword ptr [r11]
       lea       rcx,[rsi+10]
       mov       rdx,rax
       call      0000000000000010
       mov       rcx,[rbp+0FFF0]
       mov       r11,7FFCB2EF0560
       call      qword ptr [r11]
       test      eax,eax
       jne       short 000000000000907F
       mov       rcx,[rbp+0FFF0]
       mov       r11,7FFCB2EF0570
       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+0FFF0],0
       je        short 00000000000090F5
       mov       rcx,[rbp+0FFF0]
       mov       r11,7FFCB2EF0570
       call      qword ptr [r11]
       nop
       add       rsp,28
       pop       rsi
       pop       rbp
       ret
; Total bytes of code 189

Compare Jit Disasm

; System.Xml.Linq.Perf_XElementList.Enumerator()
       push      rbp
       push      rsi
       sub       rsp,38
       lea       rbp,[rsp+40]
       mov       [rbp+0FFE0],rsp
       mov       r11,[rcx+10]
       mov       rsi,[rcx+8]
       mov       rcx,r11
       mov       r11,7FF8B92D0558
       call      qword ptr [r11]
       mov       rcx,rax
       mov       [rbp+0FFF0],rcx
       mov       r11,7FF8B92D0560
       call      qword ptr [r11]
       test      eax,eax
       je        short 00000000000090B1
       mov       rcx,[rbp+0FFF0]
       mov       r11,7FF8B92D0568
       call      qword ptr [r11]
       lea       rcx,[rsi+10]
       mov       rdx,rax
       call      0000000000000010
       mov       rcx,[rbp+0FFF0]
       mov       r11,7FF8B92D0560
       call      qword ptr [r11]
       test      eax,eax
       jne       short 000000000000907F
       mov       rcx,[rbp+0FFF0]
       mov       r11,7FF8B92D0570
       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+0FFF0],0
       je        short 00000000000090F5
       mov       rcx,[rbp+0FFF0]
       mov       r11,7FF8B92D0570
       call      qword ptr [r11]
       nop
       add       rsp,28
       pop       rsi
       pop       rbp
       ret
; Total bytes of code 189

Docs

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

@performanceautofiler
Copy link
Author

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in System.Tests.Perf_UInt16

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
ToString - Duration of single invocation 1.21 ns 2.69 ns 2.23 0.08 False 33.76126026484279 35.712356086781014 1.057790965344087 Trace Trace
ToString - Duration of single invocation 11.68 ns 13.67 ns 1.17 0.05 False 138.37012572598942 149.5830872328758 1.0810359999895578 Trace Trace
ToString - Duration of single invocation 11.98 ns 13.85 ns 1.16 0.04 False 139.22276595226677 149.461971985821 1.0735454863543281 Trace Trace

graph
graph
graph
Test Report

Repro

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

Payloads

Baseline
Compare

Histogram

System.Tests.Perf_UInt16.ToString(value: 0)


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 2.6886337894821617 > 1.2631347464005922.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -165.56084327550892 (T) = (0 -2.668851888602222) / Math.Sqrt((0.0016652662354205545 / (20)) + (0.00014356357063213254 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -1.3703877341132331 = (1.1259136428161804 - 2.668851888602222) / 1.1259136428161804 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_UInt16.ToString(UInt16)
       sub       rsp,28
       movzx     ecx,dx
       call      qword ptr [93F0]
       nop
       add       rsp,28
       ret
; Total bytes of code 19
; System.Number.UInt32ToDecStr(UInt32)
       push      rdi
       push      rsi
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       mov       esi,ecx
       mov       eax,esi
       mov       ecx,1
       cmp       eax,186A0
       jae       near ptr 000000000000F43D
       cmp       eax,0A
       jae       short 000000000000F3B1
       mov       edi,ecx
       cmp       edi,1
       jne       short 000000000000F3BA
       mov       rax,26F3C4002C8
       mov       rax,[rax]
       cmp       esi,[rax+8]
       jae       near ptr 000000000000F45E
       mov       ecx,esi
       mov       rax,[rax+rcx*8+10]
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       eax,64
       jae       short 000000000000F417
       inc       ecx
       jmp       short 000000000000F386
       mov       ecx,edi
       call      0
       test      rax,rax
       je        near ptr 000000000000F457
       lea       rdx,[rax+0C]
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       movsxd    rcx,edi
       lea       rdx,[rdx+rcx*2]
       mov       ecx,0CCCCCCCD
       mov       r8d,esi
       imul      rcx,r8
       shr       rcx,23
       lea       r8d,[rcx+rcx*4]
       add       r8d,r8d
       sub       esi,r8d
       add       rdx,0FFFFFFFFFFFFFFFE
       add       esi,30
       mov       [rdx],si
       test      ecx,ecx
       mov       esi,ecx
       jne       short 000000000000F3DF
       xor       edx,edx
       mov       [rsp+20],rdx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       eax,3E8
       jae       short 000000000000F426
       add       ecx,2
       jmp       near ptr 000000000000F386
       cmp       eax,2710
       jae       short 000000000000F435
       add       ecx,3
       jmp       near ptr 000000000000F386
       add       ecx,4
       jmp       near ptr 000000000000F386
       mov       eax,esi
       shr       eax,5
       imul      rax,0A7C5AC5
       shr       rax,27
       mov       ecx,6
       jmp       near ptr 000000000000F381
       xor       edx,edx
       jmp       near ptr 000000000000F3D8
       call      0000000000006930
       int       3
; Total bytes of code 260

Compare Jit Disasm

; System.Tests.Perf_UInt16.ToString(UInt16)
       sub       rsp,28
       movzx     ecx,dx
       call      qword ptr [93F0]
       nop
       add       rsp,28
       ret
; Total bytes of code 19
; System.Number.UInt32ToDecStr(UInt32)
       push      rdi
       push      rsi
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       mov       esi,ecx
       mov       eax,esi
       mov       ecx,1
       cmp       eax,186A0
       jae       near ptr 000000000000F43D
       cmp       eax,0A
       jae       short 000000000000F3B1
       mov       edi,ecx
       cmp       edi,1
       jne       short 000000000000F3BA
       mov       rax,11A400002C8
       mov       rax,[rax]
       cmp       esi,[rax+8]
       jae       near ptr 000000000000F45E
       mov       ecx,esi
       mov       rax,[rax+rcx*8+10]
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       eax,64
       jae       short 000000000000F417
       inc       ecx
       jmp       short 000000000000F386
       mov       ecx,edi
       call      0
       test      rax,rax
       je        near ptr 000000000000F457
       lea       rdx,[rax+0C]
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       movsxd    rcx,edi
       lea       rdx,[rdx+rcx*2]
       mov       ecx,0CCCCCCCD
       mov       r8d,esi
       imul      rcx,r8
       shr       rcx,23
       lea       r8d,[rcx+rcx*4]
       add       r8d,r8d
       sub       esi,r8d
       add       rdx,0FFFFFFFFFFFFFFFE
       add       esi,30
       mov       [rdx],si
       test      ecx,ecx
       mov       esi,ecx
       jne       short 000000000000F3DF
       xor       edx,edx
       mov       [rsp+20],rdx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       eax,3E8
       jae       short 000000000000F426
       add       ecx,2
       jmp       near ptr 000000000000F386
       cmp       eax,2710
       jae       short 000000000000F435
       add       ecx,3
       jmp       near ptr 000000000000F386
       add       ecx,4
       jmp       near ptr 000000000000F386
       mov       eax,esi
       shr       eax,5
       imul      rax,0A7C5AC5
       shr       rax,27
       mov       ecx,6
       jmp       near ptr 000000000000F381
       xor       edx,edx
       jmp       near ptr 000000000000F3D8
       call      000000000000AB50
       int       3
; Total bytes of code 260

System.Tests.Perf_UInt16.ToString(value: 65535)


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 13.66662536734902 > 11.992621301147103.
IsChangePoint: Marked as a change because one of 6/23/2022 8:25:58 PM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -43.49859996675239 (T) = (0 -13.753779007679915) / Math.Sqrt((0.06479595515864726 / (20)) + (0.01998037881805582 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.2397666403274213 = (11.093845051394151 - 13.753779007679915) / 11.093845051394151 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_UInt16.ToString(UInt16)
       sub       rsp,28
       movzx     ecx,dx
       call      qword ptr [93F0]
       nop
       add       rsp,28
       ret
; Total bytes of code 19
; System.Number.UInt32ToDecStr(UInt32)
       push      rdi
       push      rsi
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       mov       esi,ecx
       mov       eax,esi
       mov       ecx,1
       cmp       eax,186A0
       jae       near ptr 000000000000F43D
       cmp       eax,0A
       jae       short 000000000000F3B1
       mov       edi,ecx
       cmp       edi,1
       jne       short 000000000000F3BA
       mov       rax,285FB8002C8
       mov       rax,[rax]
       cmp       esi,[rax+8]
       jae       near ptr 000000000000F45E
       mov       ecx,esi
       mov       rax,[rax+rcx*8+10]
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       eax,64
       jae       short 000000000000F417
       inc       ecx
       jmp       short 000000000000F386
       mov       ecx,edi
       call      0
       test      rax,rax
       je        near ptr 000000000000F457
       lea       rdx,[rax+0C]
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       movsxd    rcx,edi
       lea       rdx,[rdx+rcx*2]
       mov       ecx,0CCCCCCCD
       mov       r8d,esi
       imul      rcx,r8
       shr       rcx,23
       lea       r8d,[rcx+rcx*4]
       add       r8d,r8d
       sub       esi,r8d
       add       rdx,0FFFFFFFFFFFFFFFE
       add       esi,30
       mov       [rdx],si
       test      ecx,ecx
       mov       esi,ecx
       jne       short 000000000000F3DF
       xor       edx,edx
       mov       [rsp+20],rdx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       eax,3E8
       jae       short 000000000000F426
       add       ecx,2
       jmp       near ptr 000000000000F386
       cmp       eax,2710
       jae       short 000000000000F435
       add       ecx,3
       jmp       near ptr 000000000000F386
       add       ecx,4
       jmp       near ptr 000000000000F386
       mov       eax,esi
       shr       eax,5
       imul      rax,0A7C5AC5
       shr       rax,27
       mov       ecx,6
       jmp       near ptr 000000000000F381
       xor       edx,edx
       jmp       near ptr 000000000000F3D8
       call      0000000000006930
       int       3
; Total bytes of code 260

Compare Jit Disasm

; System.Tests.Perf_UInt16.ToString(UInt16)
       sub       rsp,28
       movzx     ecx,dx
       call      qword ptr [93F0]
       nop
       add       rsp,28
       ret
; Total bytes of code 19
; System.Number.UInt32ToDecStr(UInt32)
       push      rdi
       push      rsi
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       mov       esi,ecx
       mov       eax,esi
       mov       ecx,1
       cmp       eax,186A0
       jae       near ptr 000000000000F43D
       cmp       eax,0A
       jae       short 000000000000F3B1
       mov       edi,ecx
       cmp       edi,1
       jne       short 000000000000F3BA
       mov       rax,2D2824002C8
       mov       rax,[rax]
       cmp       esi,[rax+8]
       jae       near ptr 000000000000F45E
       mov       ecx,esi
       mov       rax,[rax+rcx*8+10]
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       eax,64
       jae       short 000000000000F417
       inc       ecx
       jmp       short 000000000000F386
       mov       ecx,edi
       call      0
       test      rax,rax
       je        near ptr 000000000000F457
       lea       rdx,[rax+0C]
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       movsxd    rcx,edi
       lea       rdx,[rdx+rcx*2]
       mov       ecx,0CCCCCCCD
       mov       r8d,esi
       imul      rcx,r8
       shr       rcx,23
       lea       r8d,[rcx+rcx*4]
       add       r8d,r8d
       sub       esi,r8d
       add       rdx,0FFFFFFFFFFFFFFFE
       add       esi,30
       mov       [rdx],si
       test      ecx,ecx
       mov       esi,ecx
       jne       short 000000000000F3DF
       xor       edx,edx
       mov       [rsp+20],rdx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       eax,3E8
       jae       short 000000000000F426
       add       ecx,2
       jmp       near ptr 000000000000F386
       cmp       eax,2710
       jae       short 000000000000F435
       add       ecx,3
       jmp       near ptr 000000000000F386
       add       ecx,4
       jmp       near ptr 000000000000F386
       mov       eax,esi
       shr       eax,5
       imul      rax,0A7C5AC5
       shr       rax,27
       mov       ecx,6
       jmp       near ptr 000000000000F381
       xor       edx,edx
       jmp       near ptr 000000000000F3D8
       call      000000000000AB50
       int       3
; Total bytes of code 260

System.Tests.Perf_UInt16.ToString(value: 12345)


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 13.85368786321067 > 11.996540926950003.
IsChangePoint: Marked as a change because one of 6/17/2022 12:17:51 PM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -37.91418865207193 (T) = (0 -13.765624997300089) / Math.Sqrt((0.09001359773909115 / (20)) + (0.02199192199186606 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.24337377220246273 = (11.071188169681438 - 13.765624997300089) / 11.071188169681438 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_UInt16.ToString(UInt16)
       sub       rsp,28
       movzx     ecx,dx
       call      qword ptr [93F0]
       nop
       add       rsp,28
       ret
; Total bytes of code 19
; System.Number.UInt32ToDecStr(UInt32)
       push      rdi
       push      rsi
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       mov       esi,ecx
       mov       eax,esi
       mov       ecx,1
       cmp       eax,186A0
       jae       near ptr 000000000000F43D
       cmp       eax,0A
       jae       short 000000000000F3B1
       mov       edi,ecx
       cmp       edi,1
       jne       short 000000000000F3BA
       mov       rax,270BF4002C8
       mov       rax,[rax]
       cmp       esi,[rax+8]
       jae       near ptr 000000000000F45E
       mov       ecx,esi
       mov       rax,[rax+rcx*8+10]
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       eax,64
       jae       short 000000000000F417
       inc       ecx
       jmp       short 000000000000F386
       mov       ecx,edi
       call      0
       test      rax,rax
       je        near ptr 000000000000F457
       lea       rdx,[rax+0C]
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       movsxd    rcx,edi
       lea       rdx,[rdx+rcx*2]
       mov       ecx,0CCCCCCCD
       mov       r8d,esi
       imul      rcx,r8
       shr       rcx,23
       lea       r8d,[rcx+rcx*4]
       add       r8d,r8d
       sub       esi,r8d
       add       rdx,0FFFFFFFFFFFFFFFE
       add       esi,30
       mov       [rdx],si
       test      ecx,ecx
       mov       esi,ecx
       jne       short 000000000000F3DF
       xor       edx,edx
       mov       [rsp+20],rdx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       eax,3E8
       jae       short 000000000000F426
       add       ecx,2
       jmp       near ptr 000000000000F386
       cmp       eax,2710
       jae       short 000000000000F435
       add       ecx,3
       jmp       near ptr 000000000000F386
       add       ecx,4
       jmp       near ptr 000000000000F386
       mov       eax,esi
       shr       eax,5
       imul      rax,0A7C5AC5
       shr       rax,27
       mov       ecx,6
       jmp       near ptr 000000000000F381
       xor       edx,edx
       jmp       near ptr 000000000000F3D8
       call      0000000000006930
       int       3
; Total bytes of code 260

Compare Jit Disasm

; System.Tests.Perf_UInt16.ToString(UInt16)
       sub       rsp,28
       movzx     ecx,dx
       call      qword ptr [93F0]
       nop
       add       rsp,28
       ret
; Total bytes of code 19
; System.Number.UInt32ToDecStr(UInt32)
       push      rdi
       push      rsi
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       mov       esi,ecx
       mov       eax,esi
       mov       ecx,1
       cmp       eax,186A0
       jae       near ptr 000000000000F43D
       cmp       eax,0A
       jae       short 000000000000F3B1
       mov       edi,ecx
       cmp       edi,1
       jne       short 000000000000F3BA
       mov       rax,15C55C002C8
       mov       rax,[rax]
       cmp       esi,[rax+8]
       jae       near ptr 000000000000F45E
       mov       ecx,esi
       mov       rax,[rax+rcx*8+10]
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       eax,64
       jae       short 000000000000F417
       inc       ecx
       jmp       short 000000000000F386
       mov       ecx,edi
       call      0
       test      rax,rax
       je        near ptr 000000000000F457
       lea       rdx,[rax+0C]
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       movsxd    rcx,edi
       lea       rdx,[rdx+rcx*2]
       mov       ecx,0CCCCCCCD
       mov       r8d,esi
       imul      rcx,r8
       shr       rcx,23
       lea       r8d,[rcx+rcx*4]
       add       r8d,r8d
       sub       esi,r8d
       add       rdx,0FFFFFFFFFFFFFFFE
       add       esi,30
       mov       [rdx],si
       test      ecx,ecx
       mov       esi,ecx
       jne       short 000000000000F3DF
       xor       edx,edx
       mov       [rsp+20],rdx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       eax,3E8
       jae       short 000000000000F426
       add       ecx,2
       jmp       near ptr 000000000000F386
       cmp       eax,2710
       jae       short 000000000000F435
       add       ecx,3
       jmp       near ptr 000000000000F386
       add       ecx,4
       jmp       near ptr 000000000000F386
       mov       eax,esi
       shr       eax,5
       imul      rax,0A7C5AC5
       shr       rax,27
       mov       ecx,6
       jmp       near ptr 000000000000F381
       xor       edx,edx
       jmp       near ptr 000000000000F3D8
       call      000000000000AB50
       int       3
; Total bytes of code 260

Docs

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

### Run Information
Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in XmlDocumentTests.XmlNodeTests.Perf_XmlNode

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
GetAttributes - Duration of single invocation 0.45 ns 1.83 ns 4.03 0.23 False Trace Trace

graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'XmlDocumentTests.XmlNodeTests.Perf_XmlNode*'

Payloads

Baseline
Compare

Histogram

XmlDocumentTests.XmlNodeTests.Perf_XmlNode.GetAttributes


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.8316967844998875 > 0.4324721890132046.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -63.57220243245913 (T) = (0 -1.8443159800696545) / Math.Sqrt((0.009576820320924247 / (20)) + (0.0004933736832802326 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -3.2359258963266067 = (0.4353985469077834 - 1.8443159800696545) / 0.4353985469077834 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
; XmlDocumentTests.XmlNodeTests.Perf_XmlNode.GetAttributes()
       mov       rcx,[rcx+8]
       mov       rax,[rcx]
       mov       rax,[rax+48]
       jmp       qword ptr [rax+28]
; Total bytes of code 15

Compare Jit Disasm

; XmlDocumentTests.XmlNodeTests.Perf_XmlNode.GetAttributes()
       mov       rcx,[rcx+8]
       mov       rax,[rcx]
       mov       rax,[rax+48]
       jmp       qword ptr [rax+28]
; Total bytes of code 15

Docs

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

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in System.Collections.Sort<IntClass>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
Array_ComparerClass - Duration of single invocation 52.15 μs 54.84 μs 1.05 0.08 False
Array_Comparison - Duration of single invocation 51.33 μs 55.83 μs 1.09 0.08 False
Array_ComparerStruct - Duration of single invocation 58.52 μs 63.72 μs 1.09 0.07 False
List - Duration of single invocation 39.87 μs 45.11 μs 1.13 0.02 False
Array - Duration of single invocation 38.91 μs 46.30 μs 1.19 0.14 False

graph
graph
graph
graph
graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Collections.Sort&lt;IntClass&gt;*'

Payloads

Baseline
Compare

Histogram

System.Collections.Sort<IntClass>.Array_ComparerClass(Size: 512)


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 54.83515285714285 > 53.6030747.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -19.385801446684805 (T) = (0 -55581.922072893765) / Math.Sqrt((890304.9363262055 / (20)) + (588715.1585163814 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.09275920048108761 = (50863.83354029305 - 55581.922072893765) / 50863.83354029305 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.

```#### System.Collections.Sort&lt;IntClass&gt;.Array_Comparison(Size: 512)

```log

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 55.83035199999999 > 53.778778200000005.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -18.8055007501548 (T) = (0 -55057.51719652014) / Math.Sqrt((894730.852447733 / (20)) + (432900.4503201963 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.08755850307860026 = (50624.878607142855 - 55057.51719652014) / 50624.878607142855 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.

```#### System.Collections.Sort&lt;IntClass&gt;.Array_ComparerStruct(Size: 512)

```log

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 63.71549333333333 > 61.326118.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -20.926066516390417 (T) = (0 -63877.81148713371) / Math.Sqrt((484645.2692526881 / (20)) + (1724276.1485615736 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.09290845293281932 = (58447.54088571429 - 63877.81148713371) / 58447.54088571429 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.

```#### System.Collections.Sort&lt;IntClass&gt;.List(Size: 512)

```log

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 45.10575866666667 > 40.57817419999999.
IsChangePoint: Marked as a change because one of 7/2/2022 7:35:06 PM, 7/6/2022 3:55:24 AM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -37.78622143603179 (T) = (0 -44939.07315183151) / Math.Sqrt((307766.6984206126 / (20)) + (361832.5688742549 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.15132308122540558 = (39032.54775714286 - 44939.07315183151) / 39032.54775714286 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.

```#### System.Collections.Sort&lt;IntClass&gt;.Array(Size: 512)

```log

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 46.29512133333334 > 41.97317205.
IsChangePoint: Marked as a change because one of 7/2/2022 7:35:06 PM, 7/6/2022 3:55:24 AM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -27.08730212757248 (T) = (0 -45758.99904020148) / Math.Sqrt((925043.965292983 / (20)) + (296217.9392168646 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.15891149673410215 = (39484.463800000005 - 45758.99904020148) / 39484.463800000005 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.

Docs

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

@performanceautofiler
Copy link
Author

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in System.Tests.Perf_Int32

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
ToStringHex - Duration of single invocation 17.49 ns 20.57 ns 1.18 0.07 False 219.66849546605255 227.9754419139763 1.0378158298498819 Trace Trace
ToStringHex - Duration of single invocation 21.72 ns 24.45 ns 1.13 0.09 False 269.76361075439496 281.26139679066375 1.0426217087030945 Trace Trace
ToStringHex - Duration of single invocation 26.83 ns 30.31 ns 1.13 0.01 False 280.15090530378836 288.384658680623 1.0293904221651762 Trace Trace
ToString - Duration of single invocation 1.28 ns 2.93 ns 2.28 0.04 False 35.78770468367744 37.71917138129486 1.0539701194778874 Trace Trace
ToString - Duration of single invocation 18.42 ns 20.81 ns 1.13 0.05 False 212.9967344536892 224.45628713409744 1.0538015416518032 Trace Trace
ToString - Duration of single invocation 11.66 ns 13.47 ns 1.15 0.03 False 142.90387192277203 152.6190764436001 1.067984193780826 Trace Trace

graph
graph
graph
graph
graph
graph
Test Report

Repro

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

Payloads

Baseline
Compare

Histogram

System.Tests.Perf_Int32.ToStringHex(value: 12345)


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 20.570568992537297 > 18.352124940790628.
IsChangePoint: Marked as a change because one of 7/2/2022 7:35:06 PM, 7/6/2022 3:55:24 AM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -15.062299256917663 (T) = (0 -20.321420237317717) / Math.Sqrt((0.4997811504345733 / (20)) + (0.1446429469826392 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.14332761725079504 = (17.77392580280872 - 20.321420237317717) / 17.77392580280872 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_Int32.ToStringHex(Int32)
       sub       rsp,28
       mov       ecx,edx
       mov       r8,1A6800058A0
       mov       r8,[r8]
       mov       edx,0FFFFFFFF
       xor       r9d,r9d
       call      qword ptr [9FA8]
       nop
       add       rsp,28
       ret
; Total bytes of code 39
; System.Number.<FormatInt32>g__FormatInt32Slow|38_0(Int32, Int32, System.String, System.IFormatProvider)
       push      rbp
       push      r15
       push      r14
       push      r12
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,0A0
       lea       rbp,[rsp+30]
       vxorps    xmm4,xmm4,xmm4
       vmovdqa   xmmword ptr [rbp],xmm4
       vmovdqa   xmmword ptr [rbp+10],xmm4
       vmovdqa   xmmword ptr [rbp+20],xmm4
       vmovdqa   xmmword ptr [rbp+30],xmm4
       vmovdqa   xmmword ptr [rbp+40],xmm4
       mov       rax,40392B2AAA4E
       mov       [rbp+68],rax
       mov       esi,ecx
       mov       edi,edx
       mov       rbx,r9
       test      r8,r8
       je        short 000000000000F886
       lea       r14,[r8+0C]
       mov       r15d,[r8+8]
       mov       [rbp],r14
       mov       [rbp+8],r15d
       lea       rcx,[rbp]
       lea       rdx,[rbp+50]
       call      qword ptr [96F0]
       mov       r12d,eax
       mov       ecx,r12d
       and       ecx,0FFDF
       cmp       ecx,47
       je        short 000000000000F8C4
       cmp       ecx,44
       jne       short 000000000000F8CE
       jmp       near ptr 000000000000FA65
       xor       r14d,r14d
       xor       r15d,r15d
       jmp       short 000000000000F855
       mov       r10d,0CCCCCCCD
       mov       r11d,r8d
       imul      r10,r11
       shr       r10,23
       lea       r11d,[r10+r10*4]
       add       r11d,r11d
       sub       r8d,r11d
       dec       rcx
       add       r8d,30
       mov       [rcx],r8b
       dec       eax
       mov       r8d,r10d
       jns       short 000000000000F88E
       test      r8d,r8d
       jne       short 000000000000F88E
       jmp       near ptr 000000000000F95B
       cmp       dword ptr [rbp+50],0
       jle       near ptr 000000000000FA65
       cmp       ecx,58
       je        near ptr 000000000000F99B
       test      rbx,rbx
       je        near ptr 000000000000FA4B
       mov       rcx,rbx
       call      qword ptr [5CA8]
       mov       r9,rax
       lea       r8,[rbp+58]
       xor       edx,edx
       mov       [rbp+30],edx
       mov       [rbp+34],edx
       mov       byte ptr [rbp+38],0
       mov       byte ptr [rbp+39],0
       mov       byte ptr [rbp+3A],1
       mov       [rbp+40],r8
       mov       dword ptr [rbp+48],0B
       lea       r8,[rbp+40]
       cmp       dword ptr [r8+8],0
       jbe       near ptr 000000000000FB06
       mov       r8,[r8]
       mov       byte ptr [r8],0
       mov       r8d,esi
       mov       dword ptr [rbp+30],0A
       test      r8d,r8d
       jl        near ptr 000000000000FA59
       mov       byte ptr [rbp+38],0
       lea       rdx,[rbp+40]
       cmp       dword ptr [rdx+8],0
       jbe       near ptr 000000000000FB06
       mov       rdx,[rdx]
       lea       rcx,[rdx+0A]
       mov       eax,0FFFFFFFF
       jmp       near ptr 000000000000F8BA
       mov       r8,rcx
       add       rdx,0A
       sub       rdx,r8
       mov       [rbp+30],edx
       mov       [rbp+34],edx
       lea       rcx,[rbp+40]
       cmp       dword ptr [rcx+8],0
       jbe       near ptr 000000000000FB06
       mov       rcx,[rcx]
       dec       edx
       js        short 000000000000F9D6
       lea       rax,[rcx+1]
       lea       r10,[r8+1]
       movzx     r8d,byte ptr [r8]
       mov       [rcx],r8b
       dec       edx
       mov       rcx,rax
       mov       r8,r10
       jns       short 000000000000F980
       jmp       short 000000000000F9D6
       mov       ecx,esi
       and       ecx,edi
       add       r12d,0FFFFFFDF
       movzx     edx,r12w
       mov       r8d,[rbp+50]
       call      qword ptr [9348]
       mov       rcx,40392B2AAA4E
       cmp       [rbp+68],rcx
       je        short 000000000000F9C6
       call      00000000000081F0
       nop
       lea       rsp,[rbp+70]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       pop       rbp
       ret
       mov       byte ptr [rcx],0
       test      [rsp],esp
       sub       rsp,40
       lea       r8,[rsp+30]
       xor       edx,edx
       mov       [rbp+10],rdx
       mov       [rbp+20],r8
       mov       dword ptr [rbp+28],20
       mov       [rbp+18],edx
       test      r12d,r12d
       jne       near ptr 000000000000FAE7
       mov       [rbp],r14
       mov       [rbp+8],r15d
       lea       r8,[rbp]
       lea       rdx,[rbp+30]
       lea       rcx,[rbp+10]
       call      qword ptr [9720]
       lea       rcx,[rbp+10]
       call      qword ptr [1480]
       mov       rcx,40392B2AAA4E
       cmp       [rbp+68],rcx
       je        short 000000000000FA3B
       call      00000000000081F0
       nop
       lea       rsp,[rbp+70]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       pop       rbp
       ret
       call      qword ptr [5858]
       mov       r9,rax
       jmp       near ptr 000000000000F8EC
       mov       byte ptr [rbp+38],1
       neg       r8d
       jmp       near ptr 000000000000F93C
       test      esi,esi
       jge       short 000000000000FAB7
       mov       r14d,[rbp+50]
       test      rbx,rbx
       je        short 000000000000FA7D
       mov       rcx,rbx
       call      qword ptr [5CA8]
       jmp       short 000000000000FA83
       call      qword ptr [5858]
       mov       r8,[rax+28]
       mov       ecx,esi
       mov       edx,r14d
       call      qword ptr [9318]
       mov       rcx,40392B2AAA4E
       cmp       [rbp+68],rcx
       je        short 000000000000FAA7
       call      00000000000081F0
       nop
       lea       rsp,[rbp+70]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       pop       rbp
       ret
       mov       ecx,esi
       mov       edx,[rbp+50]
       call      qword ptr [9408]
       mov       rcx,40392B2AAA4E
       cmp       [rbp+68],rcx
       je        short 000000000000FAD7
       call      00000000000081F0
       nop
       lea       rsp,[rbp+70]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       pop       rbp
       ret
       mov       [rsp+20],r9
       lea       rcx,[rbp+10]
       lea       rdx,[rbp+30]
       mov       r8d,r12d
       mov       r9d,[rbp+50]
       call      qword ptr [9708]
       jmp       near ptr 000000000000FA1C
       call      0000000000006930
       int       3
; Total bytes of code 780

Compare Jit Disasm

; System.Tests.Perf_Int32.ToStringHex(Int32)
       sub       rsp,28
       mov       ecx,edx
       mov       r8,23971805890
       mov       r8,[r8]
       mov       edx,0FFFFFFFF
       xor       r9d,r9d
       call      qword ptr [9FA8]
       nop
       add       rsp,28
       ret
; Total bytes of code 39
; System.Number.<FormatInt32>g__FormatInt32Slow|38_0(Int32, Int32, System.String, System.IFormatProvider)
       push      rbp
       push      r15
       push      r14
       push      r12
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,0A0
       lea       rbp,[rsp+30]
       vxorps    xmm4,xmm4,xmm4
       vmovdqa   xmmword ptr [rbp],xmm4
       vmovdqa   xmmword ptr [rbp+10],xmm4
       vmovdqa   xmmword ptr [rbp+20],xmm4
       vmovdqa   xmmword ptr [rbp+30],xmm4
       vmovdqa   xmmword ptr [rbp+40],xmm4
       mov       rax,36A2C2858969
       mov       [rbp+68],rax
       mov       esi,ecx
       mov       edi,edx
       mov       rbx,r9
       test      r8,r8
       je        short 000000000000F8A6
       lea       r14,[r8+0C]
       mov       r15d,[r8+8]
       mov       [rbp],r14
       mov       [rbp+8],r15d
       lea       rcx,[rbp]
       lea       rdx,[rbp+50]
       call      qword ptr [96F0]
       mov       r12d,eax
       mov       ecx,r12d
       and       ecx,0FFDF
       cmp       ecx,47
       je        short 000000000000F8E4
       cmp       ecx,44
       jne       short 000000000000F8EE
       jmp       near ptr 000000000000FA85
       xor       r14d,r14d
       xor       r15d,r15d
       jmp       short 000000000000F875
       mov       r10d,0CCCCCCCD
       mov       r11d,r8d
       imul      r10,r11
       shr       r10,23
       lea       r11d,[r10+r10*4]
       add       r11d,r11d
       sub       r8d,r11d
       dec       rcx
       add       r8d,30
       mov       [rcx],r8b
       dec       eax
       mov       r8d,r10d
       jns       short 000000000000F8AE
       test      r8d,r8d
       jne       short 000000000000F8AE
       jmp       near ptr 000000000000F97B
       cmp       dword ptr [rbp+50],0
       jle       near ptr 000000000000FA85
       cmp       ecx,58
       je        near ptr 000000000000F9BB
       test      rbx,rbx
       je        near ptr 000000000000FA6B
       mov       rcx,rbx
       call      qword ptr [5CA8]
       mov       r9,rax
       lea       r8,[rbp+58]
       xor       edx,edx
       mov       [rbp+30],edx
       mov       [rbp+34],edx
       mov       byte ptr [rbp+38],0
       mov       byte ptr [rbp+39],0
       mov       byte ptr [rbp+3A],1
       mov       [rbp+40],r8
       mov       dword ptr [rbp+48],0B
       lea       r8,[rbp+40]
       cmp       dword ptr [r8+8],0
       jbe       near ptr 000000000000FB26
       mov       r8,[r8]
       mov       byte ptr [r8],0
       mov       r8d,esi
       mov       dword ptr [rbp+30],0A
       test      r8d,r8d
       jl        near ptr 000000000000FA79
       mov       byte ptr [rbp+38],0
       lea       rdx,[rbp+40]
       cmp       dword ptr [rdx+8],0
       jbe       near ptr 000000000000FB26
       mov       rdx,[rdx]
       lea       rcx,[rdx+0A]
       mov       eax,0FFFFFFFF
       jmp       near ptr 000000000000F8DA
       mov       r8,rcx
       add       rdx,0A
       sub       rdx,r8
       mov       [rbp+30],edx
       mov       [rbp+34],edx
       lea       rcx,[rbp+40]
       cmp       dword ptr [rcx+8],0
       jbe       near ptr 000000000000FB26
       mov       rcx,[rcx]
       dec       edx
       js        short 000000000000F9F6
       lea       rax,[rcx+1]
       lea       r10,[r8+1]
       movzx     r8d,byte ptr [r8]
       mov       [rcx],r8b
       dec       edx
       mov       rcx,rax
       mov       r8,r10
       jns       short 000000000000F9A0
       jmp       short 000000000000F9F6
       mov       ecx,esi
       and       ecx,edi
       add       r12d,0FFFFFFDF
       movzx     edx,r12w
       mov       r8d,[rbp+50]
       call      qword ptr [9348]
       mov       rcx,36A2C2858969
       cmp       [rbp+68],rcx
       je        short 000000000000F9E6
       call      000000000000C410
       nop
       lea       rsp,[rbp+70]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       pop       rbp
       ret
       mov       byte ptr [rcx],0
       test      [rsp],esp
       sub       rsp,40
       lea       r8,[rsp+30]
       xor       edx,edx
       mov       [rbp+10],rdx
       mov       [rbp+20],r8
       mov       dword ptr [rbp+28],20
       mov       [rbp+18],edx
       test      r12d,r12d
       jne       near ptr 000000000000FB07
       mov       [rbp],r14
       mov       [rbp+8],r15d
       lea       r8,[rbp]
       lea       rdx,[rbp+30]
       lea       rcx,[rbp+10]
       call      qword ptr [9720]
       lea       rcx,[rbp+10]
       call      qword ptr [1480]
       mov       rcx,36A2C2858969
       cmp       [rbp+68],rcx
       je        short 000000000000FA5B
       call      000000000000C410
       nop
       lea       rsp,[rbp+70]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       pop       rbp
       ret
       call      qword ptr [5858]
       mov       r9,rax
       jmp       near ptr 000000000000F90C
       mov       byte ptr [rbp+38],1
       neg       r8d
       jmp       near ptr 000000000000F95C
       test      esi,esi
       jge       short 000000000000FAD7
       mov       r14d,[rbp+50]
       test      rbx,rbx
       je        short 000000000000FA9D
       mov       rcx,rbx
       call      qword ptr [5CA8]
       jmp       short 000000000000FAA3
       call      qword ptr [5858]
       mov       r8,[rax+28]
       mov       ecx,esi
       mov       edx,r14d
       call      qword ptr [9318]
       mov       rcx,36A2C2858969
       cmp       [rbp+68],rcx
       je        short 000000000000FAC7
       call      000000000000C410
       nop
       lea       rsp,[rbp+70]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       pop       rbp
       ret
       mov       ecx,esi
       mov       edx,[rbp+50]
       call      qword ptr [9408]
       mov       rcx,36A2C2858969
       cmp       [rbp+68],rcx
       je        short 000000000000FAF7
       call      000000000000C410
       nop
       lea       rsp,[rbp+70]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       pop       rbp
       ret
       mov       [rsp+20],r9
       lea       rcx,[rbp+10]
       lea       rdx,[rbp+30]
       mov       r8d,r12d
       mov       r9d,[rbp+50]
       call      qword ptr [9708]
       jmp       near ptr 000000000000FA3C
       call      000000000000AB50
       int       3
; Total bytes of code 780

System.Tests.Perf_Int32.ToStringHex(value: -2147483648)


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 24.449700532185762 > 22.62897143078681.
IsChangePoint: Marked as a change because one of 7/2/2022 7:35:06 PM, 7/6/2022 3:55:24 AM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -23.436457005317514 (T) = (0 -24.833842387126737) / Math.Sqrt((0.22450720684559092 / (18)) + (0.22415160732161887 / (40))) is less than -2.0032407188469383 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (18) + (40) - 2, .025) and -0.14532215307488353 = (21.68284470919777 - 24.833842387126737) / 21.68284470919777 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_Int32.ToStringHex(Int32)
       sub       rsp,28
       mov       ecx,edx
       mov       r8,192694058A0
       mov       r8,[r8]
       mov       edx,0FFFFFFFF
       xor       r9d,r9d
       call      qword ptr [9FA8]
       nop
       add       rsp,28
       ret
; Total bytes of code 39
; System.Number.<FormatInt32>g__FormatInt32Slow|38_0(Int32, Int32, System.String, System.IFormatProvider)
       push      rbp
       push      r15
       push      r14
       push      r12
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,0A0
       lea       rbp,[rsp+30]
       vxorps    xmm4,xmm4,xmm4
       vmovdqa   xmmword ptr [rbp],xmm4
       vmovdqa   xmmword ptr [rbp+10],xmm4
       vmovdqa   xmmword ptr [rbp+20],xmm4
       vmovdqa   xmmword ptr [rbp+30],xmm4
       vmovdqa   xmmword ptr [rbp+40],xmm4
       mov       rax,4B4E8F811412
       mov       [rbp+68],rax
       mov       esi,ecx
       mov       edi,edx
       mov       rbx,r9
       test      r8,r8
       je        short 000000000000F886
       lea       r14,[r8+0C]
       mov       r15d,[r8+8]
       mov       [rbp],r14
       mov       [rbp+8],r15d
       lea       rcx,[rbp]
       lea       rdx,[rbp+50]
       call      qword ptr [96F0]
       mov       r12d,eax
       mov       ecx,r12d
       and       ecx,0FFDF
       cmp       ecx,47
       je        short 000000000000F8C4
       cmp       ecx,44
       jne       short 000000000000F8CE
       jmp       near ptr 000000000000FA65
       xor       r14d,r14d
       xor       r15d,r15d
       jmp       short 000000000000F855
       mov       r10d,0CCCCCCCD
       mov       r11d,r8d
       imul      r10,r11
       shr       r10,23
       lea       r11d,[r10+r10*4]
       add       r11d,r11d
       sub       r8d,r11d
       dec       rcx
       add       r8d,30
       mov       [rcx],r8b
       dec       eax
       mov       r8d,r10d
       jns       short 000000000000F88E
       test      r8d,r8d
       jne       short 000000000000F88E
       jmp       near ptr 000000000000F95B
       cmp       dword ptr [rbp+50],0
       jle       near ptr 000000000000FA65
       cmp       ecx,58
       je        near ptr 000000000000F99B
       test      rbx,rbx
       je        near ptr 000000000000FA4B
       mov       rcx,rbx
       call      qword ptr [5CA8]
       mov       r9,rax
       lea       r8,[rbp+58]
       xor       edx,edx
       mov       [rbp+30],edx
       mov       [rbp+34],edx
       mov       byte ptr [rbp+38],0
       mov       byte ptr [rbp+39],0
       mov       byte ptr [rbp+3A],1
       mov       [rbp+40],r8
       mov       dword ptr [rbp+48],0B
       lea       r8,[rbp+40]
       cmp       dword ptr [r8+8],0
       jbe       near ptr 000000000000FB06
       mov       r8,[r8]
       mov       byte ptr [r8],0
       mov       r8d,esi
       mov       dword ptr [rbp+30],0A
       test      r8d,r8d
       jl        near ptr 000000000000FA59
       mov       byte ptr [rbp+38],0
       lea       rdx,[rbp+40]
       cmp       dword ptr [rdx+8],0
       jbe       near ptr 000000000000FB06
       mov       rdx,[rdx]
       lea       rcx,[rdx+0A]
       mov       eax,0FFFFFFFF
       jmp       near ptr 000000000000F8BA
       mov       r8,rcx
       add       rdx,0A
       sub       rdx,r8
       mov       [rbp+30],edx
       mov       [rbp+34],edx
       lea       rcx,[rbp+40]
       cmp       dword ptr [rcx+8],0
       jbe       near ptr 000000000000FB06
       mov       rcx,[rcx]
       dec       edx
       js        short 000000000000F9D6
       lea       rax,[rcx+1]
       lea       r10,[r8+1]
       movzx     r8d,byte ptr [r8]
       mov       [rcx],r8b
       dec       edx
       mov       rcx,rax
       mov       r8,r10
       jns       short 000000000000F980
       jmp       short 000000000000F9D6
       mov       ecx,esi
       and       ecx,edi
       add       r12d,0FFFFFFDF
       movzx     edx,r12w
       mov       r8d,[rbp+50]
       call      qword ptr [9348]
       mov       rcx,4B4E8F811412
       cmp       [rbp+68],rcx
       je        short 000000000000F9C6
       call      00000000000081F0
       nop
       lea       rsp,[rbp+70]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       pop       rbp
       ret
       mov       byte ptr [rcx],0
       test      [rsp],esp
       sub       rsp,40
       lea       r8,[rsp+30]
       xor       edx,edx
       mov       [rbp+10],rdx
       mov       [rbp+20],r8
       mov       dword ptr [rbp+28],20
       mov       [rbp+18],edx
       test      r12d,r12d
       jne       near ptr 000000000000FAE7
       mov       [rbp],r14
       mov       [rbp+8],r15d
       lea       r8,[rbp]
       lea       rdx,[rbp+30]
       lea       rcx,[rbp+10]
       call      qword ptr [9720]
       lea       rcx,[rbp+10]
       call      qword ptr [1480]
       mov       rcx,4B4E8F811412
       cmp       [rbp+68],rcx
       je        short 000000000000FA3B
       call      00000000000081F0
       nop
       lea       rsp,[rbp+70]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       pop       rbp
       ret
       call      qword ptr [5858]
       mov       r9,rax
       jmp       near ptr 000000000000F8EC
       mov       byte ptr [rbp+38],1
       neg       r8d
       jmp       near ptr 000000000000F93C
       test      esi,esi
       jge       short 000000000000FAB7
       mov       r14d,[rbp+50]
       test      rbx,rbx
       je        short 000000000000FA7D
       mov       rcx,rbx
       call      qword ptr [5CA8]
       jmp       short 000000000000FA83
       call      qword ptr [5858]
       mov       r8,[rax+28]
       mov       ecx,esi
       mov       edx,r14d
       call      qword ptr [9318]
       mov       rcx,4B4E8F811412
       cmp       [rbp+68],rcx
       je        short 000000000000FAA7
       call      00000000000081F0
       nop
       lea       rsp,[rbp+70]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       pop       rbp
       ret
       mov       ecx,esi
       mov       edx,[rbp+50]
       call      qword ptr [9408]
       mov       rcx,4B4E8F811412
       cmp       [rbp+68],rcx
       je        short 000000000000FAD7
       call      00000000000081F0
       nop
       lea       rsp,[rbp+70]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       pop       rbp
       ret
       mov       [rsp+20],r9
       lea       rcx,[rbp+10]
       lea       rdx,[rbp+30]
       mov       r8d,r12d
       mov       r9d,[rbp+50]
       call      qword ptr [9708]
       jmp       near ptr 000000000000FA1C
       call      0000000000006930
       int       3
; Total bytes of code 780

Compare Jit Disasm

; System.Tests.Perf_Int32.ToStringHex(Int32)
       sub       rsp,28
       mov       ecx,edx
       mov       r8,17891405890
       mov       r8,[r8]
       mov       edx,0FFFFFFFF
       xor       r9d,r9d
       call      qword ptr [9FA8]
       nop
       add       rsp,28
       ret
; Total bytes of code 39
; System.Number.<FormatInt32>g__FormatInt32Slow|38_0(Int32, Int32, System.String, System.IFormatProvider)
       push      rbp
       push      r15
       push      r14
       push      r12
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,0A0
       lea       rbp,[rsp+30]
       vxorps    xmm4,xmm4,xmm4
       vmovdqa   xmmword ptr [rbp],xmm4
       vmovdqa   xmmword ptr [rbp+10],xmm4
       vmovdqa   xmmword ptr [rbp+20],xmm4
       vmovdqa   xmmword ptr [rbp+30],xmm4
       vmovdqa   xmmword ptr [rbp+40],xmm4
       mov       rax,56CA0957DE9F
       mov       [rbp+68],rax
       mov       esi,ecx
       mov       edi,edx
       mov       rbx,r9
       test      r8,r8
       je        short 000000000000F8A6
       lea       r14,[r8+0C]
       mov       r15d,[r8+8]
       mov       [rbp],r14
       mov       [rbp+8],r15d
       lea       rcx,[rbp]
       lea       rdx,[rbp+50]
       call      qword ptr [96F0]
       mov       r12d,eax
       mov       ecx,r12d
       and       ecx,0FFDF
       cmp       ecx,47
       je        short 000000000000F8E4
       cmp       ecx,44
       jne       short 000000000000F8EE
       jmp       near ptr 000000000000FA85
       xor       r14d,r14d
       xor       r15d,r15d
       jmp       short 000000000000F875
       mov       r10d,0CCCCCCCD
       mov       r11d,r8d
       imul      r10,r11
       shr       r10,23
       lea       r11d,[r10+r10*4]
       add       r11d,r11d
       sub       r8d,r11d
       dec       rcx
       add       r8d,30
       mov       [rcx],r8b
       dec       eax
       mov       r8d,r10d
       jns       short 000000000000F8AE
       test      r8d,r8d
       jne       short 000000000000F8AE
       jmp       near ptr 000000000000F97B
       cmp       dword ptr [rbp+50],0
       jle       near ptr 000000000000FA85
       cmp       ecx,58
       je        near ptr 000000000000F9BB
       test      rbx,rbx
       je        near ptr 000000000000FA6B
       mov       rcx,rbx
       call      qword ptr [5CA8]
       mov       r9,rax
       lea       r8,[rbp+58]
       xor       edx,edx
       mov       [rbp+30],edx
       mov       [rbp+34],edx
       mov       byte ptr [rbp+38],0
       mov       byte ptr [rbp+39],0
       mov       byte ptr [rbp+3A],1
       mov       [rbp+40],r8
       mov       dword ptr [rbp+48],0B
       lea       r8,[rbp+40]
       cmp       dword ptr [r8+8],0
       jbe       near ptr 000000000000FB26
       mov       r8,[r8]
       mov       byte ptr [r8],0
       mov       r8d,esi
       mov       dword ptr [rbp+30],0A
       test      r8d,r8d
       jl        near ptr 000000000000FA79
       mov       byte ptr [rbp+38],0
       lea       rdx,[rbp+40]
       cmp       dword ptr [rdx+8],0
       jbe       near ptr 000000000000FB26
       mov       rdx,[rdx]
       lea       rcx,[rdx+0A]
       mov       eax,0FFFFFFFF
       jmp       near ptr 000000000000F8DA
       mov       r8,rcx
       add       rdx,0A
       sub       rdx,r8
       mov       [rbp+30],edx
       mov       [rbp+34],edx
       lea       rcx,[rbp+40]
       cmp       dword ptr [rcx+8],0
       jbe       near ptr 000000000000FB26
       mov       rcx,[rcx]
       dec       edx
       js        short 000000000000F9F6
       lea       rax,[rcx+1]
       lea       r10,[r8+1]
       movzx     r8d,byte ptr [r8]
       mov       [rcx],r8b
       dec       edx
       mov       rcx,rax
       mov       r8,r10
       jns       short 000000000000F9A0
       jmp       short 000000000000F9F6
       mov       ecx,esi
       and       ecx,edi
       add       r12d,0FFFFFFDF
       movzx     edx,r12w
       mov       r8d,[rbp+50]
       call      qword ptr [9348]
       mov       rcx,56CA0957DE9F
       cmp       [rbp+68],rcx
       je        short 000000000000F9E6
       call      000000000000C410
       nop
       lea       rsp,[rbp+70]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       pop       rbp
       ret
       mov       byte ptr [rcx],0
       test      [rsp],esp
       sub       rsp,40
       lea       r8,[rsp+30]
       xor       edx,edx
       mov       [rbp+10],rdx
       mov       [rbp+20],r8
       mov       dword ptr [rbp+28],20
       mov       [rbp+18],edx
       test      r12d,r12d
       jne       near ptr 000000000000FB07
       mov       [rbp],r14
       mov       [rbp+8],r15d
       lea       r8,[rbp]
       lea       rdx,[rbp+30]
       lea       rcx,[rbp+10]
       call      qword ptr [9720]
       lea       rcx,[rbp+10]
       call      qword ptr [1480]
       mov       rcx,56CA0957DE9F
       cmp       [rbp+68],rcx
       je        short 000000000000FA5B
       call      000000000000C410
       nop
       lea       rsp,[rbp+70]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       pop       rbp
       ret
       call      qword ptr [5858]
       mov       r9,rax
       jmp       near ptr 000000000000F90C
       mov       byte ptr [rbp+38],1
       neg       r8d
       jmp       near ptr 000000000000F95C
       test      esi,esi
       jge       short 000000000000FAD7
       mov       r14d,[rbp+50]
       test      rbx,rbx
       je        short 000000000000FA9D
       mov       rcx,rbx
       call      qword ptr [5CA8]
       jmp       short 000000000000FAA3
       call      qword ptr [5858]
       mov       r8,[rax+28]
       mov       ecx,esi
       mov       edx,r14d
       call      qword ptr [9318]
       mov       rcx,56CA0957DE9F
       cmp       [rbp+68],rcx
       je        short 000000000000FAC7
       call      000000000000C410
       nop
       lea       rsp,[rbp+70]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       pop       rbp
       ret
       mov       ecx,esi
       mov       edx,[rbp+50]
       call      qword ptr [9408]
       mov       rcx,56CA0957DE9F
       cmp       [rbp+68],rcx
       je        short 000000000000FAF7
       call      000000000000C410
       nop
       lea       rsp,[rbp+70]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       pop       rbp
       ret
       mov       [rsp+20],r9
       lea       rcx,[rbp+10]
       lea       rdx,[rbp+30]
       mov       r8d,r12d
       mov       r9d,[rbp+50]
       call      qword ptr [9708]
       jmp       near ptr 000000000000FA3C
       call      000000000000AB50
       int       3
; Total bytes of code 780

System.Tests.Perf_Int32.ToStringHex(value: 2147483647)


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 30.310603035705693 > 28.181264778932775.
IsChangePoint: Marked as a change because one of 7/2/2022 7:35:06 PM, 7/6/2022 3:55:24 AM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -40.3763451820127 (T) = (0 -30.292996052186094) / Math.Sqrt((0.021915415145773557 / (20)) + (0.2574604128125069 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.13080888624964576 = (26.788784931336654 - 30.292996052186094) / 26.788784931336654 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_Int32.ToStringHex(Int32)
       sub       rsp,28
       mov       ecx,edx
       mov       r8,1E2FE8058A0
       mov       r8,[r8]
       mov       edx,0FFFFFFFF
       xor       r9d,r9d
       call      qword ptr [9FA8]
       nop
       add       rsp,28
       ret
; Total bytes of code 39
; System.Number.<FormatInt32>g__FormatInt32Slow|38_0(Int32, Int32, System.String, System.IFormatProvider)
       push      rbp
       push      r15
       push      r14
       push      r12
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,0A0
       lea       rbp,[rsp+30]
       vxorps    xmm4,xmm4,xmm4
       vmovdqa   xmmword ptr [rbp],xmm4
       vmovdqa   xmmword ptr [rbp+10],xmm4
       vmovdqa   xmmword ptr [rbp+20],xmm4
       vmovdqa   xmmword ptr [rbp+30],xmm4
       vmovdqa   xmmword ptr [rbp+40],xmm4
       mov       rax,406E350A9AF2
       mov       [rbp+68],rax
       mov       esi,ecx
       mov       edi,edx
       mov       rbx,r9
       test      r8,r8
       je        short 000000000000F886
       lea       r14,[r8+0C]
       mov       r15d,[r8+8]
       mov       [rbp],r14
       mov       [rbp+8],r15d
       lea       rcx,[rbp]
       lea       rdx,[rbp+50]
       call      qword ptr [96F0]
       mov       r12d,eax
       mov       ecx,r12d
       and       ecx,0FFDF
       cmp       ecx,47
       je        short 000000000000F8C4
       cmp       ecx,44
       jne       short 000000000000F8CE
       jmp       near ptr 000000000000FA65
       xor       r14d,r14d
       xor       r15d,r15d
       jmp       short 000000000000F855
       mov       r10d,0CCCCCCCD
       mov       r11d,r8d
       imul      r10,r11
       shr       r10,23
       lea       r11d,[r10+r10*4]
       add       r11d,r11d
       sub       r8d,r11d
       dec       rcx
       add       r8d,30
       mov       [rcx],r8b
       dec       eax
       mov       r8d,r10d
       jns       short 000000000000F88E
       test      r8d,r8d
       jne       short 000000000000F88E
       jmp       near ptr 000000000000F95B
       cmp       dword ptr [rbp+50],0
       jle       near ptr 000000000000FA65
       cmp       ecx,58
       je        near ptr 000000000000F99B
       test      rbx,rbx
       je        near ptr 000000000000FA4B
       mov       rcx,rbx
       call      qword ptr [5CA8]
       mov       r9,rax
       lea       r8,[rbp+58]
       xor       edx,edx
       mov       [rbp+30],edx
       mov       [rbp+34],edx
       mov       byte ptr [rbp+38],0
       mov       byte ptr [rbp+39],0
       mov       byte ptr [rbp+3A],1
       mov       [rbp+40],r8
       mov       dword ptr [rbp+48],0B
       lea       r8,[rbp+40]
       cmp       dword ptr [r8+8],0
       jbe       near ptr 000000000000FB06
       mov       r8,[r8]
       mov       byte ptr [r8],0
       mov       r8d,esi
       mov       dword ptr [rbp+30],0A
       test      r8d,r8d
       jl        near ptr 000000000000FA59
       mov       byte ptr [rbp+38],0
       lea       rdx,[rbp+40]
       cmp       dword ptr [rdx+8],0
       jbe       near ptr 000000000000FB06
       mov       rdx,[rdx]
       lea       rcx,[rdx+0A]
       mov       eax,0FFFFFFFF
       jmp       near ptr 000000000000F8BA
       mov       r8,rcx
       add       rdx,0A
       sub       rdx,r8
       mov       [rbp+30],edx
       mov       [rbp+34],edx
       lea       rcx,[rbp+40]
       cmp       dword ptr [rcx+8],0
       jbe       near ptr 000000000000FB06
       mov       rcx,[rcx]
       dec       edx
       js        short 000000000000F9D6
       lea       rax,[rcx+1]
       lea       r10,[r8+1]
       movzx     r8d,byte ptr [r8]
       mov       [rcx],r8b
       dec       edx
       mov       rcx,rax
       mov       r8,r10
       jns       short 000000000000F980
       jmp       short 000000000000F9D6
       mov       ecx,esi
       and       ecx,edi
       add       r12d,0FFFFFFDF
       movzx     edx,r12w
       mov       r8d,[rbp+50]
       call      qword ptr [9348]
       mov       rcx,406E350A9AF2
       cmp       [rbp+68],rcx
       je        short 000000000000F9C6
       call      00000000000081F0
       nop
       lea       rsp,[rbp+70]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       pop       rbp
       ret
       mov       byte ptr [rcx],0
       test      [rsp],esp
       sub       rsp,40
       lea       r8,[rsp+30]
       xor       edx,edx
       mov       [rbp+10],rdx
       mov       [rbp+20],r8
       mov       dword ptr [rbp+28],20
       mov       [rbp+18],edx
       test      r12d,r12d
       jne       near ptr 000000000000FAE7
       mov       [rbp],r14
       mov       [rbp+8],r15d
       lea       r8,[rbp]
       lea       rdx,[rbp+30]
       lea       rcx,[rbp+10]
       call      qword ptr [9720]
       lea       rcx,[rbp+10]
       call      qword ptr [1480]
       mov       rcx,406E350A9AF2
       cmp       [rbp+68],rcx
       je        short 000000000000FA3B
       call      00000000000081F0
       nop
       lea       rsp,[rbp+70]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       pop       rbp
       ret
       call      qword ptr [5858]
       mov       r9,rax
       jmp       near ptr 000000000000F8EC
       mov       byte ptr [rbp+38],1
       neg       r8d
       jmp       near ptr 000000000000F93C
       test      esi,esi
       jge       short 000000000000FAB7
       mov       r14d,[rbp+50]
       test      rbx,rbx
       je        short 000000000000FA7D
       mov       rcx,rbx
       call      qword ptr [5CA8]
       jmp       short 000000000000FA83
       call      qword ptr [5858]
       mov       r8,[rax+28]
       mov       ecx,esi
       mov       edx,r14d
       call      qword ptr [9318]
       mov       rcx,406E350A9AF2
       cmp       [rbp+68],rcx
       je        short 000000000000FAA7
       call      00000000000081F0
       nop
       lea       rsp,[rbp+70]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       pop       rbp
       ret
       mov       ecx,esi
       mov       edx,[rbp+50]
       call      qword ptr [9408]
       mov       rcx,406E350A9AF2
       cmp       [rbp+68],rcx
       je        short 000000000000FAD7
       call      00000000000081F0
       nop
       lea       rsp,[rbp+70]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       pop       rbp
       ret
       mov       [rsp+20],r9
       lea       rcx,[rbp+10]
       lea       rdx,[rbp+30]
       mov       r8d,r12d
       mov       r9d,[rbp+50]
       call      qword ptr [9708]
       jmp       near ptr 000000000000FA1C
       call      0000000000006930
       int       3
; Total bytes of code 780

Compare Jit Disasm

; System.Tests.Perf_Int32.ToStringHex(Int32)
       sub       rsp,28
       mov       ecx,edx
       mov       r8,2016D405890
       mov       r8,[r8]
       mov       edx,0FFFFFFFF
       xor       r9d,r9d
       call      qword ptr [9FA8]
       nop
       add       rsp,28
       ret
; Total bytes of code 39
; System.Number.<FormatInt32>g__FormatInt32Slow|38_0(Int32, Int32, System.String, System.IFormatProvider)
       push      rbp
       push      r15
       push      r14
       push      r12
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,0A0
       lea       rbp,[rsp+30]
       vxorps    xmm4,xmm4,xmm4
       vmovdqa   xmmword ptr [rbp],xmm4
       vmovdqa   xmmword ptr [rbp+10],xmm4
       vmovdqa   xmmword ptr [rbp+20],xmm4
       vmovdqa   xmmword ptr [rbp+30],xmm4
       vmovdqa   xmmword ptr [rbp+40],xmm4
       mov       rax,186E5878A65F
       mov       [rbp+68],rax
       mov       esi,ecx
       mov       edi,edx
       mov       rbx,r9
       test      r8,r8
       je        short 000000000000F8A6
       lea       r14,[r8+0C]
       mov       r15d,[r8+8]
       mov       [rbp],r14
       mov       [rbp+8],r15d
       lea       rcx,[rbp]
       lea       rdx,[rbp+50]
       call      qword ptr [96F0]
       mov       r12d,eax
       mov       ecx,r12d
       and       ecx,0FFDF
       cmp       ecx,47
       je        short 000000000000F8E4
       cmp       ecx,44
       jne       short 000000000000F8EE
       jmp       near ptr 000000000000FA85
       xor       r14d,r14d
       xor       r15d,r15d
       jmp       short 000000000000F875
       mov       r10d,0CCCCCCCD
       mov       r11d,r8d
       imul      r10,r11
       shr       r10,23
       lea       r11d,[r10+r10*4]
       add       r11d,r11d
       sub       r8d,r11d
       dec       rcx
       add       r8d,30
       mov       [rcx],r8b
       dec       eax
       mov       r8d,r10d
       jns       short 000000000000F8AE
       test      r8d,r8d
       jne       short 000000000000F8AE
       jmp       near ptr 000000000000F97B
       cmp       dword ptr [rbp+50],0
       jle       near ptr 000000000000FA85
       cmp       ecx,58
       je        near ptr 000000000000F9BB
       test      rbx,rbx
       je        near ptr 000000000000FA6B
       mov       rcx,rbx
       call      qword ptr [5CA8]
       mov       r9,rax
       lea       r8,[rbp+58]
       xor       edx,edx
       mov       [rbp+30],edx
       mov       [rbp+34],edx
       mov       byte ptr [rbp+38],0
       mov       byte ptr [rbp+39],0
       mov       byte ptr [rbp+3A],1
       mov       [rbp+40],r8
       mov       dword ptr [rbp+48],0B
       lea       r8,[rbp+40]
       cmp       dword ptr [r8+8],0
       jbe       near ptr 000000000000FB26
       mov       r8,[r8]
       mov       byte ptr [r8],0
       mov       r8d,esi
       mov       dword ptr [rbp+30],0A
       test      r8d,r8d
       jl        near ptr 000000000000FA79
       mov       byte ptr [rbp+38],0
       lea       rdx,[rbp+40]
       cmp       dword ptr [rdx+8],0
       jbe       near ptr 000000000000FB26
       mov       rdx,[rdx]
       lea       rcx,[rdx+0A]
       mov       eax,0FFFFFFFF
       jmp       near ptr 000000000000F8DA
       mov       r8,rcx
       add       rdx,0A
       sub       rdx,r8
       mov       [rbp+30],edx
       mov       [rbp+34],edx
       lea       rcx,[rbp+40]
       cmp       dword ptr [rcx+8],0
       jbe       near ptr 000000000000FB26
       mov       rcx,[rcx]
       dec       edx
       js        short 000000000000F9F6
       lea       rax,[rcx+1]
       lea       r10,[r8+1]
       movzx     r8d,byte ptr [r8]
       mov       [rcx],r8b
       dec       edx
       mov       rcx,rax
       mov       r8,r10
       jns       short 000000000000F9A0
       jmp       short 000000000000F9F6
       mov       ecx,esi
       and       ecx,edi
       add       r12d,0FFFFFFDF
       movzx     edx,r12w
       mov       r8d,[rbp+50]
       call      qword ptr [9348]
       mov       rcx,186E5878A65F
       cmp       [rbp+68],rcx
       je        short 000000000000F9E6
       call      000000000000C410
       nop
       lea       rsp,[rbp+70]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       pop       rbp
       ret
       mov       byte ptr [rcx],0
       test      [rsp],esp
       sub       rsp,40
       lea       r8,[rsp+30]
       xor       edx,edx
       mov       [rbp+10],rdx
       mov       [rbp+20],r8
       mov       dword ptr [rbp+28],20
       mov       [rbp+18],edx
       test      r12d,r12d
       jne       near ptr 000000000000FB07
       mov       [rbp],r14
       mov       [rbp+8],r15d
       lea       r8,[rbp]
       lea       rdx,[rbp+30]
       lea       rcx,[rbp+10]
       call      qword ptr [9720]
       lea       rcx,[rbp+10]
       call      qword ptr [1480]
       mov       rcx,186E5878A65F
       cmp       [rbp+68],rcx
       je        short 000000000000FA5B
       call      000000000000C410
       nop
       lea       rsp,[rbp+70]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       pop       rbp
       ret
       call      qword ptr [5858]
       mov       r9,rax
       jmp       near ptr 000000000000F90C
       mov       byte ptr [rbp+38],1
       neg       r8d
       jmp       near ptr 000000000000F95C
       test      esi,esi
       jge       short 000000000000FAD7
       mov       r14d,[rbp+50]
       test      rbx,rbx
       je        short 000000000000FA9D
       mov       rcx,rbx
       call      qword ptr [5CA8]
       jmp       short 000000000000FAA3
       call      qword ptr [5858]
       mov       r8,[rax+28]
       mov       ecx,esi
       mov       edx,r14d
       call      qword ptr [9318]
       mov       rcx,186E5878A65F
       cmp       [rbp+68],rcx
       je        short 000000000000FAC7
       call      000000000000C410
       nop
       lea       rsp,[rbp+70]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       pop       rbp
       ret
       mov       ecx,esi
       mov       edx,[rbp+50]
       call      qword ptr [9408]
       mov       rcx,186E5878A65F
       cmp       [rbp+68],rcx
       je        short 000000000000FAF7
       call      000000000000C410
       nop
       lea       rsp,[rbp+70]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       pop       rbp
       ret
       mov       [rsp+20],r9
       lea       rcx,[rbp+10]
       lea       rdx,[rbp+30]
       mov       r8d,r12d
       mov       r9d,[rbp+50]
       call      qword ptr [9708]
       jmp       near ptr 000000000000FA3C
       call      000000000000AB50
       int       3
; Total bytes of code 780

System.Tests.Perf_Int32.ToString(value: 4)


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 2.928735534900342 > 1.3275490516117974.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -189.71032763082326 (T) = (0 -2.935974110635671) / Math.Sqrt((0.0016193883552697583 / (20)) + (0.00013140401103056305 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -1.4576675599277595 = (1.1946180836280278 - 2.935974110635671) / 1.1946180836280278 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_Int32.ToString(Int32)
       sub       rsp,28
       mov       ecx,edx
       call      qword ptr [9300]
       nop
       add       rsp,28
       ret
; Total bytes of code 18
; System.Number.Int32ToDecStr(Int32)
       push      rdi
       push      rsi
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       mov       esi,ecx
       test      esi,esi
       jl        near ptr 000000000000F61D
       mov       ecx,esi
       mov       eax,1
       cmp       ecx,186A0
       jae       near ptr 000000000000F603
       cmp       ecx,0A
       jae       short 000000000000F57A
       mov       edi,eax
       cmp       edi,1
       jne       short 000000000000F583
       mov       rcx,29E2F0002C8
       mov       rcx,[rcx]
       cmp       esi,[rcx+8]
       jae       near ptr 000000000000F643
       mov       eax,esi
       mov       rax,[rcx+rax*8+10]
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       ecx,64
       jae       short 000000000000F5DB
       inc       eax
       jmp       short 000000000000F54F
       mov       ecx,edi
       call      0
       test      rax,rax
       je        near ptr 000000000000F63C
       lea       rdx,[rax+0C]
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       movsxd    rcx,edi
       lea       rdx,[rdx+rcx*2]
       mov       ecx,0CCCCCCCD
       mov       r8d,esi
       imul      rcx,r8
       shr       rcx,23
       lea       r8d,[rcx+rcx*4]
       add       r8d,r8d
       sub       esi,r8d
       add       rdx,0FFFFFFFFFFFFFFFE
       add       esi,30
       mov       [rdx],si
       test      ecx,ecx
       mov       esi,ecx
       jne       short 000000000000F5A8
       xor       edx,edx
       mov       [rsp+20],rdx
       jmp       short 000000000000F573
       cmp       ecx,3E8
       jae       short 000000000000F5EB
       add       eax,2
       jmp       near ptr 000000000000F54F
       cmp       ecx,2710
       jae       short 000000000000F5FB
       add       eax,3
       jmp       near ptr 000000000000F54F
       add       eax,4
       jmp       near ptr 000000000000F54F
       mov       ecx,esi
       shr       ecx,5
       imul      rcx,0A7C5AC5
       shr       rcx,27
       mov       eax,6
       jmp       near ptr 000000000000F54A
       call      qword ptr [5858]
       mov       r8,[rax+28]
       mov       ecx,esi
       mov       edx,0FFFFFFFF
       call      qword ptr [9318]
       nop
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       xor       edx,edx
       jmp       near ptr 000000000000F5A1
       call      0000000000006930
       int       3
; Total bytes of code 297

Compare Jit Disasm

; System.Tests.Perf_Int32.ToString(Int32)
       sub       rsp,28
       mov       ecx,edx
       call      qword ptr [9300]
       nop
       add       rsp,28
       ret
; Total bytes of code 18
; System.Number.Int32ToDecStr(Int32)
       push      rdi
       push      rsi
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       mov       esi,ecx
       test      esi,esi
       jl        near ptr 000000000000F61D
       mov       ecx,esi
       mov       eax,1
       cmp       ecx,186A0
       jae       near ptr 000000000000F603
       cmp       ecx,0A
       jae       short 000000000000F57A
       mov       edi,eax
       cmp       edi,1
       jne       short 000000000000F583
       mov       rcx,18E5AC002C8
       mov       rcx,[rcx]
       cmp       esi,[rcx+8]
       jae       near ptr 000000000000F643
       mov       eax,esi
       mov       rax,[rcx+rax*8+10]
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       ecx,64
       jae       short 000000000000F5DB
       inc       eax
       jmp       short 000000000000F54F
       mov       ecx,edi
       call      0
       test      rax,rax
       je        near ptr 000000000000F63C
       lea       rdx,[rax+0C]
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       movsxd    rcx,edi
       lea       rdx,[rdx+rcx*2]
       mov       ecx,0CCCCCCCD
       mov       r8d,esi
       imul      rcx,r8
       shr       rcx,23
       lea       r8d,[rcx+rcx*4]
       add       r8d,r8d
       sub       esi,r8d
       add       rdx,0FFFFFFFFFFFFFFFE
       add       esi,30
       mov       [rdx],si
       test      ecx,ecx
       mov       esi,ecx
       jne       short 000000000000F5A8
       xor       edx,edx
       mov       [rsp+20],rdx
       jmp       short 000000000000F573
       cmp       ecx,3E8
       jae       short 000000000000F5EB
       add       eax,2
       jmp       near ptr 000000000000F54F
       cmp       ecx,2710
       jae       short 000000000000F5FB
       add       eax,3
       jmp       near ptr 000000000000F54F
       add       eax,4
       jmp       near ptr 000000000000F54F
       mov       ecx,esi
       shr       ecx,5
       imul      rcx,0A7C5AC5
       shr       rcx,27
       mov       eax,6
       jmp       near ptr 000000000000F54A
       call      qword ptr [5858]
       mov       r8,[rax+28]
       mov       ecx,esi
       mov       edx,0FFFFFFFF
       call      qword ptr [9318]
       nop
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       xor       edx,edx
       jmp       near ptr 000000000000F5A1
       call      000000000000AB50
       int       3
; Total bytes of code 297

System.Tests.Perf_Int32.ToString(value: 2147483647)


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 20.813381185421726 > 19.143818167351654.
IsChangePoint: Marked as a change because one of 6/27/2022 8:54:23 AM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -15.365744829007276 (T) = (0 -21.061058682027625) / Math.Sqrt((0.2888718078002197 / (20)) + (0.07182261330875499 / (39))) is less than -2.0024654592901125 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (39) - 2, .025) and -0.10266267748620242 = (19.100182777603045 - 21.061058682027625) / 19.100182777603045 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_Int32.ToString(Int32)
       sub       rsp,28
       mov       ecx,edx
       call      qword ptr [9300]
       nop
       add       rsp,28
       ret
; Total bytes of code 18
; System.Number.Int32ToDecStr(Int32)
       push      rdi
       push      rsi
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       mov       esi,ecx
       test      esi,esi
       jl        near ptr 000000000000F61D
       mov       ecx,esi
       mov       eax,1
       cmp       ecx,186A0
       jae       near ptr 000000000000F603
       cmp       ecx,0A
       jae       short 000000000000F57A
       mov       edi,eax
       cmp       edi,1
       jne       short 000000000000F583
       mov       rcx,139F74002C8
       mov       rcx,[rcx]
       cmp       esi,[rcx+8]
       jae       near ptr 000000000000F643
       mov       eax,esi
       mov       rax,[rcx+rax*8+10]
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       ecx,64
       jae       short 000000000000F5DB
       inc       eax
       jmp       short 000000000000F54F
       mov       ecx,edi
       call      0
       test      rax,rax
       je        near ptr 000000000000F63C
       lea       rdx,[rax+0C]
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       movsxd    rcx,edi
       lea       rdx,[rdx+rcx*2]
       mov       ecx,0CCCCCCCD
       mov       r8d,esi
       imul      rcx,r8
       shr       rcx,23
       lea       r8d,[rcx+rcx*4]
       add       r8d,r8d
       sub       esi,r8d
       add       rdx,0FFFFFFFFFFFFFFFE
       add       esi,30
       mov       [rdx],si
       test      ecx,ecx
       mov       esi,ecx
       jne       short 000000000000F5A8
       xor       edx,edx
       mov       [rsp+20],rdx
       jmp       short 000000000000F573
       cmp       ecx,3E8
       jae       short 000000000000F5EB
       add       eax,2
       jmp       near ptr 000000000000F54F
       cmp       ecx,2710
       jae       short 000000000000F5FB
       add       eax,3
       jmp       near ptr 000000000000F54F
       add       eax,4
       jmp       near ptr 000000000000F54F
       mov       ecx,esi
       shr       ecx,5
       imul      rcx,0A7C5AC5
       shr       rcx,27
       mov       eax,6
       jmp       near ptr 000000000000F54A
       call      qword ptr [5858]
       mov       r8,[rax+28]
       mov       ecx,esi
       mov       edx,0FFFFFFFF
       call      qword ptr [9318]
       nop
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       xor       edx,edx
       jmp       near ptr 000000000000F5A1
       call      0000000000006930
       int       3
; Total bytes of code 297

Compare Jit Disasm

; System.Tests.Perf_Int32.ToString(Int32)
       sub       rsp,28
       mov       ecx,edx
       call      qword ptr [9300]
       nop
       add       rsp,28
       ret
; Total bytes of code 18
; System.Number.Int32ToDecStr(Int32)
       push      rdi
       push      rsi
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       mov       esi,ecx
       test      esi,esi
       jl        near ptr 000000000000F61D
       mov       ecx,esi
       mov       eax,1
       cmp       ecx,186A0
       jae       near ptr 000000000000F603
       cmp       ecx,0A
       jae       short 000000000000F57A
       mov       edi,eax
       cmp       edi,1
       jne       short 000000000000F583
       mov       rcx,24E458002C8
       mov       rcx,[rcx]
       cmp       esi,[rcx+8]
       jae       near ptr 000000000000F643
       mov       eax,esi
       mov       rax,[rcx+rax*8+10]
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       ecx,64
       jae       short 000000000000F5DB
       inc       eax
       jmp       short 000000000000F54F
       mov       ecx,edi
       call      0
       test      rax,rax
       je        near ptr 000000000000F63C
       lea       rdx,[rax+0C]
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       movsxd    rcx,edi
       lea       rdx,[rdx+rcx*2]
       mov       ecx,0CCCCCCCD
       mov       r8d,esi
       imul      rcx,r8
       shr       rcx,23
       lea       r8d,[rcx+rcx*4]
       add       r8d,r8d
       sub       esi,r8d
       add       rdx,0FFFFFFFFFFFFFFFE
       add       esi,30
       mov       [rdx],si
       test      ecx,ecx
       mov       esi,ecx
       jne       short 000000000000F5A8
       xor       edx,edx
       mov       [rsp+20],rdx
       jmp       short 000000000000F573
       cmp       ecx,3E8
       jae       short 000000000000F5EB
       add       eax,2
       jmp       near ptr 000000000000F54F
       cmp       ecx,2710
       jae       short 000000000000F5FB
       add       eax,3
       jmp       near ptr 000000000000F54F
       add       eax,4
       jmp       near ptr 000000000000F54F
       mov       ecx,esi
       shr       ecx,5
       imul      rcx,0A7C5AC5
       shr       rcx,27
       mov       eax,6
       jmp       near ptr 000000000000F54A
       call      qword ptr [5858]
       mov       r8,[rax+28]
       mov       ecx,esi
       mov       edx,0FFFFFFFF
       call      qword ptr [9318]
       nop
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       xor       edx,edx
       jmp       near ptr 000000000000F5A1
       call      000000000000AB50
       int       3
; Total bytes of code 297

System.Tests.Perf_Int32.ToString(value: 12345)


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 13.465305999197275 > 11.920535764190326.
IsChangePoint: Marked as a change because one of 6/27/2022 8:54:23 AM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -62.04406460109827 (T) = (0 -13.546833504923555) / Math.Sqrt((0.015741916187028162 / (20)) + (0.017763808553977467 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.19147396218659907 = (11.369810784670726 - 13.546833504923555) / 11.369810784670726 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_Int32.ToString(Int32)
       sub       rsp,28
       mov       ecx,edx
       call      qword ptr [9300]
       nop
       add       rsp,28
       ret
; Total bytes of code 18
; System.Number.Int32ToDecStr(Int32)
       push      rdi
       push      rsi
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       mov       esi,ecx
       test      esi,esi
       jl        near ptr 000000000000F61D
       mov       ecx,esi
       mov       eax,1
       cmp       ecx,186A0
       jae       near ptr 000000000000F603
       cmp       ecx,0A
       jae       short 000000000000F57A
       mov       edi,eax
       cmp       edi,1
       jne       short 000000000000F583
       mov       rcx,2CE774002C8
       mov       rcx,[rcx]
       cmp       esi,[rcx+8]
       jae       near ptr 000000000000F643
       mov       eax,esi
       mov       rax,[rcx+rax*8+10]
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       ecx,64
       jae       short 000000000000F5DB
       inc       eax
       jmp       short 000000000000F54F
       mov       ecx,edi
       call      0
       test      rax,rax
       je        near ptr 000000000000F63C
       lea       rdx,[rax+0C]
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       movsxd    rcx,edi
       lea       rdx,[rdx+rcx*2]
       mov       ecx,0CCCCCCCD
       mov       r8d,esi
       imul      rcx,r8
       shr       rcx,23
       lea       r8d,[rcx+rcx*4]
       add       r8d,r8d
       sub       esi,r8d
       add       rdx,0FFFFFFFFFFFFFFFE
       add       esi,30
       mov       [rdx],si
       test      ecx,ecx
       mov       esi,ecx
       jne       short 000000000000F5A8
       xor       edx,edx
       mov       [rsp+20],rdx
       jmp       short 000000000000F573
       cmp       ecx,3E8
       jae       short 000000000000F5EB
       add       eax,2
       jmp       near ptr 000000000000F54F
       cmp       ecx,2710
       jae       short 000000000000F5FB
       add       eax,3
       jmp       near ptr 000000000000F54F
       add       eax,4
       jmp       near ptr 000000000000F54F
       mov       ecx,esi
       shr       ecx,5
       imul      rcx,0A7C5AC5
       shr       rcx,27
       mov       eax,6
       jmp       near ptr 000000000000F54A
       call      qword ptr [5858]
       mov       r8,[rax+28]
       mov       ecx,esi
       mov       edx,0FFFFFFFF
       call      qword ptr [9318]
       nop
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       xor       edx,edx
       jmp       near ptr 000000000000F5A1
       call      0000000000006930
       int       3
; Total bytes of code 297

Compare Jit Disasm

; System.Tests.Perf_Int32.ToString(Int32)
       sub       rsp,28
       mov       ecx,edx
       call      qword ptr [9300]
       nop
       add       rsp,28
       ret
; Total bytes of code 18
; System.Number.Int32ToDecStr(Int32)
       push      rdi
       push      rsi
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       mov       esi,ecx
       test      esi,esi
       jl        near ptr 000000000000F61D
       mov       ecx,esi
       mov       eax,1
       cmp       ecx,186A0
       jae       near ptr 000000000000F603
       cmp       ecx,0A
       jae       short 000000000000F57A
       mov       edi,eax
       cmp       edi,1
       jne       short 000000000000F583
       mov       rcx,252E34002C8
       mov       rcx,[rcx]
       cmp       esi,[rcx+8]
       jae       near ptr 000000000000F643
       mov       eax,esi
       mov       rax,[rcx+rax*8+10]
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       ecx,64
       jae       short 000000000000F5DB
       inc       eax
       jmp       short 000000000000F54F
       mov       ecx,edi
       call      0
       test      rax,rax
       je        near ptr 000000000000F63C
       lea       rdx,[rax+0C]
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       movsxd    rcx,edi
       lea       rdx,[rdx+rcx*2]
       mov       ecx,0CCCCCCCD
       mov       r8d,esi
       imul      rcx,r8
       shr       rcx,23
       lea       r8d,[rcx+rcx*4]
       add       r8d,r8d
       sub       esi,r8d
       add       rdx,0FFFFFFFFFFFFFFFE
       add       esi,30
       mov       [rdx],si
       test      ecx,ecx
       mov       esi,ecx
       jne       short 000000000000F5A8
       xor       edx,edx
       mov       [rsp+20],rdx
       jmp       short 000000000000F573
       cmp       ecx,3E8
       jae       short 000000000000F5EB
       add       eax,2
       jmp       near ptr 000000000000F54F
       cmp       ecx,2710
       jae       short 000000000000F5FB
       add       eax,3
       jmp       near ptr 000000000000F54F
       add       eax,4
       jmp       near ptr 000000000000F54F
       mov       ecx,esi
       shr       ecx,5
       imul      rcx,0A7C5AC5
       shr       rcx,27
       mov       eax,6
       jmp       near ptr 000000000000F54A
       call      qword ptr [5858]
       mov       r8,[rax+28]
       mov       ecx,esi
       mov       edx,0FFFFFFFF
       call      qword ptr [9318]
       nop
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       xor       edx,edx
       jmp       near ptr 000000000000F5A1
       call      000000000000AB50
       int       3
; Total bytes of code 297

Docs

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

@performanceautofiler
Copy link
Author

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in BenchmarksGame.KNucleotide_9

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
RunBench - Duration of single invocation 73.42 ms 82.68 ms 1.13 0.08 False 2004987500 2095512500 1.0451499074183754 Trace Trace

graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'BenchmarksGame.KNucleotide_9*'

Payloads

Baseline
Compare

Histogram

BenchmarksGame.KNucleotide_9.RunBench


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 82.682745 > 77.44591944572367.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -27.40321710603475 (T) = (0 -83123310.53234649) / Math.Sqrt((1448440548741.9675 / (20)) + (1468431213329.715 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.12221750805797586 = (74070587.86330411 - 83123310.53234649) / 74070587.86330411 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
; BenchmarksGame.KNucleotide_9.RunBench()
       mov       rcx,[rcx+8]
       xor       edx,edx
       jmp       qword ptr [0B228]
; Total bytes of code 12
; BenchmarksGame.KNucleotide_9.Bench(BenchmarksGame.NucleotideHelpers, Boolean)
       push      rbp
       push      r15
       push      r14
       push      r13
       push      r12
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,0B8
       lea       rbp,[rsp+0F0]
       xor       eax,eax
       mov       [rbp+0FF98],rax
       vxorps    xmm4,xmm4,xmm4
       vmovdqa   xmmword ptr [rbp+0FFA0],xmm4
       vmovdqa   xmmword ptr [rbp+0FFB0],xmm4
       mov       [rbp+0FFC0],rax
       mov       [rbp+0FF68],rsp
       mov       [rbp+18],edx
       mov       rsi,rcx
       mov       rcx,offset MT_BenchmarksGame.KNucleotide_9+<>c__DisplayClass18_0
       call      000000000000C390
       mov       rdx,rax
       mov       [rbp+0FF98],rdx
       lea       rcx,[rdx+8]
       mov       rdx,rsi
       call      0000000000000010
       mov       rcx,2887E008348
       mov       rcx,[rcx]
       inc       dword ptr [rcx+14]
       mov       r8d,[rcx+10]
       xor       edx,edx
       mov       [rcx+10],edx
       test      r8d,r8d
       jle       short 0000000000002CFC
       mov       rcx,[rcx+8]
       xor       edx,edx
       call      qword ptr [90C0]
       xor       ecx,ecx
       mov       [0BFDC],ecx
       mov       [0BFE0],ecx
       mov       rcx,2887E008350
       mov       rcx,[rcx]
       mov       rax,rcx
       mov       edx,[rax+8]
       cmp       edx,63
       jbe       near ptr 00000000000034BA
       mov       byte ptr [rax+73],1
       mov       rax,rcx
       mov       byte ptr [rax+53],1
       mov       rax,rcx
       cmp       edx,67
       jbe       near ptr 00000000000034BA
       mov       byte ptr [rax+77],2
       mov       rax,rcx
       mov       byte ptr [rax+57],2
       mov       rax,rcx
       cmp       edx,74
       jbe       near ptr 00000000000034BA
       mov       byte ptr [rax+84],3
       mov       rax,rcx
       mov       byte ptr [rax+64],3
       mov       rax,rcx
       mov       byte ptr [rax+1A],0FF
       mov       rax,rcx
       mov       byte ptr [rax+4E],0FF
       cmp       edx,0FF
       jbe       near ptr 00000000000034BA
       mov       byte ptr [rcx+10F],0FF
       mov       rdx,[rbp+0FF98]
       mov       rcx,[rdx+8]
       mov       rsi,[rcx+8]
       mov       rcx,offset MT_System.IO.FileStream
       call      0000000000000330
       mov       rdi,rax
       mov       dword ptr [rsp+20],1000
       xor       ecx,ecx
       mov       [rsp+28],ecx
       mov       [rsp+30],rcx
       mov       rcx,rsi
       mov       edx,3
       mov       r8d,3
       mov       r9d,1
       call      qword ptr [71B0]
       mov       rcx,offset MT_System.IO.Strategies.SyncWindowsFileStreamStrategy
       call      000000000000C390
       mov       rbx,rax
       mov       rdx,rsi
       xor       ecx,ecx
       mov       [rsp+30],rcx
       mov       byte ptr [rbp+0FFA0],0
       mov       [rbp+0FFA4],ecx
       mov       rcx,rbx
       mov       r8d,3
       mov       r9d,3
       mov       dword ptr [rsp+20],1
       xor       eax,eax
       mov       [rsp+28],eax
       mov       rax,[rbp+0FFA0]
       mov       [rsp+38],rax
       call      qword ptr [7540]
       mov       rcx,offset MT_System.IO.Strategies.BufferedFileStreamStrategy
       call      000000000000C390
       mov       rsi,rax
       lea       rcx,[rsi+10]
       mov       rdx,rbx
       call      0000000000000010
       mov       dword ptr [rsi+20],1000
       mov       rdx,rsi
       mov       rcx,rdi
       call      qword ptr [7180]
       lea       rcx,[rdi+10]
       mov       rdx,rax
       call      0000000000000010
       mov       rcx,rdi
       mov       [rbp+0FF90],rcx
       call      qword ptr [0B150]
       nop
       mov       rcx,rsp
       call      00000000000034C0
       nop
       mov       rcx,2887E008818
       mov       rsi,[rcx]
       mov       rcx,2887E008348
       mov       rdi,[rcx]
       test      rsi,rsi
       jne       short 0000000000002ED8
       mov       rcx,offset MT_System.Action`1[[System.Byte[], System.Private.CoreLib]]
       call      000000000000C390
       mov       rsi,rax
       mov       rdx,2887E0087F8
       mov       rdx,[rdx]
       lea       rcx,[rsi+8]
       call      0000000000000010
       mov       rdx,offset BenchmarksGame.KNucleotide_9+<>c.<Bench>b__18_0(Byte[])
       mov       [rsi+18],rdx
       mov       rcx,2887E008818
       mov       rdx,rsi
       call      0000000000000010
       test      rdi,rdi
       je        near ptr 00000000000033D5
       test      rsi,rsi
       je        near ptr 00000000000033F3
       mov       rdx,2887E009520
       mov       rbx,[rdx]
       mov       rdx,[rbx+18]
       mov       [rbp+0FFA8],rdx
       cmp       qword ptr [rbp+0FFA8],0
       jne       short 0000000000002F62
       mov       rdx,rdi
       mov       rcx,offset MT_System.Byte[][]
       call      qword ptr [0B7F8]
       test      rax,rax
       je        short 0000000000002F71
       mov       [rsp+20],rsi
       xor       ecx,ecx
       mov       [rsp+28],rcx
       mov       [rsp+30],rcx
       mov       [rsp+38],rcx
       mov       [rsp+40],rcx
       mov       [rsp+48],rcx
       mov       [rsp+50],rcx
       lea       rcx,[rbp+0FFB0]
       mov       r8,rax
       mov       r9,rbx
       mov       rdx,offset MD_System.Threading.Tasks.Parallel.ForEachWorker(!!0[], System.Threading.Tasks.ParallelOptions, System.Action`1<!!0>, System.Action`2<!!0,System.Threading.Tasks.ParallelLoopState>, System.Action`3<!!0,System.Threading.Tasks.ParallelLoopState,Int64>, System.Func`4<!!0,System.Threading.Tasks.ParallelLoopState,!!1,!!1>, System.Func`5<!!0,System.Threading.Tasks.ParallelLoopState,Int64,!!1,!!1>, System.Func`1<!!1>, System.Action`1<!!1>)
       call      qword ptr [0D300]
       jmp       near ptr 000000000000301F
       mov       rdx,[rbp+0FFA8]
       cmp       dword ptr [rdx+20],0
       je        short 0000000000002F06
       jmp       near ptr 0000000000003411
       mov       rdx,rdi
       mov       rcx,offset MT_System.Collections.Generic.IList`1[[System.Byte[], System.Private.CoreLib]]
       call      qword ptr [0B810]
       test      rax,rax
       je        short 0000000000002FCA
       mov       [rsp+20],rsi
       xor       ecx,ecx
       mov       [rsp+28],rcx
       mov       [rsp+30],rcx
       mov       [rsp+38],rcx
       mov       [rsp+40],rcx
       mov       [rsp+48],rcx
       mov       [rsp+50],rcx
       lea       rcx,[rbp+0FFB0]
       mov       r8,rax
       mov       r9,rbx
       mov       rdx,offset MD_System.Threading.Tasks.Parallel.ForEachWorker(System.Collections.Generic.IList`1<!!0>, System.Threading.Tasks.ParallelOptions, System.Action`1<!!0>, System.Action`2<!!0,System.Threading.Tasks.ParallelLoopState>, System.Action`3<!!0,System.Threading.Tasks.ParallelLoopState,Int64>, System.Func`4<!!0,System.Threading.Tasks.ParallelLoopState,!!1,!!1>, System.Func`5<!!0,System.Threading.Tasks.ParallelLoopState,Int64,!!1,!!1>, System.Func`1<!!1>, System.Action`1<!!1>)
       call      qword ptr [0D2B8]
       jmp       short 000000000000301F
       mov       rdx,rdi
       mov       rcx,offset MD_System.Collections.Concurrent.Partitioner.Create(System.Collections.Generic.IEnumerable`1<!!0>, System.Collections.Concurrent.EnumerablePartitionerOptions)
       xor       r8d,r8d
       call      qword ptr [3768]
       mov       r8,rax
       mov       [rsp+20],rsi
       xor       ecx,ecx
       mov       [rsp+28],rcx
       mov       [rsp+30],rcx
       mov       [rsp+38],rcx
       mov       [rsp+40],rcx
       mov       [rsp+48],rcx
       mov       [rsp+50],rcx
       lea       rcx,[rbp+0FFB0]
       mov       r9,rbx
       mov       rdx,offset MD_System.Threading.Tasks.Parallel.PartitionerForEachWorker(System.Collections.Concurrent.Partitioner`1<!!0>, System.Threading.Tasks.ParallelOptions, System.Action`1<!!0>, System.Action`2<!!0,System.Threading.Tasks.ParallelLoopState>, System.Action`3<!!0,System.Threading.Tasks.ParallelLoopState,Int64>, System.Func`4<!!0,System.Threading.Tasks.ParallelLoopState,!!1,!!1>, System.Func`5<!!0,System.Threading.Tasks.ParallelLoopState,Int64,!!1,!!1>, System.Func`1<!!1>, System.Action`1<!!1>)
       call      qword ptr [0D270]
       mov       rdx,[rbp+0FF98]
       mov       byte ptr [rdx+10],1
       mov       rsi,offset MT_System.Func`2[[System.Collections.Generic.Dictionary`2[[System.Int64, System.Private.CoreLib],[BenchmarksGame.Wrapper, MicroBenchmarks]], System.Private.CoreLib],[System.String, System.Private.CoreLib]]
       mov       rcx,rsi
       call      000000000000C390
       mov       rdi,rax
       lea       rcx,[rdi+8]
       mov       rdx,[rbp+0FF98]
       call      0000000000000010
       mov       r8,offset BenchmarksGame.KNucleotide_9+<>c__DisplayClass18_0.<Bench>b__1(System.Collections.Generic.Dictionary`2<Int64,BenchmarksGame.Wrapper>)
       mov       [rdi+18],r8
       mov       r8,rdi
       mov       ecx,12
       mov       rdx,7FFFFFFFF
       call      qword ptr [0B1C8]
       mov       rdi,rax
       mov       rcx,rsi
       call      000000000000C390
       mov       rbx,rax
       lea       rcx,[rbx+8]
       mov       rdx,[rbp+0FF98]
       call      0000000000000010
       mov       r8,offset BenchmarksGame.KNucleotide_9+<>c__DisplayClass18_0.<Bench>b__2(System.Collections.Generic.Dictionary`2<Int64,BenchmarksGame.Wrapper>)
       mov       [rbx+18],r8
       mov       r8,rbx
       mov       ecx,0C
       mov       edx,7FFFFF
       call      qword ptr [0B1C8]
       mov       rbx,rax
       mov       rcx,rsi
       call      000000000000C390
       mov       r14,rax
       lea       rcx,[r14+8]
       mov       rdx,[rbp+0FF98]
       call      0000000000000010
       mov       r8,offset BenchmarksGame.KNucleotide_9+<>c__DisplayClass18_0.<Bench>b__3(System.Collections.Generic.Dictionary`2<Int64,BenchmarksGame.Wrapper>)
       mov       [r14+18],r8
       mov       r8,r14
       mov       ecx,6
       mov       edx,3FF
       call      qword ptr [0B198]
       mov       r14,rax
       mov       rcx,rsi
       call      000000000000C390
       mov       r15,rax
       lea       rcx,[r15+8]
       mov       rdx,[rbp+0FF98]
       call      0000000000000010
       mov       r8,offset BenchmarksGame.KNucleotide_9+<>c__DisplayClass18_0.<Bench>b__4(System.Collections.Generic.Dictionary`2<Int64,BenchmarksGame.Wrapper>)
       mov       [r15+18],r8
       mov       r8,r15
       mov       ecx,4
       mov       edx,3F
       call      qword ptr [0B198]
       mov       r15,rax
       mov       rcx,rsi
       call      000000000000C390
       mov       r12,rax
       lea       rcx,[r12+8]
       mov       rdx,[rbp+0FF98]
       call      0000000000000010
       mov       r8,offset BenchmarksGame.KNucleotide_9+<>c__DisplayClass18_0.<Bench>b__5(System.Collections.Generic.Dictionary`2<Int64,BenchmarksGame.Wrapper>)
       mov       [r12+18],r8
       mov       r8,r12
       mov       ecx,3
       mov       edx,0F
       call      qword ptr [0B198]
       mov       r12,rax
       mov       rcx,rsi
       call      000000000000C390
       mov       r13,rax
       lea       rcx,[r13+8]
       mov       rdx,[rbp+0FF98]
       call      0000000000000010
       mov       r8,offset BenchmarksGame.KNucleotide_9+<>c__DisplayClass18_0.<Bench>b__6(System.Collections.Generic.Dictionary`2<Int64,BenchmarksGame.Wrapper>)
       mov       [r13+18],r8
       mov       r8,r13
       mov       ecx,2
       mov       edx,3
       call      qword ptr [0B198]
       mov       r13,rax
       mov       rcx,rsi
       call      000000000000C390
       mov       rsi,rax
       lea       rcx,[rsi+8]
       mov       rdx,[rbp+0FF98]
       call      0000000000000010
       mov       r8,offset BenchmarksGame.KNucleotide_9+<>c__DisplayClass18_0.<Bench>b__7(System.Collections.Generic.Dictionary`2<Int64,BenchmarksGame.Wrapper>)
       mov       [rsi+18],r8
       mov       r8,rsi
       mov       ecx,1
       xor       edx,edx
       call      qword ptr [0B198]
       mov       rsi,rax
       cmp       byte ptr [rbp+18],0
       je        near ptr 0000000000003338
       call      qword ptr [13C0]
       mov       [rbp+0FF80],rax
       mov       ecx,[rsi+34]
       and       ecx,11000000
       cmp       ecx,1000000
       jne       near ptr 000000000000341C
       mov       rdx,[rsi+38]
       mov       rcx,rax
       mov       rax,[rax]
       mov       rax,[rax+78]
       call      qword ptr [rax+18]
       call      qword ptr [13C0]
       mov       rsi,rax
       mov       ecx,[r13+34]
       and       ecx,11000000
       cmp       ecx,1000000
       jne       near ptr 0000000000003436
       mov       rdx,[r13+38]
       mov       rcx,rsi
       mov       rax,[rsi]
       mov       rax,[rax+78]
       call      qword ptr [rax+18]
       call      qword ptr [13C0]
       mov       rsi,rax
       mov       ecx,[r12+34]
       and       ecx,11000000
       cmp       ecx,1000000
       jne       near ptr 000000000000344C
       mov       rdx,[r12+38]
       mov       rcx,rsi
       mov       rax,[rsi]
       mov       rax,[rax+78]
       call      qword ptr [rax+18]
       call      qword ptr [13C0]
       mov       rsi,rax
       mov       ecx,[r15+34]
       and       ecx,11000000
       cmp       ecx,1000000
       jne       near ptr 0000000000003462
       mov       rdx,[r15+38]
       mov       rcx,rsi
       mov       rax,[rsi]
       mov       rax,[rax+78]
       call      qword ptr [rax+18]
       call      qword ptr [13C0]
       mov       rsi,rax
       mov       ecx,[r14+34]
       and       ecx,11000000
       cmp       ecx,1000000
       jne       near ptr 0000000000003478
       mov       rdx,[r14+38]
       mov       rcx,rsi
       mov       rax,[rsi]
       mov       rax,[rax+78]
       call      qword ptr [rax+18]
       call      qword ptr [13C0]
       mov       rsi,rax
       mov       ecx,[rbx+34]
       and       ecx,11000000
       cmp       ecx,1000000
       jne       near ptr 000000000000348E
       mov       rdx,[rbx+38]
       mov       rcx,rsi
       mov       rax,[rsi]
       mov       rax,[rax+78]
       call      qword ptr [rax+18]
       call      qword ptr [13C0]
       mov       rsi,rax
       mov       ecx,[rdi+34]
       and       ecx,11000000
       cmp       ecx,1000000
       jne       near ptr 00000000000034A4
       mov       rdx,[rdi+38]
       mov       rcx,rsi
       mov       rax,[rsi]
       mov       rax,[rax+78]
       call      qword ptr [rax+18]
       jmp       near ptr 00000000000033B9
       mov       rcx,offset MT_System.Threading.Tasks.Task[]
       mov       edx,7
       call      000000000000C510
       mov       [rbp+0FF88],rax
       lea       rcx,[rax+10]
       mov       rdx,rsi
       call      0000000000000010
       mov       rsi,[rbp+0FF88]
       lea       rcx,[rsi+18]
       mov       rdx,r13
       call      0000000000000010
       lea       rcx,[rsi+20]
       mov       rdx,r12
       call      0000000000000010
       lea       rcx,[rsi+28]
       mov       rdx,r15
       call      0000000000000010
       lea       rcx,[rsi+30]
       mov       rdx,r14
       call      0000000000000010
       lea       rcx,[rsi+38]
       mov       rdx,rbx
       call      0000000000000010
       lea       rcx,[rsi+40]
       mov       rdx,rdi
       call      0000000000000010
       mov       rcx,rsi
       xor       r8d,r8d
       mov       edx,0FFFFFFFF
       call      qword ptr [1060]
       mov       rdx,[rbp+0FF98]
       movzx     eax,byte ptr [rdx+10]
       add       rsp,0B8
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r12
       pop       r13
       pop       r14
       pop       r15
       pop       rbp
       ret
       mov       ecx,3C3
       mov       rdx,7FFCC01148A0
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [33F0]
       int       3
       mov       ecx,38B
       mov       rdx,7FFCC01148A0
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [33F0]
       int       3
       lea       rcx,[rbp+0FFA8]
       call      qword ptr [1720]
       int       3
       mov       rcx,rsi
       mov       edx,1
       call      qword ptr [3AB0]
       mov       rdx,rax
       mov       rax,[rbp+0FF80]
       jmp       near ptr 0000000000003206
       mov       rcx,r13
       mov       edx,1
       call      qword ptr [3AB0]
       mov       rdx,rax
       jmp       near ptr 0000000000003236
       mov       rcx,r12
       mov       edx,1
       call      qword ptr [3AB0]
       mov       rdx,rax
       jmp       near ptr 0000000000003268
       mov       rcx,r15
       mov       edx,1
       call      qword ptr [3AB0]
       mov       rdx,rax
       jmp       near ptr 0000000000003298
       mov       rcx,r14
       mov       edx,1
       call      qword ptr [3AB0]
       mov       rdx,rax
       jmp       near ptr 00000000000032C8
       mov       rcx,rbx
       mov       edx,1
       call      qword ptr [3AB0]
       mov       rdx,rax
       jmp       near ptr 00000000000032F7
       mov       rcx,rdi
       mov       edx,1
       call      qword ptr [3AB0]
       mov       rdx,rax
       jmp       near ptr 0000000000003326
       call      0000000000006930
       int       3
       push      rbp
       push      r15
       push      r14
       push      r13
       push      r12
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,68
       mov       rbp,[rcx+58]
       mov       [rsp+58],rbp
       lea       rbp,[rbp+0F0]
       mov       rcx,[rbp+0FF90]
       mov       rdx,[rcx+10]
       mov       [rbp+0FF78],rdx
       test      rdx,rdx
       je        short 0000000000003558
       mov       rax,offset MT_System.IO.Strategies.SyncWindowsFileStreamStrategy
       cmp       [rdx],rax
       jne       short 000000000000353F
       mov       rax,[rdx+10]
       test      rax,rax
       je        short 0000000000003558
       test      byte ptr [rax+10],1
       jne       short 0000000000003558
       mov       rsi,[rdx+10]
       mov       rax,[rsi+28]
       test      rax,rax
       je        short 0000000000003523
       mov       byte ptr [rax+10],1
       cmp       [rsi],sil
       mov       rcx,rsi
       mov       edx,1
       call      qword ptr [93C0]
       mov       rcx,rsi
       call      qword ptr [0BAC8]
       jmp       short 0000000000003558
       mov       rcx,rdx
       mov       edx,1
       mov       rax,[rbp+0FF78]
       mov       rax,[rax]
       mov       rax,[rax+50]
       call      qword ptr [rax+20]
       mov       rcx,[rbp+0FF90]
       call      000000000000F440
       nop
       add       rsp,68
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r12
       pop       r13
       pop       r14
       pop       r15
       pop       rbp
       ret
; Total bytes of code 2307

Compare Jit Disasm

; BenchmarksGame.KNucleotide_9.RunBench()
       mov       rcx,[rcx+8]
       xor       edx,edx
       jmp       qword ptr [0B228]
; Total bytes of code 12
; BenchmarksGame.KNucleotide_9.Bench(BenchmarksGame.NucleotideHelpers, Boolean)
       push      rbp
       push      r15
       push      r14
       push      r13
       push      r12
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,0B8
       lea       rbp,[rsp+0F0]
       xor       eax,eax
       mov       [rbp+0FF98],rax
       vxorps    xmm4,xmm4,xmm4
       vmovdqa   xmmword ptr [rbp+0FFA0],xmm4
       vmovdqa   xmmword ptr [rbp+0FFB0],xmm4
       mov       [rbp+0FFC0],rax
       mov       [rbp+0FF68],rsp
       mov       [rbp+18],edx
       mov       rsi,rcx
       mov       rcx,offset MT_BenchmarksGame.KNucleotide_9+<>c__DisplayClass18_0
       call      0000000000002AE0
       mov       rdx,rax
       mov       [rbp+0FF98],rdx
       lea       rcx,[rdx+8]
       mov       rdx,rsi
       call      0000000000000010
       mov       rcx,22F4F408348
       mov       rcx,[rcx]
       inc       dword ptr [rcx+14]
       mov       r8d,[rcx+10]
       xor       edx,edx
       mov       [rcx+10],edx
       test      r8d,r8d
       jle       short 000000000000318C
       mov       rcx,[rcx+8]
       xor       edx,edx
       call      qword ptr [90C0]
       xor       ecx,ecx
       mov       [0C124],ecx
       mov       [0C128],ecx
       mov       rcx,22F4F408350
       mov       rcx,[rcx]
       mov       rax,rcx
       mov       edx,[rax+8]
       cmp       edx,63
       jbe       near ptr 000000000000394A
       mov       byte ptr [rax+73],1
       mov       rax,rcx
       mov       byte ptr [rax+53],1
       mov       rax,rcx
       cmp       edx,67
       jbe       near ptr 000000000000394A
       mov       byte ptr [rax+77],2
       mov       rax,rcx
       mov       byte ptr [rax+57],2
       mov       rax,rcx
       cmp       edx,74
       jbe       near ptr 000000000000394A
       mov       byte ptr [rax+84],3
       mov       rax,rcx
       mov       byte ptr [rax+64],3
       mov       rax,rcx
       mov       byte ptr [rax+1A],0FF
       mov       rax,rcx
       mov       byte ptr [rax+4E],0FF
       cmp       edx,0FF
       jbe       near ptr 000000000000394A
       mov       byte ptr [rcx+10F],0FF
       mov       rdx,[rbp+0FF98]
       mov       rcx,[rdx+8]
       mov       rsi,[rcx+8]
       mov       rcx,offset MT_System.IO.FileStream
       call      0000000000006B80
       mov       rdi,rax
       mov       dword ptr [rsp+20],1000
       xor       ecx,ecx
       mov       [rsp+28],ecx
       mov       [rsp+30],rcx
       mov       rcx,rsi
       mov       edx,3
       mov       r8d,3
       mov       r9d,1
       call      qword ptr [71B0]
       mov       rcx,offset MT_System.IO.Strategies.SyncWindowsFileStreamStrategy
       call      0000000000002AE0
       mov       rbx,rax
       mov       rdx,rsi
       xor       ecx,ecx
       mov       [rsp+30],rcx
       mov       byte ptr [rbp+0FFA0],0
       mov       [rbp+0FFA4],ecx
       mov       rcx,rbx
       mov       r8d,3
       mov       r9d,3
       mov       dword ptr [rsp+20],1
       xor       eax,eax
       mov       [rsp+28],eax
       mov       rax,[rbp+0FFA0]
       mov       [rsp+38],rax
       call      qword ptr [7540]
       mov       rcx,offset MT_System.IO.Strategies.BufferedFileStreamStrategy
       call      0000000000002AE0
       mov       rsi,rax
       lea       rcx,[rsi+10]
       mov       rdx,rbx
       call      0000000000000010
       mov       dword ptr [rsi+20],1000
       mov       rdx,rsi
       mov       rcx,rdi
       call      qword ptr [7180]
       lea       rcx,[rdi+10]
       mov       rdx,rax
       call      0000000000000010
       mov       rcx,rdi
       mov       [rbp+0FF90],rcx
       call      qword ptr [0B150]
       nop
       mov       rcx,rsp
       call      0000000000003950
       nop
       mov       rcx,22F4F408818
       mov       rsi,[rcx]
       mov       rcx,22F4F408348
       mov       rdi,[rcx]
       test      rsi,rsi
       jne       short 0000000000003368
       mov       rcx,offset MT_System.Action`1[[System.Byte[], System.Private.CoreLib]]
       call      0000000000002AE0
       mov       rsi,rax
       mov       rdx,22F4F4087F8
       mov       rdx,[rdx]
       lea       rcx,[rsi+8]
       call      0000000000000010
       mov       rdx,offset BenchmarksGame.KNucleotide_9+<>c.<Bench>b__18_0(Byte[])
       mov       [rsi+18],rdx
       mov       rcx,22F4F408818
       mov       rdx,rsi
       call      0000000000000010
       test      rdi,rdi
       je        near ptr 0000000000003865
       test      rsi,rsi
       je        near ptr 0000000000003883
       mov       rdx,22F4F409520
       mov       rbx,[rdx]
       mov       rdx,[rbx+18]
       mov       [rbp+0FFA8],rdx
       cmp       qword ptr [rbp+0FFA8],0
       jne       short 00000000000033F2
       mov       rdx,rdi
       mov       rcx,offset MT_System.Byte[][]
       call      qword ptr [0B7F8]
       test      rax,rax
       je        short 0000000000003401
       mov       [rsp+20],rsi
       xor       ecx,ecx
       mov       [rsp+28],rcx
       mov       [rsp+30],rcx
       mov       [rsp+38],rcx
       mov       [rsp+40],rcx
       mov       [rsp+48],rcx
       mov       [rsp+50],rcx
       lea       rcx,[rbp+0FFB0]
       mov       r8,rax
       mov       r9,rbx
       mov       rdx,offset MD_System.Threading.Tasks.Parallel.ForEachWorker(!!0[], System.Threading.Tasks.ParallelOptions, System.Action`1<!!0>, System.Action`2<!!0,System.Threading.Tasks.ParallelLoopState>, System.Action`3<!!0,System.Threading.Tasks.ParallelLoopState,Int64>, System.Func`4<!!0,System.Threading.Tasks.ParallelLoopState,!!1,!!1>, System.Func`5<!!0,System.Threading.Tasks.ParallelLoopState,Int64,!!1,!!1>, System.Func`1<!!1>, System.Action`1<!!1>)
       call      qword ptr [0D300]
       jmp       near ptr 00000000000034AF
       mov       rdx,[rbp+0FFA8]
       cmp       dword ptr [rdx+20],0
       je        short 0000000000003396
       jmp       near ptr 00000000000038A1
       mov       rdx,rdi
       mov       rcx,offset MT_System.Collections.Generic.IList`1[[System.Byte[], System.Private.CoreLib]]
       call      qword ptr [0B810]
       test      rax,rax
       je        short 000000000000345A
       mov       [rsp+20],rsi
       xor       ecx,ecx
       mov       [rsp+28],rcx
       mov       [rsp+30],rcx
       mov       [rsp+38],rcx
       mov       [rsp+40],rcx
       mov       [rsp+48],rcx
       mov       [rsp+50],rcx
       lea       rcx,[rbp+0FFB0]
       mov       r8,rax
       mov       r9,rbx
       mov       rdx,offset MD_System.Threading.Tasks.Parallel.ForEachWorker(System.Collections.Generic.IList`1<!!0>, System.Threading.Tasks.ParallelOptions, System.Action`1<!!0>, System.Action`2<!!0,System.Threading.Tasks.ParallelLoopState>, System.Action`3<!!0,System.Threading.Tasks.ParallelLoopState,Int64>, System.Func`4<!!0,System.Threading.Tasks.ParallelLoopState,!!1,!!1>, System.Func`5<!!0,System.Threading.Tasks.ParallelLoopState,Int64,!!1,!!1>, System.Func`1<!!1>, System.Action`1<!!1>)
       call      qword ptr [0D2B8]
       jmp       short 00000000000034AF
       mov       rdx,rdi
       mov       rcx,offset MD_System.Collections.Concurrent.Partitioner.Create(System.Collections.Generic.IEnumerable`1<!!0>, System.Collections.Concurrent.EnumerablePartitionerOptions)
       xor       r8d,r8d
       call      qword ptr [5798]
       mov       r8,rax
       mov       [rsp+20],rsi
       xor       ecx,ecx
       mov       [rsp+28],rcx
       mov       [rsp+30],rcx
       mov       [rsp+38],rcx
       mov       [rsp+40],rcx
       mov       [rsp+48],rcx
       mov       [rsp+50],rcx
       lea       rcx,[rbp+0FFB0]
       mov       r9,rbx
       mov       rdx,offset MD_System.Threading.Tasks.Parallel.PartitionerForEachWorker(System.Collections.Concurrent.Partitioner`1<!!0>, System.Threading.Tasks.ParallelOptions, System.Action`1<!!0>, System.Action`2<!!0,System.Threading.Tasks.ParallelLoopState>, System.Action`3<!!0,System.Threading.Tasks.ParallelLoopState,Int64>, System.Func`4<!!0,System.Threading.Tasks.ParallelLoopState,!!1,!!1>, System.Func`5<!!0,System.Threading.Tasks.ParallelLoopState,Int64,!!1,!!1>, System.Func`1<!!1>, System.Action`1<!!1>)
       call      qword ptr [0D270]
       mov       rdx,[rbp+0FF98]
       mov       byte ptr [rdx+10],1
       mov       rsi,offset MT_System.Func`2[[System.Collections.Generic.Dictionary`2[[System.Int64, System.Private.CoreLib],[BenchmarksGame.Wrapper, MicroBenchmarks]], System.Private.CoreLib],[System.String, System.Private.CoreLib]]
       mov       rcx,rsi
       call      0000000000002AE0
       mov       rdi,rax
       lea       rcx,[rdi+8]
       mov       rdx,[rbp+0FF98]
       call      0000000000000010
       mov       r8,offset BenchmarksGame.KNucleotide_9+<>c__DisplayClass18_0.<Bench>b__1(System.Collections.Generic.Dictionary`2<Int64,BenchmarksGame.Wrapper>)
       mov       [rdi+18],r8
       mov       r8,rdi
       mov       ecx,12
       mov       rdx,7FFFFFFFF
       call      qword ptr [0B1C8]
       mov       rdi,rax
       mov       rcx,rsi
       call      0000000000002AE0
       mov       rbx,rax
       lea       rcx,[rbx+8]
       mov       rdx,[rbp+0FF98]
       call      0000000000000010
       mov       r8,offset BenchmarksGame.KNucleotide_9+<>c__DisplayClass18_0.<Bench>b__2(System.Collections.Generic.Dictionary`2<Int64,BenchmarksGame.Wrapper>)
       mov       [rbx+18],r8
       mov       r8,rbx
       mov       ecx,0C
       mov       edx,7FFFFF
       call      qword ptr [0B1C8]
       mov       rbx,rax
       mov       rcx,rsi
       call      0000000000002AE0
       mov       r14,rax
       lea       rcx,[r14+8]
       mov       rdx,[rbp+0FF98]
       call      0000000000000010
       mov       r8,offset BenchmarksGame.KNucleotide_9+<>c__DisplayClass18_0.<Bench>b__3(System.Collections.Generic.Dictionary`2<Int64,BenchmarksGame.Wrapper>)
       mov       [r14+18],r8
       mov       r8,r14
       mov       ecx,6
       mov       edx,3FF
       call      qword ptr [0B198]
       mov       r14,rax
       mov       rcx,rsi
       call      0000000000002AE0
       mov       r15,rax
       lea       rcx,[r15+8]
       mov       rdx,[rbp+0FF98]
       call      0000000000000010
       mov       r8,offset BenchmarksGame.KNucleotide_9+<>c__DisplayClass18_0.<Bench>b__4(System.Collections.Generic.Dictionary`2<Int64,BenchmarksGame.Wrapper>)
       mov       [r15+18],r8
       mov       r8,r15
       mov       ecx,4
       mov       edx,3F
       call      qword ptr [0B198]
       mov       r15,rax
       mov       rcx,rsi
       call      0000000000002AE0
       mov       r12,rax
       lea       rcx,[r12+8]
       mov       rdx,[rbp+0FF98]
       call      0000000000000010
       mov       r8,offset BenchmarksGame.KNucleotide_9+<>c__DisplayClass18_0.<Bench>b__5(System.Collections.Generic.Dictionary`2<Int64,BenchmarksGame.Wrapper>)
       mov       [r12+18],r8
       mov       r8,r12
       mov       ecx,3
       mov       edx,0F
       call      qword ptr [0B198]
       mov       r12,rax
       mov       rcx,rsi
       call      0000000000002AE0
       mov       r13,rax
       lea       rcx,[r13+8]
       mov       rdx,[rbp+0FF98]
       call      0000000000000010
       mov       r8,offset BenchmarksGame.KNucleotide_9+<>c__DisplayClass18_0.<Bench>b__6(System.Collections.Generic.Dictionary`2<Int64,BenchmarksGame.Wrapper>)
       mov       [r13+18],r8
       mov       r8,r13
       mov       ecx,2
       mov       edx,3
       call      qword ptr [0B198]
       mov       r13,rax
       mov       rcx,rsi
       call      0000000000002AE0
       mov       rsi,rax
       lea       rcx,[rsi+8]
       mov       rdx,[rbp+0FF98]
       call      0000000000000010
       mov       r8,offset BenchmarksGame.KNucleotide_9+<>c__DisplayClass18_0.<Bench>b__7(System.Collections.Generic.Dictionary`2<Int64,BenchmarksGame.Wrapper>)
       mov       [rsi+18],r8
       mov       r8,rsi
       mov       ecx,1
       xor       edx,edx
       call      qword ptr [0B198]
       mov       rsi,rax
       cmp       byte ptr [rbp+18],0
       je        near ptr 00000000000037C8
       call      qword ptr [13C0]
       mov       [rbp+0FF80],rax
       mov       ecx,[rsi+34]
       and       ecx,11000000
       cmp       ecx,1000000
       jne       near ptr 00000000000038AC
       mov       rdx,[rsi+38]
       mov       rcx,rax
       mov       rax,[rax]
       mov       rax,[rax+78]
       call      qword ptr [rax+18]
       call      qword ptr [13C0]
       mov       rsi,rax
       mov       ecx,[r13+34]
       and       ecx,11000000
       cmp       ecx,1000000
       jne       near ptr 00000000000038C6
       mov       rdx,[r13+38]
       mov       rcx,rsi
       mov       rax,[rsi]
       mov       rax,[rax+78]
       call      qword ptr [rax+18]
       call      qword ptr [13C0]
       mov       rsi,rax
       mov       ecx,[r12+34]
       and       ecx,11000000
       cmp       ecx,1000000
       jne       near ptr 00000000000038DC
       mov       rdx,[r12+38]
       mov       rcx,rsi
       mov       rax,[rsi]
       mov       rax,[rax+78]
       call      qword ptr [rax+18]
       call      qword ptr [13C0]
       mov       rsi,rax
       mov       ecx,[r15+34]
       and       ecx,11000000
       cmp       ecx,1000000
       jne       near ptr 00000000000038F2
       mov       rdx,[r15+38]
       mov       rcx,rsi
       mov       rax,[rsi]
       mov       rax,[rax+78]
       call      qword ptr [rax+18]
       call      qword ptr [13C0]
       mov       rsi,rax
       mov       ecx,[r14+34]
       and       ecx,11000000
       cmp       ecx,1000000
       jne       near ptr 0000000000003908
       mov       rdx,[r14+38]
       mov       rcx,rsi
       mov       rax,[rsi]
       mov       rax,[rax+78]
       call      qword ptr [rax+18]
       call      qword ptr [13C0]
       mov       rsi,rax
       mov       ecx,[rbx+34]
       and       ecx,11000000
       cmp       ecx,1000000
       jne       near ptr 000000000000391E
       mov       rdx,[rbx+38]
       mov       rcx,rsi
       mov       rax,[rsi]
       mov       rax,[rax+78]
       call      qword ptr [rax+18]
       call      qword ptr [13C0]
       mov       rsi,rax
       mov       ecx,[rdi+34]
       and       ecx,11000000
       cmp       ecx,1000000
       jne       near ptr 0000000000003934
       mov       rdx,[rdi+38]
       mov       rcx,rsi
       mov       rax,[rsi]
       mov       rax,[rax+78]
       call      qword ptr [rax+18]
       jmp       near ptr 0000000000003849
       mov       rcx,offset MT_System.Threading.Tasks.Task[]
       mov       edx,7
       call      0000000000002C60
       mov       [rbp+0FF88],rax
       lea       rcx,[rax+10]
       mov       rdx,rsi
       call      0000000000000010
       mov       rsi,[rbp+0FF88]
       lea       rcx,[rsi+18]
       mov       rdx,r13
       call      0000000000000010
       lea       rcx,[rsi+20]
       mov       rdx,r12
       call      0000000000000010
       lea       rcx,[rsi+28]
       mov       rdx,r15
       call      0000000000000010
       lea       rcx,[rsi+30]
       mov       rdx,r14
       call      0000000000000010
       lea       rcx,[rsi+38]
       mov       rdx,rbx
       call      0000000000000010
       lea       rcx,[rsi+40]
       mov       rdx,rdi
       call      0000000000000010
       mov       rcx,rsi
       xor       r8d,r8d
       mov       edx,0FFFFFFFF
       call      qword ptr [1060]
       mov       rdx,[rbp+0FF98]
       movzx     eax,byte ptr [rdx+10]
       add       rsp,0B8
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r12
       pop       r13
       pop       r14
       pop       r15
       pop       rbp
       ret
       mov       ecx,3C3
       mov       rdx,7FF7E69E4978
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [33F0]
       int       3
       mov       ecx,38B
       mov       rdx,7FF7E69E4978
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [33F0]
       int       3
       lea       rcx,[rbp+0FFA8]
       call      qword ptr [1720]
       int       3
       mov       rcx,rsi
       mov       edx,1
       call      qword ptr [3AB0]
       mov       rdx,rax
       mov       rax,[rbp+0FF80]
       jmp       near ptr 0000000000003696
       mov       rcx,r13
       mov       edx,1
       call      qword ptr [3AB0]
       mov       rdx,rax
       jmp       near ptr 00000000000036C6
       mov       rcx,r12
       mov       edx,1
       call      qword ptr [3AB0]
       mov       rdx,rax
       jmp       near ptr 00000000000036F8
       mov       rcx,r15
       mov       edx,1
       call      qword ptr [3AB0]
       mov       rdx,rax
       jmp       near ptr 0000000000003728
       mov       rcx,r14
       mov       edx,1
       call      qword ptr [3AB0]
       mov       rdx,rax
       jmp       near ptr 0000000000003758
       mov       rcx,rbx
       mov       edx,1
       call      qword ptr [3AB0]
       mov       rdx,rax
       jmp       near ptr 0000000000003787
       mov       rcx,rdi
       mov       edx,1
       call      qword ptr [3AB0]
       mov       rdx,rax
       jmp       near ptr 00000000000037B6
       call      000000000000AB50
       int       3
       push      rbp
       push      r15
       push      r14
       push      r13
       push      r12
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,68
       mov       rbp,[rcx+58]
       mov       [rsp+58],rbp
       lea       rbp,[rbp+0F0]
       mov       rcx,[rbp+0FF90]
       mov       rdx,[rcx+10]
       mov       [rbp+0FF78],rdx
       test      rdx,rdx
       je        short 00000000000039E8
       mov       rax,offset MT_System.IO.Strategies.SyncWindowsFileStreamStrategy
       cmp       [rdx],rax
       jne       short 00000000000039CF
       mov       rax,[rdx+10]
       test      rax,rax
       je        short 00000000000039E8
       test      byte ptr [rax+10],1
       jne       short 00000000000039E8
       mov       rsi,[rdx+10]
       mov       rax,[rsi+28]
       test      rax,rax
       je        short 00000000000039B3
       mov       byte ptr [rax+10],1
       cmp       [rsi],sil
       mov       rcx,rsi
       mov       edx,1
       call      qword ptr [93C0]
       mov       rcx,rsi
       call      qword ptr [0BAC8]
       jmp       short 00000000000039E8
       mov       rcx,rdx
       mov       edx,1
       mov       rax,[rbp+0FF78]
       mov       rax,[rax]
       mov       rax,[rax+50]
       call      qword ptr [rax+20]
       mov       rcx,[rbp+0FF90]
       call      0000000000000FB0
       nop
       add       rsp,68
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r12
       pop       r13
       pop       r14
       pop       r15
       pop       rbp
       ret
; Total bytes of code 2307

Docs

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

### Run Information
Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in PerfLabTests.EnumPerf

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
ObjectGetType - Duration of single invocation 0.64 ns 1.75 ns 2.74 0.58 False Trace Trace
ObjectGetTypeNoBoxing - Duration of single invocation 0.95 ns 2.21 ns 2.32 0.47 False 19.773988988838475 21.723207362259423 1.0985748689615025 Trace Trace

graph
graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'PerfLabTests.EnumPerf*'

Payloads

Baseline
Compare

Histogram

PerfLabTests.EnumPerf.ObjectGetType


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.747831780270819 > 0.7274350500950948.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -33.9685513743408 (T) = (0 -1.885546221109961) / Math.Sqrt((0.014647837778382767 / (20)) + (0.01277936552452099 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -1.405473791676 = (0.7838564808458035 - 1.885546221109961) / 0.7838564808458035 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.EnumPerf.ObjectGetType()
       sub       rsp,28
       mov       rcx,offset MT_PerfLabTests.Color
       call      000000000000D240
       nop
       add       rsp,28
       ret
; Total bytes of code 25

Compare Jit Disasm

; PerfLabTests.EnumPerf.ObjectGetType()
       sub       rsp,28
       mov       rcx,offset MT_PerfLabTests.Color
       call      0000000000005E90
       nop
       add       rsp,28
       ret
; Total bytes of code 25

PerfLabTests.EnumPerf.ObjectGetTypeNoBoxing


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 2.2115293487463368 > 0.9835817435498875.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -28.334270565174304 (T) = (0 -2.099757981882172) / Math.Sqrt((0.022979530804985705 / (20)) + (0.031037343841949366 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -1.4511959358540942 = (0.8566259233579109 - 2.099757981882172) / 0.8566259233579109 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.EnumPerf.ObjectGetTypeNoBoxing()
       sub       rsp,28
       mov       rcx,[rcx+8]
       call      000000000000B080
       nop
       add       rsp,28
       ret
; Total bytes of code 19

Compare Jit Disasm

; PerfLabTests.EnumPerf.ObjectGetTypeNoBoxing()
       sub       rsp,28
       mov       rcx,[rcx+8]
       call      000000000000CAB0
       nop
       add       rsp,28
       ret
; Total bytes of code 19

Docs

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

@performanceautofiler
Copy link
Author

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in System.IO.Tests.StreamReaderReadToEndTests

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
ReadToEndAsync - Duration of single invocation 79.29 ms 94.74 ms 1.19 0.06 False 247550000 314852941.1764706 1.2718761509855405 Trace Trace
ReadToEndAsync - Duration of single invocation 76.07 ms 91.43 ms 1.20 0.07 False 246950000 315166666.6666667 1.276236755078626 Trace Trace
ReadToEnd - Duration of single invocation 75.84 ms 93.78 ms 1.24 0.05 False 226733333.33333334 298066666.6666667 1.3146133490149956 Trace Trace
ReadToEnd - Duration of single invocation 75.85 ms 87.08 ms 1.15 0.07 False 228533333.33333334 298029411.7647059 1.304096025808223 Trace Trace
ReadToEndAsync - Duration of single invocation 74.40 ms 91.43 ms 1.23 0.05 False 248900000 316766666.6666667 1.2726663988214812 Trace Trace
ReadToEndAsync - Duration of single invocation 74.72 ms 102.07 ms 1.37 0.05 False 247733333.33333334 317466666.6666667 1.2814854682454253 Trace Trace
ReadToEnd - Duration of single invocation 75.89 ms 86.64 ms 1.14 0.09 False 228600000 298466666.6666667 1.3056284631087782 Trace Trace
ReadToEnd - Duration of single invocation 75.61 ms 84.16 ms 1.11 0.05 False 227950000 298233333.3333333 1.3083278496746362 Trace Trace
ReadToEndAsync - Duration of single invocation 75.16 ms 91.24 ms 1.21 0.09 False 246733333.33333334 315733333.3333333 1.279654147527695 Trace Trace
ReadToEnd - Duration of single invocation 75.61 ms 83.90 ms 1.11 0.06 False 228550000 297933333.3333333 1.3035805440093342 Trace Trace
ReadToEnd - Duration of single invocation 76.10 ms 97.01 ms 1.27 0.05 False 227450000 298000000 1.3101780611123324 Trace Trace
ReadToEnd - Duration of single invocation 75.90 ms 83.95 ms 1.11 0.04 False 228566666.66666666 297700000 1.3024646346798892 Trace Trace
ReadToEndAsync - Duration of single invocation 74.63 ms 91.40 ms 1.22 0.07 False 245766666.66666666 312650000 1.272141597721416 Trace Trace
ReadToEndAsync - Duration of single invocation 77.41 ms 95.20 ms 1.23 0.07 False 245866666.66666666 313852941.1764706 1.2765168431797882 Trace Trace
ReadToEndAsync - Duration of single invocation 74.77 ms 96.27 ms 1.29 0.07 False 244883333.33333334 313294117.64705884 1.279360719990712 Trace Trace
ReadToEnd - Duration of single invocation 75.80 ms 83.89 ms 1.11 0.07 False 228500000 298900000 1.3080962800875273 Trace Trace

graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.IO.Tests.StreamReaderReadToEndTests*'

Payloads

Baseline
Compare

Histogram

System.IO.Tests.StreamReaderReadToEndTests.ReadToEndAsync(LineLengthRange: [ 1, 1])


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 94.73885657894736 > 79.3140996875.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -38.30197266243107 (T) = (0 -92227499.88884827) / Math.Sqrt((1703299866639.3135 / (20)) + (3775292648438.8843 / (39))) is less than -2.0024654592901125 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (39) - 2, .025) and -0.2152981515820783 = (75888784.79637797 - 92227499.88884827) / 75888784.79637797 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.IO.Tests.StreamReaderReadToEndTests.ReadToEndAsync()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+58]
       call      qword ptr [rax+10]
       mov       rcx,rax
       xor       edx,edx
       mov       rax,[rax]
       mov       rax,[rax+48]
       call      qword ptr [rax+18]
       mov       rcx,[rsi+18]
       cmp       [rcx],ecx
       call      qword ptr [5210]
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+50]
       add       rsp,20
       pop       rsi
       jmp       qword ptr [rax+10]
; Total bytes of code 69
; System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib]].GetAwaiter()
       push      rax
       mov       [rsp],rcx
       cmp       [rcx],ecx
       mov       rax,rcx
       add       rsp,8
       ret
; Total bytes of code 15
; System.Runtime.CompilerServices.TaskAwaiter`1[[System.__Canon, System.Private.CoreLib]].GetResult()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi]
       mov       eax,[rcx+34]
       and       eax,11000000
       cmp       eax,1000000
       jne       short 0000000000004A17
       mov       rax,[rsi]
       mov       rax,[rax+38]
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [9A68]
       jmp       short 0000000000004A0A
; Total bytes of code 47
; System.IO.StreamReader.DiscardBufferedData()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+30]
       test      dword ptr [rcx+34],1600000
       je        short 0000000000004C69
       xor       ecx,ecx
       mov       [rsi+40],ecx
       mov       [rsi+3C],ecx
       mov       [rsi+38],ecx
       mov       rcx,[rsi+10]
       test      rcx,rcx
       je        short 0000000000004C5F
       mov       rax,[rcx]
       mov       rax,[rax+68]
       call      qword ptr [rax+8]
       lea       rcx,[rsi+18]
       mov       rdx,rax
       call      0000000000000010
       mov       byte ptr [rsi+4F],0
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [5018]
       int       3
; Total bytes of code 80

Compare Jit Disasm

; System.IO.Tests.StreamReaderReadToEndTests.ReadToEndAsync()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+58]
       call      qword ptr [rax+10]
       mov       rcx,rax
       xor       edx,edx
       mov       rax,[rax]
       mov       rax,[rax+48]
       call      qword ptr [rax+18]
       mov       rcx,[rsi+18]
       cmp       [rcx],ecx
       call      qword ptr [5210]
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+50]
       add       rsp,20
       pop       rsi
       jmp       qword ptr [rax+10]
; Total bytes of code 69
; System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib]].GetAwaiter()
       push      rax
       mov       [rsp],rcx
       cmp       [rcx],ecx
       mov       rax,rcx
       add       rsp,8
       ret
; Total bytes of code 15
; System.Runtime.CompilerServices.TaskAwaiter`1[[System.__Canon, System.Private.CoreLib]].GetResult()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi]
       mov       eax,[rcx+34]
       and       eax,11000000
       cmp       eax,1000000
       jne       short 00000000000065D7
       mov       rax,[rsi]
       mov       rax,[rax+38]
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [9A68]
       jmp       short 00000000000065CA
; Total bytes of code 47
; System.IO.StreamReader.DiscardBufferedData()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+30]
       test      dword ptr [rcx+34],1600000
       je        short 0000000000006829
       xor       ecx,ecx
       mov       [rsi+40],ecx
       mov       [rsi+3C],ecx
       mov       [rsi+38],ecx
       mov       rcx,[rsi+10]
       test      rcx,rcx
       je        short 000000000000681F
       mov       rax,[rcx]
       mov       rax,[rax+68]
       call      qword ptr [rax+8]
       lea       rcx,[rsi+18]
       mov       rdx,rax
       call      0000000000000010
       mov       byte ptr [rsi+4F],0
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [5018]
       int       3
; Total bytes of code 80

System.IO.Tests.StreamReaderReadToEndTests.ReadToEndAsync(LineLengthRange: [ 1, 8])


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 91.43385833333333 > 79.99450571874999.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -48.05814087979504 (T) = (0 -92397138.85527644) / Math.Sqrt((494960094302.0775 / (20)) + (3597726707920.3584 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.21380769141715036 = (76121727.93813862 - 92397138.85527644) / 76121727.93813862 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.IO.Tests.StreamReaderReadToEndTests.ReadToEndAsync()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+58]
       call      qword ptr [rax+10]
       mov       rcx,rax
       xor       edx,edx
       mov       rax,[rax]
       mov       rax,[rax+48]
       call      qword ptr [rax+18]
       mov       rcx,[rsi+18]
       cmp       [rcx],ecx
       call      qword ptr [5210]
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+50]
       add       rsp,20
       pop       rsi
       jmp       qword ptr [rax+10]
; Total bytes of code 69
; System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib]].GetAwaiter()
       push      rax
       mov       [rsp],rcx
       cmp       [rcx],ecx
       mov       rax,rcx
       add       rsp,8
       ret
; Total bytes of code 15
; System.Runtime.CompilerServices.TaskAwaiter`1[[System.__Canon, System.Private.CoreLib]].GetResult()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi]
       mov       eax,[rcx+34]
       and       eax,11000000
       cmp       eax,1000000
       jne       short 0000000000004A17
       mov       rax,[rsi]
       mov       rax,[rax+38]
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [9A68]
       jmp       short 0000000000004A0A
; Total bytes of code 47
; System.IO.StreamReader.DiscardBufferedData()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+30]
       test      dword ptr [rcx+34],1600000
       je        short 0000000000004C69
       xor       ecx,ecx
       mov       [rsi+40],ecx
       mov       [rsi+3C],ecx
       mov       [rsi+38],ecx
       mov       rcx,[rsi+10]
       test      rcx,rcx
       je        short 0000000000004C5F
       mov       rax,[rcx]
       mov       rax,[rax+68]
       call      qword ptr [rax+8]
       lea       rcx,[rsi+18]
       mov       rdx,rax
       call      0000000000000010
       mov       byte ptr [rsi+4F],0
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [5018]
       int       3
; Total bytes of code 80

Compare Jit Disasm

; System.IO.Tests.StreamReaderReadToEndTests.ReadToEndAsync()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+58]
       call      qword ptr [rax+10]
       mov       rcx,rax
       xor       edx,edx
       mov       rax,[rax]
       mov       rax,[rax+48]
       call      qword ptr [rax+18]
       mov       rcx,[rsi+18]
       cmp       [rcx],ecx
       call      qword ptr [5210]
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+50]
       add       rsp,20
       pop       rsi
       jmp       qword ptr [rax+10]
; Total bytes of code 69
; System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib]].GetAwaiter()
       push      rax
       mov       [rsp],rcx
       cmp       [rcx],ecx
       mov       rax,rcx
       add       rsp,8
       ret
; Total bytes of code 15
; System.Runtime.CompilerServices.TaskAwaiter`1[[System.__Canon, System.Private.CoreLib]].GetResult()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi]
       mov       eax,[rcx+34]
       and       eax,11000000
       cmp       eax,1000000
       jne       short 00000000000065F7
       mov       rax,[rsi]
       mov       rax,[rax+38]
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [9A68]
       jmp       short 00000000000065EA
; Total bytes of code 47
; System.IO.StreamReader.DiscardBufferedData()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+30]
       test      dword ptr [rcx+34],1600000
       je        short 0000000000006849
       xor       ecx,ecx
       mov       [rsi+40],ecx
       mov       [rsi+3C],ecx
       mov       [rsi+38],ecx
       mov       rcx,[rsi+10]
       test      rcx,rcx
       je        short 000000000000683F
       mov       rax,[rcx]
       mov       rax,[rax+68]
       call      qword ptr [rax+8]
       lea       rcx,[rsi+18]
       mov       rdx,rax
       call      0000000000000010
       mov       byte ptr [rsi+4F],0
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [5018]
       int       3
; Total bytes of code 80

System.IO.Tests.StreamReaderReadToEndTests.ReadToEnd(LineLengthRange: [ 0, 0])


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 93.781475 > 79.89860625.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -17.254715733031013 (T) = (0 -86321741.52197197) / Math.Sqrt((119432195973.75948 / (20)) + (13807502274415.756 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.13436720468034755 = (76096823.9965087 - 86321741.52197197) / 76096823.9965087 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.IO.Tests.StreamReaderReadToEndTests.ReadToEnd()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+58]
       call      qword ptr [rax+10]
       mov       rcx,rax
       xor       edx,edx
       mov       rax,[rax]
       mov       rax,[rax+48]
       call      qword ptr [rax+18]
       mov       rcx,[rsi+18]
       cmp       [rcx],ecx
       call      qword ptr [5210]
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+48]
       add       rsp,20
       pop       rsi
       jmp       qword ptr [rax+20]
; Total bytes of code 69
; System.IO.StreamReader.DiscardBufferedData()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+30]
       test      dword ptr [rcx+34],1600000
       je        short 00000000000040D9
       xor       ecx,ecx
       mov       [rsi+40],ecx
       mov       [rsi+3C],ecx
       mov       [rsi+38],ecx
       mov       rcx,[rsi+10]
       test      rcx,rcx
       je        short 00000000000040CF
       mov       rax,[rcx]
       mov       rax,[rax+68]
       call      qword ptr [rax+8]
       lea       rcx,[rsi+18]
       mov       rdx,rax
       call      0000000000000010
       mov       byte ptr [rsi+4F],0
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [5018]
       int       3
; Total bytes of code 80

Compare Jit Disasm

; System.IO.Tests.StreamReaderReadToEndTests.ReadToEnd()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+58]
       call      qword ptr [rax+10]
       mov       rcx,rax
       xor       edx,edx
       mov       rax,[rax]
       mov       rax,[rax+48]
       call      qword ptr [rax+18]
       mov       rcx,[rsi+18]
       cmp       [rcx],ecx
       call      qword ptr [5210]
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+48]
       add       rsp,20
       pop       rsi
       jmp       qword ptr [rax+20]
; Total bytes of code 69
; System.IO.StreamReader.DiscardBufferedData()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+30]
       test      dword ptr [rcx+34],1600000
       je        short 0000000000005C19
       xor       ecx,ecx
       mov       [rsi+40],ecx
       mov       [rsi+3C],ecx
       mov       [rsi+38],ecx
       mov       rcx,[rsi+10]
       test      rcx,rcx
       je        short 0000000000005C0F
       mov       rax,[rcx]
       mov       rax,[rax+68]
       call      qword ptr [rax+8]
       lea       rcx,[rsi+18]
       mov       rdx,rax
       call      0000000000000010
       mov       byte ptr [rsi+4F],0
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [5018]
       int       3
; Total bytes of code 80

System.IO.Tests.StreamReaderReadToEndTests.ReadToEnd(LineLengthRange: [ 9, 32])


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 87.0836475 > 79.80242684615385.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -15.094814437945313 (T) = (0 -87416328.54186194) / Math.Sqrt((174215363407.99002 / (20)) + (21762778031123.87 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.14729443935797526 = (76193456.13736263 - 87416328.54186194) / 76193456.13736263 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.IO.Tests.StreamReaderReadToEndTests.ReadToEnd()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+58]
       call      qword ptr [rax+10]
       mov       rcx,rax
       xor       edx,edx
       mov       rax,[rax]
       mov       rax,[rax+48]
       call      qword ptr [rax+18]
       mov       rcx,[rsi+18]
       cmp       [rcx],ecx
       call      qword ptr [5210]
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+48]
       add       rsp,20
       pop       rsi
       jmp       qword ptr [rax+20]
; Total bytes of code 69
; System.IO.StreamReader.DiscardBufferedData()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+30]
       test      dword ptr [rcx+34],1600000
       je        short 00000000000040D9
       xor       ecx,ecx
       mov       [rsi+40],ecx
       mov       [rsi+3C],ecx
       mov       [rsi+38],ecx
       mov       rcx,[rsi+10]
       test      rcx,rcx
       je        short 00000000000040CF
       mov       rax,[rcx]
       mov       rax,[rax+68]
       call      qword ptr [rax+8]
       lea       rcx,[rsi+18]
       mov       rdx,rax
       call      0000000000000010
       mov       byte ptr [rsi+4F],0
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [5018]
       int       3
; Total bytes of code 80

Compare Jit Disasm

; System.IO.Tests.StreamReaderReadToEndTests.ReadToEnd()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+58]
       call      qword ptr [rax+10]
       mov       rcx,rax
       xor       edx,edx
       mov       rax,[rax]
       mov       rax,[rax+48]
       call      qword ptr [rax+18]
       mov       rcx,[rsi+18]
       cmp       [rcx],ecx
       call      qword ptr [5210]
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+48]
       add       rsp,20
       pop       rsi
       jmp       qword ptr [rax+20]
; Total bytes of code 69
; System.IO.StreamReader.DiscardBufferedData()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+30]
       test      dword ptr [rcx+34],1600000
       je        short 0000000000005BF9
       xor       ecx,ecx
       mov       [rsi+40],ecx
       mov       [rsi+3C],ecx
       mov       [rsi+38],ecx
       mov       rcx,[rsi+10]
       test      rcx,rcx
       je        short 0000000000005BEF
       mov       rax,[rcx]
       mov       rax,[rax+68]
       call      qword ptr [rax+8]
       lea       rcx,[rsi+18]
       mov       rdx,rax
       call      0000000000000010
       mov       byte ptr [rsi+4F],0
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [5018]
       int       3
; Total bytes of code 80

System.IO.Tests.StreamReaderReadToEndTests.ReadToEndAsync(LineLengthRange: [ 0, 0])


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 91.430984375 > 79.336385625.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -57.23078065699148 (T) = (0 -92298174.70715891) / Math.Sqrt((496962614419.1354 / (20)) + (2313533922458.1035 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.21699066655381985 = (75841316.81841221 - 92298174.70715891) / 75841316.81841221 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.IO.Tests.StreamReaderReadToEndTests.ReadToEndAsync()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+58]
       call      qword ptr [rax+10]
       mov       rcx,rax
       xor       edx,edx
       mov       rax,[rax]
       mov       rax,[rax+48]
       call      qword ptr [rax+18]
       mov       rcx,[rsi+18]
       cmp       [rcx],ecx
       call      qword ptr [5210]
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+50]
       add       rsp,20
       pop       rsi
       jmp       qword ptr [rax+10]
; Total bytes of code 69
; System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib]].GetAwaiter()
       push      rax
       mov       [rsp],rcx
       cmp       [rcx],ecx
       mov       rax,rcx
       add       rsp,8
       ret
; Total bytes of code 15
; System.Runtime.CompilerServices.TaskAwaiter`1[[System.__Canon, System.Private.CoreLib]].GetResult()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi]
       mov       eax,[rcx+34]
       and       eax,11000000
       cmp       eax,1000000
       jne       short 00000000000049F7
       mov       rax,[rsi]
       mov       rax,[rax+38]
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [9A68]
       jmp       short 00000000000049EA
; Total bytes of code 47
; System.IO.StreamReader.DiscardBufferedData()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+30]
       test      dword ptr [rcx+34],1600000
       je        short 0000000000004C49
       xor       ecx,ecx
       mov       [rsi+40],ecx
       mov       [rsi+3C],ecx
       mov       [rsi+38],ecx
       mov       rcx,[rsi+10]
       test      rcx,rcx
       je        short 0000000000004C3F
       mov       rax,[rcx]
       mov       rax,[rax+68]
       call      qword ptr [rax+8]
       lea       rcx,[rsi+18]
       mov       rdx,rax
       call      0000000000000010
       mov       byte ptr [rsi+4F],0
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [5018]
       int       3
; Total bytes of code 80

Compare Jit Disasm

; System.IO.Tests.StreamReaderReadToEndTests.ReadToEndAsync()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+58]
       call      qword ptr [rax+10]
       mov       rcx,rax
       xor       edx,edx
       mov       rax,[rax]
       mov       rax,[rax+48]
       call      qword ptr [rax+18]
       mov       rcx,[rsi+18]
       cmp       [rcx],ecx
       call      qword ptr [5210]
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+50]
       add       rsp,20
       pop       rsi
       jmp       qword ptr [rax+10]
; Total bytes of code 69
; System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib]].GetAwaiter()
       push      rax
       mov       [rsp],rcx
       cmp       [rcx],ecx
       mov       rax,rcx
       add       rsp,8
       ret
; Total bytes of code 15
; System.Runtime.CompilerServices.TaskAwaiter`1[[System.__Canon, System.Private.CoreLib]].GetResult()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi]
       mov       eax,[rcx+34]
       and       eax,11000000
       cmp       eax,1000000
       jne       short 00000000000065D7
       mov       rax,[rsi]
       mov       rax,[rax+38]
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [9A68]
       jmp       short 00000000000065CA
; Total bytes of code 47
; System.IO.StreamReader.DiscardBufferedData()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+30]
       test      dword ptr [rcx+34],1600000
       je        short 0000000000006829
       xor       ecx,ecx
       mov       [rsi+40],ecx
       mov       [rsi+3C],ecx
       mov       [rsi+38],ecx
       mov       rcx,[rsi+10]
       test      rcx,rcx
       je        short 000000000000681F
       mov       rax,[rcx]
       mov       rax,[rax+68]
       call      qword ptr [rax+8]
       lea       rcx,[rsi+18]
       mov       rdx,rax
       call      0000000000000010
       mov       byte ptr [rsi+4F],0
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [5018]
       int       3
; Total bytes of code 80

System.IO.Tests.StreamReaderReadToEndTests.ReadToEndAsync(LineLengthRange: [ 0, 1024])


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 102.0735625 > 79.30571775000001.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -38.37398075297199 (T) = (0 -92834833.22922103) / Math.Sqrt((831543657806.8864 / (20)) + (6134309063514.188 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.2232465158070921 = (75892170.57198733 - 92834833.22922103) / 75892170.57198733 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.IO.Tests.StreamReaderReadToEndTests.ReadToEndAsync()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+58]
       call      qword ptr [rax+10]
       mov       rcx,rax
       xor       edx,edx
       mov       rax,[rax]
       mov       rax,[rax+48]
       call      qword ptr [rax+18]
       mov       rcx,[rsi+18]
       cmp       [rcx],ecx
       call      qword ptr [5210]
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+50]
       add       rsp,20
       pop       rsi
       jmp       qword ptr [rax+10]
; Total bytes of code 69
; System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib]].GetAwaiter()
       push      rax
       mov       [rsp],rcx
       cmp       [rcx],ecx
       mov       rax,rcx
       add       rsp,8
       ret
; Total bytes of code 15
; System.Runtime.CompilerServices.TaskAwaiter`1[[System.__Canon, System.Private.CoreLib]].GetResult()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi]
       mov       eax,[rcx+34]
       and       eax,11000000
       cmp       eax,1000000
       jne       short 0000000000004A17
       mov       rax,[rsi]
       mov       rax,[rax+38]
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [9A68]
       jmp       short 0000000000004A0A
; Total bytes of code 47
; System.IO.StreamReader.DiscardBufferedData()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+30]
       test      dword ptr [rcx+34],1600000
       je        short 0000000000004C69
       xor       ecx,ecx
       mov       [rsi+40],ecx
       mov       [rsi+3C],ecx
       mov       [rsi+38],ecx
       mov       rcx,[rsi+10]
       test      rcx,rcx
       je        short 0000000000004C5F
       mov       rax,[rcx]
       mov       rax,[rax+68]
       call      qword ptr [rax+8]
       lea       rcx,[rsi+18]
       mov       rdx,rax
       call      0000000000000010
       mov       byte ptr [rsi+4F],0
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [5018]
       int       3
; Total bytes of code 80

Compare Jit Disasm

; System.IO.Tests.StreamReaderReadToEndTests.ReadToEndAsync()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+58]
       call      qword ptr [rax+10]
       mov       rcx,rax
       xor       edx,edx
       mov       rax,[rax]
       mov       rax,[rax+48]
       call      qword ptr [rax+18]
       mov       rcx,[rsi+18]
       cmp       [rcx],ecx
       call      qword ptr [5210]
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+50]
       add       rsp,20
       pop       rsi
       jmp       qword ptr [rax+10]
; Total bytes of code 69
; System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib]].GetAwaiter()
       push      rax
       mov       [rsp],rcx
       cmp       [rcx],ecx
       mov       rax,rcx
       add       rsp,8
       ret
; Total bytes of code 15
; System.Runtime.CompilerServices.TaskAwaiter`1[[System.__Canon, System.Private.CoreLib]].GetResult()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi]
       mov       eax,[rcx+34]
       and       eax,11000000
       cmp       eax,1000000
       jne       short 00000000000065D7
       mov       rax,[rsi]
       mov       rax,[rax+38]
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [9A68]
       jmp       short 00000000000065CA
; Total bytes of code 47
; System.IO.StreamReader.DiscardBufferedData()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+30]
       test      dword ptr [rcx+34],1600000
       je        short 0000000000006829
       xor       ecx,ecx
       mov       [rsi+40],ecx
       mov       [rsi+3C],ecx
       mov       [rsi+38],ecx
       mov       rcx,[rsi+10]
       test      rcx,rcx
       je        short 000000000000681F
       mov       rax,[rcx]
       mov       rax,[rax+68]
       call      qword ptr [rax+8]
       lea       rcx,[rsi+18]
       mov       rdx,rax
       call      0000000000000010
       mov       byte ptr [rsi+4F],0
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [5018]
       int       3
; Total bytes of code 80

System.IO.Tests.StreamReaderReadToEndTests.ReadToEnd(LineLengthRange: [ 33, 128])


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 86.63520875 > 79.87770659615386.
IsChangePoint: Marked as a change because one of 8/9/2022 4:14:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -15.090368817743606 (T) = (0 -86821053.31676702) / Math.Sqrt((490213546629.1825 / (21)) + (18671213294543.26 / (39))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (21) + (39) - 2, .025) and -0.14045782046795152 = (76128245.83125985 - 86821053.31676702) / 76128245.83125985 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.IO.Tests.StreamReaderReadToEndTests.ReadToEnd()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+58]
       call      qword ptr [rax+10]
       mov       rcx,rax
       xor       edx,edx
       mov       rax,[rax]
       mov       rax,[rax+48]
       call      qword ptr [rax+18]
       mov       rcx,[rsi+18]
       cmp       [rcx],ecx
       call      qword ptr [5210]
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+48]
       add       rsp,20
       pop       rsi
       jmp       qword ptr [rax+20]
; Total bytes of code 69
; System.IO.StreamReader.DiscardBufferedData()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+30]
       test      dword ptr [rcx+34],1600000
       je        short 00000000000040D9
       xor       ecx,ecx
       mov       [rsi+40],ecx
       mov       [rsi+3C],ecx
       mov       [rsi+38],ecx
       mov       rcx,[rsi+10]
       test      rcx,rcx
       je        short 00000000000040CF
       mov       rax,[rcx]
       mov       rax,[rax+68]
       call      qword ptr [rax+8]
       lea       rcx,[rsi+18]
       mov       rdx,rax
       call      0000000000000010
       mov       byte ptr [rsi+4F],0
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [5018]
       int       3
; Total bytes of code 80

Compare Jit Disasm

; System.IO.Tests.StreamReaderReadToEndTests.ReadToEnd()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+58]
       call      qword ptr [rax+10]
       mov       rcx,rax
       xor       edx,edx
       mov       rax,[rax]
       mov       rax,[rax+48]
       call      qword ptr [rax+18]
       mov       rcx,[rsi+18]
       cmp       [rcx],ecx
       call      qword ptr [5210]
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+48]
       add       rsp,20
       pop       rsi
       jmp       qword ptr [rax+20]
; Total bytes of code 69
; System.IO.StreamReader.DiscardBufferedData()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+30]
       test      dword ptr [rcx+34],1600000
       je        short 0000000000005C19
       xor       ecx,ecx
       mov       [rsi+40],ecx
       mov       [rsi+3C],ecx
       mov       [rsi+38],ecx
       mov       rcx,[rsi+10]
       test      rcx,rcx
       je        short 0000000000005C0F
       mov       rax,[rcx]
       mov       rax,[rax+68]
       call      qword ptr [rax+8]
       lea       rcx,[rsi+18]
       mov       rdx,rax
       call      0000000000000010
       mov       byte ptr [rsi+4F],0
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [5018]
       int       3
; Total bytes of code 80

System.IO.Tests.StreamReaderReadToEndTests.ReadToEnd(LineLengthRange: [ 1, 1])


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 84.16150208333333 > 79.5816610625.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -15.916542317622486 (T) = (0 -85861489.17586033) / Math.Sqrt((341282911039.7928 / (20)) + (14190397458200.123 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.1274422315204995 = (76155998.75131977 - 85861489.17586033) / 76155998.75131977 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.IO.Tests.StreamReaderReadToEndTests.ReadToEnd()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+58]
       call      qword ptr [rax+10]
       mov       rcx,rax
       xor       edx,edx
       mov       rax,[rax]
       mov       rax,[rax+48]
       call      qword ptr [rax+18]
       mov       rcx,[rsi+18]
       cmp       [rcx],ecx
       call      qword ptr [5210]
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+48]
       add       rsp,20
       pop       rsi
       jmp       qword ptr [rax+20]
; Total bytes of code 69
; System.IO.StreamReader.DiscardBufferedData()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+30]
       test      dword ptr [rcx+34],1600000
       je        short 0000000000004999
       xor       ecx,ecx
       mov       [rsi+40],ecx
       mov       [rsi+3C],ecx
       mov       [rsi+38],ecx
       mov       rcx,[rsi+10]
       test      rcx,rcx
       je        short 000000000000498F
       mov       rax,[rcx]
       mov       rax,[rax+68]
       call      qword ptr [rax+8]
       lea       rcx,[rsi+18]
       mov       rdx,rax
       call      0000000000000010
       mov       byte ptr [rsi+4F],0
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [5018]
       int       3
; Total bytes of code 80

Compare Jit Disasm

; System.IO.Tests.StreamReaderReadToEndTests.ReadToEnd()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+58]
       call      qword ptr [rax+10]
       mov       rcx,rax
       xor       edx,edx
       mov       rax,[rax]
       mov       rax,[rax+48]
       call      qword ptr [rax+18]
       mov       rcx,[rsi+18]
       cmp       [rcx],ecx
       call      qword ptr [5210]
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+48]
       add       rsp,20
       pop       rsi
       jmp       qword ptr [rax+20]
; Total bytes of code 69
; System.IO.StreamReader.DiscardBufferedData()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+30]
       test      dword ptr [rcx+34],1600000
       je        short 0000000000005C19
       xor       ecx,ecx
       mov       [rsi+40],ecx
       mov       [rsi+3C],ecx
       mov       [rsi+38],ecx
       mov       rcx,[rsi+10]
       test      rcx,rcx
       je        short 0000000000005C0F
       mov       rax,[rcx]
       mov       rax,[rax+68]
       call      qword ptr [rax+8]
       lea       rcx,[rsi+18]
       mov       rdx,rax
       call      0000000000000010
       mov       byte ptr [rsi+4F],0
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [5018]
       int       3
; Total bytes of code 80

System.IO.Tests.StreamReaderReadToEndTests.ReadToEndAsync(LineLengthRange: [ 9, 32])


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 91.24040625 > 79.46427887577399.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -52.67224045945775 (T) = (0 -92339041.57614997) / Math.Sqrt((558896624537.4008 / (20)) + (2857907318835.2925 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.21926626900063828 = (75733286.4230181 - 92339041.57614997) / 75733286.4230181 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.IO.Tests.StreamReaderReadToEndTests.ReadToEndAsync()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+58]
       call      qword ptr [rax+10]
       mov       rcx,rax
       xor       edx,edx
       mov       rax,[rax]
       mov       rax,[rax+48]
       call      qword ptr [rax+18]
       mov       rcx,[rsi+18]
       cmp       [rcx],ecx
       call      qword ptr [5210]
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+50]
       add       rsp,20
       pop       rsi
       jmp       qword ptr [rax+10]
; Total bytes of code 69
; System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib]].GetAwaiter()
       push      rax
       mov       [rsp],rcx
       cmp       [rcx],ecx
       mov       rax,rcx
       add       rsp,8
       ret
; Total bytes of code 15
; System.Runtime.CompilerServices.TaskAwaiter`1[[System.__Canon, System.Private.CoreLib]].GetResult()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi]
       mov       eax,[rcx+34]
       and       eax,11000000
       cmp       eax,1000000
       jne       short 0000000000004A17
       mov       rax,[rsi]
       mov       rax,[rax+38]
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [9A68]
       jmp       short 0000000000004A0A
; Total bytes of code 47
; System.IO.StreamReader.DiscardBufferedData()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+30]
       test      dword ptr [rcx+34],1600000
       je        short 0000000000004C69
       xor       ecx,ecx
       mov       [rsi+40],ecx
       mov       [rsi+3C],ecx
       mov       [rsi+38],ecx
       mov       rcx,[rsi+10]
       test      rcx,rcx
       je        short 0000000000004C5F
       mov       rax,[rcx]
       mov       rax,[rax+68]
       call      qword ptr [rax+8]
       lea       rcx,[rsi+18]
       mov       rdx,rax
       call      0000000000000010
       mov       byte ptr [rsi+4F],0
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [5018]
       int       3
; Total bytes of code 80

Compare Jit Disasm

; System.IO.Tests.StreamReaderReadToEndTests.ReadToEndAsync()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+58]
       call      qword ptr [rax+10]
       mov       rcx,rax
       xor       edx,edx
       mov       rax,[rax]
       mov       rax,[rax+48]
       call      qword ptr [rax+18]
       mov       rcx,[rsi+18]
       cmp       [rcx],ecx
       call      qword ptr [5210]
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+50]
       add       rsp,20
       pop       rsi
       jmp       qword ptr [rax+10]
; Total bytes of code 69
; System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib]].GetAwaiter()
       push      rax
       mov       [rsp],rcx
       cmp       [rcx],ecx
       mov       rax,rcx
       add       rsp,8
       ret
; Total bytes of code 15
; System.Runtime.CompilerServices.TaskAwaiter`1[[System.__Canon, System.Private.CoreLib]].GetResult()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi]
       mov       eax,[rcx+34]
       and       eax,11000000
       cmp       eax,1000000
       jne       short 00000000000065D7
       mov       rax,[rsi]
       mov       rax,[rax+38]
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [9A68]
       jmp       short 00000000000065CA
; Total bytes of code 47
; System.IO.StreamReader.DiscardBufferedData()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+30]
       test      dword ptr [rcx+34],1600000
       je        short 0000000000006829
       xor       ecx,ecx
       mov       [rsi+40],ecx
       mov       [rsi+3C],ecx
       mov       [rsi+38],ecx
       mov       rcx,[rsi+10]
       test      rcx,rcx
       je        short 000000000000681F
       mov       rax,[rcx]
       mov       rax,[rax+68]
       call      qword ptr [rax+8]
       lea       rcx,[rsi+18]
       mov       rdx,rax
       call      0000000000000010
       mov       byte ptr [rsi+4F],0
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [5018]
       int       3
; Total bytes of code 80

System.IO.Tests.StreamReaderReadToEndTests.ReadToEnd(LineLengthRange: [1025, 2048])


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 83.89825208333333 > 79.6032975625.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -13.811422915414926 (T) = (0 -86209630.7552053) / Math.Sqrt((90483132172.07536 / (20)) + (21566338357576.32 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.1339522906999909 = (76025800.61105387 - 86209630.7552053) / 76025800.61105387 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.IO.Tests.StreamReaderReadToEndTests.ReadToEnd()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+58]
       call      qword ptr [rax+10]
       mov       rcx,rax
       xor       edx,edx
       mov       rax,[rax]
       mov       rax,[rax+48]
       call      qword ptr [rax+18]
       mov       rcx,[rsi+18]
       cmp       [rcx],ecx
       call      qword ptr [5210]
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+48]
       add       rsp,20
       pop       rsi
       jmp       qword ptr [rax+20]
; Total bytes of code 69
; System.IO.StreamReader.DiscardBufferedData()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+30]
       test      dword ptr [rcx+34],1600000
       je        short 0000000000004999
       xor       ecx,ecx
       mov       [rsi+40],ecx
       mov       [rsi+3C],ecx
       mov       [rsi+38],ecx
       mov       rcx,[rsi+10]
       test      rcx,rcx
       je        short 000000000000498F
       mov       rax,[rcx]
       mov       rax,[rax+68]
       call      qword ptr [rax+8]
       lea       rcx,[rsi+18]
       mov       rdx,rax
       call      0000000000000010
       mov       byte ptr [rsi+4F],0
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [5018]
       int       3
; Total bytes of code 80

Compare Jit Disasm

; System.IO.Tests.StreamReaderReadToEndTests.ReadToEnd()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+58]
       call      qword ptr [rax+10]
       mov       rcx,rax
       xor       edx,edx
       mov       rax,[rax]
       mov       rax,[rax+48]
       call      qword ptr [rax+18]
       mov       rcx,[rsi+18]
       cmp       [rcx],ecx
       call      qword ptr [5210]
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+48]
       add       rsp,20
       pop       rsi
       jmp       qword ptr [rax+20]
; Total bytes of code 69
; System.IO.StreamReader.DiscardBufferedData()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+30]
       test      dword ptr [rcx+34],1600000
       je        short 0000000000005C19
       xor       ecx,ecx
       mov       [rsi+40],ecx
       mov       [rsi+3C],ecx
       mov       [rsi+38],ecx
       mov       rcx,[rsi+10]
       test      rcx,rcx
       je        short 0000000000005C0F
       mov       rax,[rcx]
       mov       rax,[rax+68]
       call      qword ptr [rax+8]
       lea       rcx,[rsi+18]
       mov       rdx,rax
       call      0000000000000010
       mov       byte ptr [rsi+4F],0
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [5018]
       int       3
; Total bytes of code 80

System.IO.Tests.StreamReaderReadToEndTests.ReadToEnd(LineLengthRange: [ 0, 1024])


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 97.009271875 > 79.80445093750001.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -15.303939365694902 (T) = (0 -86779597.08997557) / Math.Sqrt((273608684753.67194 / (20)) + (18403705314734.777 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.138157025611009 = (76245715.7819579 - 86779597.08997557) / 76245715.7819579 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.IO.Tests.StreamReaderReadToEndTests.ReadToEnd()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+58]
       call      qword ptr [rax+10]
       mov       rcx,rax
       xor       edx,edx
       mov       rax,[rax]
       mov       rax,[rax+48]
       call      qword ptr [rax+18]
       mov       rcx,[rsi+18]
       cmp       [rcx],ecx
       call      qword ptr [5210]
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+48]
       add       rsp,20
       pop       rsi
       jmp       qword ptr [rax+20]
; Total bytes of code 69
; System.IO.StreamReader.DiscardBufferedData()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+30]
       test      dword ptr [rcx+34],1600000
       je        short 0000000000004999
       xor       ecx,ecx
       mov       [rsi+40],ecx
       mov       [rsi+3C],ecx
       mov       [rsi+38],ecx
       mov       rcx,[rsi+10]
       test      rcx,rcx
       je        short 000000000000498F
       mov       rax,[rcx]
       mov       rax,[rax+68]
       call      qword ptr [rax+8]
       lea       rcx,[rsi+18]
       mov       rdx,rax
       call      0000000000000010
       mov       byte ptr [rsi+4F],0
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [5018]
       int       3
; Total bytes of code 80

Compare Jit Disasm

; System.IO.Tests.StreamReaderReadToEndTests.ReadToEnd()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+58]
       call      qword ptr [rax+10]
       mov       rcx,rax
       xor       edx,edx
       mov       rax,[rax]
       mov       rax,[rax+48]
       call      qword ptr [rax+18]
       mov       rcx,[rsi+18]
       cmp       [rcx],ecx
       call      qword ptr [5210]
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+48]
       add       rsp,20
       pop       rsi
       jmp       qword ptr [rax+20]
; Total bytes of code 69
; System.IO.StreamReader.DiscardBufferedData()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+30]
       test      dword ptr [rcx+34],1600000
       je        short 0000000000005C19
       xor       ecx,ecx
       mov       [rsi+40],ecx
       mov       [rsi+3C],ecx
       mov       [rsi+38],ecx
       mov       rcx,[rsi+10]
       test      rcx,rcx
       je        short 0000000000005C0F
       mov       rax,[rcx]
       mov       rax,[rax+68]
       call      qword ptr [rax+8]
       lea       rcx,[rsi+18]
       mov       rdx,rax
       call      0000000000000010
       mov       byte ptr [rsi+4F],0
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [5018]
       int       3
; Total bytes of code 80

System.IO.Tests.StreamReaderReadToEndTests.ReadToEnd(LineLengthRange: [ 129, 1024])


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 83.94898076923077 > 79.602382125.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -18.981637755646624 (T) = (0 -85548088.64127865) / Math.Sqrt((201636316865.9314 / (20)) + (9894234759764.926 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.12686154276277847 = (75917125.03697345 - 85548088.64127865) / 75917125.03697345 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.IO.Tests.StreamReaderReadToEndTests.ReadToEnd()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+58]
       call      qword ptr [rax+10]
       mov       rcx,rax
       xor       edx,edx
       mov       rax,[rax]
       mov       rax,[rax+48]
       call      qword ptr [rax+18]
       mov       rcx,[rsi+18]
       cmp       [rcx],ecx
       call      qword ptr [5210]
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+48]
       add       rsp,20
       pop       rsi
       jmp       qword ptr [rax+20]
; Total bytes of code 69
; System.IO.StreamReader.DiscardBufferedData()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+30]
       test      dword ptr [rcx+34],1600000
       je        short 0000000000004999
       xor       ecx,ecx
       mov       [rsi+40],ecx
       mov       [rsi+3C],ecx
       mov       [rsi+38],ecx
       mov       rcx,[rsi+10]
       test      rcx,rcx
       je        short 000000000000498F
       mov       rax,[rcx]
       mov       rax,[rax+68]
       call      qword ptr [rax+8]
       lea       rcx,[rsi+18]
       mov       rdx,rax
       call      0000000000000010
       mov       byte ptr [rsi+4F],0
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [5018]
       int       3
; Total bytes of code 80

Compare Jit Disasm

; System.IO.Tests.StreamReaderReadToEndTests.ReadToEnd()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+58]
       call      qword ptr [rax+10]
       mov       rcx,rax
       xor       edx,edx
       mov       rax,[rax]
       mov       rax,[rax+48]
       call      qword ptr [rax+18]
       mov       rcx,[rsi+18]
       cmp       [rcx],ecx
       call      qword ptr [5210]
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+48]
       add       rsp,20
       pop       rsi
       jmp       qword ptr [rax+20]
; Total bytes of code 69
; System.IO.StreamReader.DiscardBufferedData()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+30]
       test      dword ptr [rcx+34],1600000
       je        short 0000000000005BF9
       xor       ecx,ecx
       mov       [rsi+40],ecx
       mov       [rsi+3C],ecx
       mov       [rsi+38],ecx
       mov       rcx,[rsi+10]
       test      rcx,rcx
       je        short 0000000000005BEF
       mov       rax,[rcx]
       mov       rax,[rax+68]
       call      qword ptr [rax+8]
       lea       rcx,[rsi+18]
       mov       rdx,rax
       call      0000000000000010
       mov       byte ptr [rsi+4F],0
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [5018]
       int       3
; Total bytes of code 80

System.IO.Tests.StreamReaderReadToEndTests.ReadToEndAsync(LineLengthRange: [ 129, 1024])


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 91.39766041666667 > 78.2286868125.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -38.496560458609444 (T) = (0 -92953712.36655205) / Math.Sqrt((817530505488.57 / (20)) + (6546184364119.712 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.23046446972087983 = (75543597.27886966 - 92953712.36655205) / 75543597.27886966 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.IO.Tests.StreamReaderReadToEndTests.ReadToEndAsync()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+58]
       call      qword ptr [rax+10]
       mov       rcx,rax
       xor       edx,edx
       mov       rax,[rax]
       mov       rax,[rax+48]
       call      qword ptr [rax+18]
       mov       rcx,[rsi+18]
       cmp       [rcx],ecx
       call      qword ptr [5210]
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+50]
       add       rsp,20
       pop       rsi
       jmp       qword ptr [rax+10]
; Total bytes of code 69
; System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib]].GetAwaiter()
       push      rax
       mov       [rsp],rcx
       cmp       [rcx],ecx
       mov       rax,rcx
       add       rsp,8
       ret
; Total bytes of code 15
; System.Runtime.CompilerServices.TaskAwaiter`1[[System.__Canon, System.Private.CoreLib]].GetResult()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi]
       mov       eax,[rcx+34]
       and       eax,11000000
       cmp       eax,1000000
       jne       short 0000000000004A17
       mov       rax,[rsi]
       mov       rax,[rax+38]
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [9A68]
       jmp       short 0000000000004A0A
; Total bytes of code 47
; System.IO.StreamReader.DiscardBufferedData()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+30]
       test      dword ptr [rcx+34],1600000
       je        short 0000000000004C69
       xor       ecx,ecx
       mov       [rsi+40],ecx
       mov       [rsi+3C],ecx
       mov       [rsi+38],ecx
       mov       rcx,[rsi+10]
       test      rcx,rcx
       je        short 0000000000004C5F
       mov       rax,[rcx]
       mov       rax,[rax+68]
       call      qword ptr [rax+8]
       lea       rcx,[rsi+18]
       mov       rdx,rax
       call      0000000000000010
       mov       byte ptr [rsi+4F],0
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [5018]
       int       3
; Total bytes of code 80

Compare Jit Disasm

; System.IO.Tests.StreamReaderReadToEndTests.ReadToEndAsync()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+58]
       call      qword ptr [rax+10]
       mov       rcx,rax
       xor       edx,edx
       mov       rax,[rax]
       mov       rax,[rax+48]
       call      qword ptr [rax+18]
       mov       rcx,[rsi+18]
       cmp       [rcx],ecx
       call      qword ptr [5210]
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+50]
       add       rsp,20
       pop       rsi
       jmp       qword ptr [rax+10]
; Total bytes of code 69
; System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib]].GetAwaiter()
       push      rax
       mov       [rsp],rcx
       cmp       [rcx],ecx
       mov       rax,rcx
       add       rsp,8
       ret
; Total bytes of code 15
; System.Runtime.CompilerServices.TaskAwaiter`1[[System.__Canon, System.Private.CoreLib]].GetResult()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi]
       mov       eax,[rcx+34]
       and       eax,11000000
       cmp       eax,1000000
       jne       short 00000000000065B7
       mov       rax,[rsi]
       mov       rax,[rax+38]
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [9A68]
       jmp       short 00000000000065AA
; Total bytes of code 47
; System.IO.StreamReader.DiscardBufferedData()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+30]
       test      dword ptr [rcx+34],1600000
       je        short 0000000000006809
       xor       ecx,ecx
       mov       [rsi+40],ecx
       mov       [rsi+3C],ecx
       mov       [rsi+38],ecx
       mov       rcx,[rsi+10]
       test      rcx,rcx
       je        short 00000000000067FF
       mov       rax,[rcx]
       mov       rax,[rax+68]
       call      qword ptr [rax+8]
       lea       rcx,[rsi+18]
       mov       rdx,rax
       call      0000000000000010
       mov       byte ptr [rsi+4F],0
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [5018]
       int       3
; Total bytes of code 80

System.IO.Tests.StreamReaderReadToEndTests.ReadToEndAsync(LineLengthRange: [ 33, 128])


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 95.203685 > 79.3595735625.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -33.47578399471679 (T) = (0 -92820712.48111096) / Math.Sqrt((1915785653928.5984 / (20)) + (5950541942635.022 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.21706267476085825 = (76266172.98024474 - 92820712.48111096) / 76266172.98024474 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.IO.Tests.StreamReaderReadToEndTests.ReadToEndAsync()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+58]
       call      qword ptr [rax+10]
       mov       rcx,rax
       xor       edx,edx
       mov       rax,[rax]
       mov       rax,[rax+48]
       call      qword ptr [rax+18]
       mov       rcx,[rsi+18]
       cmp       [rcx],ecx
       call      qword ptr [5210]
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+50]
       add       rsp,20
       pop       rsi
       jmp       qword ptr [rax+10]
; Total bytes of code 69
; System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib]].GetAwaiter()
       push      rax
       mov       [rsp],rcx
       cmp       [rcx],ecx
       mov       rax,rcx
       add       rsp,8
       ret
; Total bytes of code 15
; System.Runtime.CompilerServices.TaskAwaiter`1[[System.__Canon, System.Private.CoreLib]].GetResult()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi]
       mov       eax,[rcx+34]
       and       eax,11000000
       cmp       eax,1000000
       jne       short 00000000000049F7
       mov       rax,[rsi]
       mov       rax,[rax+38]
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [9A68]
       jmp       short 00000000000049EA
; Total bytes of code 47
; System.IO.StreamReader.DiscardBufferedData()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+30]
       test      dword ptr [rcx+34],1600000
       je        short 0000000000004C49
       xor       ecx,ecx
       mov       [rsi+40],ecx
       mov       [rsi+3C],ecx
       mov       [rsi+38],ecx
       mov       rcx,[rsi+10]
       test      rcx,rcx
       je        short 0000000000004C3F
       mov       rax,[rcx]
       mov       rax,[rax+68]
       call      qword ptr [rax+8]
       lea       rcx,[rsi+18]
       mov       rdx,rax
       call      0000000000000010
       mov       byte ptr [rsi+4F],0
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [5018]
       int       3
; Total bytes of code 80

Compare Jit Disasm

; System.IO.Tests.StreamReaderReadToEndTests.ReadToEndAsync()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+58]
       call      qword ptr [rax+10]
       mov       rcx,rax
       xor       edx,edx
       mov       rax,[rax]
       mov       rax,[rax+48]
       call      qword ptr [rax+18]
       mov       rcx,[rsi+18]
       cmp       [rcx],ecx
       call      qword ptr [5210]
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+50]
       add       rsp,20
       pop       rsi
       jmp       qword ptr [rax+10]
; Total bytes of code 69
; System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib]].GetAwaiter()
       push      rax
       mov       [rsp],rcx
       cmp       [rcx],ecx
       mov       rax,rcx
       add       rsp,8
       ret
; Total bytes of code 15
; System.Runtime.CompilerServices.TaskAwaiter`1[[System.__Canon, System.Private.CoreLib]].GetResult()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi]
       mov       eax,[rcx+34]
       and       eax,11000000
       cmp       eax,1000000
       jne       short 00000000000065F7
       mov       rax,[rsi]
       mov       rax,[rax+38]
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [9A68]
       jmp       short 00000000000065EA
; Total bytes of code 47
; System.IO.StreamReader.DiscardBufferedData()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+30]
       test      dword ptr [rcx+34],1600000
       je        short 0000000000006849
       xor       ecx,ecx
       mov       [rsi+40],ecx
       mov       [rsi+3C],ecx
       mov       [rsi+38],ecx
       mov       rcx,[rsi+10]
       test      rcx,rcx
       je        short 000000000000683F
       mov       rax,[rcx]
       mov       rax,[rax+68]
       call      qword ptr [rax+8]
       lea       rcx,[rsi+18]
       mov       rdx,rax
       call      0000000000000010
       mov       byte ptr [rsi+4F],0
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [5018]
       int       3
; Total bytes of code 80

System.IO.Tests.StreamReaderReadToEndTests.ReadToEndAsync(LineLengthRange: [1025, 2048])


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 96.27089 > 78.968150625.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -39.399655334530394 (T) = (0 -92582207.36171892) / Math.Sqrt((989580936889.4072 / (20)) + (5403597809708.539 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.22373355948302415 = (75655527.00935243 - 92582207.36171892) / 75655527.00935243 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.IO.Tests.StreamReaderReadToEndTests.ReadToEndAsync()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+58]
       call      qword ptr [rax+10]
       mov       rcx,rax
       xor       edx,edx
       mov       rax,[rax]
       mov       rax,[rax+48]
       call      qword ptr [rax+18]
       mov       rcx,[rsi+18]
       cmp       [rcx],ecx
       call      qword ptr [5210]
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+50]
       add       rsp,20
       pop       rsi
       jmp       qword ptr [rax+10]
; Total bytes of code 69
; System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib]].GetAwaiter()
       push      rax
       mov       [rsp],rcx
       cmp       [rcx],ecx
       mov       rax,rcx
       add       rsp,8
       ret
; Total bytes of code 15
; System.Runtime.CompilerServices.TaskAwaiter`1[[System.__Canon, System.Private.CoreLib]].GetResult()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi]
       mov       eax,[rcx+34]
       and       eax,11000000
       cmp       eax,1000000
       jne       short 0000000000004A17
       mov       rax,[rsi]
       mov       rax,[rax+38]
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [9A68]
       jmp       short 0000000000004A0A
; Total bytes of code 47
; System.IO.StreamReader.DiscardBufferedData()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+30]
       test      dword ptr [rcx+34],1600000
       je        short 0000000000004C69
       xor       ecx,ecx
       mov       [rsi+40],ecx
       mov       [rsi+3C],ecx
       mov       [rsi+38],ecx
       mov       rcx,[rsi+10]
       test      rcx,rcx
       je        short 0000000000004C5F
       mov       rax,[rcx]
       mov       rax,[rax+68]
       call      qword ptr [rax+8]
       lea       rcx,[rsi+18]
       mov       rdx,rax
       call      0000000000000010
       mov       byte ptr [rsi+4F],0
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [5018]
       int       3
; Total bytes of code 80

Compare Jit Disasm

; System.IO.Tests.StreamReaderReadToEndTests.ReadToEndAsync()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+58]
       call      qword ptr [rax+10]
       mov       rcx,rax
       xor       edx,edx
       mov       rax,[rax]
       mov       rax,[rax+48]
       call      qword ptr [rax+18]
       mov       rcx,[rsi+18]
       cmp       [rcx],ecx
       call      qword ptr [5210]
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+50]
       add       rsp,20
       pop       rsi
       jmp       qword ptr [rax+10]
; Total bytes of code 69
; System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib]].GetAwaiter()
       push      rax
       mov       [rsp],rcx
       cmp       [rcx],ecx
       mov       rax,rcx
       add       rsp,8
       ret
; Total bytes of code 15
; System.Runtime.CompilerServices.TaskAwaiter`1[[System.__Canon, System.Private.CoreLib]].GetResult()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi]
       mov       eax,[rcx+34]
       and       eax,11000000
       cmp       eax,1000000
       jne       short 00000000000065F7
       mov       rax,[rsi]
       mov       rax,[rax+38]
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [9A68]
       jmp       short 00000000000065EA
; Total bytes of code 47
; System.IO.StreamReader.DiscardBufferedData()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+30]
       test      dword ptr [rcx+34],1600000
       je        short 0000000000006849
       xor       ecx,ecx
       mov       [rsi+40],ecx
       mov       [rsi+3C],ecx
       mov       [rsi+38],ecx
       mov       rcx,[rsi+10]
       test      rcx,rcx
       je        short 000000000000683F
       mov       rax,[rcx]
       mov       rax,[rax+68]
       call      qword ptr [rax+8]
       lea       rcx,[rsi+18]
       mov       rdx,rax
       call      0000000000000010
       mov       byte ptr [rsi+4F],0
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [5018]
       int       3
; Total bytes of code 80

System.IO.Tests.StreamReaderReadToEndTests.ReadToEnd(LineLengthRange: [ 1, 8])


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 83.88644375 > 79.60655190789473.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -15.273565555317207 (T) = (0 -86963051.20079187) / Math.Sqrt((458262609760.7612 / (20)) + (18999758239372.863 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.1414625510769561 = (76185636.68054049 - 86963051.20079187) / 76185636.68054049 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.IO.Tests.StreamReaderReadToEndTests.ReadToEnd()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+58]
       call      qword ptr [rax+10]
       mov       rcx,rax
       xor       edx,edx
       mov       rax,[rax]
       mov       rax,[rax+48]
       call      qword ptr [rax+18]
       mov       rcx,[rsi+18]
       cmp       [rcx],ecx
       call      qword ptr [5210]
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+48]
       add       rsp,20
       pop       rsi
       jmp       qword ptr [rax+20]
; Total bytes of code 69
; System.IO.StreamReader.DiscardBufferedData()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+30]
       test      dword ptr [rcx+34],1600000
       je        short 00000000000040D9
       xor       ecx,ecx
       mov       [rsi+40],ecx
       mov       [rsi+3C],ecx
       mov       [rsi+38],ecx
       mov       rcx,[rsi+10]
       test      rcx,rcx
       je        short 00000000000040CF
       mov       rax,[rcx]
       mov       rax,[rax+68]
       call      qword ptr [rax+8]
       lea       rcx,[rsi+18]
       mov       rdx,rax
       call      0000000000000010
       mov       byte ptr [rsi+4F],0
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [5018]
       int       3
; Total bytes of code 80

Compare Jit Disasm

; System.IO.Tests.StreamReaderReadToEndTests.ReadToEnd()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+58]
       call      qword ptr [rax+10]
       mov       rcx,rax
       xor       edx,edx
       mov       rax,[rax]
       mov       rax,[rax+48]
       call      qword ptr [rax+18]
       mov       rcx,[rsi+18]
       cmp       [rcx],ecx
       call      qword ptr [5210]
       mov       rcx,[rsi+18]
       mov       rax,[rcx]
       mov       rax,[rax+48]
       add       rsp,20
       pop       rsi
       jmp       qword ptr [rax+20]
; Total bytes of code 69
; System.IO.StreamReader.DiscardBufferedData()
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       mov       rcx,[rsi+30]
       test      dword ptr [rcx+34],1600000
       je        short 0000000000005BF9
       xor       ecx,ecx
       mov       [rsi+40],ecx
       mov       [rsi+3C],ecx
       mov       [rsi+38],ecx
       mov       rcx,[rsi+10]
       test      rcx,rcx
       je        short 0000000000005BEF
       mov       rax,[rcx]
       mov       rax,[rax+68]
       call      qword ptr [rax+8]
       lea       rcx,[rsi+18]
       mov       rdx,rax
       call      0000000000000010
       mov       byte ptr [rsi+4F],0
       add       rsp,20
       pop       rsi
       ret
       call      qword ptr [5018]
       int       3
; Total bytes of code 80

Docs

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

@performanceautofiler
Copy link
Author

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in PerfLabTests.CastingPerf

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
ObjScalarValueType - Duration of single invocation 187.11 μs 313.09 μs 1.67 0.04 False Trace Trace
ObjObjrefValueType - Duration of single invocation 187.11 μs 312.93 μs 1.67 0.04 False 1812700.8032128513 2420833.333333333 1.3354842283087318 Trace Trace
FooObjIsDescendant - Duration of single invocation 561.36 μs 1.28 ms 2.29 0.39 False 7852777.777777777 11676562.5 1.4869340290060136 Trace Trace
CheckArrayIsInterfaceYes - Duration of single invocation 345.09 μs 1.02 ms 2.96 0.45 False 4929074.074074075 9753685.897435898 1.9788069221232236 Trace Trace
CheckArrayIsArrayByVariance - Duration of single invocation 2.50 ns 4.36 ns 1.74 0.42 False Trace Trace
FooObjIsFoo - Duration of single invocation 343.02 μs 490.19 μs 1.43 0.01 False 3426944.4444444445 4035101.01010101 1.1774632111829162 Trace Trace
ObjrefValueTypeObj - Duration of single invocation 343.02 μs 489.42 μs 1.43 0.01 False Trace Trace
FooObjIsNull - Duration of single invocation 187.11 μs 319.29 μs 1.71 0.04 False Trace Trace
IFooFooIsIFoo - Duration of single invocation 155.93 μs 311.84 μs 2.00 0.06 False 1811111.111111111 2419951.923076923 1.3361697734780558 Trace Trace
IFooObjIsDescendantOfIFoo - Duration of single invocation 657.62 μs 748.46 μs 1.14 0.32 False 6248333.333333334 6851215.277777779 1.0964868409353605 Trace Trace
FooObjIsFoo2 - Duration of single invocation 343.02 μs 483.76 μs 1.41 0.02 False 3426851.851851852 4039224.1379310344 1.178698208312758 Trace Trace
ScalarValueTypeObj - Duration of single invocation 343.01 μs 488.94 μs 1.43 0.00 False 3426481.4814814813 4035479.7979797977 1.1777328492185541 Trace Trace
CheckArrayIsNonvariantGenericInterfaceNo - Duration of single invocation 5.74 ns 8.75 ns 1.52 0.33 False Trace Trace
ObjObjIsFoo - Duration of single invocation 564.16 μs 1.16 ms 2.05 0.28 False Trace Trace
ObjInt - Duration of single invocation 187.11 μs 313.18 μs 1.67 0.05 False Trace Trace
IntObj - Duration of single invocation 343.03 μs 487.65 μs 1.42 0.00 False Trace Trace
FooObjCastIfIsa - Duration of single invocation 589.14 μs 736.24 μs 1.25 0.08 False 5142672.413793104 5753079.710144928 1.1186945710783867 Trace Trace
ObjFooIsObj - Duration of single invocation 187.09 μs 312.71 μs 1.67 0.04 False 1812650.6024096385 2420833.333333333 1.3355212141353716 Trace Trace
ObjFooIsObj2 - Duration of single invocation 155.93 μs 311.85 μs 2.00 0.04 False 1811153.1986531985 2420500 1.3364413357190994 Trace Trace

graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
Test Report

Repro

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

Payloads

Baseline
Compare

Histogram

PerfLabTests.CastingPerf.ObjScalarValueType


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 313.092575 > 196.46968703497026.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -52.2353489057872 (T) = (0 -314640.0970483699) / Math.Sqrt((166364561.63576245 / (20)) + (7109061.430678022 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.9376127653959466 = (162385.4377239685 - 314640.0970483699) / 162385.4377239685 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.CastingPerf.ObjScalarValueType()
       push      rdi
       push      rsi
       xor       esi,esi
       mov       edi,[0BD08]
       test      edi,edi
       jle       short 000000000000F650
       mov       rdx,160B3007D60
       mov       rdx,[rdx]
       mov       rcx,160B3007D70
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F62E
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 51

Compare Jit Disasm

; PerfLabTests.CastingPerf.ObjScalarValueType()
       push      rdi
       push      rsi
       xor       esi,esi
       mov       edi,[0BE50]
       test      edi,edi
       jle       short 000000000000EE70
       mov       rdx,23D8D407D60
       mov       rdx,[rdx]
       mov       rcx,23D8D407D70
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000EE4E
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 51

PerfLabTests.CastingPerf.ObjObjrefValueType


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 312.926683006536 > 196.46596733344776.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -52.32272998307118 (T) = (0 -313900.35991254856) / Math.Sqrt((165577998.0511878 / (20)) + (4628253.332938073 / (39))) is less than -2.0024654592901125 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (39) - 2, .025) and -0.9343539344799461 = (162276.58977876825 - 313900.35991254856) / 162276.58977876825 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.CastingPerf.ObjObjrefValueType()
       push      rdi
       push      rsi
       xor       esi,esi
       mov       edi,[0BD08]
       test      edi,edi
       jle       short 000000000000F650
       mov       rdx,2DB7A807D68
       mov       rdx,[rdx]
       mov       rcx,2DB7A807D70
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F62E
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 51

Compare Jit Disasm

; PerfLabTests.CastingPerf.ObjObjrefValueType()
       push      rdi
       push      rsi
       xor       esi,esi
       mov       edi,[0BE50]
       test      edi,edi
       jle       short 000000000000F650
       mov       rdx,1B7A5407D68
       mov       rdx,[rdx]
       mov       rcx,1B7A5407D70
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F62E
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 51

PerfLabTests.CastingPerf.FooObjIsDescendant


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.2842536458333333 > 589.3928152901785.
IsChangePoint: Marked as a change because one of 8/9/2022 4:14:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -9.164877097956028 (T) = (0 -1029679.6841053477) / Math.Sqrt((12629643182.480724 / (21)) + (58929359724.0006 / (39))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (21) + (39) - 2, .025) and -0.6922939090556759 = (608452.0416905144 - 1029679.6841053477) / 608452.0416905144 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.CastingPerf.FooObjIsDescendant()
       push      rdi
       push      rsi
       sub       rsp,28
       xor       esi,esi
       mov       edi,[0BD08]
       test      edi,edi
       jle       short 000000000000F6E7
       mov       rdx,1EEA1807D70
       mov       rdx,[rdx]
       mov       rcx,offset MT_PerfLabTests.Foo[]
       call      qword ptr [0B858]
       mov       rcx,1EEA1807D80
       mov       rdx,rax
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F6B2
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 78
; System.Runtime.CompilerServices.CastHelpers.ChkCastAny(Void*, System.Object)
       push      rdi
       push      rsi
       sub       rsp,28
       test      rdx,rdx
       je        short 000000000000F63D
       mov       rax,[rdx]
       cmp       rax,rcx
       je        short 000000000000F63D
       mov       r8,1EEA1800D10
       mov       r8,[r8]
       add       r8,10
       rorx      r9,rax,20
       xor       r9,rcx
       mov       r10,79B97F4A7C15
       imul      r9,r10
       mov       r10d,[r8]
       shrx      r9,r9,r10
       xor       r10d,r10d
       lea       r11d,[r9+1]
       movsxd    r11,r11d
       lea       r11,[r11+r11*2]
       lea       r11,[r8+r11*8]
       mov       esi,[r11]
       mov       rdi,[r11+8]
       and       esi,0FFFFFFFE
       cmp       rdi,rax
       jne       short 000000000000F647
       mov       rdi,[r11+10]
       xor       rdi,rcx
       cmp       rdi,1
       ja        short 000000000000F647
       cmp       esi,[r11]
       jne       short 000000000000F65B
       mov       eax,edi
       cmp       eax,1
       jne       short 000000000000F665
       mov       rax,rdx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       test      esi,esi
       je        short 000000000000F65B
       inc       r10d
       add       r9d,r10d
       and       r9d,[r8+4]
       cmp       r10d,8
       jl        short 000000000000F606
       mov       eax,2
       cmp       eax,1
       je        short 000000000000F63D
       call      0000000000007530
       nop
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 178

Compare Jit Disasm

; PerfLabTests.CastingPerf.FooObjIsDescendant()
       push      rdi
       push      rsi
       sub       rsp,28
       xor       esi,esi
       mov       edi,[0BE50]
       test      edi,edi
       jle       short 000000000000F6E7
       mov       rdx,1F545407D70
       mov       rdx,[rdx]
       mov       rcx,offset MT_PerfLabTests.Foo[]
       call      qword ptr [0B858]
       mov       rcx,1F545407D80
       mov       rdx,rax
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F6B2
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 78
; System.Runtime.CompilerServices.CastHelpers.ChkCastAny(Void*, System.Object)
       push      rdi
       push      rsi
       sub       rsp,28
       test      rdx,rdx
       je        short 000000000000F63D
       mov       rax,[rdx]
       cmp       rax,rcx
       je        short 000000000000F63D
       mov       r8,1F545400D10
       mov       r8,[r8]
       add       r8,10
       rorx      r9,rax,20
       xor       r9,rcx
       mov       r10,79B97F4A7C15
       imul      r9,r10
       mov       r10d,[r8]
       shrx      r9,r9,r10
       xor       r10d,r10d
       lea       r11d,[r9+1]
       movsxd    r11,r11d
       lea       r11,[r11+r11*2]
       lea       r11,[r8+r11*8]
       mov       esi,[r11]
       mov       rdi,[r11+8]
       and       esi,0FFFFFFFE
       cmp       rdi,rax
       jne       short 000000000000F647
       mov       rdi,[r11+10]
       xor       rdi,rcx
       cmp       rdi,1
       ja        short 000000000000F647
       cmp       esi,[r11]
       jne       short 000000000000F65B
       mov       eax,edi
       cmp       eax,1
       jne       short 000000000000F665
       mov       rax,rdx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       test      esi,esi
       je        short 000000000000F65B
       inc       r10d
       add       r9d,r10d
       and       r9d,[r8+4]
       cmp       r10d,8
       jl        short 000000000000F606
       mov       eax,2
       cmp       eax,1
       je        short 000000000000F63D
       call      000000000000DCD0
       nop
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 178

PerfLabTests.CastingPerf.CheckArrayIsInterfaceYes


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.0199317628205127 > 361.7795290290552.
IsChangePoint: Marked as a change because one of 6/12/2022 5:56:07 PM, 6/16/2022 2:51:40 PM, 8/13/2022 7:54:18 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -10.121749802017677 (T) = (0 -828158.8943888155) / Math.Sqrt((777485959.1127464 / (50)) + (21922240177.232285 / (10))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (50) + (10) - 2, .025) and -1.3489290511087446 = (352568.71381360234 - 828158.8943888155) / 352568.71381360234 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.CastingPerf.CheckArrayIsInterfaceYes()
       push      rdi
       push      rsi
       sub       rsp,28
       xor       eax,eax
       xor       esi,esi
       mov       edi,[0BD08]
       test      edi,edi
       jle       short 000000000000F840
       mov       rdx,1FC41407DB0
       mov       rdx,[rdx]
       mov       rcx,offset MT_PerfLabTests.IMyInterface1[]
       call      qword ptr [0B7F8]
       test      rax,rax
       setne     al
       movzx     eax,al
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F814
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 71
; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfAny(Void*, System.Object)
       push      rdi
       push      rsi
       test      rdx,rdx
       je        near ptr 000000000000F7C8
       mov       rax,[rdx]
       cmp       rax,rcx
       je        near ptr 000000000000F7C8
       mov       r8,1FC41400D10
       mov       r8,[r8]
       add       r8,10
       rorx      r9,rax,20
       xor       r9,rcx
       mov       r10,79B97F4A7C15
       imul      r9,r10
       mov       r10d,[r8]
       shrx      r9,r9,r10
       xor       r10d,r10d
       lea       r11d,[r9+1]
       movsxd    r11,r11d
       lea       r11,[r11+r11*2]
       lea       r11,[r8+r11*8]
       mov       esi,[r11]
       mov       rdi,[r11+8]
       and       esi,0FFFFFFFE
       cmp       rdi,rax
       jne       short 000000000000F7A5
       mov       rdi,[r11+10]
       xor       rdi,rcx
       cmp       rdi,1
       ja        short 000000000000F7A5
       cmp       esi,[r11]
       jne       short 000000000000F7B9
       mov       r8d,edi
       cmp       r8d,1
       je        short 000000000000F7C8
       jmp       short 000000000000F7C1
       test      esi,esi
       je        short 000000000000F7B9
       inc       r10d
       add       r9d,r10d
       and       r9d,[r8+4]
       cmp       r10d,8
       jl        short 000000000000F76A
       mov       r8d,2
       jmp       short 000000000000F79D
       test      r8d,r8d
       jne       short 000000000000F7CE
       xor       edx,edx
       mov       rax,rdx
       pop       rsi
       pop       rdi
       ret
       pop       rsi
       pop       rdi
       jmp       near ptr 0000000000000580
; Total bytes of code 181

Compare Jit Disasm

; PerfLabTests.CastingPerf.CheckArrayIsInterfaceYes()
       push      rdi
       push      rsi
       sub       rsp,28
       xor       eax,eax
       xor       esi,esi
       mov       edi,[0BE50]
       test      edi,edi
       jle       short 000000000000F840
       mov       rdx,204D7007DB0
       mov       rdx,[rdx]
       mov       rcx,offset MT_PerfLabTests.IMyInterface1[]
       call      qword ptr [0B7F8]
       test      rax,rax
       setne     al
       movzx     eax,al
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F814
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 71
; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfAny(Void*, System.Object)
       push      rdi
       push      rsi
       test      rdx,rdx
       je        near ptr 000000000000F7C8
       mov       rax,[rdx]
       cmp       rax,rcx
       je        near ptr 000000000000F7C8
       mov       r8,204D7000D10
       mov       r8,[r8]
       add       r8,10
       rorx      r9,rax,20
       xor       r9,rcx
       mov       r10,79B97F4A7C15
       imul      r9,r10
       mov       r10d,[r8]
       shrx      r9,r9,r10
       xor       r10d,r10d
       lea       r11d,[r9+1]
       movsxd    r11,r11d
       lea       r11,[r11+r11*2]
       lea       r11,[r8+r11*8]
       mov       esi,[r11]
       mov       rdi,[r11+8]
       and       esi,0FFFFFFFE
       cmp       rdi,rax
       jne       short 000000000000F7A5
       mov       rdi,[r11+10]
       xor       rdi,rcx
       cmp       rdi,1
       ja        short 000000000000F7A5
       cmp       esi,[r11]
       jne       short 000000000000F7B9
       mov       r8d,edi
       cmp       r8d,1
       je        short 000000000000F7C8
       jmp       short 000000000000F7C1
       test      esi,esi
       je        short 000000000000F7B9
       inc       r10d
       add       r9d,r10d
       and       r9d,[r8+4]
       cmp       r10d,8
       jl        short 000000000000F76A
       mov       r8d,2
       jmp       short 000000000000F79D
       test      r8d,r8d
       jne       short 000000000000F7CE
       xor       edx,edx
       mov       rax,rdx
       pop       rsi
       pop       rdi
       ret
       pop       rsi
       pop       rdi
       jmp       near ptr 0000000000008DE0
; Total bytes of code 181

PerfLabTests.CastingPerf.CheckArrayIsArrayByVariance


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 4.361250643752179 > 2.6292819318881984.
IsChangePoint: Marked as a change because one of 7/8/2022 4:49:43 AM, 7/8/2022 9:55:09 PM, 8/13/2022 7:54:18 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -8.941311915121792 (T) = (0 -7.902188568114764) / Math.Sqrt((0.1917358123596168 / (50)) + (3.3318929750961668 / (10))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (50) + (10) - 2, .025) and -1.9144096649285758 = (2.711419970640409 - 7.902188568114764) / 2.711419970640409 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.CastingPerf.CheckArrayIsArrayByVariance()
       sub       rsp,28
       mov       rdx,20EF5807DC0
       mov       rdx,[rdx]
       mov       rcx,offset MT_PerfLabTests.IMyInterface2[]
       call      qword ptr [0B7F8]
       test      rax,rax
       setne     al
       movzx     eax,al
       add       rsp,28
       ret
; Total bytes of code 47
; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfAny(Void*, System.Object)
       push      rdi
       push      rsi
       test      rdx,rdx
       je        near ptr 000000000000F6E8
       mov       rax,[rdx]
       cmp       rax,rcx
       je        near ptr 000000000000F6E8
       mov       r8,20EF5800D10
       mov       r8,[r8]
       add       r8,10
       rorx      r9,rax,20
       xor       r9,rcx
       mov       r10,79B97F4A7C15
       imul      r9,r10
       mov       r10d,[r8]
       shrx      r9,r9,r10
       xor       r10d,r10d
       lea       r11d,[r9+1]
       movsxd    r11,r11d
       lea       r11,[r11+r11*2]
       lea       r11,[r8+r11*8]
       mov       esi,[r11]
       mov       rdi,[r11+8]
       and       esi,0FFFFFFFE
       cmp       rdi,rax
       jne       short 000000000000F6C5
       mov       rdi,[r11+10]
       xor       rdi,rcx
       cmp       rdi,1
       ja        short 000000000000F6C5
       cmp       esi,[r11]
       jne       short 000000000000F6D9
       mov       r8d,edi
       cmp       r8d,1
       je        short 000000000000F6E8
       jmp       short 000000000000F6E1
       test      esi,esi
       je        short 000000000000F6D9
       inc       r10d
       add       r9d,r10d
       and       r9d,[r8+4]
       cmp       r10d,8
       jl        short 000000000000F68A
       mov       r8d,2
       jmp       short 000000000000F6BD
       test      r8d,r8d
       jne       short 000000000000F6EE
       xor       edx,edx
       mov       rax,rdx
       pop       rsi
       pop       rdi
       ret
       pop       rsi
       pop       rdi
       jmp       near ptr 0000000000000580
; Total bytes of code 181

Compare Jit Disasm

; PerfLabTests.CastingPerf.CheckArrayIsArrayByVariance()
       sub       rsp,28
       mov       rdx,2B700007DC0
       mov       rdx,[rdx]
       mov       rcx,offset MT_PerfLabTests.IMyInterface2[]
       call      qword ptr [0B7F8]
       test      rax,rax
       setne     al
       movzx     eax,al
       add       rsp,28
       ret
; Total bytes of code 47
; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfAny(Void*, System.Object)
       push      rdi
       push      rsi
       test      rdx,rdx
       je        near ptr 0000000000006408
       mov       rax,[rdx]
       cmp       rax,rcx
       je        near ptr 0000000000006408
       mov       r8,2B700000D10
       mov       r8,[r8]
       add       r8,10
       rorx      r9,rax,20
       xor       r9,rcx
       mov       r10,79B97F4A7C15
       imul      r9,r10
       mov       r10d,[r8]
       shrx      r9,r9,r10
       xor       r10d,r10d
       lea       r11d,[r9+1]
       movsxd    r11,r11d
       lea       r11,[r11+r11*2]
       lea       r11,[r8+r11*8]
       mov       esi,[r11]
       mov       rdi,[r11+8]
       and       esi,0FFFFFFFE
       cmp       rdi,rax
       jne       short 00000000000063E5
       mov       rdi,[r11+10]
       xor       rdi,rcx
       cmp       rdi,1
       ja        short 00000000000063E5
       cmp       esi,[r11]
       jne       short 00000000000063F9
       mov       r8d,edi
       cmp       r8d,1
       je        short 0000000000006408
       jmp       short 0000000000006401
       test      esi,esi
       je        short 00000000000063F9
       inc       r10d
       add       r9d,r10d
       and       r9d,[r8+4]
       cmp       r10d,8
       jl        short 00000000000063AA
       mov       r8d,2
       jmp       short 00000000000063DD
       test      r8d,r8d
       jne       short 000000000000640E
       xor       edx,edx
       mov       rax,rdx
       pop       rsi
       pop       rdi
       ret
       pop       rsi
       pop       rdi
       jmp       near ptr 0000000000008DE0
; Total bytes of code 181

PerfLabTests.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 490.1920703125 > 360.1816688179348.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -139.28462769870742 (T) = (0 -485006.99467153754) / Math.Sqrt((193601.0673972397 / (20)) + (41091739.75639151 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.41331073088027914 = (343170.8145097373 - 485006.99467153754) / 343170.8145097373 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.CastingPerf.FooObjIsFoo()
       push      rdi
       push      rsi
       sub       rsp,28
       xor       esi,esi
       mov       edi,[0BD08]
       test      edi,edi
       jle       short 000000000000F6E7
       mov       rdx,2BCC0807D70
       mov       rdx,[rdx]
       mov       rcx,offset MT_PerfLabTests.Foo[]
       call      qword ptr [0B858]
       mov       rcx,2BCC0807D80
       mov       rdx,rax
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F6B2
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 78
; System.Runtime.CompilerServices.CastHelpers.ChkCastAny(Void*, System.Object)
       push      rdi
       push      rsi
       sub       rsp,28
       test      rdx,rdx
       je        short 000000000000F63D
       mov       rax,[rdx]
       cmp       rax,rcx
       je        short 000000000000F63D
       mov       r8,2BCC0800D10
       mov       r8,[r8]
       add       r8,10
       rorx      r9,rax,20
       xor       r9,rcx
       mov       r10,79B97F4A7C15
       imul      r9,r10
       mov       r10d,[r8]
       shrx      r9,r9,r10
       xor       r10d,r10d
       lea       r11d,[r9+1]
       movsxd    r11,r11d
       lea       r11,[r11+r11*2]
       lea       r11,[r8+r11*8]
       mov       esi,[r11]
       mov       rdi,[r11+8]
       and       esi,0FFFFFFFE
       cmp       rdi,rax
       jne       short 000000000000F647
       mov       rdi,[r11+10]
       xor       rdi,rcx
       cmp       rdi,1
       ja        short 000000000000F647
       cmp       esi,[r11]
       jne       short 000000000000F65B
       mov       eax,edi
       cmp       eax,1
       jne       short 000000000000F665
       mov       rax,rdx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       test      esi,esi
       je        short 000000000000F65B
       inc       r10d
       add       r9d,r10d
       and       r9d,[r8+4]
       cmp       r10d,8
       jl        short 000000000000F606
       mov       eax,2
       cmp       eax,1
       je        short 000000000000F63D
       call      0000000000007530
       nop
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 178

Compare Jit Disasm

; PerfLabTests.CastingPerf.FooObjIsFoo()
       push      rdi
       push      rsi
       sub       rsp,28
       xor       esi,esi
       mov       edi,[0BE50]
       test      edi,edi
       jle       short 000000000000F6E7
       mov       rdx,28398007D70
       mov       rdx,[rdx]
       mov       rcx,offset MT_PerfLabTests.Foo[]
       call      qword ptr [0B858]
       mov       rcx,28398007D80
       mov       rdx,rax
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F6B2
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 78
; System.Runtime.CompilerServices.CastHelpers.ChkCastAny(Void*, System.Object)
       push      rdi
       push      rsi
       sub       rsp,28
       test      rdx,rdx
       je        short 000000000000F63D
       mov       rax,[rdx]
       cmp       rax,rcx
       je        short 000000000000F63D
       mov       r8,28398000D10
       mov       r8,[r8]
       add       r8,10
       rorx      r9,rax,20
       xor       r9,rcx
       mov       r10,79B97F4A7C15
       imul      r9,r10
       mov       r10d,[r8]
       shrx      r9,r9,r10
       xor       r10d,r10d
       lea       r11d,[r9+1]
       movsxd    r11,r11d
       lea       r11,[r11+r11*2]
       lea       r11,[r8+r11*8]
       mov       esi,[r11]
       mov       rdi,[r11+8]
       and       esi,0FFFFFFFE
       cmp       rdi,rax
       jne       short 000000000000F647
       mov       rdi,[r11+10]
       xor       rdi,rcx
       cmp       rdi,1
       ja        short 000000000000F647
       cmp       esi,[r11]
       jne       short 000000000000F65B
       mov       eax,edi
       cmp       eax,1
       jne       short 000000000000F665
       mov       rax,rdx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       test      esi,esi
       je        short 000000000000F65B
       inc       r10d
       add       r9d,r10d
       and       r9d,[r8+4]
       cmp       r10d,8
       jl        short 000000000000F606
       mov       eax,2
       cmp       eax,1
       je        short 000000000000F63D
       call      000000000000DCD0
       nop
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 178

PerfLabTests.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 489.4206465517242 > 360.92982676630436.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -157.30230685906358 (T) = (0 -486831.96440457366) / Math.Sqrt((471537.5980994746 / (20)) + (32280764.727866266 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.4173876133410892 = (343471.2987628031 - 486831.96440457366) / 343471.2987628031 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.CastingPerf.ObjrefValueTypeObj()
       push      rdi
       push      rsi
       sub       rsp,28
       xor       esi,esi
       mov       edi,[0BD08]
       test      edi,edi
       jle       short 000000000000F6E7
       mov       rdx,1B118407D70
       mov       rdx,[rdx]
       mov       rcx,offset MT_PerfLabTests.FooORVT[]
       call      qword ptr [0B858]
       mov       rcx,1B118407D68
       mov       rdx,rax
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F6B2
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 78
; System.Runtime.CompilerServices.CastHelpers.ChkCastAny(Void*, System.Object)
       push      rdi
       push      rsi
       sub       rsp,28
       test      rdx,rdx
       je        short 000000000000F63D
       mov       rax,[rdx]
       cmp       rax,rcx
       je        short 000000000000F63D
       mov       r8,1B118400D10
       mov       r8,[r8]
       add       r8,10
       rorx      r9,rax,20
       xor       r9,rcx
       mov       r10,79B97F4A7C15
       imul      r9,r10
       mov       r10d,[r8]
       shrx      r9,r9,r10
       xor       r10d,r10d
       lea       r11d,[r9+1]
       movsxd    r11,r11d
       lea       r11,[r11+r11*2]
       lea       r11,[r8+r11*8]
       mov       esi,[r11]
       mov       rdi,[r11+8]
       and       esi,0FFFFFFFE
       cmp       rdi,rax
       jne       short 000000000000F647
       mov       rdi,[r11+10]
       xor       rdi,rcx
       cmp       rdi,1
       ja        short 000000000000F647
       cmp       esi,[r11]
       jne       short 000000000000F65B
       mov       eax,edi
       cmp       eax,1
       jne       short 000000000000F665
       mov       rax,rdx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       test      esi,esi
       je        short 000000000000F65B
       inc       r10d
       add       r9d,r10d
       and       r9d,[r8+4]
       cmp       r10d,8
       jl        short 000000000000F606
       mov       eax,2
       cmp       eax,1
       je        short 000000000000F63D
       call      0000000000007530
       nop
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 178

Compare Jit Disasm

; PerfLabTests.CastingPerf.ObjrefValueTypeObj()
       push      rdi
       push      rsi
       sub       rsp,28
       xor       esi,esi
       mov       edi,[0BE50]
       test      edi,edi
       jle       short 000000000000F6E7
       mov       rdx,1F1DF007D70
       mov       rdx,[rdx]
       mov       rcx,offset MT_PerfLabTests.FooORVT[]
       call      qword ptr [0B858]
       mov       rcx,1F1DF007D68
       mov       rdx,rax
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F6B2
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 78
; System.Runtime.CompilerServices.CastHelpers.ChkCastAny(Void*, System.Object)
       push      rdi
       push      rsi
       sub       rsp,28
       test      rdx,rdx
       je        short 000000000000F63D
       mov       rax,[rdx]
       cmp       rax,rcx
       je        short 000000000000F63D
       mov       r8,1F1DF000D10
       mov       r8,[r8]
       add       r8,10
       rorx      r9,rax,20
       xor       r9,rcx
       mov       r10,79B97F4A7C15
       imul      r9,r10
       mov       r10d,[r8]
       shrx      r9,r9,r10
       xor       r10d,r10d
       lea       r11d,[r9+1]
       movsxd    r11,r11d
       lea       r11,[r11+r11*2]
       lea       r11,[r8+r11*8]
       mov       esi,[r11]
       mov       rdi,[r11+8]
       and       esi,0FFFFFFFE
       cmp       rdi,rax
       jne       short 000000000000F647
       mov       rdi,[r11+10]
       xor       rdi,rcx
       cmp       rdi,1
       ja        short 000000000000F647
       cmp       esi,[r11]
       jne       short 000000000000F65B
       mov       eax,edi
       cmp       eax,1
       jne       short 000000000000F665
       mov       rax,rdx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       test      esi,esi
       je        short 000000000000F65B
       inc       r10d
       add       r9d,r10d
       and       r9d,[r8+4]
       cmp       r10d,8
       jl        short 000000000000F606
       mov       eax,2
       cmp       eax,1
       je        short 000000000000F63D
       call      000000000000DCD0
       nop
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 178

PerfLabTests.CastingPerf.FooObjIsNull


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 319.2946088435374 > 196.4646734775641.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -52.79069843535784 (T) = (0 -314774.9759466103) / Math.Sqrt((162918953.9231717 / (20)) + (8132526.144049892 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.9402314051347355 = (162235.79059362324 - 314774.9759466103) / 162235.79059362324 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.CastingPerf.FooObjIsNull()
       push      rdi
       push      rsi
       xor       esi,esi
       mov       edi,[0BD08]
       test      edi,edi
       jle       short 000000000000F650
       mov       rdx,1E38E807D50
       mov       rdx,[rdx]
       mov       rcx,1E38E807D70
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F62E
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 51

Compare Jit Disasm

; PerfLabTests.CastingPerf.FooObjIsNull()
       push      rdi
       push      rsi
       xor       esi,esi
       mov       edi,[0BE50]
       test      edi,edi
       jle       short 000000000000F650
       mov       rdx,139A4407D50
       mov       rdx,[rdx]
       mov       rcx,139A4407D70
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F62E
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 51

PerfLabTests.CastingPerf.IFooFooIsIFoo


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 311.83796977124183 > 164.12004835278614.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -45.67204385622696 (T) = (0 -312277.6594835295) / Math.Sqrt((164409363.5755765 / (20)) + (1169343.602859744 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.7243661423991297 = (181097.072022682 - 312277.6594835295) / 181097.072022682 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.CastingPerf.IFooFooIsIFoo()
       push      rdi
       push      rsi
       xor       esi,esi
       mov       edi,[0BD08]
       test      edi,edi
       jle       short 000000000000F670
       mov       rdx,28B5C407D40
       mov       rdx,[rdx]
       mov       rcx,28B5C407D88
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F64E
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 51

Compare Jit Disasm

; PerfLabTests.CastingPerf.IFooFooIsIFoo()
       push      rdi
       push      rsi
       xor       esi,esi
       mov       edi,[0BE50]
       test      edi,edi
       jle       short 000000000000F670
       mov       rdx,15A10807D40
       mov       rdx,[rdx]
       mov       rcx,15A10807D88
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F64E
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 51

PerfLabTests.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 748.4598684210526 > 639.938418629227.
IsChangePoint: Marked as a change because one of 7/28/2022 9:13:34 AM, 8/11/2022 12:05:11 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -6.008982187529307 (T) = (0 -834742.431845814) / Math.Sqrt((5030546991.880699 / (32)) + (23756714424.787045 / (28))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (32) + (28) - 2, .025) and -0.29581194646592923 = (644184.855775106 - 834742.431845814) / 644184.855775106 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.CastingPerf.IFooObjIsDescendantOfIFoo()
       push      rdi
       push      rsi
       sub       rsp,28
       xor       esi,esi
       mov       edi,[0BD08]
       test      edi,edi
       jle       short 000000000000F6E7
       mov       rdx,25E7FC07D70
       mov       rdx,[rdx]
       mov       rcx,offset MT_PerfLabTests.IFoo[]
       call      qword ptr [0B858]
       mov       rcx,25E7FC07D88
       mov       rdx,rax
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F6B2
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 78
; System.Runtime.CompilerServices.CastHelpers.ChkCastAny(Void*, System.Object)
       push      rdi
       push      rsi
       sub       rsp,28
       test      rdx,rdx
       je        short 000000000000F63D
       mov       rax,[rdx]
       cmp       rax,rcx
       je        short 000000000000F63D
       mov       r8,25E7FC00D10
       mov       r8,[r8]
       add       r8,10
       rorx      r9,rax,20
       xor       r9,rcx
       mov       r10,79B97F4A7C15
       imul      r9,r10
       mov       r10d,[r8]
       shrx      r9,r9,r10
       xor       r10d,r10d
       lea       r11d,[r9+1]
       movsxd    r11,r11d
       lea       r11,[r11+r11*2]
       lea       r11,[r8+r11*8]
       mov       esi,[r11]
       mov       rdi,[r11+8]
       and       esi,0FFFFFFFE
       cmp       rdi,rax
       jne       short 000000000000F647
       mov       rdi,[r11+10]
       xor       rdi,rcx
       cmp       rdi,1
       ja        short 000000000000F647
       cmp       esi,[r11]
       jne       short 000000000000F65B
       mov       eax,edi
       cmp       eax,1
       jne       short 000000000000F665
       mov       rax,rdx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       test      esi,esi
       je        short 000000000000F65B
       inc       r10d
       add       r9d,r10d
       and       r9d,[r8+4]
       cmp       r10d,8
       jl        short 000000000000F606
       mov       eax,2
       cmp       eax,1
       je        short 000000000000F63D
       call      0000000000007530
       nop
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 178

Compare Jit Disasm

; PerfLabTests.CastingPerf.IFooObjIsDescendantOfIFoo()
       push      rdi
       push      rsi
       sub       rsp,28
       xor       esi,esi
       mov       edi,[0BE50]
       test      edi,edi
       jle       short 000000000000F6E7
       mov       rdx,25EBB407D70
       mov       rdx,[rdx]
       mov       rcx,offset MT_PerfLabTests.IFoo[]
       call      qword ptr [0B858]
       mov       rcx,25EBB407D88
       mov       rdx,rax
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F6B2
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 78
; System.Runtime.CompilerServices.CastHelpers.ChkCastAny(Void*, System.Object)
       push      rdi
       push      rsi
       sub       rsp,28
       test      rdx,rdx
       je        short 000000000000F63D
       mov       rax,[rdx]
       cmp       rax,rcx
       je        short 000000000000F63D
       mov       r8,25EBB400D10
       mov       r8,[r8]
       add       r8,10
       rorx      r9,rax,20
       xor       r9,rcx
       mov       r10,79B97F4A7C15
       imul      r9,r10
       mov       r10d,[r8]
       shrx      r9,r9,r10
       xor       r10d,r10d
       lea       r11d,[r9+1]
       movsxd    r11,r11d
       lea       r11,[r11+r11*2]
       lea       r11,[r8+r11*8]
       mov       esi,[r11]
       mov       rdi,[r11+8]
       and       esi,0FFFFFFFE
       cmp       rdi,rax
       jne       short 000000000000F647
       mov       rdi,[r11+10]
       xor       rdi,rcx
       cmp       rdi,1
       ja        short 000000000000F647
       cmp       esi,[r11]
       jne       short 000000000000F65B
       mov       eax,edi
       cmp       eax,1
       jne       short 000000000000F665
       mov       rax,rdx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       test      esi,esi
       je        short 000000000000F65B
       inc       r10d
       add       r9d,r10d
       and       r9d,[r8+4]
       cmp       r10d,8
       jl        short 000000000000F606
       mov       eax,2
       cmp       eax,1
       je        short 000000000000F63D
       call      000000000000DCD0
       nop
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 178

PerfLabTests.CastingPerf.FooObjIsFoo2


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 483.75735294117646 > 360.17249568875417.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -133.5007015989523 (T) = (0 -478954.17966737365) / Math.Sqrt((16018298.701535834 / (20)) + (8800154.111878365 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.39204818427123717 = (344064.36866128666 - 478954.17966737365) / 344064.36866128666 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.CastingPerf.FooObjIsFoo2()
       push      rdi
       push      rsi
       sub       rsp,28
       xor       esi,esi
       mov       edi,[0BD08]
       test      edi,edi
       jle       short 000000000000F707
       mov       rdx,2A1DB407D78
       mov       rdx,[rdx]
       mov       rcx,offset MT_PerfLabTests.Foo[]
       call      qword ptr [0B858]
       mov       rcx,2A1DB407D80
       mov       rdx,rax
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F6D2
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 78
; System.Runtime.CompilerServices.CastHelpers.ChkCastAny(Void*, System.Object)
       push      rdi
       push      rsi
       sub       rsp,28
       test      rdx,rdx
       je        short 000000000000F65D
       mov       rax,[rdx]
       cmp       rax,rcx
       je        short 000000000000F65D
       mov       r8,2A1DB400D10
       mov       r8,[r8]
       add       r8,10
       rorx      r9,rax,20
       xor       r9,rcx
       mov       r10,79B97F4A7C15
       imul      r9,r10
       mov       r10d,[r8]
       shrx      r9,r9,r10
       xor       r10d,r10d
       lea       r11d,[r9+1]
       movsxd    r11,r11d
       lea       r11,[r11+r11*2]
       lea       r11,[r8+r11*8]
       mov       esi,[r11]
       mov       rdi,[r11+8]
       and       esi,0FFFFFFFE
       cmp       rdi,rax
       jne       short 000000000000F667
       mov       rdi,[r11+10]
       xor       rdi,rcx
       cmp       rdi,1
       ja        short 000000000000F667
       cmp       esi,[r11]
       jne       short 000000000000F67B
       mov       eax,edi
       cmp       eax,1
       jne       short 000000000000F685
       mov       rax,rdx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       test      esi,esi
       je        short 000000000000F67B
       inc       r10d
       add       r9d,r10d
       and       r9d,[r8+4]
       cmp       r10d,8
       jl        short 000000000000F626
       mov       eax,2
       cmp       eax,1
       je        short 000000000000F65D
       call      0000000000007530
       nop
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 178

Compare Jit Disasm

; PerfLabTests.CastingPerf.FooObjIsFoo2()
       push      rdi
       push      rsi
       sub       rsp,28
       xor       esi,esi
       mov       edi,[0BE50]
       test      edi,edi
       jle       short 000000000000F707
       mov       rdx,21E64807D78
       mov       rdx,[rdx]
       mov       rcx,offset MT_PerfLabTests.Foo[]
       call      qword ptr [0B858]
       mov       rcx,21E64807D80
       mov       rdx,rax
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F6D2
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 78
; System.Runtime.CompilerServices.CastHelpers.ChkCastAny(Void*, System.Object)
       push      rdi
       push      rsi
       sub       rsp,28
       test      rdx,rdx
       je        short 000000000000F65D
       mov       rax,[rdx]
       cmp       rax,rcx
       je        short 000000000000F65D
       mov       r8,21E64800D10
       mov       r8,[r8]
       add       r8,10
       rorx      r9,rax,20
       xor       r9,rcx
       mov       r10,79B97F4A7C15
       imul      r9,r10
       mov       r10d,[r8]
       shrx      r9,r9,r10
       xor       r10d,r10d
       lea       r11d,[r9+1]
       movsxd    r11,r11d
       lea       r11,[r11+r11*2]
       lea       r11,[r8+r11*8]
       mov       esi,[r11]
       mov       rdi,[r11+8]
       and       esi,0FFFFFFFE
       cmp       rdi,rax
       jne       short 000000000000F667
       mov       rdi,[r11+10]
       xor       rdi,rcx
       cmp       rdi,1
       ja        short 000000000000F667
       cmp       esi,[r11]
       jne       short 000000000000F67B
       mov       eax,edi
       cmp       eax,1
       jne       short 000000000000F685
       mov       rax,rdx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       test      esi,esi
       je        short 000000000000F67B
       inc       r10d
       add       r9d,r10d
       and       r9d,[r8+4]
       cmp       r10d,8
       jl        short 000000000000F626
       mov       eax,2
       cmp       eax,1
       je        short 000000000000F65D
       call      000000000000DCD0
       nop
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 178

PerfLabTests.CastingPerf.ScalarValueTypeObj


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 488.93916666666667 > 360.1670307087614.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -183.94593222676505 (T) = (0 -487445.8525836758) / Math.Sqrt((447184.69162888324 / (20)) + (23607000.561234575 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.41913332888740445 = (343481.36476072454 - 487445.8525836758) / 343481.36476072454 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.CastingPerf.ScalarValueTypeObj()
       push      rdi
       push      rsi
       sub       rsp,28
       xor       esi,esi
       mov       edi,[0BD08]
       test      edi,edi
       jle       short 000000000000F6E7
       mov       rdx,223CD807D70
       mov       rdx,[rdx]
       mov       rcx,offset MT_PerfLabTests.FooSVT[]
       call      qword ptr [0B858]
       mov       rcx,223CD807D60
       mov       rdx,rax
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F6B2
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 78
; System.Runtime.CompilerServices.CastHelpers.ChkCastAny(Void*, System.Object)
       push      rdi
       push      rsi
       sub       rsp,28
       test      rdx,rdx
       je        short 000000000000F63D
       mov       rax,[rdx]
       cmp       rax,rcx
       je        short 000000000000F63D
       mov       r8,223CD800D10
       mov       r8,[r8]
       add       r8,10
       rorx      r9,rax,20
       xor       r9,rcx
       mov       r10,79B97F4A7C15
       imul      r9,r10
       mov       r10d,[r8]
       shrx      r9,r9,r10
       xor       r10d,r10d
       lea       r11d,[r9+1]
       movsxd    r11,r11d
       lea       r11,[r11+r11*2]
       lea       r11,[r8+r11*8]
       mov       esi,[r11]
       mov       rdi,[r11+8]
       and       esi,0FFFFFFFE
       cmp       rdi,rax
       jne       short 000000000000F647
       mov       rdi,[r11+10]
       xor       rdi,rcx
       cmp       rdi,1
       ja        short 000000000000F647
       cmp       esi,[r11]
       jne       short 000000000000F65B
       mov       eax,edi
       cmp       eax,1
       jne       short 000000000000F665
       mov       rax,rdx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       test      esi,esi
       je        short 000000000000F65B
       inc       r10d
       add       r9d,r10d
       and       r9d,[r8+4]
       cmp       r10d,8
       jl        short 000000000000F606
       mov       eax,2
       cmp       eax,1
       je        short 000000000000F63D
       call      0000000000007530
       nop
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 178

Compare Jit Disasm

; PerfLabTests.CastingPerf.ScalarValueTypeObj()
       push      rdi
       push      rsi
       sub       rsp,28
       xor       esi,esi
       mov       edi,[0BE50]
       test      edi,edi
       jle       short 000000000000F6E7
       mov       rdx,2156B007D70
       mov       rdx,[rdx]
       mov       rcx,offset MT_PerfLabTests.FooSVT[]
       call      qword ptr [0B858]
       mov       rcx,2156B007D60
       mov       rdx,rax
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F6B2
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 78
; System.Runtime.CompilerServices.CastHelpers.ChkCastAny(Void*, System.Object)
       push      rdi
       push      rsi
       sub       rsp,28
       test      rdx,rdx
       je        short 000000000000F63D
       mov       rax,[rdx]
       cmp       rax,rcx
       je        short 000000000000F63D
       mov       r8,2156B000D10
       mov       r8,[r8]
       add       r8,10
       rorx      r9,rax,20
       xor       r9,rcx
       mov       r10,79B97F4A7C15
       imul      r9,r10
       mov       r10d,[r8]
       shrx      r9,r9,r10
       xor       r10d,r10d
       lea       r11d,[r9+1]
       movsxd    r11,r11d
       lea       r11,[r11+r11*2]
       lea       r11,[r8+r11*8]
       mov       esi,[r11]
       mov       rdi,[r11+8]
       and       esi,0FFFFFFFE
       cmp       rdi,rax
       jne       short 000000000000F647
       mov       rdi,[r11+10]
       xor       rdi,rcx
       cmp       rdi,1
       ja        short 000000000000F647
       cmp       esi,[r11]
       jne       short 000000000000F65B
       mov       eax,edi
       cmp       eax,1
       jne       short 000000000000F665
       mov       rax,rdx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       test      esi,esi
       je        short 000000000000F65B
       inc       r10d
       add       r9d,r10d
       and       r9d,[r8+4]
       cmp       r10d,8
       jl        short 000000000000F606
       mov       eax,2
       cmp       eax,1
       je        short 000000000000F63D
       call      000000000000DCD0
       nop
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 178

PerfLabTests.CastingPerf.CheckArrayIsNonvariantGenericInterfaceNo


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 8.74698242995599 > 6.592523835382359.
IsChangePoint: Marked as a change because one of 6/23/2022 6:26:05 AM, 6/25/2022 2:40:01 AM, 6/30/2022 12:24:00 AM, 7/1/2022 7:34:46 PM, 8/13/2022 7:54:18 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -6.19898801225402 (T) = (0 -8.63554276257268) / Math.Sqrt((1.5523436242539288 / (50)) + (1.3658665683748386 / (10))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (50) + (10) - 2, .025) and -0.41624630526908474 = (6.09748652508007 - 8.63554276257268) / 6.09748652508007 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.CastingPerf.CheckArrayIsNonvariantGenericInterfaceNo()
       sub       rsp,28
       mov       rdx,29EAD807DC0
       mov       rdx,[rdx]
       mov       rcx,offset MT_System.Collections.Generic.ICollection`1[[System.Exception, System.Private.CoreLib]]
       call      qword ptr [0B810]
       test      rax,rax
       setne     al
       movzx     eax,al
       add       rsp,28
       ret
; Total bytes of code 47
; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(Void*, System.Object)
       test      rdx,rdx
       je        short 000000000000F6A1
       mov       rax,[rdx]
       movzx     r8d,word ptr [rax+0E]
       test      r8,r8
       je        short 000000000000F697
       mov       r9,[rax+38]
       cmp       r8,4
       jl        short 000000000000F686
       cmp       [r9],rcx
       je        short 000000000000F6A1
       cmp       [r9+8],rcx
       je        short 000000000000F6A1
       cmp       [r9+10],rcx
       je        short 000000000000F6A1
       cmp       [r9+18],rcx
       je        short 000000000000F6A1
       add       r9,20
       add       r8,0FFFFFFFFFFFFFFFC
       cmp       r8,4
       jge       short 000000000000F65C
       test      r8,r8
       je        short 000000000000F697
       cmp       [r9],rcx
       je        short 000000000000F6A1
       add       r9,8
       dec       r8
       test      r8,r8
       jg        short 000000000000F686
       test      dword ptr [rax],406C0000
       jne       short 000000000000F6A5
       xor       edx,edx
       mov       rax,rdx
       ret
       jmp       qword ptr [0B840]
; Total bytes of code 107

Compare Jit Disasm

; PerfLabTests.CastingPerf.CheckArrayIsNonvariantGenericInterfaceNo()
       sub       rsp,28
       mov       rdx,221DB407DC0
       mov       rdx,[rdx]
       mov       rcx,offset MT_System.Collections.Generic.ICollection`1[[System.Exception, System.Private.CoreLib]]
       call      qword ptr [0B810]
       test      rax,rax
       setne     al
       movzx     eax,al
       add       rsp,28
       ret
; Total bytes of code 47
; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(Void*, System.Object)
       test      rdx,rdx
       je        short 000000000000F6A1
       mov       rax,[rdx]
       movzx     r8d,word ptr [rax+0E]
       test      r8,r8
       je        short 000000000000F697
       mov       r9,[rax+38]
       cmp       r8,4
       jl        short 000000000000F686
       cmp       [r9],rcx
       je        short 000000000000F6A1
       cmp       [r9+8],rcx
       je        short 000000000000F6A1
       cmp       [r9+10],rcx
       je        short 000000000000F6A1
       cmp       [r9+18],rcx
       je        short 000000000000F6A1
       add       r9,20
       add       r8,0FFFFFFFFFFFFFFFC
       cmp       r8,4
       jge       short 000000000000F65C
       test      r8,r8
       je        short 000000000000F697
       cmp       [r9],rcx
       je        short 000000000000F6A1
       add       r9,8
       dec       r8
       test      r8,r8
       jg        short 000000000000F686
       test      dword ptr [rax],406C0000
       jne       short 000000000000F6A5
       xor       edx,edx
       mov       rax,rdx
       ret
       jmp       qword ptr [0B840]
; Total bytes of code 107

PerfLabTests.CastingPerf.ObjObjIsFoo


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.1580633012820511 > 639.9872470953526.
IsChangePoint: Marked as a change because one of 7/28/2022 9:13:34 AM, 8/13/2022 7:54:18 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -3.881325374069558 (T) = (0 -974147.6064002474) / Math.Sqrt((14082900815.038124 / (50)) + (57918998277.85648 / (10))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (50) + (10) - 2, .025) and -0.450349281003054 = (671664.1426722617 - 974147.6064002474) / 671664.1426722617 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.CastingPerf.ObjObjIsFoo()
       push      rdi
       push      rsi
       sub       rsp,28
       xor       esi,esi
       mov       edi,[0BD08]
       test      edi,edi
       jle       short 000000000000F6E7
       mov       rdx,14EEE007D70
       mov       rdx,[rdx]
       mov       rcx,offset MT_System.Object[]
       call      qword ptr [0B858]
       mov       rcx,14EEE007D78
       mov       rdx,rax
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F6B2
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 78
; System.Runtime.CompilerServices.CastHelpers.ChkCastAny(Void*, System.Object)
       push      rdi
       push      rsi
       sub       rsp,28
       test      rdx,rdx
       je        short 000000000000F63D
       mov       rax,[rdx]
       cmp       rax,rcx
       je        short 000000000000F63D
       mov       r8,14EEE000D10
       mov       r8,[r8]
       add       r8,10
       rorx      r9,rax,20
       xor       r9,rcx
       mov       r10,79B97F4A7C15
       imul      r9,r10
       mov       r10d,[r8]
       shrx      r9,r9,r10
       xor       r10d,r10d
       lea       r11d,[r9+1]
       movsxd    r11,r11d
       lea       r11,[r11+r11*2]
       lea       r11,[r8+r11*8]
       mov       esi,[r11]
       mov       rdi,[r11+8]
       and       esi,0FFFFFFFE
       cmp       rdi,rax
       jne       short 000000000000F647
       mov       rdi,[r11+10]
       xor       rdi,rcx
       cmp       rdi,1
       ja        short 000000000000F647
       cmp       esi,[r11]
       jne       short 000000000000F65B
       mov       eax,edi
       cmp       eax,1
       jne       short 000000000000F665
       mov       rax,rdx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       test      esi,esi
       je        short 000000000000F65B
       inc       r10d
       add       r9d,r10d
       and       r9d,[r8+4]
       cmp       r10d,8
       jl        short 000000000000F606
       mov       eax,2
       cmp       eax,1
       je        short 000000000000F63D
       call      0000000000007530
       nop
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 178

Compare Jit Disasm

; PerfLabTests.CastingPerf.ObjObjIsFoo()
       push      rdi
       push      rsi
       sub       rsp,28
       xor       esi,esi
       mov       edi,[0BE50]
       test      edi,edi
       jle       short 000000000000EE27
       mov       rdx,167E8407D70
       mov       rdx,[rdx]
       mov       rcx,offset MT_System.Object[]
       call      qword ptr [0B858]
       mov       rcx,167E8407D78
       mov       rdx,rax
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000EDF2
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 78
; System.Runtime.CompilerServices.CastHelpers.ChkCastAny(Void*, System.Object)
       push      rdi
       push      rsi
       sub       rsp,28
       test      rdx,rdx
       je        short 000000000000FEBD
       mov       rax,[rdx]
       cmp       rax,rcx
       je        short 000000000000FEBD
       mov       r8,167E8400D10
       mov       r8,[r8]
       add       r8,10
       rorx      r9,rax,20
       xor       r9,rcx
       mov       r10,79B97F4A7C15
       imul      r9,r10
       mov       r10d,[r8]
       shrx      r9,r9,r10
       xor       r10d,r10d
       lea       r11d,[r9+1]
       movsxd    r11,r11d
       lea       r11,[r11+r11*2]
       lea       r11,[r8+r11*8]
       mov       esi,[r11]
       mov       rdi,[r11+8]
       and       esi,0FFFFFFFE
       cmp       rdi,rax
       jne       short 000000000000FEC7
       mov       rdi,[r11+10]
       xor       rdi,rcx
       cmp       rdi,1
       ja        short 000000000000FEC7
       cmp       esi,[r11]
       jne       short 000000000000FEDB
       mov       eax,edi
       cmp       eax,1
       jne       short 000000000000FEE5
       mov       rax,rdx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       test      esi,esi
       je        short 000000000000FEDB
       inc       r10d
       add       r9d,r10d
       and       r9d,[r8+4]
       cmp       r10d,8
       jl        short 000000000000FE86
       mov       eax,2
       cmp       eax,1
       je        short 000000000000FEBD
       call      000000000000DCD0
       nop
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 178

PerfLabTests.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 313.1750333333333 > 196.9167049278846.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -51.64445992521371 (T) = (0 -314743.6076851353) / Math.Sqrt((169805479.80012324 / (20)) + (8421488.76995805 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.937990074184884 = (162407.23411213345 - 314743.6076851353) / 162407.23411213345 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.CastingPerf.ObjInt()
       push      rdi
       push      rsi
       xor       esi,esi
       mov       edi,[0BD08]
       test      edi,edi
       jle       short 000000000000F650
       mov       rdx,1E2C9C07D30
       mov       rdx,[rdx]
       mov       rcx,1E2C9C07D70
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F62E
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 51

Compare Jit Disasm

; PerfLabTests.CastingPerf.ObjInt()
       push      rdi
       push      rsi
       xor       esi,esi
       mov       edi,[0BE50]
       test      edi,edi
       jle       short 000000000000F650
       mov       rdx,1E528807D30
       mov       rdx,[rdx]
       mov       rcx,1E528807D70
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F62E
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 51

PerfLabTests.CastingPerf.IntObj


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 487.64564655172416 > 360.17294523411374.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -151.82198828290075 (T) = (0 -485787.5573391906) / Math.Sqrt((329766.54518195917 / (20)) + (34593668.415332064 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.4152244207632005 = (343258.3201731466 - 485787.5573391906) / 343258.3201731466 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.CastingPerf.IntObj()
       push      rdi
       push      rsi
       sub       rsp,28
       xor       esi,esi
       mov       edi,[0BD08]
       test      edi,edi
       jle       short 000000000000F6E7
       mov       rdx,1C2FE007D70
       mov       rdx,[rdx]
       mov       rcx,offset MT_System.Int32[]
       call      qword ptr [0B858]
       mov       rcx,1C2FE007D38
       mov       rdx,rax
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F6B2
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 78
; System.Runtime.CompilerServices.CastHelpers.ChkCastAny(Void*, System.Object)
       push      rdi
       push      rsi
       sub       rsp,28
       test      rdx,rdx
       je        short 000000000000F63D
       mov       rax,[rdx]
       cmp       rax,rcx
       je        short 000000000000F63D
       mov       r8,1C2FE000D10
       mov       r8,[r8]
       add       r8,10
       rorx      r9,rax,20
       xor       r9,rcx
       mov       r10,79B97F4A7C15
       imul      r9,r10
       mov       r10d,[r8]
       shrx      r9,r9,r10
       xor       r10d,r10d
       lea       r11d,[r9+1]
       movsxd    r11,r11d
       lea       r11,[r11+r11*2]
       lea       r11,[r8+r11*8]
       mov       esi,[r11]
       mov       rdi,[r11+8]
       and       esi,0FFFFFFFE
       cmp       rdi,rax
       jne       short 000000000000F647
       mov       rdi,[r11+10]
       xor       rdi,rcx
       cmp       rdi,1
       ja        short 000000000000F647
       cmp       esi,[r11]
       jne       short 000000000000F65B
       mov       eax,edi
       cmp       eax,1
       jne       short 000000000000F665
       mov       rax,rdx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       test      esi,esi
       je        short 000000000000F65B
       inc       r10d
       add       r9d,r10d
       and       r9d,[r8+4]
       cmp       r10d,8
       jl        short 000000000000F606
       mov       eax,2
       cmp       eax,1
       je        short 000000000000F63D
       call      0000000000007530
       nop
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 178

Compare Jit Disasm

; PerfLabTests.CastingPerf.IntObj()
       push      rdi
       push      rsi
       sub       rsp,28
       xor       esi,esi
       mov       edi,[0BE50]
       test      edi,edi
       jle       short 000000000000F6E7
       mov       rdx,1DCA3C07D70
       mov       rdx,[rdx]
       mov       rcx,offset MT_System.Int32[]
       call      qword ptr [0B858]
       mov       rcx,1DCA3C07D38
       mov       rdx,rax
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F6B2
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 78
; System.Runtime.CompilerServices.CastHelpers.ChkCastAny(Void*, System.Object)
       push      rdi
       push      rsi
       sub       rsp,28
       test      rdx,rdx
       je        short 000000000000F63D
       mov       rax,[rdx]
       cmp       rax,rcx
       je        short 000000000000F63D
       mov       r8,1DCA3C00D10
       mov       r8,[r8]
       add       r8,10
       rorx      r9,rax,20
       xor       r9,rcx
       mov       r10,79B97F4A7C15
       imul      r9,r10
       mov       r10d,[r8]
       shrx      r9,r9,r10
       xor       r10d,r10d
       lea       r11d,[r9+1]
       movsxd    r11,r11d
       lea       r11,[r11+r11*2]
       lea       r11,[r8+r11*8]
       mov       esi,[r11]
       mov       rdi,[r11+8]
       and       esi,0FFFFFFFE
       cmp       rdi,rax
       jne       short 000000000000F647
       mov       rdi,[r11+10]
       xor       rdi,rcx
       cmp       rdi,1
       ja        short 000000000000F647
       cmp       esi,[r11]
       jne       short 000000000000F65B
       mov       eax,edi
       cmp       eax,1
       jne       short 000000000000F665
       mov       rax,rdx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       test      esi,esi
       je        short 000000000000F65B
       inc       r10d
       add       r9d,r10d
       and       r9d,[r8+4]
       cmp       r10d,8
       jl        short 000000000000F606
       mov       eax,2
       cmp       eax,1
       je        short 000000000000F63D
       call      000000000000DCD0
       nop
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 178

PerfLabTests.CastingPerf.FooObjCastIfIsa


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 736.2365909090908 > 618.4735.
IsChangePoint: Marked as a change because one of 6/17/2022 12:17:51 PM, 8/1/2022 6:03:22 PM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -27.701923186824263 (T) = (0 -749954.3896799629) / Math.Sqrt((1028618288.1544856 / (20)) + (489666113.1700858 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.41793340286291875 = (528906.6384681722 - 749954.3896799629) / 528906.6384681722 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.CastingPerf.FooObjCastIfIsa()
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       xor       esi,esi
       mov       edi,[0BD08]
       test      edi,edi
       jle       short 000000000000F823
       mov       rdx,1C3B3007D70
       mov       rbx,[rdx]
       mov       rdx,rbx
       mov       rcx,offset MT_PerfLabTests.Foo[]
       call      qword ptr [0B7F8]
       test      rax,rax
       je        short 000000000000F81D
       mov       rdx,rbx
       mov       rcx,offset MT_PerfLabTests.Foo[]
       call      qword ptr [0B858]
       mov       rcx,1C3B3007D80
       mov       rdx,rax
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F7D3
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 107
; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfAny(Void*, System.Object)
       push      rdi
       push      rsi
       test      rdx,rdx
       je        near ptr 000000000000F788
       mov       rax,[rdx]
       cmp       rax,rcx
       je        near ptr 000000000000F788
       mov       r8,1C3B3000D10
       mov       r8,[r8]
       add       r8,10
       rorx      r9,rax,20
       xor       r9,rcx
       mov       r10,79B97F4A7C15
       imul      r9,r10
       mov       r10d,[r8]
       shrx      r9,r9,r10
       xor       r10d,r10d
       lea       r11d,[r9+1]
       movsxd    r11,r11d
       lea       r11,[r11+r11*2]
       lea       r11,[r8+r11*8]
       mov       esi,[r11]
       mov       rdi,[r11+8]
       and       esi,0FFFFFFFE
       cmp       rdi,rax
       jne       short 000000000000F765
       mov       rdi,[r11+10]
       xor       rdi,rcx
       cmp       rdi,1
       ja        short 000000000000F765
       cmp       esi,[r11]
       jne       short 000000000000F779
       mov       r8d,edi
       cmp       r8d,1
       je        short 000000000000F788
       jmp       short 000000000000F781
       test      esi,esi
       je        short 000000000000F779
       inc       r10d
       add       r9d,r10d
       and       r9d,[r8+4]
       cmp       r10d,8
       jl        short 000000000000F72A
       mov       r8d,2
       jmp       short 000000000000F75D
       test      r8d,r8d
       jne       short 000000000000F78E
       xor       edx,edx
       mov       rax,rdx
       pop       rsi
       pop       rdi
       ret
       pop       rsi
       pop       rdi
       jmp       near ptr 0000000000000580
; Total bytes of code 181
; System.Runtime.CompilerServices.CastHelpers.ChkCastAny(Void*, System.Object)
       push      rdi
       push      rsi
       sub       rsp,28
       test      rdx,rdx
       je        short 000000000000F67D
       mov       rax,[rdx]
       cmp       rax,rcx
       je        short 000000000000F67D
       mov       r8,1C3B3000D10
       mov       r8,[r8]
       add       r8,10
       rorx      r9,rax,20
       xor       r9,rcx
       mov       r10,79B97F4A7C15
       imul      r9,r10
       mov       r10d,[r8]
       shrx      r9,r9,r10
       xor       r10d,r10d
       lea       r11d,[r9+1]
       movsxd    r11,r11d
       lea       r11,[r11+r11*2]
       lea       r11,[r8+r11*8]
       mov       esi,[r11]
       mov       rdi,[r11+8]
       and       esi,0FFFFFFFE
       cmp       rdi,rax
       jne       short 000000000000F687
       mov       rdi,[r11+10]
       xor       rdi,rcx
       cmp       rdi,1
       ja        short 000000000000F687
       cmp       esi,[r11]
       jne       short 000000000000F69B
       mov       eax,edi
       cmp       eax,1
       jne       short 000000000000F6A5
       mov       rax,rdx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       test      esi,esi
       je        short 000000000000F69B
       inc       r10d
       add       r9d,r10d
       and       r9d,[r8+4]
       cmp       r10d,8
       jl        short 000000000000F646
       mov       eax,2
       cmp       eax,1
       je        short 000000000000F67D
       call      0000000000007530
       nop
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 178

Compare Jit Disasm

; PerfLabTests.CastingPerf.FooObjCastIfIsa()
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       xor       esi,esi
       mov       edi,[0BE50]
       test      edi,edi
       jle       short 000000000000F823
       mov       rdx,27F46007D70
       mov       rbx,[rdx]
       mov       rdx,rbx
       mov       rcx,offset MT_PerfLabTests.Foo[]
       call      qword ptr [0B7F8]
       test      rax,rax
       je        short 000000000000F81D
       mov       rdx,rbx
       mov       rcx,offset MT_PerfLabTests.Foo[]
       call      qword ptr [0B858]
       mov       rcx,27F46007D80
       mov       rdx,rax
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F7D3
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 107
; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfAny(Void*, System.Object)
       push      rdi
       push      rsi
       test      rdx,rdx
       je        near ptr 000000000000F788
       mov       rax,[rdx]
       cmp       rax,rcx
       je        near ptr 000000000000F788
       mov       r8,27F46000D10
       mov       r8,[r8]
       add       r8,10
       rorx      r9,rax,20
       xor       r9,rcx
       mov       r10,79B97F4A7C15
       imul      r9,r10
       mov       r10d,[r8]
       shrx      r9,r9,r10
       xor       r10d,r10d
       lea       r11d,[r9+1]
       movsxd    r11,r11d
       lea       r11,[r11+r11*2]
       lea       r11,[r8+r11*8]
       mov       esi,[r11]
       mov       rdi,[r11+8]
       and       esi,0FFFFFFFE
       cmp       rdi,rax
       jne       short 000000000000F765
       mov       rdi,[r11+10]
       xor       rdi,rcx
       cmp       rdi,1
       ja        short 000000000000F765
       cmp       esi,[r11]
       jne       short 000000000000F779
       mov       r8d,edi
       cmp       r8d,1
       je        short 000000000000F788
       jmp       short 000000000000F781
       test      esi,esi
       je        short 000000000000F779
       inc       r10d
       add       r9d,r10d
       and       r9d,[r8+4]
       cmp       r10d,8
       jl        short 000000000000F72A
       mov       r8d,2
       jmp       short 000000000000F75D
       test      r8d,r8d
       jne       short 000000000000F78E
       xor       edx,edx
       mov       rax,rdx
       pop       rsi
       pop       rdi
       ret
       pop       rsi
       pop       rdi
       jmp       near ptr 0000000000008DE0
; Total bytes of code 181
; System.Runtime.CompilerServices.CastHelpers.ChkCastAny(Void*, System.Object)
       push      rdi
       push      rsi
       sub       rsp,28
       test      rdx,rdx
       je        short 000000000000F67D
       mov       rax,[rdx]
       cmp       rax,rcx
       je        short 000000000000F67D
       mov       r8,27F46000D10
       mov       r8,[r8]
       add       r8,10
       rorx      r9,rax,20
       xor       r9,rcx
       mov       r10,79B97F4A7C15
       imul      r9,r10
       mov       r10d,[r8]
       shrx      r9,r9,r10
       xor       r10d,r10d
       lea       r11d,[r9+1]
       movsxd    r11,r11d
       lea       r11,[r11+r11*2]
       lea       r11,[r8+r11*8]
       mov       esi,[r11]
       mov       rdi,[r11+8]
       and       esi,0FFFFFFFE
       cmp       rdi,rax
       jne       short 000000000000F687
       mov       rdi,[r11+10]
       xor       rdi,rcx
       cmp       rdi,1
       ja        short 000000000000F687
       cmp       esi,[r11]
       jne       short 000000000000F69B
       mov       eax,edi
       cmp       eax,1
       jne       short 000000000000F6A5
       mov       rax,rdx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       test      esi,esi
       je        short 000000000000F69B
       inc       r10d
       add       r9d,r10d
       and       r9d,[r8+4]
       cmp       r10d,8
       jl        short 000000000000F646
       mov       eax,2
       cmp       eax,1
       je        short 000000000000F67D
       call      000000000000DCD0
       nop
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 178

PerfLabTests.CastingPerf.ObjFooIsObj


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 312.71266071428573 > 196.45599373282968.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -52.17923382601075 (T) = (0 -314209.0636257831) / Math.Sqrt((166755685.9819521 / (20)) + (5498792.018123965 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.9359368210326332 = (162303.36662442487 - 314209.0636257831) / 162303.36662442487 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.CastingPerf.ObjFooIsObj()
       push      rdi
       push      rsi
       xor       esi,esi
       mov       edi,[0BD08]
       test      edi,edi
       jle       short 000000000000F650
       mov       rdx,267DD407D40
       mov       rdx,[rdx]
       mov       rcx,267DD407D70
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F62E
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 51

Compare Jit Disasm

; PerfLabTests.CastingPerf.ObjFooIsObj()
       push      rdi
       push      rsi
       xor       esi,esi
       mov       edi,[0BE50]
       test      edi,edi
       jle       short 000000000000F650
       mov       rdx,1A259C07D40
       mov       rdx,[rdx]
       mov       rcx,1A259C07D70
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F62E
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 51

PerfLabTests.CastingPerf.ObjFooIsObj2


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 311.84742647058823 > 163.72453441546082.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -45.44280588120533 (T) = (0 -312480.04789004894) / Math.Sqrt((166457716.89048722 / (20)) + (1586437.200995391 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.7257585485692484 = (181068.23121294263 - 312480.04789004894) / 181068.23121294263 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.CastingPerf.ObjFooIsObj2()
       push      rdi
       push      rsi
       xor       esi,esi
       mov       edi,[0BD08]
       test      edi,edi
       jle       short 000000000000F670
       mov       rdx,26632807D40
       mov       rdx,[rdx]
       mov       rcx,26632807D78
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F64E
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 51

Compare Jit Disasm

; PerfLabTests.CastingPerf.ObjFooIsObj2()
       push      rdi
       push      rsi
       xor       esi,esi
       mov       edi,[0BE50]
       test      edi,edi
       jle       short 000000000000F670
       mov       rdx,1EB43807D40
       mov       rdx,[rdx]
       mov       rcx,1EB43807D78
       call      0000000000000010
       inc       esi
       cmp       esi,edi
       jl        short 000000000000F64E
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 51

Docs

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

@performanceautofiler
Copy link
Author

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in PerfLabTests.LowLevelPerf

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
GenericClassWithSTringGenericInstanceMethod - Duration of single invocation 155.92 μs 286.46 μs 1.84 0.00 False Trace Trace

graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'PerfLabTests.LowLevelPerf*'

Payloads

Baseline
Compare

Histogram

PerfLabTests.LowLevelPerf.GenericClassWithSTringGenericInstanceMethod


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 286.4577622377622 > 163.72123442914602.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -224.8245547860829 (T) = (0 -290906.93211424083) / Math.Sqrt((248586.73143835954 / (20)) + (13863400.423955798 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.86243620383814 = (156196.99161492614 - 290906.93211424083) / 156196.99161492614 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.LowLevelPerf.GenericClassWithSTringGenericInstanceMethod()
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       mov       rdx,2BA5BC07E20
       mov       rsi,[rdx]
       mov       rdx,2BA5BC07E00
       mov       rdi,[rdx]
       xor       ebx,ebx
       mov       ebp,[0BD18]
       test      ebp,ebp
       jle       short 000000000000F1BC
       lea       rcx,[rsi+8]
       mov       rdx,rdi
       call      0000000000000010
       inc       ebx
       cmp       ebx,ebp
       jl        short 000000000000F1AA
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 65

Compare Jit Disasm

; PerfLabTests.LowLevelPerf.GenericClassWithSTringGenericInstanceMethod()
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       mov       rdx,19D9C407E20
       mov       rsi,[rdx]
       mov       rdx,19D9C407E00
       mov       rdi,[rdx]
       xor       ebx,ebx
       mov       ebp,[0BE60]
       test      ebp,ebp
       jle       short 000000000000F1BC
       lea       rcx,[rsi+8]
       mov       rdx,rdi
       call      0000000000000010
       inc       ebx
       cmp       ebx,ebp
       jl        short 000000000000F1AA
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 65

Docs

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

### Run Information
Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in System.Xml.Linq.Perf_XName

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
NonEmptyNameSpaceToString - Duration of single invocation 22.81 ns 25.39 ns 1.11 0.04 False 259.2485498445062 270.1729966101177 1.0421388924727402 Trace Trace
EmptyNameSpaceToString - Duration of single invocation 0.10 ns 1.57 ns 15.84 0.34 False 11.785998788075005 13.743098018284593 1.166052895931889 Trace Trace

graph
graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Xml.Linq.Perf_XName*'

Payloads

Baseline
Compare

Histogram

System.Xml.Linq.Perf_XName.NonEmptyNameSpaceToString


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 25.39128425518338 > 23.894595756808883.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -36.61123670443105 (T) = (0 -25.628689567755963) / Math.Sqrt((0.05800106220251013 / (20)) + (0.16279641549277274 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.13541185055430593 = (22.572152611622016 - 25.628689567755963) / 22.572152611622016 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.Xml.Linq.Perf_XName.NonEmptyNameSpaceToString()
       mov       rcx,[rcx+10]
       cmp       [rcx],ecx
       jmp       qword ptr [0FF80]
; Total bytes of code 12
; System.Xml.Linq.XName.ToString()
       mov       rax,[rcx+8]
       mov       rdx,[rax+8]
       cmp       dword ptr [rdx+8],0
       jne       short 0000000000000A93
       mov       rax,[rcx+10]
       ret
       mov       r9,[rcx+10]
       mov       r8,271B7C020E0
       mov       r8,[r8]
       mov       rcx,271B7C058C0
       mov       rcx,[rcx]
       jmp       qword ptr [1C90]
; Total bytes of code 55

Compare Jit Disasm

; System.Xml.Linq.Perf_XName.NonEmptyNameSpaceToString()
       mov       rcx,[rcx+10]
       cmp       [rcx],ecx
       jmp       qword ptr [1F28]
; Total bytes of code 12
; System.Xml.Linq.XName.ToString()
       mov       rax,[rcx+8]
       mov       rdx,[rax+8]
       cmp       dword ptr [rdx+8],0
       jne       short 0000000000000A93
       mov       rax,[rcx+10]
       ret
       mov       r9,[rcx+10]
       mov       r8,184850020E0
       mov       r8,[r8]
       mov       rcx,184850058B0
       mov       rcx,[rcx]
       jmp       qword ptr [1C90]
; Total bytes of code 55

System.Xml.Linq.Perf_XName.EmptyNameSpaceToString


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.5690657920227369 > 0.10413111233625137.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -849.7493519010446 (T) = (0 -1.5633504007389933) / Math.Sqrt((1.1884189390919148E-05 / (20)) + (9.48171390225897E-05 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -14.595851150047816 = (0.10024142867856238 - 1.5633504007389933) / 0.10024142867856238 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.Xml.Linq.Perf_XName.EmptyNameSpaceToString()
       mov       rcx,[rcx+8]
       cmp       [rcx],ecx
       jmp       qword ptr [0FF80]
; Total bytes of code 12
; System.Xml.Linq.XName.ToString()
       mov       rax,[rcx+8]
       mov       rdx,[rax+8]
       cmp       dword ptr [rdx+8],0
       jne       short 0000000000000683
       mov       rax,[rcx+10]
       ret
       mov       r9,[rcx+10]
       mov       r8,24C3A0020E0
       mov       r8,[r8]
       mov       rcx,24C3A0058B8
       mov       rcx,[rcx]
       jmp       qword ptr [1C90]
; Total bytes of code 55

Compare Jit Disasm

; System.Xml.Linq.Perf_XName.EmptyNameSpaceToString()
       mov       rcx,[rcx+8]
       cmp       [rcx],ecx
       jmp       qword ptr [1F28]
; Total bytes of code 12
; System.Xml.Linq.XName.ToString()
       mov       rax,[rcx+8]
       mov       rdx,[rax+8]
       cmp       dword ptr [rdx+8],0
       jne       short 0000000000000683
       mov       rax,[rcx+10]
       ret
       mov       r9,[rcx+10]
       mov       r8,17065C020E0
       mov       r8,[r8]
       mov       rcx,17065C058A8
       mov       rcx,[rcx]
       jmp       qword ptr [1C90]
; Total bytes of code 55

Docs

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

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in Microsoft.Extensions.Primitives.Performance.StringValuesBenchmark

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
Indexer_FirstElement_String - Duration of single invocation 0.07 ns 1.78 ns 24.91 0.21 False Trace Trace
Indexer_FirstElement_Array - Duration of single invocation 0.00 ns 1.30 ns 0.00 False 21.782201852382318 23.72796954865694 1.0893283291313276 Trace Trace

graph
graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'Microsoft.Extensions.Primitives.Performance.StringValuesBenchmark*'

Payloads

Baseline
Compare

Histogram

Microsoft.Extensions.Primitives.Performance.StringValuesBenchmark.Indexer_FirstElement_String


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.7780615364445667 > 0.06845500569507582.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -274.2002226866174 (T) = (0 -1.7946844181714106) / Math.Sqrt((0.0008181304821817978 / (20)) + (5.0919259110537075E-05 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -128.3887517657774 = (0.013870482508558324 - 1.7946844181714106) / 0.013870482508558324 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
; Microsoft.Extensions.Primitives.Performance.StringValuesBenchmark.Indexer_FirstElement_String()
       sub       rsp,28
       mov       rax,[rcx+18]
       mov       rdx,rax
       test      rdx,rdx
       je        short 000000000000F591
       mov       rcx,offset MT_System.String
       cmp       [rdx],rcx
       je        short 000000000000F591
       xor       edx,edx
       test      rdx,rdx
       je        short 000000000000F598
       jmp       short 000000000000F5A7
       test      rax,rax
       je        short 000000000000F5AF
       cmp       dword ptr [rax+8],0
       jbe       short 000000000000F5B9
       mov       rdx,[rax+10]
       mov       rax,rdx
       add       rsp,28
       ret
       add       rsp,28
       jmp       qword ptr [0B2A0]
       call      0000000000006930
       int       3
; Total bytes of code 79

Compare Jit Disasm

; Microsoft.Extensions.Primitives.Performance.StringValuesBenchmark.Indexer_FirstElement_String()
       sub       rsp,28
       mov       rax,[rcx+18]
       mov       rdx,rax
       test      rdx,rdx
       je        short 000000000000F591
       mov       rcx,offset MT_System.String
       cmp       [rdx],rcx
       je        short 000000000000F591
       xor       edx,edx
       test      rdx,rdx
       je        short 000000000000F598
       jmp       short 000000000000F5A7
       test      rax,rax
       je        short 000000000000F5AF
       cmp       dword ptr [rax+8],0
       jbe       short 000000000000F5B9
       mov       rdx,[rax+10]
       mov       rax,rdx
       add       rsp,28
       ret
       add       rsp,28
       jmp       qword ptr [0B2A0]
       call      000000000000AB50
       int       3
; Total bytes of code 79

Microsoft.Extensions.Primitives.Performance.StringValuesBenchmark.Indexer_FirstElement_Array


Description of detection logic

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 1.2970351006992757 > 0.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -1426.1177799879706 (T) = (0 -1.291449155758064) / Math.Sqrt((0 / (20)) + (3.280226462517478E-05 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -∞ = (0 - 1.291449155758064) / 0 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
; Microsoft.Extensions.Primitives.Performance.StringValuesBenchmark.Indexer_FirstElement_Array()
       sub       rsp,28
       mov       rax,[rcx+20]
       mov       rdx,rax
       test      rdx,rdx
       je        short 000000000000F591
       mov       rcx,offset MT_System.String
       cmp       [rdx],rcx
       je        short 000000000000F591
       xor       edx,edx
       test      rdx,rdx
       je        short 000000000000F598
       jmp       short 000000000000F5A7
       test      rax,rax
       je        short 000000000000F5AF
       cmp       dword ptr [rax+8],0
       jbe       short 000000000000F5B9
       mov       rdx,[rax+10]
       mov       rax,rdx
       add       rsp,28
       ret
       add       rsp,28
       jmp       qword ptr [0B2A0]
       call      0000000000006930
       int       3
; Total bytes of code 79

Compare Jit Disasm

; Microsoft.Extensions.Primitives.Performance.StringValuesBenchmark.Indexer_FirstElement_Array()
       sub       rsp,28
       mov       rax,[rcx+20]
       mov       rdx,rax
       test      rdx,rdx
       je        short 000000000000F591
       mov       rcx,offset MT_System.String
       cmp       [rdx],rcx
       je        short 000000000000F591
       xor       edx,edx
       test      rdx,rdx
       je        short 000000000000F598
       jmp       short 000000000000F5A7
       test      rax,rax
       je        short 000000000000F5AF
       cmp       dword ptr [rax+8],0
       jbe       short 000000000000F5B9
       mov       rdx,[rax+10]
       mov       rax,rdx
       add       rsp,28
       ret
       add       rsp,28
       jmp       qword ptr [0B2A0]
       call      000000000000AB50
       int       3
; Total bytes of code 79

Docs

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

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in System.Tests.Perf_Boolean

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
ToString - Duration of single invocation 0.51 ns 1.90 ns 3.72 0.31 False Trace Trace

graph
Test Report

Repro

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

Payloads

Baseline
Compare

Histogram

System.Tests.Perf_Boolean.ToString(value: False)


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.9010209432385652 > 0.5374655183359799.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -57.98162290035375 (T) = (0 -1.8838872345177236) / Math.Sqrt((0.01335223075130347 / (20)) + (0.0035096001094690457 / (39))) is less than -2.0024654592901125 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (39) - 2, .025) and -5.541986068305912 = (0.2879687016829077 - 1.8838872345177236) / 0.2879687016829077 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_Boolean.ToString(Boolean)
       mov       [rsp+10],edx
       cmp       byte ptr [rsp+10],0
       je        short 000000000000F379
       mov       rax,29CC58058A8
       mov       rax,[rax]
       ret
       mov       rax,29CC58058A0
       mov       rax,[rax]
       jmp       short 000000000000F378
; Total bytes of code 40

Compare Jit Disasm

; System.Tests.Perf_Boolean.ToString(Boolean)
       mov       [rsp+10],edx
       cmp       byte ptr [rsp+10],0
       je        short 000000000000F379
       mov       rax,1AA23805898
       mov       rax,[rax]
       ret
       mov       rax,1AA23805890
       mov       rax,[rax]
       jmp       short 000000000000F378
; Total bytes of code 40

Docs

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

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in System.Tests.Perf_Byte

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
ToString - Duration of single invocation 1.20 ns 2.66 ns 2.21 0.11 False Trace Trace
ToString - Duration of single invocation 9.14 ns 10.96 ns 1.20 0.08 False Trace Trace

graph
graph
Test Report

Repro

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

Payloads

Baseline
Compare

Histogram

System.Tests.Perf_Byte.ToString(value: 0)


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 2.6603789448252697 > 1.2602111137171186.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -152.87416206268608 (T) = (0 -2.664685372559617) / Math.Sqrt((0.0016575371758040089 / (17)) + (0.000101125899565318 / (40))) is less than -2.0040447832881556 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (17) + (40) - 2, .025) and -1.3462687725558367 = (1.1357119029704865 - 2.664685372559617) / 1.1357119029704865 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_Byte.ToString(Byte)
       sub       rsp,28
       movzx     ecx,dl
       call      qword ptr [93F0]
       nop
       add       rsp,28
       ret
; Total bytes of code 19
; System.Number.UInt32ToDecStr(UInt32)
       push      rdi
       push      rsi
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       mov       esi,ecx
       mov       eax,esi
       mov       ecx,1
       cmp       eax,186A0
       jae       near ptr 000000000000F43D
       cmp       eax,0A
       jae       short 000000000000F3B1
       mov       edi,ecx
       cmp       edi,1
       jne       short 000000000000F3BA
       mov       rax,1658BC002C8
       mov       rax,[rax]
       cmp       esi,[rax+8]
       jae       near ptr 000000000000F45E
       mov       ecx,esi
       mov       rax,[rax+rcx*8+10]
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       eax,64
       jae       short 000000000000F417
       inc       ecx
       jmp       short 000000000000F386
       mov       ecx,edi
       call      0
       test      rax,rax
       je        near ptr 000000000000F457
       lea       rdx,[rax+0C]
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       movsxd    rcx,edi
       lea       rdx,[rdx+rcx*2]
       mov       ecx,0CCCCCCCD
       mov       r8d,esi
       imul      rcx,r8
       shr       rcx,23
       lea       r8d,[rcx+rcx*4]
       add       r8d,r8d
       sub       esi,r8d
       add       rdx,0FFFFFFFFFFFFFFFE
       add       esi,30
       mov       [rdx],si
       test      ecx,ecx
       mov       esi,ecx
       jne       short 000000000000F3DF
       xor       edx,edx
       mov       [rsp+20],rdx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       eax,3E8
       jae       short 000000000000F426
       add       ecx,2
       jmp       near ptr 000000000000F386
       cmp       eax,2710
       jae       short 000000000000F435
       add       ecx,3
       jmp       near ptr 000000000000F386
       add       ecx,4
       jmp       near ptr 000000000000F386
       mov       eax,esi
       shr       eax,5
       imul      rax,0A7C5AC5
       shr       rax,27
       mov       ecx,6
       jmp       near ptr 000000000000F381
       xor       edx,edx
       jmp       near ptr 000000000000F3D8
       call      0000000000006930
       int       3
; Total bytes of code 260

Compare Jit Disasm

; System.Tests.Perf_Byte.ToString(Byte)
       sub       rsp,28
       movzx     ecx,dl
       call      qword ptr [93F0]
       nop
       add       rsp,28
       ret
; Total bytes of code 19
; System.Number.UInt32ToDecStr(UInt32)
       push      rdi
       push      rsi
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       mov       esi,ecx
       mov       eax,esi
       mov       ecx,1
       cmp       eax,186A0
       jae       near ptr 000000000000F43D
       cmp       eax,0A
       jae       short 000000000000F3B1
       mov       edi,ecx
       cmp       edi,1
       jne       short 000000000000F3BA
       mov       rax,27AF70002C8
       mov       rax,[rax]
       cmp       esi,[rax+8]
       jae       near ptr 000000000000F45E
       mov       ecx,esi
       mov       rax,[rax+rcx*8+10]
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       eax,64
       jae       short 000000000000F417
       inc       ecx
       jmp       short 000000000000F386
       mov       ecx,edi
       call      0
       test      rax,rax
       je        near ptr 000000000000F457
       lea       rdx,[rax+0C]
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       movsxd    rcx,edi
       lea       rdx,[rdx+rcx*2]
       mov       ecx,0CCCCCCCD
       mov       r8d,esi
       imul      rcx,r8
       shr       rcx,23
       lea       r8d,[rcx+rcx*4]
       add       r8d,r8d
       sub       esi,r8d
       add       rdx,0FFFFFFFFFFFFFFFE
       add       esi,30
       mov       [rdx],si
       test      ecx,ecx
       mov       esi,ecx
       jne       short 000000000000F3DF
       xor       edx,edx
       mov       [rsp+20],rdx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       eax,3E8
       jae       short 000000000000F426
       add       ecx,2
       jmp       near ptr 000000000000F386
       cmp       eax,2710
       jae       short 000000000000F435
       add       ecx,3
       jmp       near ptr 000000000000F386
       add       ecx,4
       jmp       near ptr 000000000000F386
       mov       eax,esi
       shr       eax,5
       imul      rax,0A7C5AC5
       shr       rax,27
       mov       ecx,6
       jmp       near ptr 000000000000F381
       xor       edx,edx
       jmp       near ptr 000000000000F3D8
       call      000000000000AB50
       int       3
; Total bytes of code 260

System.Tests.Perf_Byte.ToString(value: 255)


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 10.955696110424132 > 9.233288750648653.
IsChangePoint: Marked as a change because one of 6/27/2022 8:54:23 AM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -42.663389963502134 (T) = (0 -11.232847275614487) / Math.Sqrt((0.06704961991396165 / (20)) + (0.03620532705043479 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.329481421319573 = (8.449044187819757 - 11.232847275614487) / 8.449044187819757 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_Byte.ToString(Byte)
       sub       rsp,28
       movzx     ecx,dl
       call      qword ptr [93F0]
       nop
       add       rsp,28
       ret
; Total bytes of code 19
; System.Number.UInt32ToDecStr(UInt32)
       push      rdi
       push      rsi
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       mov       esi,ecx
       mov       eax,esi
       mov       ecx,1
       cmp       eax,186A0
       jae       near ptr 000000000000F43D
       cmp       eax,0A
       jae       short 000000000000F3B1
       mov       edi,ecx
       cmp       edi,1
       jne       short 000000000000F3BA
       mov       rax,281B7C002C8
       mov       rax,[rax]
       cmp       esi,[rax+8]
       jae       near ptr 000000000000F45E
       mov       ecx,esi
       mov       rax,[rax+rcx*8+10]
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       eax,64
       jae       short 000000000000F417
       inc       ecx
       jmp       short 000000000000F386
       mov       ecx,edi
       call      0
       test      rax,rax
       je        near ptr 000000000000F457
       lea       rdx,[rax+0C]
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       movsxd    rcx,edi
       lea       rdx,[rdx+rcx*2]
       mov       ecx,0CCCCCCCD
       mov       r8d,esi
       imul      rcx,r8
       shr       rcx,23
       lea       r8d,[rcx+rcx*4]
       add       r8d,r8d
       sub       esi,r8d
       add       rdx,0FFFFFFFFFFFFFFFE
       add       esi,30
       mov       [rdx],si
       test      ecx,ecx
       mov       esi,ecx
       jne       short 000000000000F3DF
       xor       edx,edx
       mov       [rsp+20],rdx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       eax,3E8
       jae       short 000000000000F426
       add       ecx,2
       jmp       near ptr 000000000000F386
       cmp       eax,2710
       jae       short 000000000000F435
       add       ecx,3
       jmp       near ptr 000000000000F386
       add       ecx,4
       jmp       near ptr 000000000000F386
       mov       eax,esi
       shr       eax,5
       imul      rax,0A7C5AC5
       shr       rax,27
       mov       ecx,6
       jmp       near ptr 000000000000F381
       xor       edx,edx
       jmp       near ptr 000000000000F3D8
       call      0000000000006930
       int       3
; Total bytes of code 260

Compare Jit Disasm

; System.Tests.Perf_Byte.ToString(Byte)
       sub       rsp,28
       movzx     ecx,dl
       call      qword ptr [93F0]
       nop
       add       rsp,28
       ret
; Total bytes of code 19
; System.Number.UInt32ToDecStr(UInt32)
       push      rdi
       push      rsi
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       mov       esi,ecx
       mov       eax,esi
       mov       ecx,1
       cmp       eax,186A0
       jae       near ptr 000000000000F43D
       cmp       eax,0A
       jae       short 000000000000F3B1
       mov       edi,ecx
       cmp       edi,1
       jne       short 000000000000F3BA
       mov       rax,1B9C94002C8
       mov       rax,[rax]
       cmp       esi,[rax+8]
       jae       near ptr 000000000000F45E
       mov       ecx,esi
       mov       rax,[rax+rcx*8+10]
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       eax,64
       jae       short 000000000000F417
       inc       ecx
       jmp       short 000000000000F386
       mov       ecx,edi
       call      0
       test      rax,rax
       je        near ptr 000000000000F457
       lea       rdx,[rax+0C]
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       movsxd    rcx,edi
       lea       rdx,[rdx+rcx*2]
       mov       ecx,0CCCCCCCD
       mov       r8d,esi
       imul      rcx,r8
       shr       rcx,23
       lea       r8d,[rcx+rcx*4]
       add       r8d,r8d
       sub       esi,r8d
       add       rdx,0FFFFFFFFFFFFFFFE
       add       esi,30
       mov       [rdx],si
       test      ecx,ecx
       mov       esi,ecx
       jne       short 000000000000F3DF
       xor       edx,edx
       mov       [rsp+20],rdx
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
       cmp       eax,3E8
       jae       short 000000000000F426
       add       ecx,2
       jmp       near ptr 000000000000F386
       cmp       eax,2710
       jae       short 000000000000F435
       add       ecx,3
       jmp       near ptr 000000000000F386
       add       ecx,4
       jmp       near ptr 000000000000F386
       mov       eax,esi
       shr       eax,5
       imul      rax,0A7C5AC5
       shr       rax,27
       mov       ecx,6
       jmp       near ptr 000000000000F381
       xor       edx,edx
       jmp       near ptr 000000000000F3D8
       call      000000000000AB50
       int       3
; Total bytes of code 260

Docs

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

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
Diff Diff

Regressions in Benchstone.MDBenchI.MDNDhrystone

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
Test - Duration of single invocation 401.22 ms 488.07 ms 1.22 0.20 False Trace Trace

graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'Benchstone.MDBenchI.MDNDhrystone*'

Payloads

Baseline
Compare

Histogram

Benchstone.MDBenchI.MDNDhrystone.Test


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 488.0682333333333 > 422.41604100000006.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -15.646167873959433 (T) = (0 -467109987.8814101) / Math.Sqrt((96764710901163.23 / (20)) + (403027370175441.3 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.14857435320406437 = (406686764.83882785 - 467109987.8814101) / 406686764.83882785 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
; 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+40],0B
       jne       short 0000000000005AC9
       mov       rcx,[rbp+10]
       call      qword ptr [0B240]
       nop
       add       rsp,20
       pop       rbp
       ret
       xor       eax,eax
       add       rsp,20
       pop       rbp
       ret
; Total bytes of code 49

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+40],0B
       jne       short 0000000000005AE9
       mov       rcx,[rbp+10]
       call      qword ptr [0B240]
       nop
       add       rsp,20
       pop       rbp
       ret
       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

@performanceautofiler
Copy link
Author

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 543bcc5ee7d6a2b9471b016770227421c43a756e
Compare 4211dc40d06195682d4b0fc9a220bdb75732d720
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
Replace_String - Duration of single invocation 11.68 ns 12.80 ns 1.10 0.12 False Trace Trace
TrimEnd_CharArr - Duration of single invocation 3.86 ns 5.33 ns 1.38 0.05 False 77.66776281552794 79.6740942399111 1.0258322288637114 Trace Trace
Remove_IntInt - Duration of single invocation 11.74 ns 13.66 ns 1.16 0.11 False 146.2264979367539 155.55213028446744 1.0637752560534348 Trace Trace
Substring_IntInt - Duration of single invocation 7.24 ns 9.68 ns 1.34 0.12 False 99.98221308472912 106.83750911274561 1.0685651559063511 Trace Trace
Replace_Char - Duration of single invocation 22.10 ns 25.20 ns 1.14 0.02 False Trace Trace
Trim_CharArr - Duration of single invocation 15.00 ns 17.14 ns 1.14 0.03 False 191.66672813114388 202.5172726008332 1.0566115182091753
GetChars - Duration of single invocation 18.23 ns 20.47 ns 1.12 0.09 False Trace Trace
Trim_CharArr - Duration of single invocation 15.89 ns 18.14 ns 1.14 0.03 False 191.62163728835773 204.04180630927507 1.0648161094784254 Trace Trace
TrimEnd_CharArr - Duration of single invocation 14.63 ns 16.46 ns 1.13 0.04 False 168.16779044264845 178.53189031726257 1.0616295180387034 Trace Trace
ToLowerInvariant - Duration of single invocation 3.31 ns 4.96 ns 1.50 0.04 False 72.68318801376047 74.98045377132614 1.03160656295278 Trace Trace
ToUpperInvariant - Duration of single invocation 3.66 ns 5.04 ns 1.38 0.08 False 72.70919168328406 74.63459964703284 1.0264809430441164
CtorCharCount - Duration of single invocation 8.56 ns 10.73 ns 1.25 0.07 False 79.0143526915497 88.94588981346742 1.125692823944122 Trace Trace
Insert - Duration of single invocation 15.52 ns 17.79 ns 1.15 0.02 False 173.90261581883192 183.2055257794358 1.053494939778798
PadLeft - Duration of single invocation 11.78 ns 13.44 ns 1.14 0.14 False Trace Trace
Substring_IntInt - Duration of single invocation 9.64 ns 10.95 ns 1.14 0.07 False 99.4603275758508 104.03268581075433 1.045971678822559 Trace Trace
TrimStart_CharArr - Duration of single invocation 13.06 ns 15.36 ns 1.18 0.04 False 161.6767556101801 172.23260033356067 1.0652898104216777
Insert - Duration of single invocation 15.71 ns 17.63 ns 1.12 0.05 False 176.4135117950563 183.8900687459035 1.042380863431441 Trace Trace
Remove_IntInt - Duration of single invocation 11.15 ns 12.49 ns 1.12 0.09 False 143.32995014947738 154.4719528088091 1.077736737141901 Trace Trace
TrimStart_CharArr - Duration of single invocation 3.85 ns 5.45 ns 1.42 0.04 False 71.70820529267856 73.6658246112436 1.0272997951988196 Trace Trace
Substring_IntInt - Duration of single invocation 8.05 ns 10.44 ns 1.30 0.15 False 96.64453851215693 102.6218466326982 1.061848379769431 Trace Trace
Concat_str_str - Duration of single invocation 32.43 ns 37.27 ns 1.15 0.15 False 276.020259121131 285.4128471269844 1.0340286181737532 Trace Trace
CtorCharCount - Duration of single invocation 11.30 ns 12.99 ns 1.15 0.08 False 99.17452000987699 109.97742299813876 1.1089282104635938 Trace Trace
Replace_Char - Duration of single invocation 14.61 ns 17.16 ns 1.17 0.05 False Trace Trace
Trim_CharArr - Duration of single invocation 18.17 ns 20.57 ns 1.13 0.01 False 221.36990860030448 227.40410413392146 1.027258427180869
CtorCharCount - Duration of single invocation 21.60 ns 23.60 ns 1.09 0.05 False 136.35335998075863 147.1756643400915 1.0793695466020055 Trace Trace

graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
Test Report

Repro

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

Payloads

Baseline
Compare

Histogram

System.Tests.Perf_String.Replace_String(text: "This is a very nice sentence", oldValue: "bad", newValue: "nice")


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 12.802957532491615 > 12.257543733831978.
IsChangePoint: Marked as a change because one of 7/2/2022 7:35:06 PM, 7/6/2022 3:55:24 AM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -18.059506918065036 (T) = (0 -12.80442443596544) / Math.Sqrt((0.2152798931267891 / (20)) + (0.04448474671925866 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.1816185943432457 = (10.836343044417184 - 12.80442443596544) / 10.836343044417184 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.Replace_String(System.String, System.String, System.String)
       mov       rcx,rdx
       mov       rdx,r8
       mov       r8,r9
       cmp       [rcx],ecx
       jmp       qword ptr [30D8]
; Total bytes of code 17
; System.String.Replace(System.String, System.String)
       push      rbp
       push      r15
       push      r14
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,58
       lea       rbp,[rsp+20]
       xor       eax,eax
       mov       [rbp+8],rax
       vxorps    xmm4,xmm4,xmm4
       vmovdqa   xmmword ptr [rbp+10],xmm4
       vmovdqa   xmmword ptr [rbp+20],xmm4
       mov       [rbp+30],rax
       mov       rax,0BC07955ABE5F
       mov       [rbp],rax
       mov       rsi,rcx
       mov       rdi,rdx
       mov       rbx,r8
       test      rdi,rdi
       je        near ptr 000000000000F73B
       mov       r14d,[rdi+8]
       test      r14d,r14d
       je        near ptr 000000000000F73B
       test      rbx,rbx
       jne       short 000000000000F568
       mov       rdx,266ECC02028
       mov       rbx,[rdx]
       test      [rsp],esp
       sub       rsp,200
       lea       rdx,[rsp+20]
       mov       [rbp+28],rdx
       mov       dword ptr [rbp+30],80
       xor       edx,edx
       mov       [rbp+18],rdx
       mov       [rbp+20],edx
       cmp       r14d,1
       jne       near ptr 000000000000F629
       cmp       dword ptr [rbx+8],1
       jne       short 000000000000F5D0
       movzx     edx,word ptr [rdi+0C]
       movzx     r8d,word ptr [rbx+0C]
       mov       rcx,rsi
       call      qword ptr [30C0]
       mov       rcx,0BC07955ABE5F
       cmp       [rbp],rcx
       je        short 000000000000F5C2
       call      00000000000081F0
       nop
       lea       rsp,[rbp+38]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       pop       rbp
       ret
       movzx     edi,word ptr [rdi+0C]
       xor       r15d,r15d
       movsxd    rcx,r15d
       lea       rcx,[rsi+rcx*2+0C]
       mov       r8d,[rsi+8]
       sub       r8d,r15d
       mov       edx,edi
       call      qword ptr [0F408]
       test      eax,eax
       jl        near ptr 000000000000F67E
       add       r15d,eax
       mov       edx,r15d
       mov       ecx,[rbp+20]
       mov       rax,[rbp+28]
       mov       r8d,[rbp+30]
       cmp       ecx,r8d
       jae       short 000000000000F61A
       mov       r8d,ecx
       mov       [rax+r8*4],edx
       inc       ecx
       mov       [rbp+20],ecx
       jmp       short 000000000000F624
       lea       rcx,[rbp+18]
       call      qword ptr [5B58]
       inc       r15d
       jmp       short 000000000000F5D7
       xor       r15d,r15d
       movsxd    rcx,r15d
       lea       rcx,[rsi+rcx*2+0C]
       mov       edx,[rsi+8]
       sub       edx,r15d
       lea       r8,[rdi+0C]
       mov       r9d,r14d
       call      qword ptr [0F3A8]
       test      eax,eax
       jl        short 000000000000F67E
       add       r15d,eax
       mov       edx,r15d
       mov       ecx,[rbp+20]
       mov       rax,[rbp+28]
       mov       r8d,[rbp+30]
       cmp       ecx,r8d
       jae       short 000000000000F66F
       mov       r8d,ecx
       mov       [rax+r8*4],edx
       inc       ecx
       mov       [rbp+20],ecx
       jmp       short 000000000000F679
       lea       rcx,[rbp+18]
       call      qword ptr [5B58]
       add       r15d,r14d
       jmp       short 000000000000F62C
       cmp       dword ptr [rbp+20],0
       jne       short 000000000000F6AA
       mov       rax,rsi
       mov       rcx,0BC07955ABE5F
       cmp       [rbp],rcx
       je        short 000000000000F69C
       call      00000000000081F0
       nop
       lea       rsp,[rbp+38]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       pop       rbp
       ret
       mov       edx,r14d
       mov       ecx,[rbp+20]
       cmp       ecx,[rbp+30]
       ja        near ptr 000000000000F75C
       mov       r8,[rbp+28]
       mov       [rbp+8],r8
       mov       [rbp+10],ecx
       mov       rcx,rsi
       mov       r8,rbx
       lea       r9,[rbp+8]
       call      qword ptr [30F0]
       mov       rdi,rax
       mov       rsi,[rbp+18]
       test      rsi,rsi
       je        short 000000000000F715
       xor       ecx,ecx
       mov       [rbp+18],rcx
       mov       rcx,7FFB43F24BE0
       mov       edx,2F
       call      00000000000019F0
       mov       rcx,266ECC09578
       mov       rcx,[rcx]
       mov       rdx,rsi
       xor       r8d,r8d
       cmp       [rcx],ecx
       call      qword ptr [0B4D0]
       mov       rax,rdi
       mov       rcx,0BC07955ABE5F
       cmp       [rbp],rcx
       je        short 000000000000F72D
       call      00000000000081F0
       nop
       lea       rsp,[rbp+38]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       pop       rbp
       ret
       mov       ecx,16AF
       mov       rdx,7FFB43E04000
       call      00000000000014A0
       mov       rdx,rax
       mov       rcx,rdi
       call      qword ptr [0BC78]
       int       3
       call      qword ptr [0B498]
       int       3
; Total bytes of code 611

Compare Jit Disasm

; System.Tests.Perf_String.Replace_String(System.String, System.String, System.String)
       mov       rcx,rdx
       mov       rdx,r8
       mov       r8,r9
       cmp       [rcx],ecx
       jmp       qword ptr [30D8]
; Total bytes of code 17
; System.String.Replace(System.String, System.String)
       push      rbp
       push      r15
       push      r14
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,58
       lea       rbp,[rsp+20]
       xor       eax,eax
       mov       [rbp+8],rax
       vxorps    xmm4,xmm4,xmm4
       vmovdqa   xmmword ptr [rbp+10],xmm4
       vmovdqa   xmmword ptr [rbp+20],xmm4
       mov       [rbp+30],rax
       mov       rax,4F76AB8632A0
       mov       [rbp],rax
       mov       rsi,rcx
       mov       rdi,rdx
       mov       rbx,r8
       test      rdi,rdi
       je        near ptr 000000000000F73B
       mov       r14d,[rdi+8]
       test      r14d,r14d
       je        near ptr 000000000000F73B
       test      rbx,rbx
       jne       short 000000000000F568
       mov       rdx,1892DC02028
       mov       rbx,[rdx]
       test      [rsp],esp
       sub       rsp,200
       lea       rdx,[rsp+20]
       mov       [rbp+28],rdx
       mov       dword ptr [rbp+30],80
       xor       edx,edx
       mov       [rbp+18],rdx
       mov       [rbp+20],edx
       cmp       r14d,1
       jne       near ptr 000000000000F629
       cmp       dword ptr [rbx+8],1
       jne       short 000000000000F5D0
       movzx     edx,word ptr [rdi+0C]
       movzx     r8d,word ptr [rbx+0C]
       mov       rcx,rsi
       call      qword ptr [30C0]
       mov       rcx,4F76AB8632A0
       cmp       [rbp],rcx
       je        short 000000000000F5C2
       call      000000000000C410
       nop
       lea       rsp,[rbp+38]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       pop       rbp
       ret
       movzx     edi,word ptr [rdi+0C]
       xor       r15d,r15d
       movsxd    rcx,r15d
       lea       rcx,[rsi+rcx*2+0C]
       mov       r8d,[rsi+8]
       sub       r8d,r15d
       mov       edx,edi
       call      qword ptr [0F408]
       test      eax,eax
       jl        near ptr 000000000000F67E
       add       r15d,eax
       mov       edx,r15d
       mov       ecx,[rbp+20]
       mov       rax,[rbp+28]
       mov       r8d,[rbp+30]
       cmp       ecx,r8d
       jae       short 000000000000F61A
       mov       r8d,ecx
       mov       [rax+r8*4],edx
       inc       ecx
       mov       [rbp+20],ecx
       jmp       short 000000000000F624
       lea       rcx,[rbp+18]
       call      qword ptr [5B58]
       inc       r15d
       jmp       short 000000000000F5D7
       xor       r15d,r15d
       movsxd    rcx,r15d
       lea       rcx,[rsi+rcx*2+0C]
       mov       edx,[rsi+8]
       sub       edx,r15d
       lea       r8,[rdi+0C]
       mov       r9d,r14d
       call      qword ptr [0F3A8]
       test      eax,eax
       jl        short 000000000000F67E
       add       r15d,eax
       mov       edx,r15d
       mov       ecx,[rbp+20]
       mov       rax,[rbp+28]
       mov       r8d,[rbp+30]
       cmp       ecx,r8d
       jae       short 000000000000F66F
       mov       r8d,ecx
       mov       [rax+r8*4],edx
       inc       ecx
       mov       [rbp+20],ecx
       jmp       short 000000000000F679
       lea       rcx,[rbp+18]
       call      qword ptr [5B58]
       add       r15d,r14d
       jmp       short 000000000000F62C
       cmp       dword ptr [rbp+20],0
       jne       short 000000000000F6AA
       mov       rax,rsi
       mov       rcx,4F76AB8632A0
       cmp       [rbp],rcx
       je        short 000000000000F69C
       call      000000000000C410
       nop
       lea       rsp,[rbp+38]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       pop       rbp
       ret
       mov       edx,r14d
       mov       ecx,[rbp+20]
       cmp       ecx,[rbp+30]
       ja        near ptr 000000000000F75C
       mov       r8,[rbp+28]
       mov       [rbp+8],r8
       mov       [rbp+10],ecx
       mov       rcx,rsi
       mov       r8,rbx
       lea       r9,[rbp+8]
       call      qword ptr [30F0]
       mov       rdi,rax
       mov       rsi,[rbp+18]
       test      rsi,rsi
       je        short 000000000000F715
       xor       ecx,ecx
       mov       [rbp+18],rcx
       mov       rcx,7FFC6C7D4BF0
       mov       edx,2F
       call      0000000000001230
       mov       rcx,1892DC09578
       mov       rcx,[rcx]
       mov       rdx,rsi
       xor       r8d,r8d
       cmp       [rcx],ecx
       call      qword ptr [0B5D8]
       mov       rax,rdi
       mov       rcx,4F76AB8632A0
       cmp       [rbp],rcx
       je        short 000000000000F72D
       call      000000000000C410
       nop
       lea       rsp,[rbp+38]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       pop       rbp
       ret
       mov       ecx,16AF
       mov       rdx,7FFC6C6B4000
       call      000000000000A140
       mov       rdx,rax
       mov       rcx,rdi
       call      qword ptr [0BC78]
       int       3
       call      qword ptr [0B498]
       int       3
; Total bytes of code 611

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.3346523405184865 > 4.049686236340381.
IsChangePoint: Marked as a change because one of 6/17/2022 12:17:51 PM, 7/7/2022 7:02:29 PM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -11.35781038509533 (T) = (0 -5.360218066189844) / Math.Sqrt((0.11291852232101196 / (20)) + (0.00013704088295573777 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.1894308341552579 = (4.506540365583097 - 5.360218066189844) / 4.506540365583097 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 [34E0]
; Total bytes of code 14
; System.String.TrimEnd(Char[])
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       test      rdx,rdx
       je        short 000000000000F4D9
       mov       r8d,[rdx+8]
       test      r8d,r8d
       je        short 000000000000F4D9
       add       rdx,10
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       mov       r9d,2
       call      qword ptr [3510]
       nop
       add       rsp,28
       ret
       mov       edx,2
       call      qword ptr [34F8]
       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 [34F8]
; Total bytes of code 14
; System.String.TrimEnd(Char[])
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       test      rdx,rdx
       je        short 000000000000F4D9
       mov       r8d,[rdx+8]
       test      r8d,r8d
       je        short 000000000000F4D9
       add       rdx,10
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       mov       r9d,2
       call      qword ptr [3528]
       nop
       add       rsp,28
       ret
       mov       edx,2
       call      qword ptr [3510]
       nop
       add       rsp,28
       ret
; Total bytes of code 74

System.Tests.Perf_String.Remove_IntInt(s: "dzsdzsDDZSDZSDZSddsz", i1: 7, i2: 4)


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 13.655762250299848 > 12.35659499555022.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -37.45222832385644 (T) = (0 -13.735467078657615) / Math.Sqrt((0.026710720049350378 / (20)) + (0.05726181931202763 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.16744925363878577 = (11.765365420249292 - 13.735467078657615) / 11.765365420249292 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.Remove_IntInt(System.String, Int32, Int32)
       mov       rcx,rdx
       mov       edx,r8d
       mov       r8d,r9d
       cmp       [rcx],ecx
       jmp       qword ptr [3030]
; Total bytes of code 17
; System.String.Remove(Int32, Int32)
       push      r15
       push      r14
       push      r12
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,20
       mov       rbx,rcx
       mov       esi,edx
       mov       edi,r8d
       test      esi,esi
       jl        near ptr 000000000000F6FC
       test      edi,edi
       jl        near ptr 000000000000F759
       mov       ebp,[rbx+8]
       mov       ecx,ebp
       sub       ecx,esi
       cmp       ecx,edi
       jl        near ptr 000000000000F7B6
       test      edi,edi
       je        near ptr 000000000000F813
       sub       ebp,edi
       je        near ptr 000000000000F825
       mov       ecx,ebp
       call      0
       mov       r14,rax
       cmp       [r14],r14b
       lea       r15,[r14+0C]
       mov       rcx,r15
       add       rbx,0C
       mov       rdx,rbx
       movsxd    r12,esi
       add       r12,r12
       mov       r8,r12
       call      qword ptr [0BE10]
       lea       rcx,[r15+r12]
       add       edi,esi
       movsxd    r8,edi
       lea       rdx,[rbx+r8*2]
       sub       ebp,esi
       movsxd    r8,ebp
       add       r8,r8
       call      qword ptr [0BE10]
       mov       rax,r14
       add       rsp,20
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       ret
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,163D
       mov       rdx,7FF8E05C4000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,0A50B
       mov       rdx,7FF8E05C4000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [7030]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,1C7
       mov       rdx,7FF8E05C4000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,0A18D
       mov       rdx,7FF8E05C4000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [7030]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,1C7
       mov       rdx,7FF8E05C4000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,9AEF
       mov       rdx,7FF8E05C4000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [7030]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       mov       rax,rbx
       add       rsp,20
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       ret
       mov       rax,2706F802028
       mov       rax,[rax]
       add       rsp,20
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       ret
; Total bytes of code 481

Compare Jit Disasm

; System.Tests.Perf_String.Remove_IntInt(System.String, Int32, Int32)
       mov       rcx,rdx
       mov       edx,r8d
       mov       r8d,r9d
       cmp       [rcx],ecx
       jmp       qword ptr [3030]
; Total bytes of code 17
; System.String.Remove(Int32, Int32)
       push      r15
       push      r14
       push      r12
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,20
       mov       rbx,rcx
       mov       esi,edx
       mov       edi,r8d
       test      esi,esi
       jl        near ptr 000000000000F6FC
       test      edi,edi
       jl        near ptr 000000000000F759
       mov       ebp,[rbx+8]
       mov       ecx,ebp
       sub       ecx,esi
       cmp       ecx,edi
       jl        near ptr 000000000000F7B6
       test      edi,edi
       je        near ptr 000000000000F813
       sub       ebp,edi
       je        near ptr 000000000000F825
       mov       ecx,ebp
       call      0
       mov       r14,rax
       cmp       [r14],r14b
       lea       r15,[r14+0C]
       mov       rcx,r15
       add       rbx,0C
       mov       rdx,rbx
       movsxd    r12,esi
       add       r12,r12
       mov       r8,r12
       call      qword ptr [0BE10]
       lea       rcx,[r15+r12]
       add       edi,esi
       movsxd    r8,edi
       lea       rdx,[rbx+r8*2]
       sub       ebp,esi
       movsxd    r8,ebp
       add       r8,r8
       call      qword ptr [0BE10]
       mov       rax,r14
       add       rsp,20
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       ret
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      0000000000002AE0
       mov       rsi,rax
       mov       ecx,163D
       mov       rdx,7FFCBFAA4000
       call      000000000000A140
       mov       rdi,rax
       mov       ecx,0A50B
       mov       rdx,7FFCBFAA4000
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [7030]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000002B00
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      0000000000002AE0
       mov       rsi,rax
       mov       ecx,1C7
       mov       rdx,7FFCBFAA4000
       call      000000000000A140
       mov       rdi,rax
       mov       ecx,0A18D
       mov       rdx,7FFCBFAA4000
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [7030]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000002B00
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      0000000000002AE0
       mov       rsi,rax
       mov       ecx,1C7
       mov       rdx,7FFCBFAA4000
       call      000000000000A140
       mov       rdi,rax
       mov       ecx,9AEF
       mov       rdx,7FFCBFAA4000
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [7030]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000002B00
       mov       rax,rbx
       add       rsp,20
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       ret
       mov       rax,19C02002028
       mov       rax,[rax]
       add       rsp,20
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       ret
; Total bytes of code 481

System.Tests.Perf_String.Substring_IntInt(s: "dzsdzsDDZSDZSDZSddsz", i1: 10, i2: 1)


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 9.678032345900903 > 7.56662583078946.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -45.04873040047779 (T) = (0 -9.55400257754178) / Math.Sqrt((0.04538668477336 / (20)) + (0.044360653438552194 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.3775289902575153 = (6.935609083447133 - 9.55400257754178) / 6.935609083447133 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.Substring_IntInt(System.String, Int32, Int32)
       mov       rcx,rdx
       mov       edx,r8d
       mov       r8d,r9d
       cmp       [rcx],ecx
       jmp       qword ptr [3360]
; Total bytes of code 17
; System.String.Substring(Int32, Int32)
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       mov       rdi,rcx
       mov       esi,edx
       test      esi,esi
       jl        near ptr 000000000000F6F1
       mov       ecx,[rdi+8]
       cmp       ecx,esi
       jl        near ptr 000000000000F74E
       test      r8d,r8d
       jl        near ptr 000000000000F7AB
       mov       eax,ecx
       sub       eax,r8d
       cmp       eax,esi
       jl        near ptr 000000000000F808
       test      r8d,r8d
       je        short 000000000000F6DC
       test      esi,esi
       je        short 000000000000F6CC
       mov       ecx,r8d
       call      0
       mov       rbx,rax
       mov       r8d,[rbx+8]
       lea       rcx,[rbx+0C]
       mov       edx,esi
       lea       rdx,[rdi+rdx*2+0C]
       add       r8,r8
       call      qword ptr [0BE10]
       mov       rax,rbx
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       cmp       ecx,r8d
       jne       short 000000000000F69E
       mov       rax,rdi
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       rax,20E65002028
       mov       rax,[rax]
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,163D
       mov       rdx,7FFED6D44000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,0A50B
       mov       rdx,7FFED6D44000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [7030]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,163D
       mov       rdx,7FFED6D44000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,0A547
       mov       rdx,7FFED6D44000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [7030]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,57
       mov       rdx,7FFED6D44000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,0A1CF
       mov       rdx,7FFED6D44000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [7030]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,57
       mov       rdx,7FFED6D44000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,9B73
       mov       rdx,7FFED6D44000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [7030]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       int       3
; Total bytes of code 518

Compare Jit Disasm

; System.Tests.Perf_String.Substring_IntInt(System.String, Int32, Int32)
       mov       rcx,rdx
       mov       edx,r8d
       mov       r8d,r9d
       cmp       [rcx],ecx
       jmp       qword ptr [3360]
; Total bytes of code 17
; System.String.Substring(Int32, Int32)
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       mov       rsi,rcx
       mov       edi,edx
       mov       eax,edi
       mov       ecx,r8d
       add       rax,rcx
       mov       ecx,[rsi+8]
       mov       edx,ecx
       cmp       rax,rdx
       ja        short 000000000000F6D6
       test      r8d,r8d
       jne       short 000000000000F698
       mov       rax,1F15A802028
       mov       rax,[rax]
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       cmp       ecx,r8d
       jne       short 000000000000F6A8
       mov       rax,rsi
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       ecx,r8d
       call      0
       mov       rbx,rax
       mov       r8d,[rbx+8]
       lea       rcx,[rbx+0C]
       mov       edx,edi
       lea       rdx,[rsi+rdx*2+0C]
       add       r8,r8
       call      qword ptr [0BE10]
       mov       rax,rbx
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       rcx,rsi
       mov       edx,edi
       call      qword ptr [3378]
       int       3
; Total bytes of code 130

System.Tests.Perf_String.Replace_Char(text: "This is a very nice sentence", oldChar: 'i', newChar: 'I')


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 25.195888502023887 > 22.838991609145467.
IsChangePoint: Marked as a change because one of 8/13/2022 2:59:44 AM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -13.475323375354595 (T) = (0 -25.329644358227515) / Math.Sqrt((0.5625332642010151 / (32)) + (0.14651217849204576 / (15))) is less than -2.0141033888794695 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (32) + (15) - 2, .025) and -0.09646186309672418 = (23.10125432606411 - 25.329644358227515) / 23.10125432606411 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.Replace_Char(System.String, Char, Char)
       mov       [rsp+18],r8d
       mov       rcx,rdx
       movzx     r8d,r9w
       mov       edx,[rsp+18]
       movzx     edx,dx
       cmp       [rcx],ecx
       jmp       qword ptr [30C0]
; Total bytes of code 27
; System.String.Replace(Char, Char)
       push      r15
       push      r14
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,28
       vzeroupper
       mov       rsi,rcx
       mov       edi,r8d
       movzx     ebx,dx
       movzx     ecx,di
       cmp       ebx,ecx
       je        near ptr 000000000000F7F2
       lea       rcx,[rsi+0C]
       mov       r8d,[rsi+8]
       mov       edx,ebx
       call      qword ptr [0F408]
       mov       ebp,eax
       test      ebp,ebp
       jge       short 000000000000F72C
       mov       rax,rsi
       vzeroupper
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
       mov       r14d,[rsi+8]
       sub       r14d,ebp
       mov       ecx,[rsi+8]
       call      0
       mov       r15,rax
       test      ebp,ebp
       jle       short 000000000000F759
       cmp       [r15],r15b
       lea       rcx,[r15+0C]
       lea       rdx,[rsi+0C]
       mov       r8d,ebp
       add       r8,r8
       call      qword ptr [0BE10]
       movsxd    rax,ebp
       add       rax,rax
       lea       rdx,[rsi+rax+0C]
       cmp       [r15],r15b
       lea       rcx,[r15+rax+0C]
       cmp       r14d,10
       jl        short 000000000000F7B7
       imul      eax,ebx,10001
       vmovd     xmm0,eax
       vpbroadcastd ymm0,xmm0
       movzx     eax,di
       imul      eax,10001
       vmovd     xmm1,eax
       vpbroadcastd ymm1,xmm1
       vmovupd   ymm2,[rdx]
       vpcmpeqw  ymm3,ymm2,ymm0
       vpblendvb ymm2,ymm2,ymm1,ymm3
       vmovupd   [rcx],ymm2
       add       rdx,20
       add       rcx,20
       add       r14d,0FFFFFFF0
       cmp       r14d,10
       jge       short 000000000000F793
       test      r14d,r14d
       jle       short 000000000000F7DA
       movzx     eax,word ptr [rdx]
       mov       r8,rcx
       cmp       eax,ebx
       je        short 000000000000F7ED
       mov       [r8],ax
       add       rdx,2
       add       rcx,2
       dec       r14d
       test      r14d,r14d
       jg        short 000000000000F7BC
       mov       rax,r15
       vzeroupper
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
       movzx     eax,di
       jmp       short 000000000000F7C6
       mov       rax,rsi
       vzeroupper
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
; Total bytes of code 293

Compare Jit Disasm

; System.Tests.Perf_String.Replace_Char(System.String, Char, Char)
       mov       [rsp+18],r8d
       mov       rcx,rdx
       movzx     r8d,r9w
       mov       edx,[rsp+18]
       movzx     edx,dx
       cmp       [rcx],ecx
       jmp       qword ptr [30C0]
; Total bytes of code 27
; System.String.Replace(Char, Char)
       push      r15
       push      r14
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,28
       vzeroupper
       mov       rsi,rcx
       mov       edi,r8d
       movzx     ebx,dx
       movzx     ecx,di
       cmp       ebx,ecx
       je        near ptr 000000000000F7F2
       lea       rcx,[rsi+0C]
       mov       r8d,[rsi+8]
       mov       edx,ebx
       call      qword ptr [0F408]
       mov       ebp,eax
       test      ebp,ebp
       jge       short 000000000000F72C
       mov       rax,rsi
       vzeroupper
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
       mov       r14d,[rsi+8]
       sub       r14d,ebp
       mov       ecx,[rsi+8]
       call      0
       mov       r15,rax
       test      ebp,ebp
       jle       short 000000000000F759
       cmp       [r15],r15b
       lea       rcx,[r15+0C]
       lea       rdx,[rsi+0C]
       mov       r8d,ebp
       add       r8,r8
       call      qword ptr [0BE10]
       movsxd    rax,ebp
       add       rax,rax
       lea       rdx,[rsi+rax+0C]
       cmp       [r15],r15b
       lea       rcx,[r15+rax+0C]
       cmp       r14d,10
       jl        short 000000000000F7B7
       imul      eax,ebx,10001
       vmovd     xmm0,eax
       vpbroadcastd ymm0,xmm0
       movzx     eax,di
       imul      eax,10001
       vmovd     xmm1,eax
       vpbroadcastd ymm1,xmm1
       vmovupd   ymm2,[rdx]
       vpcmpeqw  ymm3,ymm2,ymm0
       vpblendvb ymm2,ymm2,ymm1,ymm3
       vmovupd   [rcx],ymm2
       add       rdx,20
       add       rcx,20
       add       r14d,0FFFFFFF0
       cmp       r14d,10
       jge       short 000000000000F793
       test      r14d,r14d
       jle       short 000000000000F7DA
       movzx     eax,word ptr [rdx]
       mov       r8,rcx
       cmp       eax,ebx
       je        short 000000000000F7ED
       mov       [r8],ax
       add       rdx,2
       add       rcx,2
       dec       r14d
       test      r14d,r14d
       jg        short 000000000000F7BC
       mov       rax,r15
       vzeroupper
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
       movzx     eax,di
       jmp       short 000000000000F7C6
       mov       rax,rsi
       vzeroupper
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
; Total bytes of code 293

System.Tests.Perf_String.Trim_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 17.143971360621258 > 15.38251923393676.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -47.24704678000985 (T) = (0 -17.326833118590994) / Math.Sqrt((0.045351320802489 / (20)) + (0.02780804953850328 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.17429336371716464 = (14.755114568427606 - 17.326833118590994) / 14.755114568427606 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.Trim_CharArr(System.String, Char[])
       mov       rcx,rdx
       mov       rdx,r8
       cmp       [rcx],ecx
       jmp       qword ptr [3450]
; Total bytes of code 14
; System.String.Trim(Char[])
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       test      rdx,rdx
       je        short 000000000000F629
       mov       r8d,[rdx+8]
       test      r8d,r8d
       je        short 000000000000F629
       add       rdx,10
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       mov       r9d,3
       call      qword ptr [3510]
       nop
       add       rsp,28
       ret
       mov       edx,3
       call      qword ptr [34F8]
       nop
       add       rsp,28
       ret
; Total bytes of code 74

Compare Jit Disasm

; System.Tests.Perf_String.Trim_CharArr(System.String, Char[])
       mov       rcx,rdx
       mov       rdx,r8
       cmp       [rcx],ecx
       jmp       qword ptr [3468]
; Total bytes of code 14
; System.String.Trim(Char[])
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       test      rdx,rdx
       je        short 000000000000F629
       mov       r8d,[rdx+8]
       test      r8d,r8d
       je        short 000000000000F629
       add       rdx,10
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       mov       r9d,3
       call      qword ptr [3528]
       nop
       add       rsp,28
       ret
       mov       edx,3
       call      qword ptr [3510]
       nop
       add       rsp,28
       ret
; Total bytes of code 74

System.Tests.Perf_String.GetChars(size: 100)


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 20.47447506338366 > 19.170936439267425.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -17.547535870419082 (T) = (0 -20.57675461778474) / Math.Sqrt((0.1866042662791573 / (20)) + (0.5318072485420217 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.14714894425398603 = (17.93729987797375 - 20.57675461778474) / 17.93729987797375 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.GetChars(System.Tests.StringArguments)
       mov       rcx,[rdx+8]
       cmp       [rcx],ecx
       jmp       qword ptr [17E0]
; Total bytes of code 12
; System.String.ToCharArray()
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       mov       rsi,rcx
       mov       edi,[rsi+8]
       test      edi,edi
       je        short 000000000000F7C4
       mov       edx,edi
       mov       rcx,offset MT_System.Char[]
       call      000000000000C4B0
       mov       rbx,rax
       lea       rcx,[rbx+10]
       lea       rdx,[rsi+0C]
       mov       r8d,edi
       add       r8,r8
       call      qword ptr [0BE10]
       mov       rax,rbx
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       rcx,7FF973B74BE0
       mov       edx,32
       call      00000000000019F0
       mov       rax,20053409538
       mov       rax,[rax]
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 109

Compare Jit Disasm

; System.Tests.Perf_String.GetChars(System.Tests.StringArguments)
       mov       rcx,[rdx+8]
       cmp       [rcx],ecx
       jmp       qword ptr [17E0]
; Total bytes of code 12
; System.String.ToCharArray()
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       mov       rsi,rcx
       mov       edi,[rsi+8]
       test      edi,edi
       je        short 000000000000FD94
       mov       edx,edi
       mov       rcx,offset MT_System.Char[]
       call      0000000000002C00
       mov       rbx,rax
       lea       rcx,[rbx+10]
       lea       rdx,[rsi+0C]
       mov       r8d,edi
       add       r8,r8
       call      qword ptr [0BE10]
       mov       rax,rbx
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       rcx,7FFDB3B84BF0
       mov       edx,2F
       call      0000000000001230
       mov       rax,2044D009528
       mov       rax,[rax]
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
; Total bytes of code 109

System.Tests.Perf_String.Trim_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 18.13884190182774 > 16.478003458938126.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -41.861307067811076 (T) = (0 -18.209101252911143) / Math.Sqrt((0.10272757065125135 / (20)) + (0.008785801748127398 / (39))) is less than -2.0024654592901125 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (39) - 2, .025) and -0.20240682887775194 = (15.143877110134454 - 18.209101252911143) / 15.143877110134454 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.Trim_CharArr(System.String, Char[])
       mov       rcx,rdx
       mov       rdx,r8
       cmp       [rcx],ecx
       jmp       qword ptr [3450]
; Total bytes of code 14
; System.String.Trim(Char[])
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       test      rdx,rdx
       je        short 000000000000F629
       mov       r8d,[rdx+8]
       test      r8d,r8d
       je        short 000000000000F629
       add       rdx,10
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       mov       r9d,3
       call      qword ptr [3510]
       nop
       add       rsp,28
       ret
       mov       edx,3
       call      qword ptr [34F8]
       nop
       add       rsp,28
       ret
; Total bytes of code 74

Compare Jit Disasm

; System.Tests.Perf_String.Trim_CharArr(System.String, Char[])
       mov       rcx,rdx
       mov       rdx,r8
       cmp       [rcx],ecx
       jmp       qword ptr [3468]
; Total bytes of code 14
; System.String.Trim(Char[])
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       test      rdx,rdx
       je        short 000000000000F629
       mov       r8d,[rdx+8]
       test      r8d,r8d
       je        short 000000000000F629
       add       rdx,10
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       mov       r9d,3
       call      qword ptr [3528]
       nop
       add       rsp,28
       ret
       mov       edx,3
       call      qword ptr [3510]
       nop
       add       rsp,28
       ret
; Total bytes of code 74

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 16.46454458060182 > 15.365871080517596.
IsChangePoint: Marked as a change because one of 6/17/2022 12:17:51 PM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -29.59899701246003 (T) = (0 -16.631607074801128) / Math.Sqrt((0.12238722922842861 / (17)) + (0.015202294582712947 / (40))) is less than -2.0040447832881556 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (17) + (40) - 2, .025) and -0.18334490642876453 = (14.05474176163391 - 16.631607074801128) / 14.05474176163391 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 [34E0]
; Total bytes of code 14
; System.String.TrimEnd(Char[])
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       test      rdx,rdx
       je        short 000000000000F629
       mov       r8d,[rdx+8]
       test      r8d,r8d
       je        short 000000000000F629
       add       rdx,10
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       mov       r9d,2
       call      qword ptr [3510]
       nop
       add       rsp,28
       ret
       mov       edx,2
       call      qword ptr [34F8]
       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 [34F8]
; Total bytes of code 14
; System.String.TrimEnd(Char[])
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       test      rdx,rdx
       je        short 000000000000F629
       mov       r8d,[rdx+8]
       test      r8d,r8d
       je        short 000000000000F629
       add       rdx,10
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       mov       r9d,2
       call      qword ptr [3528]
       nop
       add       rsp,28
       ret
       mov       edx,2
       call      qword ptr [3510]
       nop
       add       rsp,28
       ret
; Total bytes of code 74

System.Tests.Perf_String.ToLowerInvariant(s: "test")


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 4.9636497025414 > 3.480123896311508.
IsChangePoint: Marked as a change because one of 7/2/2022 7:35:06 PM, 7/6/2022 3:55:24 AM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -32.30920895705188 (T) = (0 -4.964171761025096) / Math.Sqrt((0.029558053826380902 / (17)) + (0.0005135789127608901 / (40))) is less than -2.0040447832881556 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (17) + (40) - 2, .025) and -0.37436199010890053 = (3.6119827212565365 - 4.964171761025096) / 3.6119827212565365 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.ToLowerInvariant(System.String)
       cmp       [rdx],dl
       mov       rcx,19D62C00708
       mov       rcx,[rcx]
       jmp       qword ptr [0F1B0]
; Total bytes of code 21
; System.Globalization.TextInfo.ToLower(System.String)
       sub       rsp,28
       test      rdx,rdx
       je        short 000000000000F3E3
       add       rsp,28
       jmp       qword ptr [17E0]
       mov       ecx,15FB
       mov       rdx,7FF92C7F4000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [33F0]
       int       3
; Total bytes of code 49

Compare Jit Disasm

; System.Tests.Perf_String.ToLowerInvariant(System.String)
       cmp       [rdx],dl
       mov       rcx,219C6C00708
       mov       rcx,[rcx]
       jmp       qword ptr [0F1B0]
; Total bytes of code 21
; System.Globalization.TextInfo.ToLower(System.String)
       sub       rsp,28
       test      rdx,rdx
       je        short 000000000000F3E3
       add       rsp,28
       jmp       qword ptr [17E0]
       mov       ecx,15FB
       mov       rdx,7FF94E1F4000
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [33F0]
       int       3
; Total bytes of code 49

System.Tests.Perf_String.ToUpperInvariant(s: "TEST")


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.038902607855035 > 3.8505072731089016.
IsChangePoint: Marked as a change because one of 7/2/2022 7:35:06 PM, 7/6/2022 3:55:24 AM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -138.3656825136127 (T) = (0 -5.0595857966171325) / Math.Sqrt((0.001483079065294089 / (20)) + (0.0014892903158098651 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.4057220325027805 = (3.599279003693872 - 5.0595857966171325) / 3.599279003693872 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.ToUpperInvariant(System.String)
       cmp       [rdx],dl
       mov       rcx,22FA2000708
       mov       rcx,[rcx]
       jmp       qword ptr [0F2B8]
; Total bytes of code 21
; System.Globalization.TextInfo.ToUpper(System.String)
       sub       rsp,28
       test      rdx,rdx
       je        short 000000000000F383
       add       rsp,28
       jmp       qword ptr [0B1E0]
       mov       ecx,15FB
       mov       rdx,7FFE57BC4000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [33F0]
       int       3
; Total bytes of code 49

Compare Jit Disasm

; System.Tests.Perf_String.ToUpperInvariant(System.String)
       cmp       [rdx],dl
       mov       rcx,1F844C00708
       mov       rcx,[rcx]
       jmp       qword ptr [0F2B8]
; Total bytes of code 21
; System.Globalization.TextInfo.ToUpper(System.String)
       sub       rsp,28
       test      rdx,rdx
       je        short 000000000000F383
       add       rsp,28
       jmp       qword ptr [0B1E0]
       mov       ecx,15FB
       mov       rdx,7FFC925B4000
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [33F0]
       int       3
; Total bytes of code 49

System.Tests.Perf_String.CtorCharCount(size: 1)


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 10.728850795593617 > 8.953420538406816.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -29.252670147362615 (T) = (0 -10.839937243304107) / Math.Sqrt((0.0852266300223555 / (20)) + (0.015175816237515679 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.22524470256562165 = (8.847161077787677 - 10.839937243304107) / 8.847161077787677 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.CtorCharCount(Int32)
       sub       rsp,28
       mov       ecx,61
       call      0000000000000690
       nop
       add       rsp,28
       ret
; Total bytes of code 20

Compare Jit Disasm

; System.Tests.Perf_String.CtorCharCount(Int32)
       sub       rsp,28
       mov       ecx,61
       call      0000000000000690
       nop
       add       rsp,28
       ret
; Total bytes of code 20

System.Tests.Perf_String.Insert(s1: "Test", i: 2, s2: " Test")


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 17.79370363646097 > 15.856581376635832.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -44.017841920326056 (T) = (0 -17.574651382371272) / Math.Sqrt((0.0627567922355318 / (20)) + (0.03401490494826341 / (39))) is less than -2.0024654592901125 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (39) - 2, .025) and -0.18850152051622796 = (14.787235084678468 - 17.574651382371272) / 14.787235084678468 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.Insert(System.String, Int32, System.String)
       mov       rcx,rdx
       mov       edx,r8d
       mov       r8,r9
       cmp       [rcx],ecx
       jmp       qword ptr [1DE0]
; Total bytes of code 17
; System.String.Insert(Int32, System.String)
       push      r15
       push      r14
       push      r13
       push      r12
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,28
       mov       rdi,rcx
       mov       ebx,edx
       mov       rsi,r8
       test      rsi,rsi
       je        near ptr 000000000000F74F
       mov       ebp,[rdi+8]
       cmp       ebp,ebx
       jb        near ptr 000000000000F76D
       mov       r14d,[rsi+8]
       test      ebp,ebp
       jne       short 000000000000F6C8
       mov       rax,rsi
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r12
       pop       r13
       pop       r14
       pop       r15
       ret
       test      r14d,r14d
       jne       short 000000000000F6E1
       mov       rax,rdi
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r12
       pop       r13
       pop       r14
       pop       r15
       ret
       lea       ecx,[r14+rbp]
       call      0
       mov       r15,rax
       cmp       [r15],r15b
       lea       r12,[r15+0C]
       mov       rcx,r12
       lea       rdx,[rdi+0C]
       movsxd    r13,ebx
       add       r13,r13
       mov       r8,r13
       call      qword ptr [0BE10]
       lea       rcx,[r12+r13]
       lea       rdx,[rsi+0C]
       movsxd    r8,r14d
       add       r8,r8
       call      qword ptr [0BE10]
       add       r14d,ebx
       movsxd    r8,r14d
       lea       rcx,[r12+r8*2]
       lea       rdx,[rdi+r13+0C]
       sub       ebp,ebx
       movsxd    r8,ebp
       add       r8,r8
       call      qword ptr [0BE10]
       mov       rax,r15
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r12
       pop       r13
       pop       r14
       pop       r15
       ret
       mov       ecx,303
       mov       rdx,7FF9A6784000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [33F0]
       int       3
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,163D
       mov       rdx,7FF9A6784000
       call      00000000000014A0
       mov       rdx,rax
       mov       rcx,rsi
       call      qword ptr [1810]
       mov       rcx,rsi
       call      0000000000004690
       int       3
; Total bytes of code 296

Compare Jit Disasm

; System.Tests.Perf_String.Insert(System.String, Int32, System.String)
       mov       rcx,rdx
       mov       edx,r8d
       mov       r8,r9
       cmp       [rcx],ecx
       jmp       qword ptr [1DE0]
; Total bytes of code 17
; System.String.Insert(Int32, System.String)
       push      r15
       push      r14
       push      r13
       push      r12
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,28
       mov       rdi,rcx
       mov       ebx,edx
       mov       rsi,r8
       test      rsi,rsi
       je        near ptr 000000000000F74F
       mov       ebp,[rdi+8]
       cmp       ebp,ebx
       jb        near ptr 000000000000F76D
       mov       r14d,[rsi+8]
       test      ebp,ebp
       jne       short 000000000000F6C8
       mov       rax,rsi
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r12
       pop       r13
       pop       r14
       pop       r15
       ret
       test      r14d,r14d
       jne       short 000000000000F6E1
       mov       rax,rdi
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r12
       pop       r13
       pop       r14
       pop       r15
       ret
       lea       ecx,[r14+rbp]
       call      0
       mov       r15,rax
       cmp       [r15],r15b
       lea       r12,[r15+0C]
       mov       rcx,r12
       lea       rdx,[rdi+0C]
       movsxd    r13,ebx
       add       r13,r13
       mov       r8,r13
       call      qword ptr [0BE10]
       lea       rcx,[r12+r13]
       lea       rdx,[rsi+0C]
       movsxd    r8,r14d
       add       r8,r8
       call      qword ptr [0BE10]
       add       r14d,ebx
       movsxd    r8,r14d
       lea       rcx,[r12+r8*2]
       lea       rdx,[rdi+r13+0C]
       sub       ebp,ebx
       movsxd    r8,ebp
       add       r8,r8
       call      qword ptr [0BE10]
       mov       rax,r15
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r12
       pop       r13
       pop       r14
       pop       r15
       ret
       mov       ecx,303
       mov       rdx,7FFD5D634000
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [33F0]
       int       3
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      0000000000002AE0
       mov       rsi,rax
       mov       ecx,163D
       mov       rdx,7FFD5D634000
       call      000000000000A140
       mov       rdx,rax
       mov       rcx,rsi
       call      qword ptr [1810]
       mov       rcx,rsi
       call      0000000000002B00
       int       3
; Total bytes of code 296

System.Tests.Perf_String.PadLeft(n: 18)


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 13.436285531828903 > 12.26285201254343.
IsChangePoint: Marked as a change because one of 7/2/2022 7:35:06 PM, 7/6/2022 3:55:24 AM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -28.897191570272774 (T) = (0 -13.790075747378154) / Math.Sqrt((0.09775465572395009 / (20)) + (0.09588600271603644 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.21781121691914582 = (11.323656372836414 - 13.790075747378154) / 11.323656372836414 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.PadLeft(Int32)
       mov       rcx,1C4728058A0
       mov       rcx,[rcx]
       mov       r8d,20
       jmp       qword ptr [1F48]
; Total bytes of code 25
; System.String.PadLeft(Int32, Char)
       push      r15
       push      r14
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,28
       mov       rsi,rcx
       mov       edi,r8d
       test      edx,edx
       jl        short 000000000000F5DC
       mov       ebx,[rsi+8]
       mov       ebp,edx
       sub       ebp,ebx
       test      ebp,ebp
       jle       near ptr 000000000000F639
       mov       ecx,edx
       call      0
       mov       r14,rax
       cmp       [r14],r14b
       lea       r15,[r14+0C]
       mov       rcx,r15
       movzx     r8d,di
       mov       edx,ebp
       call      qword ptr [0DEA0]
       movsxd    r8,ebp
       lea       rcx,[r15+r8*2]
       lea       rdx,[rsi+0C]
       movsxd    r8,ebx
       add       r8,r8
       call      qword ptr [0BE10]
       mov       rax,r14
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,1699
       mov       rdx,7FFED4954000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,0A037
       mov       rdx,7FFED4954000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [7030]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       mov       rax,rsi
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
; Total bytes of code 217

Compare Jit Disasm

; System.Tests.Perf_String.PadLeft(Int32)
       mov       rcx,29E3F005890
       mov       rcx,[rcx]
       mov       r8d,20
       jmp       qword ptr [1F48]
; Total bytes of code 25
; System.String.PadLeft(Int32, Char)
       push      r15
       push      r14
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,28
       mov       rsi,rcx
       mov       edi,r8d
       test      edx,edx
       jl        short 000000000000F5DC
       mov       ebx,[rsi+8]
       mov       ebp,edx
       sub       ebp,ebx
       test      ebp,ebp
       jle       near ptr 000000000000F639
       mov       ecx,edx
       call      0
       mov       r14,rax
       cmp       [r14],r14b
       lea       r15,[r14+0C]
       mov       rcx,r15
       movzx     r8d,di
       mov       edx,ebp
       call      qword ptr [0DEA0]
       movsxd    r8,ebp
       lea       rcx,[r15+r8*2]
       lea       rdx,[rsi+0C]
       movsxd    r8,ebx
       add       r8,r8
       call      qword ptr [0BE10]
       mov       rax,r14
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      0000000000002AE0
       mov       rsi,rax
       mov       ecx,1699
       mov       rdx,7FFA71114000
       call      000000000000A140
       mov       rdi,rax
       mov       ecx,0A037
       mov       rdx,7FFA71114000
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [7030]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000002B00
       mov       rax,rsi
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
; Total bytes of code 217

System.Tests.Perf_String.Substring_IntInt(s: "dzsdzsDDZSDZSDZSddsz", i1: 0, i2: 8)


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 10.950416529225409 > 9.90314889347604.
IsChangePoint: Marked as a change because one of 7/13/2022 7:22:00 AM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -23.27623562390323 (T) = (0 -11.398323009472652) / Math.Sqrt((0.25764204226051485 / (20)) + (0.10001632791360848 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.33917384104619813 = (8.511458826411946 - 11.398323009472652) / 8.511458826411946 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.Substring_IntInt(System.String, Int32, Int32)
       mov       rcx,rdx
       mov       edx,r8d
       mov       r8d,r9d
       cmp       [rcx],ecx
       jmp       qword ptr [3360]
; Total bytes of code 17
; System.String.Substring(Int32, Int32)
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       mov       rdi,rcx
       mov       esi,edx
       test      esi,esi
       jl        near ptr 000000000000F6F1
       mov       ecx,[rdi+8]
       cmp       ecx,esi
       jl        near ptr 000000000000F74E
       test      r8d,r8d
       jl        near ptr 000000000000F7AB
       mov       eax,ecx
       sub       eax,r8d
       cmp       eax,esi
       jl        near ptr 000000000000F808
       test      r8d,r8d
       je        short 000000000000F6DC
       test      esi,esi
       je        short 000000000000F6CC
       mov       ecx,r8d
       call      0
       mov       rbx,rax
       mov       r8d,[rbx+8]
       lea       rcx,[rbx+0C]
       mov       edx,esi
       lea       rdx,[rdi+rdx*2+0C]
       add       r8,r8
       call      qword ptr [0BE10]
       mov       rax,rbx
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       cmp       ecx,r8d
       jne       short 000000000000F69E
       mov       rax,rdi
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       rax,274E4002028
       mov       rax,[rax]
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,163D
       mov       rdx,7FFED6D44000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,0A50B
       mov       rdx,7FFED6D44000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [7030]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,163D
       mov       rdx,7FFED6D44000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,0A547
       mov       rdx,7FFED6D44000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [7030]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,57
       mov       rdx,7FFED6D44000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,0A1CF
       mov       rdx,7FFED6D44000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [7030]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,57
       mov       rdx,7FFED6D44000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,9B73
       mov       rdx,7FFED6D44000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [7030]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       int       3
; Total bytes of code 518

Compare Jit Disasm

; System.Tests.Perf_String.Substring_IntInt(System.String, Int32, Int32)
       mov       rcx,rdx
       mov       edx,r8d
       mov       r8d,r9d
       cmp       [rcx],ecx
       jmp       qword ptr [3360]
; Total bytes of code 17
; System.String.Substring(Int32, Int32)
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       mov       rsi,rcx
       mov       edi,edx
       mov       eax,edi
       mov       ecx,r8d
       add       rax,rcx
       mov       ecx,[rsi+8]
       mov       edx,ecx
       cmp       rax,rdx
       ja        short 000000000000F6D6
       test      r8d,r8d
       jne       short 000000000000F698
       mov       rax,163D6C02028
       mov       rax,[rax]
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       cmp       ecx,r8d
       jne       short 000000000000F6A8
       mov       rax,rsi
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       ecx,r8d
       call      0
       mov       rbx,rax
       mov       r8d,[rbx+8]
       lea       rcx,[rbx+0C]
       mov       edx,edi
       lea       rdx,[rsi+rdx*2+0C]
       add       r8,r8
       call      qword ptr [0BE10]
       mov       rax,rbx
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       rcx,rsi
       mov       edx,edi
       call      qword ptr [3378]
       int       3
; Total bytes of code 130

System.Tests.Perf_String.TrimStart_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 15.358755193216092 > 13.663797701624219.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -48.14104324641786 (T) = (0 -15.472651536439122) / Math.Sqrt((0.031835336956934274 / (20)) + (0.018446711249574286 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.16410880675781253 = (13.291413523047193 - 15.472651536439122) / 13.291413523047193 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.TrimStart_CharArr(System.String, Char[])
       mov       rcx,rdx
       mov       rdx,r8
       cmp       [rcx],ecx
       jmp       qword ptr [3498]
; Total bytes of code 14
; System.String.TrimStart(Char[])
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       test      rdx,rdx
       je        short 000000000000F629
       mov       r8d,[rdx+8]
       test      r8d,r8d
       je        short 000000000000F629
       add       rdx,10
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       mov       r9d,1
       call      qword ptr [3510]
       nop
       add       rsp,28
       ret
       mov       edx,1
       call      qword ptr [34F8]
       nop
       add       rsp,28
       ret
; Total bytes of code 74

Compare Jit Disasm

; System.Tests.Perf_String.TrimStart_CharArr(System.String, Char[])
       mov       rcx,rdx
       mov       rdx,r8
       cmp       [rcx],ecx
       jmp       qword ptr [34B0]
; Total bytes of code 14
; System.String.TrimStart(Char[])
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       test      rdx,rdx
       je        short 000000000000F629
       mov       r8d,[rdx+8]
       test      r8d,r8d
       je        short 000000000000F629
       add       rdx,10
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       mov       r9d,1
       call      qword ptr [3528]
       nop
       add       rsp,28
       ret
       mov       edx,1
       call      qword ptr [3510]
       nop
       add       rsp,28
       ret
; Total bytes of code 74

System.Tests.Perf_String.Insert(s1: "dzsdzsDDZSDZSDZSddsz", i: 7, s2: "Test")


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 17.627633659454492 > 16.47464213258808.
IsChangePoint: Marked as a change because one of 7/23/2022 3:48:41 PM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -37.09676417232686 (T) = (0 -17.883957073229027) / Math.Sqrt((0.0339684837384577 / (18)) + (0.08806772835106216 / (40))) is less than -2.0032407188469383 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (18) + (40) - 2, .025) and -0.15292279494946387 = (15.511842728387494 - 17.883957073229027) / 15.511842728387494 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.Insert(System.String, Int32, System.String)
       mov       rcx,rdx
       mov       edx,r8d
       mov       r8,r9
       cmp       [rcx],ecx
       jmp       qword ptr [1DE0]
; Total bytes of code 17
; System.String.Insert(Int32, System.String)
       push      r15
       push      r14
       push      r13
       push      r12
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,28
       mov       rdi,rcx
       mov       ebx,edx
       mov       rsi,r8
       test      rsi,rsi
       je        near ptr 000000000000F74F
       mov       ebp,[rdi+8]
       cmp       ebp,ebx
       jb        near ptr 000000000000F76D
       mov       r14d,[rsi+8]
       test      ebp,ebp
       jne       short 000000000000F6C8
       mov       rax,rsi
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r12
       pop       r13
       pop       r14
       pop       r15
       ret
       test      r14d,r14d
       jne       short 000000000000F6E1
       mov       rax,rdi
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r12
       pop       r13
       pop       r14
       pop       r15
       ret
       lea       ecx,[r14+rbp]
       call      0
       mov       r15,rax
       cmp       [r15],r15b
       lea       r12,[r15+0C]
       mov       rcx,r12
       lea       rdx,[rdi+0C]
       movsxd    r13,ebx
       add       r13,r13
       mov       r8,r13
       call      qword ptr [0BE10]
       lea       rcx,[r12+r13]
       lea       rdx,[rsi+0C]
       movsxd    r8,r14d
       add       r8,r8
       call      qword ptr [0BE10]
       add       r14d,ebx
       movsxd    r8,r14d
       lea       rcx,[r12+r8*2]
       lea       rdx,[rdi+r13+0C]
       sub       ebp,ebx
       movsxd    r8,ebp
       add       r8,r8
       call      qword ptr [0BE10]
       mov       rax,r15
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r12
       pop       r13
       pop       r14
       pop       r15
       ret
       mov       ecx,303
       mov       rdx,7FF9A6724000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [33F0]
       int       3
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,163D
       mov       rdx,7FF9A6724000
       call      00000000000014A0
       mov       rdx,rax
       mov       rcx,rsi
       call      qword ptr [1810]
       mov       rcx,rsi
       call      0000000000004690
       int       3
; Total bytes of code 296

Compare Jit Disasm

; System.Tests.Perf_String.Insert(System.String, Int32, System.String)
       mov       rcx,rdx
       mov       edx,r8d
       mov       r8,r9
       cmp       [rcx],ecx
       jmp       qword ptr [1DE0]
; Total bytes of code 17
; System.String.Insert(Int32, System.String)
       push      r15
       push      r14
       push      r13
       push      r12
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,28
       mov       rdi,rcx
       mov       ebx,edx
       mov       rsi,r8
       test      rsi,rsi
       je        near ptr 000000000000F74F
       mov       ebp,[rdi+8]
       cmp       ebp,ebx
       jb        near ptr 000000000000F76D
       mov       r14d,[rsi+8]
       test      ebp,ebp
       jne       short 000000000000F6C8
       mov       rax,rsi
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r12
       pop       r13
       pop       r14
       pop       r15
       ret
       test      r14d,r14d
       jne       short 000000000000F6E1
       mov       rax,rdi
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r12
       pop       r13
       pop       r14
       pop       r15
       ret
       lea       ecx,[r14+rbp]
       call      0
       mov       r15,rax
       cmp       [r15],r15b
       lea       r12,[r15+0C]
       mov       rcx,r12
       lea       rdx,[rdi+0C]
       movsxd    r13,ebx
       add       r13,r13
       mov       r8,r13
       call      qword ptr [0BE10]
       lea       rcx,[r12+r13]
       lea       rdx,[rsi+0C]
       movsxd    r8,r14d
       add       r8,r8
       call      qword ptr [0BE10]
       add       r14d,ebx
       movsxd    r8,r14d
       lea       rcx,[r12+r8*2]
       lea       rdx,[rdi+r13+0C]
       sub       ebp,ebx
       movsxd    r8,ebp
       add       r8,r8
       call      qword ptr [0BE10]
       mov       rax,r15
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r12
       pop       r13
       pop       r14
       pop       r15
       ret
       mov       ecx,303
       mov       rdx,7FFD5D5B4000
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [33F0]
       int       3
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      0000000000002AE0
       mov       rsi,rax
       mov       ecx,163D
       mov       rdx,7FFD5D5B4000
       call      000000000000A140
       mov       rdx,rax
       mov       rcx,rsi
       call      qword ptr [1810]
       mov       rcx,rsi
       call      0000000000002B00
       int       3
; Total bytes of code 296

System.Tests.Perf_String.Remove_IntInt(s: "dzsdzsDDZSDZSDZSddsz", i1: 0, i2: 8)


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 12.491893962011131 > 11.401716598552126.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -14.224499048112264 (T) = (0 -12.746317994943658) / Math.Sqrt((0.24627555779516738 / (20)) + (0.06829566876030849 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.1522636411929705 = (11.061980556591234 - 12.746317994943658) / 11.061980556591234 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.Remove_IntInt(System.String, Int32, Int32)
       mov       rcx,rdx
       mov       edx,r8d
       mov       r8d,r9d
       cmp       [rcx],ecx
       jmp       qword ptr [3030]
; Total bytes of code 17
; System.String.Remove(Int32, Int32)
       push      r15
       push      r14
       push      r12
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,20
       mov       rbx,rcx
       mov       esi,edx
       mov       edi,r8d
       test      esi,esi
       jl        near ptr 000000000000F6FC
       test      edi,edi
       jl        near ptr 000000000000F759
       mov       ebp,[rbx+8]
       mov       ecx,ebp
       sub       ecx,esi
       cmp       ecx,edi
       jl        near ptr 000000000000F7B6
       test      edi,edi
       je        near ptr 000000000000F813
       sub       ebp,edi
       je        near ptr 000000000000F825
       mov       ecx,ebp
       call      0
       mov       r14,rax
       cmp       [r14],r14b
       lea       r15,[r14+0C]
       mov       rcx,r15
       add       rbx,0C
       mov       rdx,rbx
       movsxd    r12,esi
       add       r12,r12
       mov       r8,r12
       call      qword ptr [0BE10]
       lea       rcx,[r15+r12]
       add       edi,esi
       movsxd    r8,edi
       lea       rdx,[rbx+r8*2]
       sub       ebp,esi
       movsxd    r8,ebp
       add       r8,r8
       call      qword ptr [0BE10]
       mov       rax,r14
       add       rsp,20
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       ret
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,163D
       mov       rdx,7FF8E0674000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,0A50B
       mov       rdx,7FF8E0674000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [7030]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,1C7
       mov       rdx,7FF8E0674000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,0A18D
       mov       rdx,7FF8E0674000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [7030]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,1C7
       mov       rdx,7FF8E0674000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,9AEF
       mov       rdx,7FF8E0674000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [7030]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       mov       rax,rbx
       add       rsp,20
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       ret
       mov       rax,27140802028
       mov       rax,[rax]
       add       rsp,20
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       ret
; Total bytes of code 481

Compare Jit Disasm

; System.Tests.Perf_String.Remove_IntInt(System.String, Int32, Int32)
       mov       rcx,rdx
       mov       edx,r8d
       mov       r8d,r9d
       cmp       [rcx],ecx
       jmp       qword ptr [3030]
; Total bytes of code 17
; System.String.Remove(Int32, Int32)
       push      r15
       push      r14
       push      r12
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,20
       mov       rbx,rcx
       mov       esi,edx
       mov       edi,r8d
       test      esi,esi
       jl        near ptr 000000000000F6FC
       test      edi,edi
       jl        near ptr 000000000000F759
       mov       ebp,[rbx+8]
       mov       ecx,ebp
       sub       ecx,esi
       cmp       ecx,edi
       jl        near ptr 000000000000F7B6
       test      edi,edi
       je        near ptr 000000000000F813
       sub       ebp,edi
       je        near ptr 000000000000F825
       mov       ecx,ebp
       call      0
       mov       r14,rax
       cmp       [r14],r14b
       lea       r15,[r14+0C]
       mov       rcx,r15
       add       rbx,0C
       mov       rdx,rbx
       movsxd    r12,esi
       add       r12,r12
       mov       r8,r12
       call      qword ptr [0BE10]
       lea       rcx,[r15+r12]
       add       edi,esi
       movsxd    r8,edi
       lea       rdx,[rbx+r8*2]
       sub       ebp,esi
       movsxd    r8,ebp
       add       r8,r8
       call      qword ptr [0BE10]
       mov       rax,r14
       add       rsp,20
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       ret
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      0000000000002AE0
       mov       rsi,rax
       mov       ecx,163D
       mov       rdx,7FFCBFB34000
       call      000000000000A140
       mov       rdi,rax
       mov       ecx,0A50B
       mov       rdx,7FFCBFB34000
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [7030]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000002B00
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      0000000000002AE0
       mov       rsi,rax
       mov       ecx,1C7
       mov       rdx,7FFCBFB34000
       call      000000000000A140
       mov       rdi,rax
       mov       ecx,0A18D
       mov       rdx,7FFCBFB34000
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [7030]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000002B00
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      0000000000002AE0
       mov       rsi,rax
       mov       ecx,1C7
       mov       rdx,7FFCBFB34000
       call      000000000000A140
       mov       rdi,rax
       mov       ecx,9AEF
       mov       rdx,7FFCBFB34000
       call      000000000000A140
       mov       rcx,rax
       call      qword ptr [7030]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000002B00
       mov       rax,rbx
       add       rsp,20
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       ret
       mov       rax,220A4002028
       mov       rax,[rax]
       add       rsp,20
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       ret
; Total bytes of code 481

System.Tests.Perf_String.TrimStart_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.4463871138867175 > 4.027640303895379.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -45.130837514134875 (T) = (0 -5.410305488901988) / Math.Sqrt((0.03608172942473333 / (20)) + (0.0015662128296870758 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.5579519876197911 = (3.4727036082592946 - 5.410305488901988) / 3.4727036082592946 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.TrimStart_CharArr(System.String, Char[])
       mov       rcx,rdx
       mov       rdx,r8
       cmp       [rcx],ecx
       jmp       qword ptr [3498]
; Total bytes of code 14
; System.String.TrimStart(Char[])
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       test      rdx,rdx
       je        short 000000000000F4D9
       mov       r8d,[rdx+8]
       test      r8d,r8d
       je        short 000000000000F4D9
       add       rdx,10
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       mov       r9d,1
       call      qword ptr [3510]
       nop
       add       rsp,28
       ret
       mov       edx,1
       call      qword ptr [34F8]
       nop
       add       rsp,28
       ret
; Total bytes of code 74

Compare Jit Disasm

; System.Tests.Perf_String.TrimStart_CharArr(System.String, Char[])
       mov       rcx,rdx
       mov       rdx,r8
       cmp       [rcx],ecx
       jmp       qword ptr [34B0]
; Total bytes of code 14
; System.String.TrimStart(Char[])
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       test      rdx,rdx
       je        short 000000000000F4D9
       mov       r8d,[rdx+8]
       test      r8d,r8d
       je        short 000000000000F4D9
       add       rdx,10
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       mov       r9d,1
       call      qword ptr [3528]
       nop
       add       rsp,28
       ret
       mov       edx,1
       call      qword ptr [3510]
       nop
       add       rsp,28
       ret
; Total bytes of code 74

System.Tests.Perf_String.Substring_IntInt(s: "dzsdzsDDZSDZSDZSddsz", i1: 7, i2: 4)


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 10.4426046875813 > 8.400564164816892.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -23.86008882111834 (T) = (0 -10.319142050920647) / Math.Sqrt((0.19802866118608295 / (20)) + (0.017456834281946228 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.30735214127043586 = (7.89316185377024 - 10.319142050920647) / 7.89316185377024 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.Substring_IntInt(System.String, Int32, Int32)
       mov       rcx,rdx
       mov       edx,r8d
       mov       r8d,r9d
       cmp       [rcx],ecx
       jmp       qword ptr [3360]
; Total bytes of code 17
; System.String.Substring(Int32, Int32)
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       mov       rdi,rcx
       mov       esi,edx
       test      esi,esi
       jl        near ptr 000000000000F6F1
       mov       ecx,[rdi+8]
       cmp       ecx,esi
       jl        near ptr 000000000000F74E
       test      r8d,r8d
       jl        near ptr 000000000000F7AB
       mov       eax,ecx
       sub       eax,r8d
       cmp       eax,esi
       jl        near ptr 000000000000F808
       test      r8d,r8d
       je        short 000000000000F6DC
       test      esi,esi
       je        short 000000000000F6CC
       mov       ecx,r8d
       call      0
       mov       rbx,rax
       mov       r8d,[rbx+8]
       lea       rcx,[rbx+0C]
       mov       edx,esi
       lea       rdx,[rdi+rdx*2+0C]
       add       r8,r8
       call      qword ptr [0BE10]
       mov       rax,rbx
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       cmp       ecx,r8d
       jne       short 000000000000F69E
       mov       rax,rdi
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       rax,1AB06802028
       mov       rax,[rax]
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,163D
       mov       rdx,7FFED6D54000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,0A50B
       mov       rdx,7FFED6D54000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [7030]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,163D
       mov       rdx,7FFED6D54000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,0A547
       mov       rdx,7FFED6D54000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [7030]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,57
       mov       rdx,7FFED6D54000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,0A1CF
       mov       rdx,7FFED6D54000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [7030]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       mov       rcx,offset MT_System.ArgumentOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       ecx,57
       mov       rdx,7FFED6D54000
       call      00000000000014A0
       mov       rdi,rax
       mov       ecx,9B73
       mov       rdx,7FFED6D54000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [7030]
       mov       r8,rax
       mov       rdx,rdi
       mov       rcx,rsi
       call      qword ptr [1828]
       mov       rcx,rsi
       call      0000000000004690
       int       3
; Total bytes of code 518

Compare Jit Disasm

; System.Tests.Perf_String.Substring_IntInt(System.String, Int32, Int32)
       mov       rcx,rdx
       mov       edx,r8d
       mov       r8d,r9d
       cmp       [rcx],ecx
       jmp       qword ptr [3360]
; Total bytes of code 17
; System.String.Substring(Int32, Int32)
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,20
       mov       rsi,rcx
       mov       edi,edx
       mov       eax,edi
       mov       ecx,r8d
       add       rax,rcx
       mov       ecx,[rsi+8]
       mov       edx,ecx
       cmp       rax,rdx
       ja        short 000000000000F6D6
       test      r8d,r8d
       jne       short 000000000000F698
       mov       rax,2462C402028
       mov       rax,[rax]
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       cmp       ecx,r8d
       jne       short 000000000000F6A8
       mov       rax,rsi
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       ecx,r8d
       call      0
       mov       rbx,rax
       mov       r8d,[rbx+8]
       lea       rcx,[rbx+0C]
       mov       edx,edi
       lea       rdx,[rsi+rdx*2+0C]
       add       r8,r8
       call      qword ptr [0BE10]
       mov       rax,rbx
       add       rsp,20
       pop       rbx
       pop       rsi
       pop       rdi
       ret
       mov       rcx,rsi
       mov       edx,edi
       call      qword ptr [3378]
       int       3
; Total bytes of code 130

System.Tests.Perf_String.Concat_str_str(size: 100)


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 37.268579831355495 > 34.43187041858006.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -8.201975429074361 (T) = (0 -35.26473737529049) / Math.Sqrt((0.5361677805845371 / (20)) + (1.2915943996547286 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.059929710933044396 = (33.27082636852148 - 35.26473737529049) / 33.27082636852148 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.Concat_str_str(System.Tests.StringArguments)
       mov       rcx,[rdx+8]
       mov       rdx,[rdx+10]
       jmp       qword ptr [1C60]
; Total bytes of code 14
; System.String.Concat(System.String, System.String)
       push      r15
       push      r14
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,28
       mov       rdi,rcx
       mov       rsi,rdx
       test      rdi,rdi
       je        short 000000000000FE65
       mov       ebx,[rdi+8]
       test      ebx,ebx
       je        short 000000000000FE65
       test      rsi,rsi
       je        short 000000000000FE89
       jmp       short 000000000000FE99
       test      rsi,rsi
       je        near ptr 000000000000FF01
       mov       ebp,[rsi+8]
       test      ebp,ebp
       je        near ptr 000000000000FF01
       mov       rax,rsi
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
       mov       rax,rdi
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
       mov       ebp,[rsi+8]
       test      ebp,ebp
       je        short 000000000000FE89
       mov       r14d,ebx
       lea       ecx,[r14+rbp]
       call      0
       mov       r15,rax
       cmp       [r15+8],ebx
       jl        near ptr 000000000000FF3E
       lea       rcx,[r15+0C]
       lea       rdx,[rdi+0C]
       mov       r8d,ebx
       add       r8,r8
       call      qword ptr [0BE10]
       mov       r8d,[r15+8]
       sub       r8d,r14d
       cmp       r8d,ebp
       jl        short 000000000000FF1B
       movsxd    r8,r14d
       lea       rcx,[r15+r8*2+0C]
       lea       rdx,[rsi+0C]
       mov       r8d,ebp
       add       r8,r8
       call      qword ptr [0BE10]
       mov       rax,r15
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
       mov       rax,1DAE9C02028
       mov       rax,[rax]
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
       mov       rcx,offset MT_System.IndexOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       rcx,rsi
       call      qword ptr [3D80]
       mov       rcx,rsi
       call      0000000000004690
       mov       rcx,offset MT_System.IndexOutOfRangeException
       call      000000000000C390
       mov       rsi,rax
       mov       rcx,rsi
       call      qword ptr [3D80]
       mov       rcx,rsi
       call      0000000000004690
       int       3
; Total bytes of code 290

Compare Jit Disasm

; System.Tests.Perf_String.Concat_str_str(System.Tests.StringArguments)
       mov       rcx,[rdx+8]
       mov       rdx,[rdx+10]
       jmp       qword ptr [1C60]
; Total bytes of code 14
; System.String.Concat(System.String, System.String)
       push      r15
       push      r14
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,28
       mov       rdi,rcx
       mov       rsi,rdx
       test      rdi,rdi
       je        short 000000000000FE65
       mov       ebx,[rdi+8]
       test      ebx,ebx
       je        short 000000000000FE65
       test      rsi,rsi
       je        short 000000000000FE89
       jmp       short 000000000000FE99
       test      rsi,rsi
       je        near ptr 000000000000FF01
       mov       ebp,[rsi+8]
       test      ebp,ebp
       je        near ptr 000000000000FF01
       mov       rax,rsi
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
       mov       rax,rdi
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
       mov       ebp,[rsi+8]
       test      ebp,ebp
       je        short 000000000000FE89
       mov       r14d,ebx
       lea       ecx,[r14+rbp]
       call      0
       mov       r15,rax
       cmp       [r15+8],ebx
       jl        near ptr 000000000000FF3E
       lea       rcx,[r15+0C]
       lea       rdx,[rdi+0C]
       mov       r8d,ebx
       add       r8,r8
       call      qword ptr [0BE10]
       mov       r8d,[r15+8]
       sub       r8d,r14d
       cmp       r8d,ebp
       jl        short 000000000000FF1B
       movsxd    r8,r14d
       lea       rcx,[r15+r8*2+0C]
       lea       rdx,[rsi+0C]
       mov       r8d,ebp
       add       r8,r8
       call      qword ptr [0BE10]
       mov       rax,r15
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
       mov       rax,2914C002028
       mov       rax,[rax]
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
       mov       rcx,offset MT_System.IndexOutOfRangeException
       call      0000000000002AE0
       mov       rsi,rax
       mov       rcx,rsi
       call      qword ptr [3F78]
       mov       rcx,rsi
       call      0000000000002B00
       mov       rcx,offset MT_System.IndexOutOfRangeException
       call      0000000000002AE0
       mov       rsi,rax
       mov       rcx,rsi
       call      qword ptr [3F78]
       mov       rcx,rsi
       call      0000000000002B00
       int       3
; Total bytes of code 290

System.Tests.Perf_String.CtorCharCount(size: 10)


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 12.990275635471784 > 11.098233786796937.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -27.960778203043347 (T) = (0 -13.015348931887974) / Math.Sqrt((0.12555687224336087 / (20)) + (0.02279877551986777 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.2162113187724849 = (10.701552214646622 - 13.015348931887974) / 10.701552214646622 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.CtorCharCount(Int32)
       sub       rsp,28
       mov       ecx,61
       call      0000000000000690
       nop
       add       rsp,28
       ret
; Total bytes of code 20

Compare Jit Disasm

; System.Tests.Perf_String.CtorCharCount(Int32)
       sub       rsp,28
       mov       ecx,61
       call      0000000000000690
       nop
       add       rsp,28
       ret
; Total bytes of code 20

System.Tests.Perf_String.Replace_Char(text: "Hello", oldChar: 'l', newChar: '!')


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 17.156575156398794 > 15.12171479907765.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -52.736120441010684 (T) = (0 -17.25739914593968) / Math.Sqrt((0.05357880042847185 / (20)) + (0.03775339457548269 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.22538567306974555 = (14.083238873446039 - 17.25739914593968) / 14.083238873446039 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.Replace_Char(System.String, Char, Char)
       mov       [rsp+18],r8d
       mov       rcx,rdx
       movzx     r8d,r9w
       mov       edx,[rsp+18]
       movzx     edx,dx
       cmp       [rcx],ecx
       jmp       qword ptr [30C0]
; Total bytes of code 27
; System.String.Replace(Char, Char)
       push      r15
       push      r14
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,28
       vzeroupper
       mov       rsi,rcx
       mov       edi,r8d
       movzx     ebx,dx
       movzx     ecx,di
       cmp       ebx,ecx
       je        near ptr 000000000000F792
       lea       rcx,[rsi+0C]
       mov       r8d,[rsi+8]
       mov       edx,ebx
       call      qword ptr [0F408]
       mov       ebp,eax
       test      ebp,ebp
       jge       short 000000000000F6CC
       mov       rax,rsi
       vzeroupper
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
       mov       r14d,[rsi+8]
       sub       r14d,ebp
       mov       ecx,[rsi+8]
       call      0
       mov       r15,rax
       test      ebp,ebp
       jle       short 000000000000F6F9
       cmp       [r15],r15b
       lea       rcx,[r15+0C]
       lea       rdx,[rsi+0C]
       mov       r8d,ebp
       add       r8,r8
       call      qword ptr [0BE10]
       movsxd    rax,ebp
       add       rax,rax
       lea       rdx,[rsi+rax+0C]
       cmp       [r15],r15b
       lea       rcx,[r15+rax+0C]
       cmp       r14d,10
       jl        short 000000000000F757
       imul      eax,ebx,10001
       vmovd     xmm0,eax
       vpbroadcastd ymm0,xmm0
       movzx     eax,di
       imul      eax,10001
       vmovd     xmm1,eax
       vpbroadcastd ymm1,xmm1
       vmovupd   ymm2,[rdx]
       vpcmpeqw  ymm3,ymm2,ymm0
       vpblendvb ymm2,ymm2,ymm1,ymm3
       vmovupd   [rcx],ymm2
       add       rdx,20
       add       rcx,20
       add       r14d,0FFFFFFF0
       cmp       r14d,10
       jge       short 000000000000F733
       test      r14d,r14d
       jle       short 000000000000F77A
       movzx     eax,word ptr [rdx]
       mov       r8,rcx
       cmp       eax,ebx
       je        short 000000000000F78D
       mov       [r8],ax
       add       rdx,2
       add       rcx,2
       dec       r14d
       test      r14d,r14d
       jg        short 000000000000F75C
       mov       rax,r15
       vzeroupper
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
       movzx     eax,di
       jmp       short 000000000000F766
       mov       rax,rsi
       vzeroupper
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
; Total bytes of code 293

Compare Jit Disasm

; System.Tests.Perf_String.Replace_Char(System.String, Char, Char)
       mov       [rsp+18],r8d
       mov       rcx,rdx
       movzx     r8d,r9w
       mov       edx,[rsp+18]
       movzx     edx,dx
       cmp       [rcx],ecx
       jmp       qword ptr [30C0]
; Total bytes of code 27
; System.String.Replace(Char, Char)
       push      r15
       push      r14
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,28
       vzeroupper
       mov       rsi,rcx
       mov       edi,r8d
       movzx     ebx,dx
       movzx     ecx,di
       cmp       ebx,ecx
       je        near ptr 000000000000F792
       lea       rcx,[rsi+0C]
       mov       r8d,[rsi+8]
       mov       edx,ebx
       call      qword ptr [0F408]
       mov       ebp,eax
       test      ebp,ebp
       jge       short 000000000000F6CC
       mov       rax,rsi
       vzeroupper
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
       mov       r14d,[rsi+8]
       sub       r14d,ebp
       mov       ecx,[rsi+8]
       call      0
       mov       r15,rax
       test      ebp,ebp
       jle       short 000000000000F6F9
       cmp       [r15],r15b
       lea       rcx,[r15+0C]
       lea       rdx,[rsi+0C]
       mov       r8d,ebp
       add       r8,r8
       call      qword ptr [0BE10]
       movsxd    rax,ebp
       add       rax,rax
       lea       rdx,[rsi+rax+0C]
       cmp       [r15],r15b
       lea       rcx,[r15+rax+0C]
       cmp       r14d,10
       jl        short 000000000000F757
       imul      eax,ebx,10001
       vmovd     xmm0,eax
       vpbroadcastd ymm0,xmm0
       movzx     eax,di
       imul      eax,10001
       vmovd     xmm1,eax
       vpbroadcastd ymm1,xmm1
       vmovupd   ymm2,[rdx]
       vpcmpeqw  ymm3,ymm2,ymm0
       vpblendvb ymm2,ymm2,ymm1,ymm3
       vmovupd   [rcx],ymm2
       add       rdx,20
       add       rcx,20
       add       r14d,0FFFFFFF0
       cmp       r14d,10
       jge       short 000000000000F733
       test      r14d,r14d
       jle       short 000000000000F77A
       movzx     eax,word ptr [rdx]
       mov       r8,rcx
       cmp       eax,ebx
       je        short 000000000000F78D
       mov       [r8],ax
       add       rdx,2
       add       rcx,2
       dec       r14d
       test      r14d,r14d
       jg        short 000000000000F75C
       mov       rax,r15
       vzeroupper
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
       movzx     eax,di
       jmp       short 000000000000F766
       mov       rax,rsi
       vzeroupper
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
; Total bytes of code 293

System.Tests.Perf_String.Trim_CharArr(s: " Te st ", 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 20.572383906776704 > 18.983023782175753.
IsChangePoint: Marked as a change because one of 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -53.1635485199657 (T) = (0 -20.645812299790613) / Math.Sqrt((0.04031576688918342 / (18)) + (0.011336402055652284 / (40))) is less than -2.0032407188469383 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (18) + (40) - 2, .025) and -0.14856293068091805 = (17.97534270721316 - 20.645812299790613) / 17.97534270721316 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.Trim_CharArr(System.String, Char[])
       mov       rcx,rdx
       mov       rdx,r8
       cmp       [rcx],ecx
       jmp       qword ptr [3450]
; Total bytes of code 14
; System.String.Trim(Char[])
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       test      rdx,rdx
       je        short 000000000000F629
       mov       r8d,[rdx+8]
       test      r8d,r8d
       je        short 000000000000F629
       add       rdx,10
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       mov       r9d,3
       call      qword ptr [3510]
       nop
       add       rsp,28
       ret
       mov       edx,3
       call      qword ptr [34F8]
       nop
       add       rsp,28
       ret
; Total bytes of code 74

Compare Jit Disasm

; System.Tests.Perf_String.Trim_CharArr(System.String, Char[])
       mov       rcx,rdx
       mov       rdx,r8
       cmp       [rcx],ecx
       jmp       qword ptr [3468]
; Total bytes of code 14
; System.String.Trim(Char[])
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       test      rdx,rdx
       je        short 000000000000F629
       mov       r8d,[rdx+8]
       test      r8d,r8d
       je        short 000000000000F629
       add       rdx,10
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       mov       r9d,3
       call      qword ptr [3528]
       nop
       add       rsp,28
       ret
       mov       edx,3
       call      qword ptr [3510]
       nop
       add       rsp,28
       ret
; Total bytes of code 74

System.Tests.Perf_String.CtorCharCount(size: 100)


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 23.602007755363523 > 22.28234796247977.
IsChangePoint: Marked as a change because one of 6/17/2022 12:17:51 PM, 8/5/2022 10:47:59 PM, 8/15/2022 12:02:22 PM falls between 8/5/2022 10:47:59 PM and 8/15/2022 12:02:22 PM.
IsRegressionStdDev: Marked as regression because -27.501011297790395 (T) = (0 -23.715892126262354) / Math.Sqrt((0.17233705550701317 / (20)) + (0.13690250962588027 / (40))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (20) + (40) - 2, .025) and -0.14578584278335646 = (20.6983637262016 - 23.715892126262354) / 20.6983637262016 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.CtorCharCount(Int32)
       sub       rsp,28
       mov       ecx,61
       call      0000000000000690
       nop
       add       rsp,28
       ret
; Total bytes of code 20

Compare Jit Disasm

; System.Tests.Perf_String.CtorCharCount(Int32)
       sub       rsp,28
       mov       ecx,61
       call      0000000000000690
       nop
       add       rsp,28
       ret
; Total bytes of code 20

Docs

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

@performanceautofiler performanceautofiler bot added CoreClr untriaged New issue has not been triaged by the area owner labels Aug 16, 2022
@kunalspathak kunalspathak changed the title [Perf] Windows/x64: 188 Regressions on 8/9/2022 4:14:59 PM [Perf] Windows/x64: 188 Regressions from GC changes Aug 16, 2022
@kunalspathak kunalspathak added os-windows tenet-performance Performance related issue tenet-performance-benchmarks Issue from performance benchmark arch-x64 labels Aug 16, 2022
@kunalspathak kunalspathak transferred this issue from dotnet/perf-autofiling-issues Aug 16, 2022
@kunalspathak
Copy link
Member

We dont have data to see when regression was exactly introduced, but it might be from one of the following PRs:

@Maoni0 @PeterSolMS

@mangod9 mangod9 added this to the 7.0.0 milestone Aug 16, 2022
@PeterSolMS
Copy link
Contributor

After looking at this in considerable detail, my conclusion is that while the regressions are for real, they are likely to affect only micro benchmarks.

Details:

I don't think that PR #73434 causes regressions.

PR #67389 causes regressions in microbenchmarks that obtain an object pointer by using some very fast mechanism (e.g. a simple cast) and assign it to a field in an object in generation 1 or 2, but don't trigger many GCs. In this kind of scenario, the extra tests done by the more precise write barrier show up as overhead. On the other hand, the benefit of setting fewer cards and thus speeding up the card marking phase in the GC is not realized. Should customers run into this kind of situation, they can switch to a faster but less precise write barrier by using set COMPLUS_GCWriteBarrier=3.

PR #73375 causes regressions in microbenchmarks that cause very frequent GCs, but do very little besides allocating lots of memory, and have a pretty small heap size. In this situation, most of the objects marked as live by the GC fit in L1 or L2 processor caches, and thus prefetching won't yield benefits. On the other hand, prefetching adds instructions and thus hurts performance in this situation.

A more realistic GC performance test (GCPerfSim) shows sizeable benefits from both changes:

We have also seen worthwhile benefits from both changes in more real-world scenarios. The overall expectation is to see slightly more time spent in the writebarrier code, while GC pause times should be lower. The cost in the writebarrier depends on where most pointer writes occur - if most are to objects in gen 0, the new write barrier will be faster, if most are to objects in gen 1 or 2, the new write barrier will be slower.

@stephentoub
Copy link
Member

The cost in the writebarrier depends on where most pointer writes occur - if most are to objects in gen 0, the new write barrier will be faster, if most are to objects in gen 1 or 2, the new write barrier will be slower.

Have we seen any impact on ASP.NET apps that are optimized to reduce allocation? Based on this description, I'd expect some of those workloads that are tuned to avoid allocating and instead do lots of pooling will end up taking a hit.
cc: @davidfowl

@PeterSolMS
Copy link
Contributor

Right, workloads that do lots of object pooling and low allocation may conceivably run into this. The escape hatch that we provide would be to set COMPLUS_GCWriteBarrier=3 which would use a less precise but faster write barrier. That is the same writebarrier we used with SVR GC on .NET 6.0, so performance should be the same.

@stephentoub
Copy link
Member

Right, workloads that do lots of object pooling and low allocation may conceivably run into this.

Doesn't this describe ASP.NET itself?

Did this show up in TechEmpower benchmarks at all?

@mangod9
Copy link
Member

mangod9 commented Sep 9, 2022

We haven't noticed any latency/throughput regressions in TE. @sebastienros as fyi.

@davidfowl
Copy link
Member

I need an ELI5 to better understand how this affects workloads. What does object pooling mean here exactly? Does it matter what technique is used to do the pooling or just the fact that objects are long lived and reused?

@Maoni0
Copy link
Member

Maoni0 commented Sep 9, 2022

a simple thing that you can use to gauge how much your workload might be affected is to see how much time JIT_WriteBarrier and JIT_ByRefWriteBarrier take up in a CPU profile - those are where the changes on the WB side are affecting. in general, I'm seeing in real workloads these are taking 1% or less. so even if we doubled the 1%, we'd regressed at most 1%. but we improved by making less work for the GC. as Peter mentioned above we've seen obvious improvements in our own testing. I also added some real world 1st party workload results to the PR.

of course with microbenchmarks, you could have JIT_WriteBarrier and JIT_ByRefWriteBarrier take up way more than 1% because most of the work they do is in the WB which is invoked when you assign a managed object to a field.

does this help? I was thinking to write a blog entry on this subject but it hasn't been easy to find time...

@stephentoub
Copy link
Member

Thanks.

I was thinking to write a blog entry on this subject

Yes, please :-)

@mangod9
Copy link
Member

mangod9 commented Sep 30, 2022

Given the fix to improve decommit here: #76306, moving this to 8 now. With the decommit fix, a normalized run is showing a regression of < 5% for most benchmarks. We have a couple more improvements planned, but they might not meet the bar for 8.

@mangod9 mangod9 modified the milestones: 7.0.0, 8.0.0 Sep 30, 2022
@jozkee
Copy link
Member

jozkee commented Oct 13, 2022

@PeterSolMS we noticed a regression with the PerfLabTests.LowLevelPerf.GenericClassWithSTringGenericInstanceMethod benchmark during this month's perf report, and want to confirm that this regression falls under the same category as the regressions you explained here. This issue is very large, so we just wanted to confirm it didn't slip through the cracks.

PerfLabTests.LowLevelPerf.GenericClassWithSTringGenericInstanceMethod

Result Ratio Alloc Delta Operating System Bit Processor Name Modality
Same 1.09 +0 ubuntu 18.04 Arm64 Unknown processor
Faster 1.22 +0 Windows 11 Arm64 Unknown processor
Faster 1.37 +0 Windows 11 Arm64 Microsoft SQ1 3.0 GHz
Faster 1.36 +0 Windows 11 Arm64 Microsoft SQ1 3.0 GHz
Same 0.98 +0 macOS Monterey 12.6 Arm64 Apple M1
Same 1.00 +0 macOS Monterey 12.6 Arm64 Apple M1 Max
Slower 0.71 +0 Windows 10 X64 Intel Core i7-8650U CPU 1.90GHz (Kaby Lake R)
Slower 0.78 +0 Windows 11 X64 AMD Ryzen Threadripper PRO 3945WX 12-Cores
Slower 0.74 +0 Windows 11 X64 AMD Ryzen 9 5900X
Same 0.86 +0 Windows 11 X64 AMD Ryzen 9 7950X bimodal
Slower 0.69 +0 Windows 11 X64 Intel Core i7-8700 CPU 3.20GHz (Coffee Lake)
Slower 0.64 +0 debian 11 X64 Intel Core i7-8700 CPU 3.20GHz (Coffee Lake)
Slower 0.67 +1 ubuntu 18.04 X64 AMD Ryzen 9 5900X
Slower 0.55 +1 ubuntu 18.04 X64 Intel Xeon CPU E5-1650 v4 3.60GHz
Slower 0.64 +1 ubuntu 20.04 X64 AMD Ryzen 9 5900X
Slower 0.70 +0 ubuntu 20.04 X64 Intel Core i7-8650U CPU 1.90GHz (Kaby Lake R) bimodal
Slower 0.77 +0 ubuntu 20.04 X64 Intel Core i7-8700 CPU 3.20GHz (Coffee Lake)
Slower 0.87 +0 macOS Big Sur 11.7 X64 Intel Core i5-4278U CPU 2.60GHz (Haswell)
Slower 0.84 +0 macOS Monterey 12.6 X64 Intel Core i7-4870HQ CPU 2.50GHz (Haswell)

@jozkee
Copy link
Member

jozkee commented Oct 17, 2022

We also noticed regressions in System.Text.Tests.Perf_Encoding.GetEncoder*.

Sample of one of them:
https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows%2010.0.18362/System.Text.Tests.Perf_Encoding.GetEncoder(size%3a%20512%2c%20encName%3a%20%22ascii%22).html

cc @GrabYourPitchforks

Adding our data for whoever investigates this in the future:

System.Text.Tests.Perf_Encoding.GetEncoder(size: 16, encName: "utf-8")

Result Ratio Alloc Delta Operating System Bit Processor Name Modality
Same 1.05 +0 ubuntu 18.04 Arm64 Unknown processor
Same 0.96 +0 Windows 11 Arm64 Unknown processor
Faster 1.37 +0 Windows 11 Arm64 Microsoft SQ1 3.0 GHz
Noise - +0 Windows 11 Arm64 Microsoft SQ1 3.0 GHz
Same 1.04 +0 macOS Monterey 12.6 Arm64 Apple M1
Same 1.04 +0 macOS Monterey 12.6 Arm64 Apple M1 Max
Slower 0.53 +0 Windows 10 X64 Intel Core i7-8650U CPU 1.90GHz (Kaby Lake R)
Same 0.97 +0 Windows 11 X64 AMD Ryzen Threadripper PRO 3945WX 12-Cores
Slower 0.65 +0 Windows 11 X64 AMD Ryzen 9 5900X bimodal
Same 0.99 +0 Windows 11 X64 AMD Ryzen 9 7950X
Slower 0.68 +0 Windows 11 X64 Intel Core i7-8700 CPU 3.20GHz (Coffee Lake)
Slower 0.76 +0 debian 11 X64 Intel Core i7-8700 CPU 3.20GHz (Coffee Lake)
Same 0.90 +0 ubuntu 18.04 X64 AMD Ryzen 9 5900X
Slower 0.78 +0 ubuntu 18.04 X64 Intel Xeon CPU E5-1650 v4 3.60GHz
Slower 0.76 +0 ubuntu 20.04 X64 AMD Ryzen 9 5900X
Slower 0.56 +0 ubuntu 20.04 X64 Intel Core i7-8650U CPU 1.90GHz (Kaby Lake R) bimodal
Slower 0.79 +0 ubuntu 20.04 X64 Intel Core i7-8700 CPU 3.20GHz (Coffee Lake)
Same 0.98 +0 macOS Big Sur 11.7 X64 Intel Core i5-4278U CPU 2.60GHz (Haswell)
Same 0.98 +0 macOS Monterey 12.6 X64 Intel Core i7-4870HQ CPU 2.50GHz (Haswell)

System.Text.Tests.Perf_Encoding.GetEncoder(size: 512, encName: "ascii")

Result Ratio Alloc Delta Operating System Bit Processor Name Modality
Same 1.04 +0 ubuntu 18.04 Arm64 Unknown processor
Same 0.95 +0 Windows 11 Arm64 Unknown processor
Faster 1.37 +0 Windows 11 Arm64 Microsoft SQ1 3.0 GHz
Faster 1.14 +0 Windows 11 Arm64 Microsoft SQ1 3.0 GHz
Same 1.08 +0 macOS Monterey 12.6 Arm64 Apple M1
Same 1.03 +0 macOS Monterey 12.6 Arm64 Apple M1 Max
Slower 0.58 +0 Windows 10 X64 Intel Core i7-8650U CPU 1.90GHz (Kaby Lake R)
Same 0.91 +0 Windows 11 X64 AMD Ryzen Threadripper PRO 3945WX 12-Cores
Same 0.96 +0 Windows 11 X64 AMD Ryzen 9 5900X
Same 1.05 +0 Windows 11 X64 AMD Ryzen 9 7950X bimodal
Slower 0.61 +0 Windows 11 X64 Intel Core i7-8700 CPU 3.20GHz (Coffee Lake)
Noise - +0 debian 11 X64 Intel Core i7-8700 CPU 3.20GHz (Coffee Lake)
Noise - +0 ubuntu 18.04 X64 AMD Ryzen 9 5900X
Slower 0.80 +0 ubuntu 18.04 X64 Intel Xeon CPU E5-1650 v4 3.60GHz
Slower 0.80 +0 ubuntu 20.04 X64 AMD Ryzen 9 5900X
Slower 0.52 +0 ubuntu 20.04 X64 Intel Core i7-8650U CPU 1.90GHz (Kaby Lake R) several?
Slower 0.79 +0 ubuntu 20.04 X64 Intel Core i7-8700 CPU 3.20GHz (Coffee Lake)
Same 1.00 +0 macOS Big Sur 11.7 X64 Intel Core i5-4278U CPU 2.60GHz (Haswell)
Same 0.98 +0 macOS Monterey 12.6 X64 Intel Core i7-4870HQ CPU 2.50GHz (Haswell)

System.Text.Tests.Perf_Encoding.GetEncoder(size: 16, encName: "ascii")

Result Ratio Alloc Delta Operating System Bit Processor Name Modality
Same 1.05 +0 ubuntu 18.04 Arm64 Unknown processor
Same 0.94 +0 Windows 11 Arm64 Unknown processor
Faster 1.35 +0 Windows 11 Arm64 Microsoft SQ1 3.0 GHz
Faster 1.14 +0 Windows 11 Arm64 Microsoft SQ1 3.0 GHz
Same 1.06 +0 macOS Monterey 12.6 Arm64 Apple M1
Same 1.05 +0 macOS Monterey 12.6 Arm64 Apple M1 Max
Slower 0.61 +0 Windows 10 X64 Intel Core i7-8650U CPU 1.90GHz (Kaby Lake R)
Same 0.93 +0 Windows 11 X64 AMD Ryzen Threadripper PRO 3945WX 12-Cores
Same 0.94 +0 Windows 11 X64 AMD Ryzen 9 5900X
Same 1.12 +0 Windows 11 X64 AMD Ryzen 9 7950X several?
Slower 0.74 +0 Windows 11 X64 Intel Core i7-8700 CPU 3.20GHz (Coffee Lake)
Noise - +0 debian 11 X64 Intel Core i7-8700 CPU 3.20GHz (Coffee Lake)
Noise - +0 ubuntu 18.04 X64 AMD Ryzen 9 5900X
Slower 0.80 +0 ubuntu 18.04 X64 Intel Xeon CPU E5-1650 v4 3.60GHz
Slower 0.71 +0 ubuntu 20.04 X64 AMD Ryzen 9 5900X
Slower 0.57 +0 ubuntu 20.04 X64 Intel Core i7-8650U CPU 1.90GHz (Kaby Lake R)
Slower 0.78 +0 ubuntu 20.04 X64 Intel Core i7-8700 CPU 3.20GHz (Coffee Lake)
Same 1.00 +0 macOS Big Sur 11.7 X64 Intel Core i5-4278U CPU 2.60GHz (Haswell)
Same 0.99 +0 macOS Monterey 12.6 X64 Intel Core i7-4870HQ CPU 2.50GHz (Haswell)

System.Text.Tests.Perf_Encoding.GetEncoder(size: 512, encName: "utf-8")

Result Ratio Alloc Delta Operating System Bit Processor Name Modality
Same 1.05 +0 ubuntu 18.04 Arm64 Unknown processor
Same 0.94 +0 Windows 11 Arm64 Unknown processor
Faster 1.17 +0 Windows 11 Arm64 Microsoft SQ1 3.0 GHz
Same 1.10 +0 Windows 11 Arm64 Microsoft SQ1 3.0 GHz
Same 1.06 +0 macOS Monterey 12.6 Arm64 Apple M1
Same 1.04 +0 macOS Monterey 12.6 Arm64 Apple M1 Max
Slower 0.52 +0 Windows 10 X64 Intel Core i7-8650U CPU 1.90GHz (Kaby Lake R)
Same 0.96 +0 Windows 11 X64 AMD Ryzen Threadripper PRO 3945WX 12-Cores
Noise - +0 Windows 11 X64 AMD Ryzen 9 5900X bimodal
Same 0.98 +0 Windows 11 X64 AMD Ryzen 9 7950X
Slower 0.72 +0 Windows 11 X64 Intel Core i7-8700 CPU 3.20GHz (Coffee Lake)
Noise - +0 debian 11 X64 Intel Core i7-8700 CPU 3.20GHz (Coffee Lake)
Same 0.90 +0 ubuntu 18.04 X64 AMD Ryzen 9 5900X
Noise - +0 ubuntu 18.04 X64 Intel Xeon CPU E5-1650 v4 3.60GHz
Slower 0.72 +0 ubuntu 20.04 X64 AMD Ryzen 9 5900X several?
Slower 0.60 +0 ubuntu 20.04 X64 Intel Core i7-8650U CPU 1.90GHz (Kaby Lake R) several?
Slower 0.78 +0 ubuntu 20.04 X64 Intel Core i7-8700 CPU 3.20GHz (Coffee Lake)
Same 0.99 +0 macOS Big Sur 11.7 X64 Intel Core i5-4278U CPU 2.60GHz (Haswell)
Same 0.92 +0 macOS Monterey 12.6 X64 Intel Core i7-4870HQ CPU 2.50GHz (Haswell)

And these other benchmarks also showed-up with regression.

System.IO.Tests.StreamReaderReadToEndTests.ReadToEnd(LineLengthRange: [   1,    1]), System.IO.Tests.StreamReaderReadToEndTests.ReadToEnd(LineLengthRange: [  33,  128]),
System.IO.Tests.StreamReaderReadToEndTests.ReadToEnd(LineLengthRange: [ 129, 1024]),
System.IO.Tests.StreamReaderReadToEndTests.ReadToEndAsync(LineLengthRange: [   0,    0]),
System.IO.Tests.StreamReaderReadToEndTests.ReadToEnd(LineLengthRange: [ 0, 1024]).

System.IO.Tests.StreamReaderReadToEndTests.ReadToEnd(LineLengthRange: [ 1, 1])

Result Ratio Alloc Delta Operating System Bit Processor Name Modality
Same 0.99 -5100 ubuntu 18.04 Arm64 Unknown processor
Slower 0.69 +11702 Windows 11 Arm64 Unknown processor bimodal
Same 0.92 +3128 Windows 11 Arm64 Microsoft SQ1 3.0 GHz bimodal
Slower 0.84 +3128 Windows 11 Arm64 Microsoft SQ1 3.0 GHz bimodal
Same 1.03 +3172 macOS Monterey 12.6 Arm64 Apple M1
Slower 0.88 +12511 macOS Monterey 12.6 Arm64 Apple M1 Max
Same 1.01 +4036 Windows 10 X64 Intel Core i7-8650U CPU 1.90GHz (Kaby Lake R) several?
Same 0.98 +6258 Windows 11 X64 AMD Ryzen Threadripper PRO 3945WX 12-Cores
Same 0.98 -560 Windows 11 X64 AMD Ryzen 9 5900X bimodal
Same 1.07 +4138 Windows 11 X64 AMD Ryzen 9 7950X
Same 1.07 +4132 Windows 11 X64 Intel Core i7-8700 CPU 3.20GHz (Coffee Lake)
Slower 0.56 +2198 debian 11 X64 Intel Core i7-8700 CPU 3.20GHz (Coffee Lake) bimodal
Same 1.00 +2626 ubuntu 18.04 X64 AMD Ryzen 9 5900X
Same 0.96 +2018 ubuntu 18.04 X64 Intel Xeon CPU E5-1650 v4 3.60GHz
Slower 0.75 +1454 ubuntu 20.04 X64 AMD Ryzen 9 5900X
Slower 0.59 +4732 ubuntu 20.04 X64 Intel Core i7-8650U CPU 1.90GHz (Kaby Lake R)
Slower 0.54 +6258 ubuntu 20.04 X64 Intel Core i7-8700 CPU 3.20GHz (Coffee Lake)
Slower 0.81 +31108 macOS Big Sur 11.7 X64 Intel Core i5-4278U CPU 2.60GHz (Haswell) bimodal
Same 1.01 +3648 macOS Monterey 12.6 X64 Intel Core i7-4870HQ CPU 2.50GHz (Haswell)

System.IO.Tests.StreamReaderReadToEndTests.ReadToEnd(LineLengthRange: [ 33, 128])

Result Ratio Alloc Delta Operating System Bit Processor Name Modality
Same 0.99 -13220 ubuntu 18.04 Arm64 Unknown processor
Slower 0.68 +10128 Windows 11 Arm64 Unknown processor
Same 0.94 -772 Windows 11 Arm64 Microsoft SQ1 3.0 GHz
Same 0.90 +3288 Windows 11 Arm64 Microsoft SQ1 3.0 GHz several?
Same 1.03 +4546 macOS Monterey 12.6 Arm64 Apple M1
Same 0.92 +13650 macOS Monterey 12.6 Arm64 Apple M1 Max
Same 1.01 +7516 Windows 10 X64 Intel Core i7-8650U CPU 1.90GHz (Kaby Lake R)
Same 0.96 +5788 Windows 11 X64 AMD Ryzen Threadripper PRO 3945WX 12-Cores several?
Slower 0.79 +3312 Windows 11 X64 AMD Ryzen 9 5900X
Same 1.15 +6168 Windows 11 X64 AMD Ryzen 9 7950X
Same 1.09 +4510 Windows 11 X64 Intel Core i7-8700 CPU 3.20GHz (Coffee Lake) several?
Slower 0.55 +4228 debian 11 X64 Intel Core i7-8700 CPU 3.20GHz (Coffee Lake) bimodal
Same 1.02 +2626 ubuntu 18.04 X64 AMD Ryzen 9 5900X
Same 1.07 +5976 ubuntu 18.04 X64 Intel Xeon CPU E5-1650 v4 3.60GHz
Slower 0.76 +1387 ubuntu 20.04 X64 AMD Ryzen 9 5900X
Slower 0.64 +9810 ubuntu 20.04 X64 Intel Core i7-8650U CPU 1.90GHz (Kaby Lake R)
Slower 0.55 +4228 ubuntu 20.04 X64 Intel Core i7-8700 CPU 3.20GHz (Coffee Lake) several?
Slower 0.80 +30772 macOS Big Sur 11.7 X64 Intel Core i5-4278U CPU 2.60GHz (Haswell) bimodal
Same 0.99 -2042 macOS Monterey 12.6 X64 Intel Core i7-4870HQ CPU 2.50GHz (Haswell)

System.IO.Tests.StreamReaderReadToEndTests.ReadToEnd(LineLengthRange: [ 129, 1024])

Result Ratio Alloc Delta Operating System Bit Processor Name Modality
Same 0.99 -5100 ubuntu 18.04 Arm64 Unknown processor
Slower 0.70 +9672 Windows 11 Arm64 Unknown processor bimodal
Same 0.91 +4228 Windows 11 Arm64 Microsoft SQ1 3.0 GHz bimodal
Same 0.90 -768 Windows 11 Arm64 Microsoft SQ1 3.0 GHz bimodal
Same 1.03 +3315 macOS Monterey 12.6 Arm64 Apple M1
Slower 0.82 +16964 macOS Monterey 12.6 Arm64 Apple M1 Max bimodal
Same 1.16 +8096 Windows 10 X64 Intel Core i7-8650U CPU 1.90GHz (Kaby Lake R) several?
Same 0.98 +6258 Windows 11 X64 AMD Ryzen Threadripper PRO 3945WX 12-Cores
Slower 0.85 +3668 Windows 11 X64 AMD Ryzen 9 5900X
Faster 1.16 +1638 Windows 11 X64 AMD Ryzen 9 7950X bimodal
Same 1.12 +8192 Windows 11 X64 Intel Core i7-8700 CPU 3.20GHz (Coffee Lake)
Slower 0.56 +8288 debian 11 X64 Intel Core i7-8700 CPU 3.20GHz (Coffee Lake) bimodal
Same 1.00 +1353 ubuntu 18.04 X64 AMD Ryzen 9 5900X
Same 1.08 +5976 ubuntu 18.04 X64 Intel Xeon CPU E5-1650 v4 3.60GHz
Slower 0.75 +3417 ubuntu 20.04 X64 AMD Ryzen 9 5900X
Slower 0.64 +6492 ubuntu 20.04 X64 Intel Core i7-8650U CPU 1.90GHz (Kaby Lake R)
Slower 0.55 +6258 ubuntu 20.04 X64 Intel Core i7-8700 CPU 3.20GHz (Coffee Lake)
Slower 0.81 +27048 macOS Big Sur 11.7 X64 Intel Core i5-4278U CPU 2.60GHz (Haswell) bimodal
Same 1.01 -412 macOS Monterey 12.6 X64 Intel Core i7-4870HQ CPU 2.50GHz (Haswell)

System.IO.Tests.StreamReaderReadToEndTests.ReadToEnd(LineLengthRange: [ 0, 0])

Result Ratio Alloc Delta Operating System Bit Processor Name Modality
Same 1.00 -13220 ubuntu 18.04 Arm64 Unknown processor
Slower 0.69 +10028 Windows 11 Arm64 Unknown processor
Same 0.91 +4068 Windows 11 Arm64 Microsoft SQ1 3.0 GHz bimodal
Slower 0.81 -748 Windows 11 Arm64 Microsoft SQ1 3.0 GHz bimodal
Same 1.03 +4464 macOS Monterey 12.6 Arm64 Apple M1
Same 0.93 +13650 macOS Monterey 12.6 Arm64 Apple M1 Max
Same 1.05 +3456 Windows 10 X64 Intel Core i7-8650U CPU 1.90GHz (Kaby Lake R)
Same 0.97 +3830 Windows 11 X64 AMD Ryzen Threadripper PRO 3945WX 12-Cores several?
Same 0.96 +3312 Windows 11 X64 AMD Ryzen 9 5900X bimodal
Same 1.08 +1638 Windows 11 X64 AMD Ryzen 9 7950X several?
Same 1.10 +2102 Windows 11 X64 Intel Core i7-8700 CPU 3.20GHz (Coffee Lake) bimodal
Slower 0.54 +4228 debian 11 X64 Intel Core i7-8700 CPU 3.20GHz (Coffee Lake) bimodal
Same 1.01 -80 ubuntu 18.04 X64 AMD Ryzen 9 5900X
Same 1.06 +5976 ubuntu 18.04 X64 Intel Xeon CPU E5-1650 v4 3.60GHz
Slower 0.73 +1387 ubuntu 20.04 X64 AMD Ryzen 9 5900X
Slower 0.64 +2006 ubuntu 20.04 X64 Intel Core i7-8650U CPU 1.90GHz (Kaby Lake R)
Slower 0.56 +6258 ubuntu 20.04 X64 Intel Core i7-8700 CPU 3.20GHz (Coffee Lake)
Slower 0.82 +26700 macOS Big Sur 11.7 X64 Intel Core i5-4278U CPU 2.60GHz (Haswell) bimodal
Same 1.02 +3648 macOS Monterey 12.6 X64 Intel Core i7-4870HQ CPU 2.50GHz (Haswell)

System.IO.Tests.StreamReaderReadToEndTests.ReadToEnd(LineLengthRange: [ 0, 1024])

Result Ratio Alloc Delta Operating System Bit Processor Name Modality
Same 0.99 -5100 ubuntu 18.04 Arm64 Unknown processor
Slower 0.69 +10028 Windows 11 Arm64 Unknown processor
Slower 0.88 +4028 Windows 11 Arm64 Microsoft SQ1 3.0 GHz bimodal
Same 0.99 +3148 Windows 11 Arm64 Microsoft SQ1 3.0 GHz
Same 1.03 +3379 macOS Monterey 12.6 Arm64 Apple M1
Same 0.92 +12297 macOS Monterey 12.6 Arm64 Apple M1 Max
Same 0.98 +8096 Windows 10 X64 Intel Core i7-8650U CPU 1.90GHz (Kaby Lake R) several?
Same 0.98 +6258 Windows 11 X64 AMD Ryzen Threadripper PRO 3945WX 12-Cores bimodal
Same 0.93 +3668 Windows 11 X64 AMD Ryzen 9 5900X
Same 1.07 -320 Windows 11 X64 AMD Ryzen 9 7950X
Same 1.12 +5704 Windows 11 X64 Intel Core i7-8700 CPU 3.20GHz (Coffee Lake) bimodal
Slower 0.54 +2198 debian 11 X64 Intel Core i7-8700 CPU 3.20GHz (Coffee Lake) bimodal
Same 1.00 +2626 ubuntu 18.04 X64 AMD Ryzen 9 5900X
Same 1.08 +5976 ubuntu 18.04 X64 Intel Xeon CPU E5-1650 v4 3.60GHz
Slower 0.75 -643 ubuntu 20.04 X64 AMD Ryzen 9 5900X
Slower 0.63 +9810 ubuntu 20.04 X64 Intel Core i7-8650U CPU 1.90GHz (Kaby Lake R)
Slower 0.55 +6258 ubuntu 20.04 X64 Intel Core i7-8700 CPU 3.20GHz (Coffee Lake) several?
Slower 0.81 +30044 macOS Big Sur 11.7 X64 Intel Core i5-4278U CPU 2.60GHz (Haswell) bimodal
Same 1.00 +3648 macOS Monterey 12.6 X64 Intel Core i7-4870HQ CPU 2.50GHz (Haswell)

@dakersnar
Copy link
Contributor

dakersnar commented Dec 5, 2022

The above StreamReaderReadToEndTests regressions were not reproduced on the .NET 7 vs 6 report.

System.IO.Tests.StreamReaderReadToEndTests.ReadToEnd(LineLengthRange: [ 0, 1024])

Result Ratio Alloc Delta Operating System Bit Processor Name Modality
Faster 1.27 +3132 Windows 11 Arm64 Microsoft SQ1 3.0 GHz bimodal
Same 1.05 -1385 macOS 13.0 Arm64 Apple M1
Faster 1.24 +6078 Windows 10 X64 Intel Xeon CPU E5-1650 v4 3.60GHz
Faster 1.21 +3132 Windows 10 X64 Intel Core i7-5557U CPU 3.10GHz (Broadwell) several?
Same 0.99 +8076 Windows 10 X64 Intel Core i7-8650U CPU 1.90GHz (Kaby Lake R)
Faster 1.14 +5976 Windows 11 X64 AMD Ryzen Threadripper PRO 3945WX 12-Cores
Same 1.12 +5788 Windows 11 X64 11th Gen Intel Core i9-11900 2.50GHz several?
Faster 1.25 +4100 ubuntu 18.04 X64 Intel Xeon CPU E5-1650 v4 3.60GHz
Same 0.98 -716 raspbian 11 Arm ARMv7 Processor rev 3 (v7l)
Faster 1.21 -8880 macOS Monterey 12.6 X64 Intel Core i7-5557U CPU 3.10GHz (Broadwell)

(etc)

@mrsharm
Copy link
Member

mrsharm commented Aug 5, 2023

Closing in lieu of #73592 with the latest .NET 8 results.

@mrsharm mrsharm closed this as completed Aug 5, 2023
@ghost ghost locked as resolved and limited conversation to collaborators Sep 4, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

9 participants