Skip to content

Regressions around IndexOf #80441

Closed
Closed
@performanceautofiler

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*'

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*'

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;*'

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions