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)pushr15pushr14pushrdipushrsipushrbppushrbxsubrsp,28movrsi,rcxmovedi,edxmovebx,r8dmovzxecx,dimovzxr8d,bxcmpecx,r8dje near ptr M01_L03learcx,[rsi+0C]movr8d,[rsi+8]movsxrdx,dicall 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)movebp,eaxtestebp,ebpjge short M01_L00movrax,rsiaddrsp,28poprbxpoprbppoprsipoprdipopr14popr15retM01_L00:movecx,[rsi+8]subecx,ebpmovr14d,ecxmovecx,[rsi+8]call System.String.FastAllocateString(Int32)movr15,raxtestebp,ebpjg short M01_L04M01_L01:movr8d,ebplearcx,[rsi+r8*2+0C]cmp[r15],r15bmovr8d,ebpleardx,[r15+r8*2+0C]movr8d,[rsi+8]cmpr8,8jb short M01_L02subr8,r14andr8,7lear9,[r8+r8]subrcx,r9lear9,[r8+r8]subrdx,r9addr14,r8M01_L02:mov[rsp+20],r14movzxr8d,dimovzxr9d,bxcall qword ptr [7FFBAA3A3000]movrax,r15addrsp,28poprbxpoprbppoprsipoprdipopr14popr15retM01_L03:movrax,rsiaddrsp,28poprbxpoprbppoprsipoprdipopr14popr15retM01_L04:cmp[r15],r15blearcx,[r15+0C]leardx,[rsi+0C]movr8d,ebpaddr8,r8call 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)movrcx,rdxmovedx,r8dmovzxr8d,r9wmovzxedx,dxcmp[rcx],ecxjmp qword ptr [7FFB002F50C0]; System.String.Replace(Char, Char); Total bytes of code 21
; System.String.Replace(Char, Char)pushr15pushr14pushrdipushrsipushrbppushrbxsubrsp,38movrsi,rcxmovedi,edxmovebx,r8dmovzxedx,dimovzxecx,bxcmpedx,ecxje near ptr M01_L05learcx,[rsi+0C]movr8d,[rsi+8]movsxrdx,dimov[rsp+34],edxmovzxedx,word ptr [rsp+34]leaeax,[rdx-1]cmpeax,0FEjae short M01_L00movsxrdx,dxcall qword ptr [7FFB008958E8]; System.PackedSpanHelpers.IndexOf[[System.SpanHelpers+DontNegate`1[[System.Int16, System.Private.CoreLib]], System.Private.CoreLib]](Int16 ByRef, Int16, Int32)movebp,eaxjmp short M01_L01M01_L00:movedx,[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)movebp,eaxM01_L01:testebp,ebpjge short M01_L02movrax,rsiaddrsp,38poprbxpoprbppoprsipoprdipopr14popr15retM01_L02:movecx,[rsi+8]subecx,ebpmovr14d,ecxmovecx,[rsi+8]call System.String.FastAllocateString(Int32)movr15,raxtestebp,ebpjg short M01_L06M01_L03:movr8d,ebplearcx,[rsi+r8*2+0C]cmp[r15],r15bmovr8d,ebpleardx,[r15+r8*2+0C]movr8d,[rsi+8]cmpr8,8jb short M01_L04subr8,r14andr8,7lear9,[r8+r8]subrcx,r9lear9,[r8+r8]subrdx,r9addr14,r8M01_L04:mov[rsp+20],r14movzxr8d,dimovzxr9d,bxcall qword ptr [7FFB00A6B438]movrax,r15addrsp,38poprbxpoprbppoprsipoprdipopr14popr15retM01_L05:movrax,rsiaddrsp,38poprbxpoprbppoprsipoprdipopr14popr15retM01_L06:cmp[r15],r15blearcx,[r15+0C]leardx,[rsi+0C]movr8d,ebpaddr8,r8call 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[])subrsp,28xoreax,eaxmov[rsp+20],raxtestrdx,rdxje short M01_L00movr8d,[rdx+8]testr8d,r8dje short M01_L00addrdx,10mov[rsp+20],rdxmovrdx,[rsp+20]movr9d,2call qword ptr [7FFCA5715528]; System.String.TrimHelper(Char*, Int32, System.Text.TrimType)nopaddrsp,28retM01_L00:movedx,2call qword ptr [7FFCA5715510]nopaddrsp,28ret; Total bytes of code 74
Compare Jit Disasm
; System.Tests.Perf_String.TrimEnd_CharArr(System.String, Char[])movrcx,rdxmovrdx,r8cmp[rcx],ecxjmp qword ptr [7FFEA49954F8]; System.String.TrimEnd(Char[]); Total bytes of code 14
; System.String.TrimEnd(Char[])subrsp,28xoreax,eaxmov[rsp+20],raxtestrdx,rdxje short M01_L00movr8d,[rdx+8]testr8d,r8dje short M01_L00addrdx,10mov[rsp+20],rdxmovrdx,[rsp+20]movr9d,2call qword ptr [7FFEA4995528]; System.String.TrimHelper(Char*, Int32, System.Text.TrimType)nopaddrsp,28retM01_L00:movedx,2call qword ptr [7FFEA4995510]nopaddrsp,28ret; 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)pushr15pushr14pushrdipushrsipushrbppushrbxsubrsp,28movrsi,rcxmovedi,edxmovebx,r8dmovzxecx,dimovzxr8d,bxcmpecx,r8dje near ptr M01_L03learcx,[rsi+0C]movr8d,[rsi+8]movsxrdx,dicall 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)movebp,eaxtestebp,ebpjge short M01_L00movrax,rsiaddrsp,28poprbxpoprbppoprsipoprdipopr14popr15retM01_L00:movecx,[rsi+8]subecx,ebpmovr14d,ecxmovecx,[rsi+8]call System.String.FastAllocateString(Int32)movr15,raxtestebp,ebpjg short M01_L04M01_L01:movr8d,ebplearcx,[rsi+r8*2+0C]cmp[r15],r15bmovr8d,ebpleardx,[r15+r8*2+0C]movr8d,[rsi+8]cmpr8,8jb short M01_L02subr8,r14andr8,7lear9,[r8+r8]subrcx,r9lear9,[r8+r8]subrdx,r9addr14,r8M01_L02:mov[rsp+20],r14movzxr8d,dimovzxr9d,bxcall qword ptr [7FFBAA3D3000]movrax,r15addrsp,28poprbxpoprbppoprsipoprdipopr14popr15retM01_L03:movrax,rsiaddrsp,28poprbxpoprbppoprsipoprdipopr14popr15retM01_L04:cmp[r15],r15blearcx,[r15+0C]leardx,[rsi+0C]movr8d,ebpaddr8,r8call 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)movrcx,rdxmovedx,r8dmovzxr8d,r9wmovzxedx,dxcmp[rcx],ecxjmp qword ptr [7FFB003350C0]; System.String.Replace(Char, Char); Total bytes of code 21
; System.String.Replace(Char, Char)pushr15pushr14pushrdipushrsipushrbppushrbxsubrsp,38movrsi,rcxmovedi,edxmovebx,r8dmovzxedx,dimovzxecx,bxcmpedx,ecxje near ptr M01_L05learcx,[rsi+0C]movr8d,[rsi+8]movsxrdx,dimov[rsp+34],edxmovzxedx,word ptr [rsp+34]leaeax,[rdx-1]cmpeax,0FEjae short M01_L00movsxrdx,dxcall qword ptr [7FFB008D58E8]; System.PackedSpanHelpers.IndexOf[[System.SpanHelpers+DontNegate`1[[System.Int16, System.Private.CoreLib]], System.Private.CoreLib]](Int16 ByRef, Int16, Int32)movebp,eaxjmp short M01_L01M01_L00:movedx,[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)movebp,eaxM01_L01:testebp,ebpjge short M01_L02movrax,rsiaddrsp,38poprbxpoprbppoprsipoprdipopr14popr15retM01_L02:movecx,[rsi+8]subecx,ebpmovr14d,ecxmovecx,[rsi+8]call System.String.FastAllocateString(Int32)movr15,raxtestebp,ebpjg short M01_L06M01_L03:movr8d,ebplearcx,[rsi+r8*2+0C]cmp[r15],r15bmovr8d,ebpleardx,[r15+r8*2+0C]movr8d,[rsi+8]cmpr8,8jb short M01_L04subr8,r14andr8,7lear9,[r8+r8]subrcx,r9lear9,[r8+r8]subrdx,r9addr14,r8M01_L04:mov[rsp+20],r14movzxr8d,dimovzxr9d,bxcall qword ptr [7FFB00AAB438]movrax,r15addrsp,38poprbxpoprbppoprsipoprdipopr14popr15retM01_L05:movrax,rsiaddrsp,38poprbxpoprbppoprsipoprdipopr14popr15retM01_L06:cmp[r15],r15blearcx,[r15+0C]leardx,[rsi+0C]movr8d,ebpaddr8,r8call 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)pushrbppushr15pushr14pushrdipushrsipushrbxsubrsp,58learbp,[rsp+20]xoreax,eaxmov[rbp+8],rax vxorps xmm4,xmm4,xmm4 vmovdqa xmmword ptr [rbp+10],xmm4 vmovdqa xmmword ptr [rbp+20],xmm4mov[rbp+30],raxmovrax,0C6A9C64BB2F3mov[rbp],raxmovrsi,rcxmovrdi,rdxmovrbx,r8testrdi,rdije near ptr M01_L15movr14d,[rdi+8]testr14d,r14dje near ptr M01_L15testrbx,rbxjne short M01_L00movrbx,7FFCE0EC0008M01_L00:test[rsp],espsubrsp,200leardx,[rsp+20]mov[rbp+28],rdxmov dword ptr [rbp+30],80xoredx,edxmov[rbp+18],rdxmov[rbp+20],edxcmpr14d,1jne near ptr M01_L06cmp dword ptr [rbx+8],1jne short M01_L02movzxedx,word ptr [rdi+0C]movzxr8d,word ptr [rbx+0C]movrcx,rsicall qword ptr [7FFCE0E250C0]; System.String.Replace(Char, Char)movrcx,0C6A9C64BB2F3cmp[rbp],rcxje short M01_L01call CORINFO_HELP_FAIL_FASTM01_L01:noplearsp,[rbp+38]poprbxpoprsipoprdipopr14popr15poprbpretM01_L02:movzxedi,word ptr [rdi+0C]xorr15d,r15dM01_L03:movsxdrcx,r15dlearcx,[rsi+rcx*2+0C]movr8d,[rsi+8]subr8d,r15dmovsxrdx,dicall 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)testeax,eaxjl near ptr M01_L10addr15d,eaxmovedx,r15dmovecx,[rbp+20]movrax,[rbp+28]movr8d,[rbp+30]cmpecx,r8djae short M01_L04movr8d,ecxmov[rax+r8*4],edxincecxmov[rbp+20],ecxjmp short M01_L05M01_L04:learcx,[rbp+18]call qword ptr [7FFCE17ABC30]M01_L05:incr15djmp short M01_L03M01_L06:xorr15d,r15dM01_L07:movsxdrcx,r15dlearcx,[rsi+rcx*2+0C]movedx,[rsi+8]subedx,r15dlear8,[rdi+0C]movr9d,r14dcall qword ptr [7FFCE12D1408]testeax,eaxjl short M01_L10addr15d,eaxmovedx,r15dmovecx,[rbp+20]movrax,[rbp+28]movr8d,[rbp+30]cmpecx,r8djae short M01_L08movr8d,ecxmov[rax+r8*4],edxincecxmov[rbp+20],ecxjmp short M01_L09M01_L08:learcx,[rbp+18]call qword ptr [7FFCE17ABC30]M01_L09:addr15d,r14djmp short M01_L07M01_L10:cmp dword ptr [rbp+20],0jne short M01_L12movrax,rsimovrcx,0C6A9C64BB2F3cmp[rbp],rcxje short M01_L11call CORINFO_HELP_FAIL_FASTM01_L11:noplearsp,[rbp+38]poprbxpoprsipoprdipopr14popr15poprbpretM01_L12:movedx,r14dmovecx,[rbp+20]cmpecx,[rbp+30]ja near ptr M01_L16movr8,[rbp+28]mov[rbp+8],r8mov[rbp+10],ecxmovrcx,rsimovr8,rbxlear9,[rbp+8]call qword ptr [7FFCE0E250F0]; System.String.ReplaceHelper(Int32, System.String, System.ReadOnlySpan`1<Int32>)movrdi,raxmovrsi,[rbp+18]testrsi,rsije short M01_L13xorecx,ecxmov[rbp+18],rcxmovrcx,7FFCE0D84D68movedx,31call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASSmovrcx,1A6AE807CD0movrcx,[rcx]movrdx,rsixorr8d,r8dcmp[rcx],ecxcall qword ptr [7FFCE1799680]; System.Buffers.TlsOverPerCoreLockedStacksArrayPool`1[[System.Int32, System.Private.CoreLib]].Return(Int32[], Boolean)M01_L13:movrax,rdimovrcx,0C6A9C64BB2F3cmp[rbp],rcxje short M01_L14call CORINFO_HELP_FAIL_FASTM01_L14:noplearsp,[rbp+38]poprbxpoprsipoprdipopr14popr15poprbpretM01_L15:movecx,16A1movrdx,7FFCE0C64000call CORINFO_HELP_STRCNSmovrdx,raxmovrcx,rdicall qword ptr [7FFCE0E2DC78]int3M01_L16:call qword ptr [7FFCE15734E0]int3; Total bytes of code 610
Compare Jit Disasm
; System.Tests.Perf_String.Replace_String(System.String, System.String, System.String)movrcx,rdxmovrdx,r8movr8,r9cmp[rcx],ecxjmp qword ptr [7FFEA49B50D8]; System.String.Replace(System.String, System.String); Total bytes of code 17
; System.String.Replace(System.String, System.String)pushrbppushr15pushr14pushr12pushrdipushrsipushrbxsubrsp,60learbp,[rsp+20]xoreax,eaxmov[rbp+8],rax vxorps xmm4,xmm4,xmm4 vmovdqa xmmword ptr [rbp+10],xmm4 vmovdqa xmmword ptr [rbp+20],xmm4 vmovdqa xmmword ptr [rbp+30],xmm4movrax,23C2D26E54ECmov[rbp],raxmovrsi,rcxmovrdi,rdxmovrbx,r8testrdi,rdije near ptr M01_L17movr14d,[rdi+8]testr14d,r14dje near ptr M01_L17testrbx,rbxjne short M01_L00movrbx,7FFEA4A50008M01_L00:test[rsp],espsubrsp,200leardx,[rsp+20]mov[rbp+30],rdxmov dword ptr [rbp+38],80xoredx,edxmov[rbp+20],rdxmov[rbp+28],edxcmpr14d,1jne near ptr M01_L08cmp dword ptr [rbx+8],1jne short M01_L02movzxedx,word ptr [rdi+0C]movzxr8d,word ptr [rbx+0C]movrcx,rsicall qword ptr [7FFEA49B50C0]; System.String.Replace(Char, Char)movrcx,23C2D26E54ECcmp[rbp],rcxje short M01_L01call CORINFO_HELP_FAIL_FASTM01_L01:noplearsp,[rbp+40]poprbxpoprsipoprdipopr12popr14popr15poprbpretM01_L02:movzxedi,word ptr [rdi+0C]xorr15d,r15dM01_L03:movsxdrdx,r15dlearcx,[rsi+rdx*2+0C]movr8d,[rsi+8]subr8d,r15dmovsxrdx,dimov[rbp+1C],edxmovzxedx,word ptr [rbp+1C]decedxcmpedx,0FEjae short M01_L04movzxedx,word ptr [rbp+1C]movsxrdx,dxcall qword ptr [7FFEA4F558E8]; System.PackedSpanHelpers.IndexOf[[System.SpanHelpers+DontNegate`1[[System.Int16, System.Private.CoreLib]], System.Private.CoreLib]](Int16 ByRef, Int16, Int32)movr12d,eaxjmp short M01_L05M01_L04:movedx,[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)movr12d,eaxM01_L05:testr12d,r12djl near ptr M01_L12leaedx,[r15+r12]movecx,[rbp+28]movrax,[rbp+30]movr8d,[rbp+38]cmpecx,r8djae short M01_L06movr8d,ecxmov[rax+r8*4],edxincecxmov[rbp+28],ecxjmp short M01_L07M01_L06:learcx,[rbp+20]call qword ptr [7FFEA532DC48]M01_L07:lear15d,[r15+r12+1]jmp short M01_L03M01_L08:xorr15d,r15dM01_L09:movsxdrcx,r15dlearcx,[rsi+rcx*2+0C]movedx,[rsi+8]subedx,r15dlear8,[rdi+0C]movr9d,r14dcall qword ptr [7FFEA4E61408]movr12d,eaxtestr12d,r12djl short M01_L12leaedx,[r15+r12]movecx,[rbp+28]movrax,[rbp+30]movr8d,[rbp+38]cmpecx,r8djae short M01_L10movr8d,ecxmov[rax+r8*4],edxincecxmov[rbp+28],ecxjmp short M01_L11M01_L10:learcx,[rbp+20]call qword ptr [7FFEA532DC48]M01_L11:addr15d,r12daddr15d,r14djmp short M01_L09M01_L12:cmp dword ptr [rbp+28],0jne short M01_L14movrax,rsimovrcx,23C2D26E54ECcmp[rbp],rcxje short M01_L13call CORINFO_HELP_FAIL_FASTM01_L13:noplearsp,[rbp+40]poprbxpoprsipoprdipopr12popr14popr15poprbpretM01_L14:movedx,r14dmovecx,[rbp+28]cmpecx,[rbp+38]ja near ptr M01_L18movr8,[rbp+30]mov[rbp+8],r8mov[rbp+10],ecxmovrcx,rsimovr8,rbxlear9,[rbp+8]call qword ptr [7FFEA49B50F0]; System.String.ReplaceHelper(Int32, System.String, System.ReadOnlySpan`1<Int32>)movrdi,raxmovrsi,[rbp+20]testrsi,rsije short M01_L15xorecx,ecxmov[rbp+20],rcxmovrcx,7FFEA4914DB8movedx,31call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASSmovrcx,22F6A407CD8movrcx,[rcx]movrdx,rsixorr8d,r8dcmp[rcx],ecxcall qword ptr [7FFEA5335560]; System.Buffers.TlsOverPerCoreLockedStacksArrayPool`1[[System.Int32, System.Private.CoreLib]].Return(Int32[], Boolean)M01_L15:movrax,rdimovrcx,23C2D26E54ECcmp[rbp],rcxje short M01_L16call CORINFO_HELP_FAIL_FASTM01_L16:noplearsp,[rbp+40]poprbxpoprsipoprdipopr12popr14popr15poprbpretM01_L17:movecx,16A1movrdx,7FFEA47F4000call CORINFO_HELP_STRCNSmovrdx,raxmovrcx,rdicall qword ptr [7FFEA49BDC78]int3M01_L18:call qword ptr [7FFEA4ED3060]int3; 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)pushr15pushr14pushrdipushrsipushrbppushrbxsubrsp,28movrsi,rcxmovedi,edxmovebx,r8dmovzxecx,dimovzxr8d,bxcmpecx,r8dje near ptr M01_L03learcx,[rsi+0C]movr8d,[rsi+8]movsxrdx,dicall 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)movebp,eaxtestebp,ebpjge short M01_L00movrax,rsiaddrsp,28poprbxpoprbppoprsipoprdipopr14popr15retM01_L00:movecx,[rsi+8]subecx,ebpmovr14d,ecxmovecx,[rsi+8]call System.String.FastAllocateString(Int32)movr15,raxtestebp,ebpjg short M01_L04M01_L01:movr8d,ebplearcx,[rsi+r8*2+0C]cmp[r15],r15bmovr8d,ebpleardx,[r15+r8*2+0C]movr8d,[rsi+8]cmpr8,8jb short M01_L02subr8,r14andr8,7lear9,[r8+r8]subrcx,r9lear9,[r8+r8]subrdx,r9addr14,r8M01_L02:mov[rsp+20],r14movzxr8d,dimovzxr9d,bxcall qword ptr [7FFBAA383000]; System.SpanHelpers.ReplaceValueType[[System.UInt16, System.Private.CoreLib]](UInt16 ByRef, UInt16 ByRef, UInt16, UInt16, UIntPtr)movrax,r15addrsp,28poprbxpoprbppoprsipoprdipopr14popr15retM01_L03:movrax,rsiaddrsp,28poprbxpoprbppoprsipoprdipopr14popr15retM01_L04:cmp[r15],r15blearcx,[r15+0C]leardx,[rsi+0C]movr8d,ebpaddr8,r8call 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)movrcx,rdxmovedx,r8dmovzxr8d,r9wmovzxedx,dxcmp[rcx],ecxjmp qword ptr [7FFB002E50C0]; System.String.Replace(Char, Char); Total bytes of code 21
; System.String.Replace(Char, Char)pushr15pushr14pushrdipushrsipushrbppushrbxsubrsp,38movrsi,rcxmovedi,edxmovebx,r8dmovzxedx,dimovzxecx,bxcmpedx,ecxje near ptr M01_L05learcx,[rsi+0C]movr8d,[rsi+8]movsxrdx,dimov[rsp+34],edxmovzxedx,word ptr [rsp+34]leaeax,[rdx-1]cmpeax,0FEjae short M01_L00movsxrdx,dxcall qword ptr [7FFB008858E8]; System.PackedSpanHelpers.IndexOf[[System.SpanHelpers+DontNegate`1[[System.Int16, System.Private.CoreLib]], System.Private.CoreLib]](Int16 ByRef, Int16, Int32)movebp,eaxjmp short M01_L01M01_L00:movedx,[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)movebp,eaxM01_L01:testebp,ebpjge short M01_L02movrax,rsiaddrsp,38poprbxpoprbppoprsipoprdipopr14popr15retM01_L02:movecx,[rsi+8]subecx,ebpmovr14d,ecxmovecx,[rsi+8]call System.String.FastAllocateString(Int32)movr15,raxtestebp,ebpjg short M01_L06M01_L03:movr8d,ebplearcx,[rsi+r8*2+0C]cmp[r15],r15bmovr8d,ebpleardx,[r15+r8*2+0C]movr8d,[rsi+8]cmpr8,8jb short M01_L04subr8,r14andr8,7lear9,[r8+r8]subrcx,r9lear9,[r8+r8]subrdx,r9addr14,r8M01_L04:mov[rsp+20],r14movzxr8d,dimovzxr9d,bxcall qword ptr [7FFB00A5B438]; System.SpanHelpers.ReplaceValueType[[System.UInt16, System.Private.CoreLib]](UInt16 ByRef, UInt16 ByRef, UInt16, UInt16, UIntPtr)movrax,r15addrsp,38poprbxpoprbppoprsipoprdipopr14popr15retM01_L05:movrax,rsiaddrsp,38poprbxpoprbppoprsipoprdipopr14popr15retM01_L06:cmp[r15],r15blearcx,[r15+0C]leardx,[rsi+0C]movr8d,ebpaddr8,r8call 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
Regressions in System.Text.RegularExpressions.Tests.Perf_Regex_Industry_Leipzig
Test Report
Repro
Details
Payloads
Baseline
Compare
Histogram
System.Text.RegularExpressions.Tests.Perf_Regex_Industry_Leipzig.Count(Pattern: "(?i)Twain", Options: None)
Description of detection logic
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Regressions in System.Tests.Perf_String
Test Report
Repro
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
Compare Jit Disasm
System.Tests.Perf_String.TrimEnd_CharArr(s: "Test ", c: [' ', ' '])
Description of detection logic
Compare Jit Disasm
System.Tests.Perf_String.Replace_Char(text: "Hello", oldChar: 'a', newChar: 'b')
Description of detection logic
Compare Jit Disasm
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
Compare Jit Disasm
System.Tests.Perf_String.Replace_Char(text: "This is a very nice sentence", oldChar: 'i', newChar: 'I')
Description of detection logic
Compare Jit Disasm
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Memory.Span<Int32>
Test Report
Repro
Details
Payloads
Baseline
Compare
Histogram
System.Memory.Span<Int32>.IndexOfAnyFourValues(Size: 512)
Description of detection logic
Description of detection logic
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository