Skip to content

Regressions in ConcurrentDictionary #82105

Description

@performanceautofiler

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 3ff80e90e828bac0370c1930c9950c9650ae61b9
Compare 2b701237cf3169b63d6f61efd2e611c34d2622e2
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
SelectToArray - Duration of single invocation 275.27 ns 305.58 ns 1.11 0.03 False Trace Trace
SelectToArray - Duration of single invocation 473.53 ns 535.12 ns 1.13 0.08 False Trace Trace

graph
graph
Test Report

Repro

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

Payloads

Baseline
Compare

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

Payloads

Baseline
Compare

Histogram

System.Linq.Tests.Perf_Enumerable.SelectToArray(input: Array)


Description of detection logic

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 305.5794906795206 > 289.23635689963385.
IsChangePoint: Marked as a change because one of 12/10/2022 11:25:25 PM, 12/17/2022 10:44:50 PM, 12/21/2022 9:23:17 AM, 1/13/2023 4:37:08 PM, 1/18/2023 3:20:52 PM, 1/27/2023 7:12:54 PM, 2/9/2023 12:40:40 PM, 2/14/2023 2:39:38 AM falls between 2/4/2023 10:21:07 PM and 2/14/2023 2:39:38 AM.
IsRegressionStdDev: Marked as regression because -86.58711038721272 (T) = (0 -307.2820055929849) / Math.Sqrt((2.143934505340105 / (39)) + (1.525019768723927 / (21))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (39) + (21) - 2, .025) and -0.11191851528207822 = (276.35298933306433 - 307.2820055929849) / 276.35298933306433 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Linq.Tests.Perf_Enumerable.SelectToArray(System.Linq.Tests.LinqTestData)
       push      rdi
       push      rsi
       sub       rsp,28
       mov       rsi,[rdx+8]
       mov       rcx,23B9A407250
       mov       rdx,[rcx]
       test      rdx,rdx
       jne       short M00_L00
       mov       rcx,offset MT_System.Func`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
       call      CORINFO_HELP_NEWSFAST
       mov       rdi,rax
       mov       rdx,23B9A4071B0
       mov       rdx,[rdx]
       lea       rcx,[rdi+8]
       call      CORINFO_HELP_ASSIGN_REF
       mov       rdx,7FF8AFFCAF30
       mov       [rdi+18],rdx
       mov       rcx,23B9A407250
       mov       rdx,rdi
       call      CORINFO_HELP_ASSIGN_REF
       mov       rdx,rdi
M00_L00:
       mov       rcx,rsi
       call      qword ptr [7FF8AFFCD000]; System.Linq.Enumerable.Select[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>, System.Func`2<Int32,Int32>)
       mov       rcx,rax
       add       rsp,28
       pop       rsi
       pop       rdi
       jmp       qword ptr [7FF8AFE63510]; System.Linq.Enumerable.ToArray[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>)
; Total bytes of code 127
; System.Linq.Enumerable.Select[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>, System.Func`2<Int32,Int32>)
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       mov       rsi,rcx
       mov       rdi,rdx
       test      rsi,rsi
       je        near ptr M01_L07
       test      rdi,rdi
       je        near ptr M01_L08
       mov       rdx,rsi
       mov       rcx,offset MT_System.Linq.Enumerable+Iterator`1[[System.Int32, System.Private.CoreLib]]
       call      qword ptr [7FF8AFA5D828]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfClass(Void*, System.Object)
       mov       rbx,rax
       test      rbx,rbx
       je        short M01_L00
       mov       rcx,rbx
       mov       rdx,offset MT_System.Linq.Enumerable+Iterator`1[[System.Int32, System.Private.CoreLib]]
       mov       r8,offset MD_System.Linq.Enumerable+Iterator`1[[System.Int32, System.Private.CoreLib]].Select[[System.Int32, System.Private.CoreLib]](System.Func`2<Int32,Int32>)
       call      CORINFO_HELP_VIRTUAL_FUNC_PTR
       mov       rcx,rbx
       mov       rdx,rdi
       call      rax
       jmp       near ptr M01_L06
M01_L00:
       mov       rdx,rsi
       mov       rcx,offset MT_System.Collections.Generic.IList`1[[System.Int32, System.Private.CoreLib]]
       call      qword ptr [7FF8AFA5D810]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(Void*, System.Object)
       mov       rbx,rax
       test      rbx,rbx
       je        near ptr M01_L04
       mov       rdx,rsi
       mov       rcx,offset MT_System.Int32[]
       call      qword ptr [7FF8AFA5D7F8]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfAny(Void*, System.Object)
       mov       rbp,rax
       test      rbp,rbp
       je        short M01_L02
       cmp       dword ptr [rbp+8],0
       je        short M01_L01
       mov       rcx,offset MT_System.Linq.Enumerable+SelectArrayIterator`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
       call      CORINFO_HELP_NEWSFAST
       mov       rsi,rax
       call      CORINFO_HELP_GETCURRENTMANAGEDTHREADID
       mov       [rsi+8],eax
       lea       rcx,[rsi+18]
       mov       rdx,rbp
       call      CORINFO_HELP_ASSIGN_REF
       lea       rcx,[rsi+20]
       mov       rdx,rdi
       call      CORINFO_HELP_ASSIGN_REF
       mov       rax,rsi
       jmp       near ptr M01_L06
M01_L01:
       mov       rcx,7FF8AFCA7C08
       mov       edx,4
       call      CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
       mov       rdx,23B9A401F48
       mov       rax,[rdx]
       jmp       near ptr M01_L06
M01_L02:
       mov       rdx,rsi
       mov       rcx,offset MT_System.Collections.Generic.List`1[[System.Int32, System.Private.CoreLib]]
       call      qword ptr [7FF8AFA5D828]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfClass(Void*, System.Object)
       mov       rsi,rax
       test      rsi,rsi
       je        short M01_L03
       mov       rcx,offset MT_System.Linq.Enumerable+SelectListIterator`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
       call      CORINFO_HELP_NEWSFAST
       mov       rbx,rax
       call      CORINFO_HELP_GETCURRENTMANAGEDTHREADID
       mov       [rbx+8],eax
       lea       rcx,[rbx+18]
       mov       rdx,rsi
       call      CORINFO_HELP_ASSIGN_REF
       lea       rcx,[rbx+20]
       mov       rdx,rdi
       call      CORINFO_HELP_ASSIGN_REF
       mov       rax,rbx
       jmp       near ptr M01_L06
M01_L03:
       mov       rcx,offset MT_System.Linq.Enumerable+SelectIListIterator`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
       call      CORINFO_HELP_NEWSFAST
       mov       rsi,rax
       call      CORINFO_HELP_GETCURRENTMANAGEDTHREADID
       mov       [rsi+8],eax
       lea       rcx,[rsi+18]
       mov       rdx,rbx
       call      CORINFO_HELP_ASSIGN_REF
       lea       rcx,[rsi+20]
       mov       rdx,rdi
       call      CORINFO_HELP_ASSIGN_REF
       mov       rax,rsi
       jmp       short M01_L06
M01_L04:
       mov       rdx,rsi
       mov       rcx,offset MT_System.Linq.IPartition`1[[System.Int32, System.Private.CoreLib]]
       call      qword ptr [7FF8AFA5D810]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(Void*, System.Object)
       test      rax,rax
       je        short M01_L05
       xor       r8d,r8d
       mov       [rsp+20],r8
       lea       r8,[rsp+20]
       mov       rcx,rdi
       mov       rdx,rax
       call      qword ptr [7FF8AFFCD0D8]
       cmp       qword ptr [rsp+20],0
       je        short M01_L05
       mov       rax,[rsp+20]
       jmp       short M01_L06
M01_L05:
       mov       rcx,offset MT_System.Linq.Enumerable+SelectEnumerableIterator`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
       call      CORINFO_HELP_NEWSFAST
       mov       rbx,rax
       call      CORINFO_HELP_GETCURRENTMANAGEDTHREADID
       mov       [rbx+8],eax
       lea       rcx,[rbx+18]
       mov       rdx,rsi
       call      CORINFO_HELP_ASSIGN_REF
       lea       rcx,[rbx+20]
       mov       rdx,rdi
       call      CORINFO_HELP_ASSIGN_REF
       mov       rax,rbx
M01_L06:
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       ret
M01_L07:
       mov       ecx,10
       call      qword ptr [7FF8AFDD1798]
       int       3
M01_L08:
       mov       ecx,0F
       call      qword ptr [7FF8AFDD1798]
       int       3
; Total bytes of code 557
; System.Linq.Enumerable.ToArray[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>)
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       test      rsi,rsi
       je        short M02_L01
       mov       rdx,rsi
       mov       rcx,offset MT_System.Linq.IIListProvider`1[[System.Int32, System.Private.CoreLib]]
       call      qword ptr [7FF8AFA5D810]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(Void*, System.Object)
       test      rax,rax
       jne       short M02_L00
       mov       rcx,rsi
       add       rsp,20
       pop       rsi
       jmp       qword ptr [7FF8AFE63E28]
M02_L00:
       mov       rcx,rax
       mov       r11,7FF8AF8B0598
       add       rsp,20
       pop       rsi
       jmp       qword ptr [r11]
M02_L01:
       mov       ecx,10
       call      qword ptr [7FF8AFDD1798]
       int       3
; Total bytes of code 84

Compare Jit Disasm

; System.Linq.Tests.Perf_Enumerable.SelectToArray(System.Linq.Tests.LinqTestData)
       push      rdi
       push      rsi
       sub       rsp,28
       mov       rsi,[rdx+8]
       mov       rcx,15241807250
       mov       rdx,[rcx]
       test      rdx,rdx
       jne       short M00_L00
       mov       rcx,offset MT_System.Func`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
       call      CORINFO_HELP_NEWSFAST
       mov       rdi,rax
       mov       rdx,152418071B0
       mov       rdx,[rdx]
       lea       rcx,[rdi+8]
       call      CORINFO_HELP_ASSIGN_REF
       mov       rdx,7FFA0D18AF30
       mov       [rdi+18],rdx
       mov       rcx,15241807250
       mov       rdx,rdi
       call      CORINFO_HELP_ASSIGN_REF
       mov       rdx,rdi
M00_L00:
       mov       rcx,rsi
       call      qword ptr [7FFA0D18D000]; System.Linq.Enumerable.Select[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>, System.Func`2<Int32,Int32>)
       mov       rcx,rax
       add       rsp,28
       pop       rsi
       pop       rdi
       jmp       qword ptr [7FFA0D023510]; System.Linq.Enumerable.ToArray[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>)
; Total bytes of code 127
; System.Linq.Enumerable.Select[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>, System.Func`2<Int32,Int32>)
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       mov       rsi,rcx
       mov       rdi,rdx
       test      rsi,rsi
       je        near ptr M01_L07
       test      rdi,rdi
       je        near ptr M01_L08
       mov       rdx,rsi
       mov       rcx,offset MT_System.Linq.Enumerable+Iterator`1[[System.Int32, System.Private.CoreLib]]
       call      qword ptr [7FFA0CC1D828]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfClass(Void*, System.Object)
       mov       rbx,rax
       test      rbx,rbx
       je        short M01_L00
       mov       rcx,rbx
       mov       rdx,offset MT_System.Linq.Enumerable+Iterator`1[[System.Int32, System.Private.CoreLib]]
       mov       r8,offset MD_System.Linq.Enumerable+Iterator`1[[System.Int32, System.Private.CoreLib]].Select[[System.Int32, System.Private.CoreLib]](System.Func`2<Int32,Int32>)
       call      CORINFO_HELP_VIRTUAL_FUNC_PTR
       mov       rcx,rbx
       mov       rdx,rdi
       call      rax
       jmp       near ptr M01_L06
M01_L00:
       mov       rdx,rsi
       mov       rcx,offset MT_System.Collections.Generic.IList`1[[System.Int32, System.Private.CoreLib]]
       call      qword ptr [7FFA0CC1D810]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(Void*, System.Object)
       mov       rbx,rax
       test      rbx,rbx
       je        near ptr M01_L04
       mov       rdx,rsi
       mov       rcx,offset MT_System.Int32[]
       call      qword ptr [7FFA0CC1D7F8]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfAny(Void*, System.Object)
       mov       rbp,rax
       test      rbp,rbp
       je        short M01_L02
       cmp       dword ptr [rbp+8],0
       je        short M01_L01
       mov       rcx,offset MT_System.Linq.Enumerable+SelectArrayIterator`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
       call      CORINFO_HELP_NEWSFAST
       mov       rsi,rax
       call      CORINFO_HELP_GETCURRENTMANAGEDTHREADID
       mov       [rsi+8],eax
       lea       rcx,[rsi+18]
       mov       rdx,rbp
       call      CORINFO_HELP_ASSIGN_REF
       lea       rcx,[rsi+20]
       mov       rdx,rdi
       call      CORINFO_HELP_ASSIGN_REF
       mov       rax,rsi
       jmp       near ptr M01_L06
M01_L01:
       mov       rcx,7FFA0CE68118
       mov       edx,4
       call      CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
       mov       rdx,15241801F58
       mov       rax,[rdx]
       jmp       near ptr M01_L06
M01_L02:
       mov       rdx,rsi
       mov       rcx,offset MT_System.Collections.Generic.List`1[[System.Int32, System.Private.CoreLib]]
       call      qword ptr [7FFA0CC1D828]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfClass(Void*, System.Object)
       mov       rsi,rax
       test      rsi,rsi
       je        short M01_L03
       mov       rcx,offset MT_System.Linq.Enumerable+SelectListIterator`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
       call      CORINFO_HELP_NEWSFAST
       mov       rbx,rax
       call      CORINFO_HELP_GETCURRENTMANAGEDTHREADID
       mov       [rbx+8],eax
       lea       rcx,[rbx+18]
       mov       rdx,rsi
       call      CORINFO_HELP_ASSIGN_REF
       lea       rcx,[rbx+20]
       mov       rdx,rdi
       call      CORINFO_HELP_ASSIGN_REF
       mov       rax,rbx
       jmp       near ptr M01_L06
M01_L03:
       mov       rcx,offset MT_System.Linq.Enumerable+SelectIListIterator`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
       call      CORINFO_HELP_NEWSFAST
       mov       rsi,rax
       call      CORINFO_HELP_GETCURRENTMANAGEDTHREADID
       mov       [rsi+8],eax
       lea       rcx,[rsi+18]
       mov       rdx,rbx
       call      CORINFO_HELP_ASSIGN_REF
       lea       rcx,[rsi+20]
       mov       rdx,rdi
       call      CORINFO_HELP_ASSIGN_REF
       mov       rax,rsi
       jmp       short M01_L06
M01_L04:
       mov       rdx,rsi
       mov       rcx,offset MT_System.Linq.IPartition`1[[System.Int32, System.Private.CoreLib]]
       call      qword ptr [7FFA0CC1D810]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(Void*, System.Object)
       test      rax,rax
       je        short M01_L05
       xor       r8d,r8d
       mov       [rsp+20],r8
       lea       r8,[rsp+20]
       mov       rcx,rdi
       mov       rdx,rax
       call      qword ptr [7FFA0D18D0D8]
       cmp       qword ptr [rsp+20],0
       je        short M01_L05
       mov       rax,[rsp+20]
       jmp       short M01_L06
M01_L05:
       mov       rcx,offset MT_System.Linq.Enumerable+SelectEnumerableIterator`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
       call      CORINFO_HELP_NEWSFAST
       mov       rbx,rax
       call      CORINFO_HELP_GETCURRENTMANAGEDTHREADID
       mov       [rbx+8],eax
       lea       rcx,[rbx+18]
       mov       rdx,rsi
       call      CORINFO_HELP_ASSIGN_REF
       lea       rcx,[rbx+20]
       mov       rdx,rdi
       call      CORINFO_HELP_ASSIGN_REF
       mov       rax,rbx
M01_L06:
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       ret
M01_L07:
       mov       ecx,10
       call      qword ptr [7FFA0CF91798]
       int       3
M01_L08:
       mov       ecx,0F
       call      qword ptr [7FFA0CF91798]
       int       3
; Total bytes of code 557
; System.Linq.Enumerable.ToArray[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>)
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       test      rsi,rsi
       je        short M02_L01
       mov       rdx,rsi
       mov       rcx,offset MT_System.Linq.IIListProvider`1[[System.Int32, System.Private.CoreLib]]
       call      qword ptr [7FFA0CC1D810]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(Void*, System.Object)
       test      rax,rax
       jne       short M02_L00
       mov       rcx,rsi
       add       rsp,20
       pop       rsi
       jmp       qword ptr [7FFA0D023E28]
M02_L00:
       mov       rcx,rax
       mov       r11,7FFA0CA705A0
       add       rsp,20
       pop       rsi
       jmp       qword ptr [r11]
M02_L01:
       mov       ecx,10
       call      qword ptr [7FFA0CF91798]
       int       3
; Total bytes of code 84

System.Linq.Tests.Perf_Enumerable.SelectToArray(input: IList)


Description of detection logic

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 535.1167007579127 > 497.9497986035288.
IsChangePoint: Marked as a change because one of 12/10/2022 11:25:25 PM, 1/13/2023 4:37:08 PM, 1/18/2023 3:20:52 PM, 1/27/2023 7:12:54 PM, 2/9/2023 12:40:40 PM, 2/14/2023 2:39:38 AM falls between 2/4/2023 10:21:07 PM and 2/14/2023 2:39:38 AM.
IsRegressionStdDev: Marked as regression because -51.90095249357905 (T) = (0 -532.1641996998612) / Math.Sqrt((36.43729423330508 / (39)) + (7.140647846614348 / (21))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (39) + (21) - 2, .025) and -0.12371590189233013 = (473.57539285837305 - 532.1641996998612) / 473.57539285837305 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Linq.Tests.Perf_Enumerable.SelectToArray(System.Linq.Tests.LinqTestData)
       push      rdi
       push      rsi
       sub       rsp,28
       mov       rsi,[rdx+8]
       mov       rcx,29762407250
       mov       rdx,[rcx]
       test      rdx,rdx
       jne       short M00_L00
       mov       rcx,offset MT_System.Func`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
       call      CORINFO_HELP_NEWSFAST
       mov       rdi,rax
       mov       rdx,297624071B0
       mov       rdx,[rdx]
       lea       rcx,[rdi+8]
       call      CORINFO_HELP_ASSIGN_REF
       mov       rdx,7FF8AFFBC1F8
       mov       [rdi+18],rdx
       mov       rcx,29762407250
       mov       rdx,rdi
       call      CORINFO_HELP_ASSIGN_REF
       mov       rdx,rdi
M00_L00:
       mov       rcx,rsi
       call      qword ptr [7FF8AFFBD2B8]; System.Linq.Enumerable.Select[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>, System.Func`2<Int32,Int32>)
       mov       rcx,rax
       add       rsp,28
       pop       rsi
       pop       rdi
       jmp       qword ptr [7FF8AFE53510]; System.Linq.Enumerable.ToArray[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>)
; Total bytes of code 127
; System.Linq.Enumerable.Select[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>, System.Func`2<Int32,Int32>)
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       mov       rsi,rcx
       mov       rdi,rdx
       test      rsi,rsi
       je        near ptr M01_L07
       test      rdi,rdi
       je        near ptr M01_L08
       mov       rdx,rsi
       mov       rcx,offset MT_System.Linq.Enumerable+Iterator`1[[System.Int32, System.Private.CoreLib]]
       call      qword ptr [7FF8AFA4D828]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfClass(Void*, System.Object)
       mov       rbx,rax
       test      rbx,rbx
       je        short M01_L00
       mov       rcx,rbx
       mov       rdx,offset MT_System.Linq.Enumerable+Iterator`1[[System.Int32, System.Private.CoreLib]]
       mov       r8,offset MD_System.Linq.Enumerable+Iterator`1[[System.Int32, System.Private.CoreLib]].Select[[System.Int32, System.Private.CoreLib]](System.Func`2<Int32,Int32>)
       call      CORINFO_HELP_VIRTUAL_FUNC_PTR
       mov       rcx,rbx
       mov       rdx,rdi
       call      rax
       jmp       near ptr M01_L06
M01_L00:
       mov       rdx,rsi
       mov       rcx,offset MT_System.Collections.Generic.IList`1[[System.Int32, System.Private.CoreLib]]
       call      qword ptr [7FF8AFA4D810]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(Void*, System.Object)
       mov       rbx,rax
       test      rbx,rbx
       je        near ptr M01_L04
       mov       rdx,rsi
       mov       rcx,offset MT_System.Int32[]
       call      qword ptr [7FF8AFA4D7F8]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfAny(Void*, System.Object)
       mov       rbp,rax
       test      rbp,rbp
       je        short M01_L02
       cmp       dword ptr [rbp+8],0
       je        short M01_L01
       mov       rcx,offset MT_System.Linq.Enumerable+SelectArrayIterator`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
       call      CORINFO_HELP_NEWSFAST
       mov       rsi,rax
       call      CORINFO_HELP_GETCURRENTMANAGEDTHREADID
       mov       [rsi+8],eax
       lea       rcx,[rsi+18]
       mov       rdx,rbp
       call      CORINFO_HELP_ASSIGN_REF
       lea       rcx,[rsi+20]
       mov       rdx,rdi
       call      CORINFO_HELP_ASSIGN_REF
       mov       rax,rsi
       jmp       near ptr M01_L06
M01_L01:
       mov       rcx,7FF8AFC97C08
       mov       edx,4
       call      CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
       mov       rdx,29762401F50
       mov       rax,[rdx]
       jmp       near ptr M01_L06
M01_L02:
       mov       rdx,rsi
       mov       rcx,offset MT_System.Collections.Generic.List`1[[System.Int32, System.Private.CoreLib]]
       call      qword ptr [7FF8AFA4D828]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfClass(Void*, System.Object)
       mov       rsi,rax
       test      rsi,rsi
       je        short M01_L03
       mov       rcx,offset MT_System.Linq.Enumerable+SelectListIterator`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
       call      CORINFO_HELP_NEWSFAST
       mov       rbx,rax
       call      CORINFO_HELP_GETCURRENTMANAGEDTHREADID
       mov       [rbx+8],eax
       lea       rcx,[rbx+18]
       mov       rdx,rsi
       call      CORINFO_HELP_ASSIGN_REF
       lea       rcx,[rbx+20]
       mov       rdx,rdi
       call      CORINFO_HELP_ASSIGN_REF
       mov       rax,rbx
       jmp       near ptr M01_L06
M01_L03:
       mov       rcx,offset MT_System.Linq.Enumerable+SelectIListIterator`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
       call      CORINFO_HELP_NEWSFAST
       mov       rsi,rax
       call      CORINFO_HELP_GETCURRENTMANAGEDTHREADID
       mov       [rsi+8],eax
       lea       rcx,[rsi+18]
       mov       rdx,rbx
       call      CORINFO_HELP_ASSIGN_REF
       lea       rcx,[rsi+20]
       mov       rdx,rdi
       call      CORINFO_HELP_ASSIGN_REF
       mov       rax,rsi
       jmp       short M01_L06
M01_L04:
       mov       rdx,rsi
       mov       rcx,offset MT_System.Linq.IPartition`1[[System.Int32, System.Private.CoreLib]]
       call      qword ptr [7FF8AFA4D810]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(Void*, System.Object)
       test      rax,rax
       je        short M01_L05
       xor       r8d,r8d
       mov       [rsp+20],r8
       lea       r8,[rsp+20]
       mov       rcx,rdi
       mov       rdx,rax
       call      qword ptr [7FF8AFFBD390]
       cmp       qword ptr [rsp+20],0
       je        short M01_L05
       mov       rax,[rsp+20]
       jmp       short M01_L06
M01_L05:
       mov       rcx,offset MT_System.Linq.Enumerable+SelectEnumerableIterator`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
       call      CORINFO_HELP_NEWSFAST
       mov       rbx,rax
       call      CORINFO_HELP_GETCURRENTMANAGEDTHREADID
       mov       [rbx+8],eax
       lea       rcx,[rbx+18]
       mov       rdx,rsi
       call      CORINFO_HELP_ASSIGN_REF
       lea       rcx,[rbx+20]
       mov       rdx,rdi
       call      CORINFO_HELP_ASSIGN_REF
       mov       rax,rbx
M01_L06:
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       ret
M01_L07:
       mov       ecx,10
       call      qword ptr [7FF8AFDC1798]
       int       3
M01_L08:
       mov       ecx,0F
       call      qword ptr [7FF8AFDC1798]
       int       3
; Total bytes of code 557
; System.Linq.Enumerable.ToArray[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>)
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       test      rsi,rsi
       je        short M02_L01
       mov       rdx,rsi
       mov       rcx,offset MT_System.Linq.IIListProvider`1[[System.Int32, System.Private.CoreLib]]
       call      qword ptr [7FF8AFA4D810]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(Void*, System.Object)
       test      rax,rax
       jne       short M02_L00
       mov       rcx,rsi
       add       rsp,20
       pop       rsi
       jmp       qword ptr [7FF8AFE53E28]
M02_L00:
       mov       rcx,rax
       mov       r11,7FF8AF8A05A8
       add       rsp,20
       pop       rsi
       jmp       qword ptr [r11]
M02_L01:
       mov       ecx,10
       call      qword ptr [7FF8AFDC1798]
       int       3
; Total bytes of code 84

Compare Jit Disasm

; System.Linq.Tests.Perf_Enumerable.SelectToArray(System.Linq.Tests.LinqTestData)
       push      rdi
       push      rsi
       sub       rsp,28
       mov       rsi,[rdx+8]
       mov       rcx,21DC6007250
       mov       rdx,[rcx]
       test      rdx,rdx
       jne       short M00_L00
       mov       rcx,offset MT_System.Func`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
       call      CORINFO_HELP_NEWSFAST
       mov       rdi,rax
       mov       rdx,21DC60071B0
       mov       rdx,[rdx]
       lea       rcx,[rdi+8]
       call      CORINFO_HELP_ASSIGN_REF
       mov       rdx,7FFA0D18C1F8
       mov       [rdi+18],rdx
       mov       rcx,21DC6007250
       mov       rdx,rdi
       call      CORINFO_HELP_ASSIGN_REF
       mov       rdx,rdi
M00_L00:
       mov       rcx,rsi
       call      qword ptr [7FFA0D18D2B8]; System.Linq.Enumerable.Select[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>, System.Func`2<Int32,Int32>)
       mov       rcx,rax
       add       rsp,28
       pop       rsi
       pop       rdi
       jmp       qword ptr [7FFA0D023510]; System.Linq.Enumerable.ToArray[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>)
; Total bytes of code 127
; System.Linq.Enumerable.Select[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>, System.Func`2<Int32,Int32>)
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       mov       rsi,rcx
       mov       rdi,rdx
       test      rsi,rsi
       je        near ptr M01_L07
       test      rdi,rdi
       je        near ptr M01_L08
       mov       rdx,rsi
       mov       rcx,offset MT_System.Linq.Enumerable+Iterator`1[[System.Int32, System.Private.CoreLib]]
       call      qword ptr [7FFA0CC1D828]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfClass(Void*, System.Object)
       mov       rbx,rax
       test      rbx,rbx
       je        short M01_L00
       mov       rcx,rbx
       mov       rdx,offset MT_System.Linq.Enumerable+Iterator`1[[System.Int32, System.Private.CoreLib]]
       mov       r8,offset MD_System.Linq.Enumerable+Iterator`1[[System.Int32, System.Private.CoreLib]].Select[[System.Int32, System.Private.CoreLib]](System.Func`2<Int32,Int32>)
       call      CORINFO_HELP_VIRTUAL_FUNC_PTR
       mov       rcx,rbx
       mov       rdx,rdi
       call      rax
       jmp       near ptr M01_L06
M01_L00:
       mov       rdx,rsi
       mov       rcx,offset MT_System.Collections.Generic.IList`1[[System.Int32, System.Private.CoreLib]]
       call      qword ptr [7FFA0CC1D810]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(Void*, System.Object)
       mov       rbx,rax
       test      rbx,rbx
       je        near ptr M01_L04
       mov       rdx,rsi
       mov       rcx,offset MT_System.Int32[]
       call      qword ptr [7FFA0CC1D7F8]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfAny(Void*, System.Object)
       mov       rbp,rax
       test      rbp,rbp
       je        short M01_L02
       cmp       dword ptr [rbp+8],0
       je        short M01_L01
       mov       rcx,offset MT_System.Linq.Enumerable+SelectArrayIterator`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
       call      CORINFO_HELP_NEWSFAST
       mov       rsi,rax
       call      CORINFO_HELP_GETCURRENTMANAGEDTHREADID
       mov       [rsi+8],eax
       lea       rcx,[rsi+18]
       mov       rdx,rbp
       call      CORINFO_HELP_ASSIGN_REF
       lea       rcx,[rsi+20]
       mov       rdx,rdi
       call      CORINFO_HELP_ASSIGN_REF
       mov       rax,rsi
       jmp       near ptr M01_L06
M01_L01:
       mov       rcx,7FFA0CE68118
       mov       edx,4
       call      CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
       mov       rdx,21DC6001F60
       mov       rax,[rdx]
       jmp       near ptr M01_L06
M01_L02:
       mov       rdx,rsi
       mov       rcx,offset MT_System.Collections.Generic.List`1[[System.Int32, System.Private.CoreLib]]
       call      qword ptr [7FFA0CC1D828]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfClass(Void*, System.Object)
       mov       rsi,rax
       test      rsi,rsi
       je        short M01_L03
       mov       rcx,offset MT_System.Linq.Enumerable+SelectListIterator`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
       call      CORINFO_HELP_NEWSFAST
       mov       rbx,rax
       call      CORINFO_HELP_GETCURRENTMANAGEDTHREADID
       mov       [rbx+8],eax
       lea       rcx,[rbx+18]
       mov       rdx,rsi
       call      CORINFO_HELP_ASSIGN_REF
       lea       rcx,[rbx+20]
       mov       rdx,rdi
       call      CORINFO_HELP_ASSIGN_REF
       mov       rax,rbx
       jmp       near ptr M01_L06
M01_L03:
       mov       rcx,offset MT_System.Linq.Enumerable+SelectIListIterator`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
       call      CORINFO_HELP_NEWSFAST
       mov       rsi,rax
       call      CORINFO_HELP_GETCURRENTMANAGEDTHREADID
       mov       [rsi+8],eax
       lea       rcx,[rsi+18]
       mov       rdx,rbx
       call      CORINFO_HELP_ASSIGN_REF
       lea       rcx,[rsi+20]
       mov       rdx,rdi
       call      CORINFO_HELP_ASSIGN_REF
       mov       rax,rsi
       jmp       short M01_L06
M01_L04:
       mov       rdx,rsi
       mov       rcx,offset MT_System.Linq.IPartition`1[[System.Int32, System.Private.CoreLib]]
       call      qword ptr [7FFA0CC1D810]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(Void*, System.Object)
       test      rax,rax
       je        short M01_L05
       xor       r8d,r8d
       mov       [rsp+20],r8
       lea       r8,[rsp+20]
       mov       rcx,rdi
       mov       rdx,rax
       call      qword ptr [7FFA0D18D390]
       cmp       qword ptr [rsp+20],0
       je        short M01_L05
       mov       rax,[rsp+20]
       jmp       short M01_L06
M01_L05:
       mov       rcx,offset MT_System.Linq.Enumerable+SelectEnumerableIterator`2[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
       call      CORINFO_HELP_NEWSFAST
       mov       rbx,rax
       call      CORINFO_HELP_GETCURRENTMANAGEDTHREADID
       mov       [rbx+8],eax
       lea       rcx,[rbx+18]
       mov       rdx,rsi
       call      CORINFO_HELP_ASSIGN_REF
       lea       rcx,[rbx+20]
       mov       rdx,rdi
       call      CORINFO_HELP_ASSIGN_REF
       mov       rax,rbx
M01_L06:
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       ret
M01_L07:
       mov       ecx,10
       call      qword ptr [7FFA0CF91798]
       int       3
M01_L08:
       mov       ecx,0F
       call      qword ptr [7FFA0CF91798]
       int       3
; Total bytes of code 557
; System.Linq.Enumerable.ToArray[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>)
       push      rsi
       sub       rsp,20
       mov       rsi,rcx
       test      rsi,rsi
       je        short M02_L01
       mov       rdx,rsi
       mov       rcx,offset MT_System.Linq.IIListProvider`1[[System.Int32, System.Private.CoreLib]]
       call      qword ptr [7FFA0CC1D810]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(Void*, System.Object)
       test      rax,rax
       jne       short M02_L00
       mov       rcx,rsi
       add       rsp,20
       pop       rsi
       jmp       qword ptr [7FFA0D023E28]
M02_L00:
       mov       rcx,rax
       mov       r11,7FFA0CA705B0
       add       rsp,20
       pop       rsi
       jmp       qword ptr [r11]
M02_L01:
       mov       ecx,10
       call      qword ptr [7FFA0CF91798]
       int       3
; Total bytes of code 84

Docs

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

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 3ff80e90e828bac0370c1930c9950c9650ae61b9
Compare 2b701237cf3169b63d6f61efd2e611c34d2622e2
Diff Diff

Regressions in System.Collections.CtorGivenSize<String>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
ConcurrentDictionary - Duration of single invocation 226.35 ns 245.03 ns 1.08 0.05 False

graph
Test Report

Repro

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

Payloads

Baseline
Compare

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

Payloads

Baseline
Compare

Histogram

System.Collections.CtorGivenSize<String>.ConcurrentDictionary(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 245.03246665337477 > 232.6650881757695.
IsChangePoint: Marked as a change because one of 2/9/2023 12:40:40 PM, 2/14/2023 2:39:38 AM falls between 2/4/2023 10:21:07 PM and 2/14/2023 2:39:38 AM.
IsRegressionStdDev: Marked as regression because -24.56781586341177 (T) = (0 -242.50366940405826) / Math.Sqrt((10.431615517322415 / (40)) + (7.943101980711896 / (21))) is less than -2.000995378087428 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (40) + (21) - 2, .025) and -0.08812271493748952 = (222.86426528462795 - 242.50366940405826) / 222.86426528462795 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 3ff80e90e828bac0370c1930c9950c9650ae61b9
Compare 2b701237cf3169b63d6f61efd2e611c34d2622e2
Diff Diff

Regressions in System.Collections.IterateFor<String>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
ImmutableList - Duration of single invocation 14.91 μs 15.90 μs 1.07 0.02 False

graph
Test Report

Repro

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

Payloads

Baseline
Compare

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

Payloads

Baseline
Compare

Histogram

System.Collections.IterateFor<String>.ImmutableList(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 15.902512533291555 > 15.664715177480232.
IsChangePoint: Marked as a change because one of 1/13/2023 4:37:08 PM, 1/18/2023 3:20:52 PM, 1/27/2023 7:12:54 PM, 2/9/2023 12:40:40 PM, 2/14/2023 2:39:38 AM falls between 2/4/2023 10:21:07 PM and 2/14/2023 2:39:38 AM.
IsRegressionStdDev: Marked as regression because -34.02879577224974 (T) = (0 -16415.825859214612) / Math.Sqrt((1699.8626873477351 / (40)) + (38761.785851854846 / (21))) is less than -2.000995378087428 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (40) + (21) - 2, .025) and -0.0989953318849595 = (14937.120643687125 - 16415.825859214612) / 14937.120643687125 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 3ff80e90e828bac0370c1930c9950c9650ae61b9
Compare 2b701237cf3169b63d6f61efd2e611c34d2622e2
Diff Diff

Regressions in System.Collections.TryAddDefaultSize<Int32>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
ConcurrentDictionary - Duration of single invocation 63.79 μs 79.10 μs 1.24 0.01 False
Dictionary - Duration of single invocation 8.62 μs 9.06 μs 1.05 0.10 False

graph
graph
Test Report

Repro

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

Payloads

Baseline
Compare

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

Payloads

Baseline
Compare

Histogram

System.Collections.TryAddDefaultSize<Int32>.ConcurrentDictionary(Count: 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 79.09749365482233 > 66.92382576196857.
IsChangePoint: Marked as a change because one of 2/9/2023 12:40:40 PM, 2/14/2023 2:39:38 AM falls between 2/4/2023 10:21:07 PM and 2/14/2023 2:39:38 AM.
IsRegressionStdDev: Marked as regression because -120.91489896950517 (T) = (0 -79108.7515492921) / Math.Sqrt((164766.28390214598 / (40)) + (254571.07271373607 / (21))) is less than -2.000995378087428 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (40) + (21) - 2, .025) and -0.2419140462473129 = (63699.05533183614 - 79108.7515492921) / 63699.05533183614 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.TryAddDefaultSize&lt;Int32&gt;.Dictionary(Count: 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 9.058340383119408 > 8.915567841493628.
IsChangePoint: Marked as a change because one of 12/28/2022 7:19:51 AM, 1/5/2023 12:24:13 PM, 2/9/2023 4:10:34 PM, 2/14/2023 2:39:38 AM falls between 2/4/2023 10:21:07 PM and 2/14/2023 2:39:38 AM.
IsRegressionStdDev: Marked as regression because -13.718523841981185 (T) = (0 -9630.15318343178) / Math.Sqrt((10342.398999909683 / (40)) + (132238.30280433354 / (20))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (40) + (20) - 2, .025) and -0.13388662883343178 = (8493.047663274325 - 9630.15318343178) / 8493.047663274325 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

Metadata

Metadata

Assignees

Labels

area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMItenet-performancePerformance related issuetenet-performance-benchmarksIssue from performance benchmark

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions