Skip to content

Regressions around IndexOf #80441

Description

@performanceautofiler

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline ee6de921299d1b86a02d9049b9c8dd164cab1401
Compare 7fa0d5b5942f138c362f2753398b4a8d4f71eb73
Diff Diff

Regressions in System.Text.RegularExpressions.Tests.Perf_Regex_Industry_Leipzig

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
Count - Duration of single invocation 8.68 ms 11.31 ms 1.30 0.05 False

graph
Test Report

Repro

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

Payloads

Baseline
Compare

Histogram

System.Text.RegularExpressions.Tests.Perf_Regex_Industry_Leipzig.Count(Pattern: "(?i)Twain", Options: None)


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.31371125 > 9.244280525862068.
IsChangePoint: Marked as a change because one of 10/27/2022 12:34:03 AM, 1/3/2023 6:29:42 AM, 1/10/2023 1:28:02 AM falls between 1/1/2023 3:57:25 AM and 1/10/2023 1:28:02 AM.
IsRegressionStdDev: Marked as regression because -6.374166673789645 (T) = (0 -9603758.60660944) / Math.Sqrt((8648777551.858488 / (14)) + (541761443840.9534 / (33))) is less than -2.0141033888794695 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (14) + (33) - 2, .025) and -0.09484229454698666 = (8771819.150979357 - 9603758.60660944) / 8771819.150979357 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 ee6de921299d1b86a02d9049b9c8dd164cab1401
Compare 7fa0d5b5942f138c362f2753398b4a8d4f71eb73
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_Char - Duration of single invocation 4.17 ns 5.58 ns 1.34 0.05 False Trace Trace
TrimEnd_CharArr - Duration of single invocation 15.10 ns 16.24 ns 1.08 0.04 False Trace Trace
Replace_Char - Duration of single invocation 4.13 ns 6.14 ns 1.49 0.04 False Trace Trace
Replace_String - Duration of single invocation 52.91 ns 56.12 ns 1.06 0.17 False Trace Trace
Replace_Char - Duration of single invocation 19.53 ns 22.33 ns 1.14 0.06 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 net8.0 --filter 'System.Tests.Perf_String*'
Details

Payloads

Baseline
Compare

Histogram

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


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.5791697719305775 > 4.373588329296491.
IsChangePoint: Marked as a change because one of 11/11/2022 5:53:56 PM, 1/3/2023 6:29:42 AM, 1/10/2023 1:28:02 AM falls between 1/1/2023 3:57:25 AM and 1/10/2023 1:28:02 AM.
IsRegressionStdDev: Marked as regression because -27.243637733037268 (T) = (0 -5.4979369389559425) / Math.Sqrt((0.00019304484897805758 / (14)) + (0.07992415633537059 / (33))) is less than -2.0141033888794695 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (14) + (33) - 2, .025) and -0.32372669563033424 = (4.15337770032501 - 5.4979369389559425) / 4.15337770032501 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       rcx,rdx
       mov       edx,r8d
       movzx     r8d,r9w
       movzx     edx,dx
       cmp       [rcx],ecx
       jmp       qword ptr [7FFBA9C250C0]; System.String.Replace(Char, Char)
; Total bytes of code 21
; System.String.Replace(Char, Char)
       push      r15
       push      r14
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,28
       mov       rsi,rcx
       mov       edi,edx
       mov       ebx,r8d
       movzx     ecx,di
       movzx     r8d,bx
       cmp       ecx,r8d
       je        near ptr M01_L03
       lea       rcx,[rsi+0C]
       mov       r8d,[rsi+8]
       movsx     rdx,di
       call      qword ptr [7FFBAA1C16A8]; System.SpanHelpers.IndexOfValueType[[System.Int16, System.Private.CoreLib],[System.SpanHelpers+DontNegate`1[[System.Int16, System.Private.CoreLib]], System.Private.CoreLib]](Int16 ByRef, Int16, Int32)
       mov       ebp,eax
       test      ebp,ebp
       jge       short M01_L00
       mov       rax,rsi
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
M01_L00:
       mov       ecx,[rsi+8]
       sub       ecx,ebp
       mov       r14d,ecx
       mov       ecx,[rsi+8]
       call      System.String.FastAllocateString(Int32)
       mov       r15,rax
       test      ebp,ebp
       jg        short M01_L04
M01_L01:
       mov       r8d,ebp
       lea       rcx,[rsi+r8*2+0C]
       cmp       [r15],r15b
       mov       r8d,ebp
       lea       rdx,[r15+r8*2+0C]
       mov       r8d,[rsi+8]
       cmp       r8,8
       jb        short M01_L02
       sub       r8,r14
       and       r8,7
       lea       r9,[r8+r8]
       sub       rcx,r9
       lea       r9,[r8+r8]
       sub       rdx,r9
       add       r14,r8
M01_L02:
       mov       [rsp+20],r14
       movzx     r8d,di
       movzx     r9d,bx
       call      qword ptr [7FFBAA3A3000]
       mov       rax,r15
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
M01_L03:
       mov       rax,rsi
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
M01_L04:
       cmp       [r15],r15b
       lea       rcx,[r15+0C]
       lea       rdx,[rsi+0C]
       mov       r8d,ebp
       add       r8,r8
       call      qword ptr [7FFBAA0FFFA8]; System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
       jmp       near ptr M01_L01
; Total bytes of code 231

Compare Jit Disasm

; System.Tests.Perf_String.Replace_Char(System.String, Char, Char)
       mov       rcx,rdx
       mov       edx,r8d
       movzx     r8d,r9w
       movzx     edx,dx
       cmp       [rcx],ecx
       jmp       qword ptr [7FFB002F50C0]; System.String.Replace(Char, Char)
; Total bytes of code 21
; System.String.Replace(Char, Char)
       push      r15
       push      r14
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,38
       mov       rsi,rcx
       mov       edi,edx
       mov       ebx,r8d
       movzx     edx,di
       movzx     ecx,bx
       cmp       edx,ecx
       je        near ptr M01_L05
       lea       rcx,[rsi+0C]
       mov       r8d,[rsi+8]
       movsx     rdx,di
       mov       [rsp+34],edx
       movzx     edx,word ptr [rsp+34]
       lea       eax,[rdx-1]
       cmp       eax,0FE
       jae       short M01_L00
       movsx     rdx,dx
       call      qword ptr [7FFB008958E8]; System.PackedSpanHelpers.IndexOf[[System.SpanHelpers+DontNegate`1[[System.Int16, System.Private.CoreLib]], System.Private.CoreLib]](Int16 ByRef, Int16, Int32)
       mov       ebp,eax
       jmp       short M01_L01
M01_L00:
       mov       edx,[rsp+34]
       call      qword ptr [7FFB00C2FB58]; System.SpanHelpers.NonPackedIndexOfValueType[[System.Int16, System.Private.CoreLib],[System.SpanHelpers+DontNegate`1[[System.Int16, System.Private.CoreLib]], System.Private.CoreLib]](Int16 ByRef, Int16, Int32)
       mov       ebp,eax
M01_L01:
       test      ebp,ebp
       jge       short M01_L02
       mov       rax,rsi
       add       rsp,38
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
M01_L02:
       mov       ecx,[rsi+8]
       sub       ecx,ebp
       mov       r14d,ecx
       mov       ecx,[rsi+8]
       call      System.String.FastAllocateString(Int32)
       mov       r15,rax
       test      ebp,ebp
       jg        short M01_L06
M01_L03:
       mov       r8d,ebp
       lea       rcx,[rsi+r8*2+0C]
       cmp       [r15],r15b
       mov       r8d,ebp
       lea       rdx,[r15+r8*2+0C]
       mov       r8d,[rsi+8]
       cmp       r8,8
       jb        short M01_L04
       sub       r8,r14
       and       r8,7
       lea       r9,[r8+r8]
       sub       rcx,r9
       lea       r9,[r8+r8]
       sub       rdx,r9
       add       r14,r8
M01_L04:
       mov       [rsp+20],r14
       movzx     r8d,di
       movzx     r9d,bx
       call      qword ptr [7FFB00A6B438]
       mov       rax,r15
       add       rsp,38
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
M01_L05:
       mov       rax,rsi
       add       rsp,38
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
M01_L06:
       cmp       [r15],r15b
       lea       rcx,[r15+0C]
       lea       rdx,[rsi+0C]
       mov       r8d,ebp
       add       r8,r8
       call      qword ptr [7FFB007E1888]; System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
       jmp       near ptr M01_L03
; Total bytes of code 266

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.243533696179 > 15.84953257735199.
IsChangePoint: Marked as a change because one of 11/18/2022 8:48:12 PM, 1/3/2023 6:29:42 AM, 1/10/2023 1:28:02 AM falls between 1/1/2023 3:57:25 AM and 1/10/2023 1:28:02 AM.
IsRegressionStdDev: Marked as regression because -13.227699752533349 (T) = (0 -16.421167827143552) / Math.Sqrt((0.08018990762463707 / (14)) + (0.08814426859036918 / (33))) is less than -2.0141033888794695 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (14) + (33) - 2, .025) and -0.07970713135289936 = (15.208909296141657 - 16.421167827143552) / 15.208909296141657 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 [7FFCA57154F8]; System.String.TrimEnd(Char[])
; Total bytes of code 14
; System.String.TrimEnd(Char[])
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       test      rdx,rdx
       je        short M01_L00
       mov       r8d,[rdx+8]
       test      r8d,r8d
       je        short M01_L00
       add       rdx,10
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       mov       r9d,2
       call      qword ptr [7FFCA5715528]; System.String.TrimHelper(Char*, Int32, System.Text.TrimType)
       nop
       add       rsp,28
       ret
M01_L00:
       mov       edx,2
       call      qword ptr [7FFCA5715510]
       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 [7FFEA49954F8]; System.String.TrimEnd(Char[])
; Total bytes of code 14
; System.String.TrimEnd(Char[])
       sub       rsp,28
       xor       eax,eax
       mov       [rsp+20],rax
       test      rdx,rdx
       je        short M01_L00
       mov       r8d,[rdx+8]
       test      r8d,r8d
       je        short M01_L00
       add       rdx,10
       mov       [rsp+20],rdx
       mov       rdx,[rsp+20]
       mov       r9d,2
       call      qword ptr [7FFEA4995528]; System.String.TrimHelper(Char*, Int32, System.Text.TrimType)
       nop
       add       rsp,28
       ret
M01_L00:
       mov       edx,2
       call      qword ptr [7FFEA4995510]
       nop
       add       rsp,28
       ret
; Total bytes of code 74

System.Tests.Perf_String.Replace_Char(text: "Hello", oldChar: 'a', newChar: 'b')


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.141896447049398 > 4.345308369149102.
IsChangePoint: Marked as a change because one of 10/25/2022 2:34:53 PM, 1/3/2023 6:29:42 AM, 1/10/2023 1:28:02 AM falls between 1/1/2023 3:57:25 AM and 1/10/2023 1:28:02 AM.
IsRegressionStdDev: Marked as regression because -77.67081568675944 (T) = (0 -6.195133441371548) / Math.Sqrt((0.000163412449150792 / (14)) + (0.02276838353402995 / (33))) is less than -2.0141033888794695 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (14) + (33) - 2, .025) and -0.4972135604471777 = (4.137775401607522 - 6.195133441371548) / 4.137775401607522 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       rcx,rdx
       mov       edx,r8d
       movzx     r8d,r9w
       movzx     edx,dx
       cmp       [rcx],ecx
       jmp       qword ptr [7FFBA9C550C0]; System.String.Replace(Char, Char)
; Total bytes of code 21
; System.String.Replace(Char, Char)
       push      r15
       push      r14
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,28
       mov       rsi,rcx
       mov       edi,edx
       mov       ebx,r8d
       movzx     ecx,di
       movzx     r8d,bx
       cmp       ecx,r8d
       je        near ptr M01_L03
       lea       rcx,[rsi+0C]
       mov       r8d,[rsi+8]
       movsx     rdx,di
       call      qword ptr [7FFBAA1F16A8]; System.SpanHelpers.IndexOfValueType[[System.Int16, System.Private.CoreLib],[System.SpanHelpers+DontNegate`1[[System.Int16, System.Private.CoreLib]], System.Private.CoreLib]](Int16 ByRef, Int16, Int32)
       mov       ebp,eax
       test      ebp,ebp
       jge       short M01_L00
       mov       rax,rsi
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
M01_L00:
       mov       ecx,[rsi+8]
       sub       ecx,ebp
       mov       r14d,ecx
       mov       ecx,[rsi+8]
       call      System.String.FastAllocateString(Int32)
       mov       r15,rax
       test      ebp,ebp
       jg        short M01_L04
M01_L01:
       mov       r8d,ebp
       lea       rcx,[rsi+r8*2+0C]
       cmp       [r15],r15b
       mov       r8d,ebp
       lea       rdx,[r15+r8*2+0C]
       mov       r8d,[rsi+8]
       cmp       r8,8
       jb        short M01_L02
       sub       r8,r14
       and       r8,7
       lea       r9,[r8+r8]
       sub       rcx,r9
       lea       r9,[r8+r8]
       sub       rdx,r9
       add       r14,r8
M01_L02:
       mov       [rsp+20],r14
       movzx     r8d,di
       movzx     r9d,bx
       call      qword ptr [7FFBAA3D3000]
       mov       rax,r15
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
M01_L03:
       mov       rax,rsi
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
M01_L04:
       cmp       [r15],r15b
       lea       rcx,[r15+0C]
       lea       rdx,[rsi+0C]
       mov       r8d,ebp
       add       r8,r8
       call      qword ptr [7FFBAA12FFA8]; System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
       jmp       near ptr M01_L01
; Total bytes of code 231

Compare Jit Disasm

; System.Tests.Perf_String.Replace_Char(System.String, Char, Char)
       mov       rcx,rdx
       mov       edx,r8d
       movzx     r8d,r9w
       movzx     edx,dx
       cmp       [rcx],ecx
       jmp       qword ptr [7FFB003350C0]; System.String.Replace(Char, Char)
; Total bytes of code 21
; System.String.Replace(Char, Char)
       push      r15
       push      r14
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,38
       mov       rsi,rcx
       mov       edi,edx
       mov       ebx,r8d
       movzx     edx,di
       movzx     ecx,bx
       cmp       edx,ecx
       je        near ptr M01_L05
       lea       rcx,[rsi+0C]
       mov       r8d,[rsi+8]
       movsx     rdx,di
       mov       [rsp+34],edx
       movzx     edx,word ptr [rsp+34]
       lea       eax,[rdx-1]
       cmp       eax,0FE
       jae       short M01_L00
       movsx     rdx,dx
       call      qword ptr [7FFB008D58E8]; System.PackedSpanHelpers.IndexOf[[System.SpanHelpers+DontNegate`1[[System.Int16, System.Private.CoreLib]], System.Private.CoreLib]](Int16 ByRef, Int16, Int32)
       mov       ebp,eax
       jmp       short M01_L01
M01_L00:
       mov       edx,[rsp+34]
       call      qword ptr [7FFB00C6FB58]; System.SpanHelpers.NonPackedIndexOfValueType[[System.Int16, System.Private.CoreLib],[System.SpanHelpers+DontNegate`1[[System.Int16, System.Private.CoreLib]], System.Private.CoreLib]](Int16 ByRef, Int16, Int32)
       mov       ebp,eax
M01_L01:
       test      ebp,ebp
       jge       short M01_L02
       mov       rax,rsi
       add       rsp,38
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
M01_L02:
       mov       ecx,[rsi+8]
       sub       ecx,ebp
       mov       r14d,ecx
       mov       ecx,[rsi+8]
       call      System.String.FastAllocateString(Int32)
       mov       r15,rax
       test      ebp,ebp
       jg        short M01_L06
M01_L03:
       mov       r8d,ebp
       lea       rcx,[rsi+r8*2+0C]
       cmp       [r15],r15b
       mov       r8d,ebp
       lea       rdx,[r15+r8*2+0C]
       mov       r8d,[rsi+8]
       cmp       r8,8
       jb        short M01_L04
       sub       r8,r14
       and       r8,7
       lea       r9,[r8+r8]
       sub       rcx,r9
       lea       r9,[r8+r8]
       sub       rdx,r9
       add       r14,r8
M01_L04:
       mov       [rsp+20],r14
       movzx     r8d,di
       movzx     r9d,bx
       call      qword ptr [7FFB00AAB438]
       mov       rax,r15
       add       rsp,38
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
M01_L05:
       mov       rax,rsi
       add       rsp,38
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
M01_L06:
       cmp       [r15],r15b
       lea       rcx,[r15+0C]
       lea       rdx,[rsi+0C]
       mov       r8d,ebp
       add       r8,r8
       call      qword ptr [7FFB00821888]; System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
       jmp       near ptr M01_L03
; Total bytes of code 266

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


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 56.12304519478277 > 55.71160747100109.
IsChangePoint: Marked as a change because one of 11/17/2022 7:01:39 PM, 11/18/2022 3:21:53 PM, 1/3/2023 6:29:42 AM, 1/10/2023 1:28:02 AM falls between 1/1/2023 3:57:25 AM and 1/10/2023 1:28:02 AM.
IsRegressionStdDev: Marked as regression because -5.791124591809122 (T) = (0 -56.58363624443871) / Math.Sqrt((2.1664145734713496 / (14)) + (2.5689714504370484 / (33))) is less than -2.0141033888794695 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (14) + (33) - 2, .025) and -0.05192214047934187 = (53.790707569530355 - 56.58363624443871) / 53.790707569530355 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 [7FFCE0E250D8]; System.String.Replace(System.String, System.String)
; 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,0C6A9C64BB2F3
       mov       [rbp],rax
       mov       rsi,rcx
       mov       rdi,rdx
       mov       rbx,r8
       test      rdi,rdi
       je        near ptr M01_L15
       mov       r14d,[rdi+8]
       test      r14d,r14d
       je        near ptr M01_L15
       test      rbx,rbx
       jne       short M01_L00
       mov       rbx,7FFCE0EC0008
M01_L00:
       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 M01_L06
       cmp       dword ptr [rbx+8],1
       jne       short M01_L02
       movzx     edx,word ptr [rdi+0C]
       movzx     r8d,word ptr [rbx+0C]
       mov       rcx,rsi
       call      qword ptr [7FFCE0E250C0]; System.String.Replace(Char, Char)
       mov       rcx,0C6A9C64BB2F3
       cmp       [rbp],rcx
       je        short M01_L01
       call      CORINFO_HELP_FAIL_FAST
M01_L01:
       nop
       lea       rsp,[rbp+38]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       pop       rbp
       ret
M01_L02:
       movzx     edi,word ptr [rdi+0C]
       xor       r15d,r15d
M01_L03:
       movsxd    rcx,r15d
       lea       rcx,[rsi+rcx*2+0C]
       mov       r8d,[rsi+8]
       sub       r8d,r15d
       movsx     rdx,di
       call      qword ptr [7FFCE13C16A8]; System.SpanHelpers.IndexOfValueType[[System.Int16, System.Private.CoreLib],[System.SpanHelpers+DontNegate`1[[System.Int16, System.Private.CoreLib]], System.Private.CoreLib]](Int16 ByRef, Int16, Int32)
       test      eax,eax
       jl        near ptr M01_L10
       add       r15d,eax
       mov       edx,r15d
       mov       ecx,[rbp+20]
       mov       rax,[rbp+28]
       mov       r8d,[rbp+30]
       cmp       ecx,r8d
       jae       short M01_L04
       mov       r8d,ecx
       mov       [rax+r8*4],edx
       inc       ecx
       mov       [rbp+20],ecx
       jmp       short M01_L05
M01_L04:
       lea       rcx,[rbp+18]
       call      qword ptr [7FFCE17ABC30]
M01_L05:
       inc       r15d
       jmp       short M01_L03
M01_L06:
       xor       r15d,r15d
M01_L07:
       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 [7FFCE12D1408]
       test      eax,eax
       jl        short M01_L10
       add       r15d,eax
       mov       edx,r15d
       mov       ecx,[rbp+20]
       mov       rax,[rbp+28]
       mov       r8d,[rbp+30]
       cmp       ecx,r8d
       jae       short M01_L08
       mov       r8d,ecx
       mov       [rax+r8*4],edx
       inc       ecx
       mov       [rbp+20],ecx
       jmp       short M01_L09
M01_L08:
       lea       rcx,[rbp+18]
       call      qword ptr [7FFCE17ABC30]
M01_L09:
       add       r15d,r14d
       jmp       short M01_L07
M01_L10:
       cmp       dword ptr [rbp+20],0
       jne       short M01_L12
       mov       rax,rsi
       mov       rcx,0C6A9C64BB2F3
       cmp       [rbp],rcx
       je        short M01_L11
       call      CORINFO_HELP_FAIL_FAST
M01_L11:
       nop
       lea       rsp,[rbp+38]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       pop       rbp
       ret
M01_L12:
       mov       edx,r14d
       mov       ecx,[rbp+20]
       cmp       ecx,[rbp+30]
       ja        near ptr M01_L16
       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 [7FFCE0E250F0]; System.String.ReplaceHelper(Int32, System.String, System.ReadOnlySpan`1<Int32>)
       mov       rdi,rax
       mov       rsi,[rbp+18]
       test      rsi,rsi
       je        short M01_L13
       xor       ecx,ecx
       mov       [rbp+18],rcx
       mov       rcx,7FFCE0D84D68
       mov       edx,31
       call      CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
       mov       rcx,1A6AE807CD0
       mov       rcx,[rcx]
       mov       rdx,rsi
       xor       r8d,r8d
       cmp       [rcx],ecx
       call      qword ptr [7FFCE1799680]; System.Buffers.TlsOverPerCoreLockedStacksArrayPool`1[[System.Int32, System.Private.CoreLib]].Return(Int32[], Boolean)
M01_L13:
       mov       rax,rdi
       mov       rcx,0C6A9C64BB2F3
       cmp       [rbp],rcx
       je        short M01_L14
       call      CORINFO_HELP_FAIL_FAST
M01_L14:
       nop
       lea       rsp,[rbp+38]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       pop       rbp
       ret
M01_L15:
       mov       ecx,16A1
       mov       rdx,7FFCE0C64000
       call      CORINFO_HELP_STRCNS
       mov       rdx,rax
       mov       rcx,rdi
       call      qword ptr [7FFCE0E2DC78]
       int       3
M01_L16:
       call      qword ptr [7FFCE15734E0]
       int       3
; Total bytes of code 610

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 [7FFEA49B50D8]; System.String.Replace(System.String, System.String)
; Total bytes of code 17
; System.String.Replace(System.String, System.String)
       push      rbp
       push      r15
       push      r14
       push      r12
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,60
       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
       vmovdqa   xmmword ptr [rbp+30],xmm4
       mov       rax,23C2D26E54EC
       mov       [rbp],rax
       mov       rsi,rcx
       mov       rdi,rdx
       mov       rbx,r8
       test      rdi,rdi
       je        near ptr M01_L17
       mov       r14d,[rdi+8]
       test      r14d,r14d
       je        near ptr M01_L17
       test      rbx,rbx
       jne       short M01_L00
       mov       rbx,7FFEA4A50008
M01_L00:
       test      [rsp],esp
       sub       rsp,200
       lea       rdx,[rsp+20]
       mov       [rbp+30],rdx
       mov       dword ptr [rbp+38],80
       xor       edx,edx
       mov       [rbp+20],rdx
       mov       [rbp+28],edx
       cmp       r14d,1
       jne       near ptr M01_L08
       cmp       dword ptr [rbx+8],1
       jne       short M01_L02
       movzx     edx,word ptr [rdi+0C]
       movzx     r8d,word ptr [rbx+0C]
       mov       rcx,rsi
       call      qword ptr [7FFEA49B50C0]; System.String.Replace(Char, Char)
       mov       rcx,23C2D26E54EC
       cmp       [rbp],rcx
       je        short M01_L01
       call      CORINFO_HELP_FAIL_FAST
M01_L01:
       nop
       lea       rsp,[rbp+40]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       pop       rbp
       ret
M01_L02:
       movzx     edi,word ptr [rdi+0C]
       xor       r15d,r15d
M01_L03:
       movsxd    rdx,r15d
       lea       rcx,[rsi+rdx*2+0C]
       mov       r8d,[rsi+8]
       sub       r8d,r15d
       movsx     rdx,di
       mov       [rbp+1C],edx
       movzx     edx,word ptr [rbp+1C]
       dec       edx
       cmp       edx,0FE
       jae       short M01_L04
       movzx     edx,word ptr [rbp+1C]
       movsx     rdx,dx
       call      qword ptr [7FFEA4F558E8]; System.PackedSpanHelpers.IndexOf[[System.SpanHelpers+DontNegate`1[[System.Int16, System.Private.CoreLib]], System.Private.CoreLib]](Int16 ByRef, Int16, Int32)
       mov       r12d,eax
       jmp       short M01_L05
M01_L04:
       mov       edx,[rbp+1C]
       call      qword ptr [7FFEA52EFB58]; System.SpanHelpers.NonPackedIndexOfValueType[[System.Int16, System.Private.CoreLib],[System.SpanHelpers+DontNegate`1[[System.Int16, System.Private.CoreLib]], System.Private.CoreLib]](Int16 ByRef, Int16, Int32)
       mov       r12d,eax
M01_L05:
       test      r12d,r12d
       jl        near ptr M01_L12
       lea       edx,[r15+r12]
       mov       ecx,[rbp+28]
       mov       rax,[rbp+30]
       mov       r8d,[rbp+38]
       cmp       ecx,r8d
       jae       short M01_L06
       mov       r8d,ecx
       mov       [rax+r8*4],edx
       inc       ecx
       mov       [rbp+28],ecx
       jmp       short M01_L07
M01_L06:
       lea       rcx,[rbp+20]
       call      qword ptr [7FFEA532DC48]
M01_L07:
       lea       r15d,[r15+r12+1]
       jmp       short M01_L03
M01_L08:
       xor       r15d,r15d
M01_L09:
       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 [7FFEA4E61408]
       mov       r12d,eax
       test      r12d,r12d
       jl        short M01_L12
       lea       edx,[r15+r12]
       mov       ecx,[rbp+28]
       mov       rax,[rbp+30]
       mov       r8d,[rbp+38]
       cmp       ecx,r8d
       jae       short M01_L10
       mov       r8d,ecx
       mov       [rax+r8*4],edx
       inc       ecx
       mov       [rbp+28],ecx
       jmp       short M01_L11
M01_L10:
       lea       rcx,[rbp+20]
       call      qword ptr [7FFEA532DC48]
M01_L11:
       add       r15d,r12d
       add       r15d,r14d
       jmp       short M01_L09
M01_L12:
       cmp       dword ptr [rbp+28],0
       jne       short M01_L14
       mov       rax,rsi
       mov       rcx,23C2D26E54EC
       cmp       [rbp],rcx
       je        short M01_L13
       call      CORINFO_HELP_FAIL_FAST
M01_L13:
       nop
       lea       rsp,[rbp+40]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       pop       rbp
       ret
M01_L14:
       mov       edx,r14d
       mov       ecx,[rbp+28]
       cmp       ecx,[rbp+38]
       ja        near ptr M01_L18
       mov       r8,[rbp+30]
       mov       [rbp+8],r8
       mov       [rbp+10],ecx
       mov       rcx,rsi
       mov       r8,rbx
       lea       r9,[rbp+8]
       call      qword ptr [7FFEA49B50F0]; System.String.ReplaceHelper(Int32, System.String, System.ReadOnlySpan`1<Int32>)
       mov       rdi,rax
       mov       rsi,[rbp+20]
       test      rsi,rsi
       je        short M01_L15
       xor       ecx,ecx
       mov       [rbp+20],rcx
       mov       rcx,7FFEA4914DB8
       mov       edx,31
       call      CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
       mov       rcx,22F6A407CD8
       mov       rcx,[rcx]
       mov       rdx,rsi
       xor       r8d,r8d
       cmp       [rcx],ecx
       call      qword ptr [7FFEA5335560]; System.Buffers.TlsOverPerCoreLockedStacksArrayPool`1[[System.Int32, System.Private.CoreLib]].Return(Int32[], Boolean)
M01_L15:
       mov       rax,rdi
       mov       rcx,23C2D26E54EC
       cmp       [rbp],rcx
       je        short M01_L16
       call      CORINFO_HELP_FAIL_FAST
M01_L16:
       nop
       lea       rsp,[rbp+40]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r12
       pop       r14
       pop       r15
       pop       rbp
       ret
M01_L17:
       mov       ecx,16A1
       mov       rdx,7FFEA47F4000
       call      CORINFO_HELP_STRCNS
       mov       rdx,rax
       mov       rcx,rdi
       call      qword ptr [7FFEA49BDC78]
       int       3
M01_L18:
       call      qword ptr [7FFEA4ED3060]
       int       3
; Total bytes of code 667

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 22.330607657133392 > 20.635651568171316.
IsChangePoint: Marked as a change because one of 11/11/2022 5:53:56 PM, 1/3/2023 6:29:42 AM, 1/10/2023 1:28:02 AM falls between 1/1/2023 3:57:25 AM and 1/10/2023 1:28:02 AM.
IsRegressionStdDev: Marked as regression because -19.533480701550356 (T) = (0 -22.051279089043497) / Math.Sqrt((0.04802330264672898 / (14)) + (0.36899131861666284 / (33))) is less than -2.0141033888794695 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (14) + (33) - 2, .025) and -0.11991782255368702 = (19.69008675900985 - 22.051279089043497) / 19.69008675900985 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       rcx,rdx
       mov       edx,r8d
       movzx     r8d,r9w
       movzx     edx,dx
       cmp       [rcx],ecx
       jmp       qword ptr [7FFBA9C050C0]; System.String.Replace(Char, Char)
; Total bytes of code 21
; System.String.Replace(Char, Char)
       push      r15
       push      r14
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,28
       mov       rsi,rcx
       mov       edi,edx
       mov       ebx,r8d
       movzx     ecx,di
       movzx     r8d,bx
       cmp       ecx,r8d
       je        near ptr M01_L03
       lea       rcx,[rsi+0C]
       mov       r8d,[rsi+8]
       movsx     rdx,di
       call      qword ptr [7FFBAA1A16A8]; System.SpanHelpers.IndexOfValueType[[System.Int16, System.Private.CoreLib],[System.SpanHelpers+DontNegate`1[[System.Int16, System.Private.CoreLib]], System.Private.CoreLib]](Int16 ByRef, Int16, Int32)
       mov       ebp,eax
       test      ebp,ebp
       jge       short M01_L00
       mov       rax,rsi
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
M01_L00:
       mov       ecx,[rsi+8]
       sub       ecx,ebp
       mov       r14d,ecx
       mov       ecx,[rsi+8]
       call      System.String.FastAllocateString(Int32)
       mov       r15,rax
       test      ebp,ebp
       jg        short M01_L04
M01_L01:
       mov       r8d,ebp
       lea       rcx,[rsi+r8*2+0C]
       cmp       [r15],r15b
       mov       r8d,ebp
       lea       rdx,[r15+r8*2+0C]
       mov       r8d,[rsi+8]
       cmp       r8,8
       jb        short M01_L02
       sub       r8,r14
       and       r8,7
       lea       r9,[r8+r8]
       sub       rcx,r9
       lea       r9,[r8+r8]
       sub       rdx,r9
       add       r14,r8
M01_L02:
       mov       [rsp+20],r14
       movzx     r8d,di
       movzx     r9d,bx
       call      qword ptr [7FFBAA383000]; System.SpanHelpers.ReplaceValueType[[System.UInt16, System.Private.CoreLib]](UInt16 ByRef, UInt16 ByRef, UInt16, UInt16, UIntPtr)
       mov       rax,r15
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
M01_L03:
       mov       rax,rsi
       add       rsp,28
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
M01_L04:
       cmp       [r15],r15b
       lea       rcx,[r15+0C]
       lea       rdx,[rsi+0C]
       mov       r8d,ebp
       add       r8,r8
       call      qword ptr [7FFBAA0DFFA8]; System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
       jmp       near ptr M01_L01
; Total bytes of code 231

Compare Jit Disasm

; System.Tests.Perf_String.Replace_Char(System.String, Char, Char)
       mov       rcx,rdx
       mov       edx,r8d
       movzx     r8d,r9w
       movzx     edx,dx
       cmp       [rcx],ecx
       jmp       qword ptr [7FFB002E50C0]; System.String.Replace(Char, Char)
; Total bytes of code 21
; System.String.Replace(Char, Char)
       push      r15
       push      r14
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,38
       mov       rsi,rcx
       mov       edi,edx
       mov       ebx,r8d
       movzx     edx,di
       movzx     ecx,bx
       cmp       edx,ecx
       je        near ptr M01_L05
       lea       rcx,[rsi+0C]
       mov       r8d,[rsi+8]
       movsx     rdx,di
       mov       [rsp+34],edx
       movzx     edx,word ptr [rsp+34]
       lea       eax,[rdx-1]
       cmp       eax,0FE
       jae       short M01_L00
       movsx     rdx,dx
       call      qword ptr [7FFB008858E8]; System.PackedSpanHelpers.IndexOf[[System.SpanHelpers+DontNegate`1[[System.Int16, System.Private.CoreLib]], System.Private.CoreLib]](Int16 ByRef, Int16, Int32)
       mov       ebp,eax
       jmp       short M01_L01
M01_L00:
       mov       edx,[rsp+34]
       call      qword ptr [7FFB00C1FB58]; System.SpanHelpers.NonPackedIndexOfValueType[[System.Int16, System.Private.CoreLib],[System.SpanHelpers+DontNegate`1[[System.Int16, System.Private.CoreLib]], System.Private.CoreLib]](Int16 ByRef, Int16, Int32)
       mov       ebp,eax
M01_L01:
       test      ebp,ebp
       jge       short M01_L02
       mov       rax,rsi
       add       rsp,38
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
M01_L02:
       mov       ecx,[rsi+8]
       sub       ecx,ebp
       mov       r14d,ecx
       mov       ecx,[rsi+8]
       call      System.String.FastAllocateString(Int32)
       mov       r15,rax
       test      ebp,ebp
       jg        short M01_L06
M01_L03:
       mov       r8d,ebp
       lea       rcx,[rsi+r8*2+0C]
       cmp       [r15],r15b
       mov       r8d,ebp
       lea       rdx,[r15+r8*2+0C]
       mov       r8d,[rsi+8]
       cmp       r8,8
       jb        short M01_L04
       sub       r8,r14
       and       r8,7
       lea       r9,[r8+r8]
       sub       rcx,r9
       lea       r9,[r8+r8]
       sub       rdx,r9
       add       r14,r8
M01_L04:
       mov       [rsp+20],r14
       movzx     r8d,di
       movzx     r9d,bx
       call      qword ptr [7FFB00A5B438]; System.SpanHelpers.ReplaceValueType[[System.UInt16, System.Private.CoreLib]](UInt16 ByRef, UInt16 ByRef, UInt16, UInt16, UIntPtr)
       mov       rax,r15
       add       rsp,38
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
M01_L05:
       mov       rax,rsi
       add       rsp,38
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       pop       r15
       ret
M01_L06:
       cmp       [r15],r15b
       lea       rcx,[r15+0C]
       lea       rdx,[rsi+0C]
       mov       r8d,ebp
       add       r8,r8
       call      qword ptr [7FFB007D1888]; System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
       jmp       near ptr M01_L03
; Total bytes of code 266

Docs

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

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline ee6de921299d1b86a02d9049b9c8dd164cab1401
Compare 7fa0d5b5942f138c362f2753398b4a8d4f71eb73
Diff Diff

Regressions in System.Memory.Span<Int32>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
IndexOfAnyFourValues - Duration of single invocation 811.41 ns 893.12 ns 1.10 0.04 False
IndexOfAnyFiveValues - Duration of single invocation 857.19 ns 916.26 ns 1.07 0.08 False

graph
graph
Test Report

Repro

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

Payloads

Baseline
Compare

Histogram

System.Memory.Span<Int32>.IndexOfAnyFourValues(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 893.115476054079 > 853.6086389195757.
IsChangePoint: Marked as a change because one of 10/26/2022 7:11:30 AM, 10/31/2022 10:23:25 PM, 11/11/2022 5:53:56 PM, 11/18/2022 8:48:12 PM, 12/12/2022 5:25:39 PM, 12/17/2022 10:44:50 PM, 12/21/2022 9:23:17 AM, 1/3/2023 6:29:42 AM, 1/10/2023 1:28:02 AM falls between 1/1/2023 3:57:25 AM and 1/10/2023 1:28:02 AM.
IsRegressionStdDev: Marked as regression because -17.655352723675087 (T) = (0 -886.6573219555273) / Math.Sqrt((4.976405318076591 / (14)) + (550.567469208571 / (33))) is less than -2.0141033888794695 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (14) + (33) - 2, .025) and -0.08955635836868671 = (813.7783008150718 - 886.6573219555273) / 813.7783008150718 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.Memory.Span&lt;Int32&gt;.IndexOfAnyFiveValues(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 916.2596480801636 > 884.884366122159.
IsChangePoint: Marked as a change because one of 11/11/2022 5:53:56 PM, 11/18/2022 8:48:12 PM, 12/12/2022 5:25:39 PM, 1/3/2023 6:29:42 AM, 1/10/2023 1:28:02 AM falls between 1/1/2023 3:57:25 AM and 1/10/2023 1:28:02 AM.
IsRegressionStdDev: Marked as regression because -14.792582161741155 (T) = (0 -919.5926411095774) / Math.Sqrt((234.02346260062512 / (14)) + (404.93175657466077 / (33))) is less than -2.0141033888794695 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (14) + (33) - 2, .025) and -0.09481762636242623 = (839.9505259747775 - 919.5926411095774) / 839.9505259747775 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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions