Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

[Perf] Windows/x86: 13 Regressions on 3/22/2023 10:50:22 PM #14539

Open
performanceautofiler bot opened this issue Mar 28, 2023 · 2 comments
Open

[Perf] Windows/x86: 13 Regressions on 3/22/2023 10:50:22 PM #14539

performanceautofiler bot opened this issue Mar 28, 2023 · 2 comments

Comments

@performanceautofiler
Copy link

No description provided.

@performanceautofiler
Copy link
Author

Run Information

Name Value
Architecture x86
OS Windows 10.0.18362
Queue TigerWindows
Baseline 71b0ecd28591a13898e2afa3f8f4ee077b47bec2
Compare 1e241c0044042409b8567c5ab9a72b7525ad128a
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in System.Tests.Perf_Enum

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
InterpolateIntoString - Duration of single invocation 134.80 ns 149.82 ns 1.11 0.05 False 1577.5418637831347 1767.7132123661202 1.1205491612925769) Trace Trace
InterpolateIntoString - Duration of single invocation 178.80 ns 197.45 ns 1.10 0.07 False
InterpolateIntoSpan_Flags - Duration of single invocation 126.33 ns 140.87 ns 1.12 0.25 False Trace Trace
InterpolateIntoSpan_NonFlags - Duration of single invocation 136.34 ns 148.65 ns 1.09 0.01 False Trace Trace
InterpolateIntoString - Duration of single invocation 137.54 ns 154.05 ns 1.12 0.14 False 1731.0447209417853 1901.1741472943095 1.098281358242417) Trace Trace
InterpolateIntoSpan_Flags - Duration of single invocation 128.81 ns 142.41 ns 1.11 0.02 False 1152.0866127647396 1317.6301283894284 1.1436901651234561) Trace Trace

graph
graph
graph
graph
Test Report

Repro

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

Payloads

Baseline
Compare

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

Payloads

Baseline
Compare

Histogram

System.Tests.Perf_Enum.InterpolateIntoString(value: Red)


Description of detection logic

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 149.82485563697094 > 142.40655029322212.
IsChangePoint: Marked as a change because one of 1/20/2023 7:19:11 PM, 3/22/2023 3:40:18 PM, 3/28/2023 7:07:52 AM falls between 3/19/2023 2:30:51 PM and 3/28/2023 7:07:52 AM.
IsRegressionStdDev: Marked as regression because -24.307934198886734 (T) = (0 -150.5338007358115) / Math.Sqrt((5.709292686752177 / (30)) + (7.42882837790416 / (29))) is less than -2.0024654592901125 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (30) + (29) - 2, .025) and -0.12094799442366931 = (134.29151172459862 - 150.5338007358115) / 134.29151172459862 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 BDN Disasm

```assembly
; System.Tests.Perf_Enum.InterpolateIntoString(Colors)
       push      ebp
       mov       ebp,esp
       push      esi
       sub       esp,18
       vxorps    xmm4,xmm4,xmm4
       vmovdqu   xmmword ptr [ebp-1C],xmm4
       xor       eax,eax
       mov       [ebp-0C],eax
       mov       [ebp-8],eax
       mov       esi,edx
       push      5
       lea       ecx,[ebp-1C]
       mov       edx,4
       call      dword ptr ds:[0A169BA0]; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler..ctor(Int32, Int32)
       lea       ecx,[ebp-1C]
       mov       edx,esi
       call      dword ptr ds:[0B07B888]; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors)
       mov       ecx,[ebp-14]
       mov       edx,[ebp-0C]
       mov       eax,[ebp-8]
       cmp       ecx,eax
       jae       short M00_L00
       mov       word ptr [edx+ecx*2],20
       inc       ecx
       mov       [ebp-14],ecx
       jmp       short M00_L01
M00_L00:
       lea       ecx,[ebp-1C]
       mov       edx,7F55C54
       call      dword ptr ds:[0A169DF8]
M00_L01:
       push      7F57B1C
       lea       ecx,[ebp-1C]
       mov       edx,esi
       call      dword ptr ds:[0B07B8A0]; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       mov       ecx,[ebp-14]
       mov       edx,[ebp-0C]
       mov       eax,[ebp-8]
       cmp       ecx,eax
       jae       short M00_L02
       mov       word ptr [edx+ecx*2],20
       inc       ecx
       mov       [ebp-14],ecx
       jmp       short M00_L03
M00_L02:
       lea       ecx,[ebp-1C]
       mov       edx,7F55C54
       call      dword ptr ds:[0A169DF8]
M00_L03:
       push      7F58270
       lea       ecx,[ebp-1C]
       mov       edx,esi
       call      dword ptr ds:[0B07B8A0]; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       mov       ecx,[ebp-14]
       mov       edx,[ebp-0C]
       mov       eax,[ebp-8]
       cmp       ecx,eax
       jae       short M00_L04
       mov       word ptr [edx+ecx*2],20
       inc       ecx
       mov       [ebp-14],ecx
       jmp       short M00_L05
M00_L04:
       lea       ecx,[ebp-1C]
       mov       edx,7F55C54
       call      dword ptr ds:[0A169DF8]
M00_L05:
       push      7F58280
       lea       ecx,[ebp-1C]
       mov       edx,esi
       call      dword ptr ds:[0B07B8A0]; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       mov       ecx,[ebp-14]
       mov       edx,[ebp-0C]
       mov       eax,[ebp-8]
       cmp       ecx,eax
       jae       short M00_L06
       mov       word ptr [edx+ecx*2],20
       inc       ecx
       mov       [ebp-14],ecx
       jmp       short M00_L07
M00_L06:
       lea       ecx,[ebp-1C]
       mov       edx,7F55C54
       call      dword ptr ds:[0A169DF8]
M00_L07:
       push      7F52BD4
       lea       ecx,[ebp-1C]
       mov       edx,esi
       call      dword ptr ds:[0B07B8A0]; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       lea       ecx,[ebp-1C]
       call      dword ptr ds:[0A169C30]; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.ToStringAndClear()
       lea       esp,[ebp-4]
       pop       esi
       pop       ebp
       ret
; Total bytes of code 288
; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler..ctor(Int32, Int32)
       push      ebp
       mov       ebp,esp
       push      esi
       mov       esi,ecx
       xor       ecx,ecx
       mov       [esi],ecx
       mov       ecx,ds:[6C21EFC]
       imul      eax,[ebp+8],0B
       add       edx,eax
       mov       eax,100
       cmp       edx,100
       cmovle    edx,eax
       cmp       [ecx],ecx
       call      dword ptr ds:[0A62F81C]; System.Buffers.TlsOverPerCoreLockedStacksArrayPool`1[[System.Char, System.Private.CoreLib]].Rent(Int32)
       lea       edx,[esi+4]
       call      CORINFO_HELP_CHECKED_ASSIGN_REF_EAX
       test      eax,eax
       je        short M01_L01
       lea       edx,[eax+8]
       mov       eax,[eax+4]
M01_L00:
       lea       ecx,[esi+10]
       mov       [ecx],edx
       mov       [ecx+4],eax
       xor       edx,edx
       mov       [esi+8],edx
       mov       byte ptr [esi+0C],0
       pop       esi
       pop       ebp
       ret       4
M01_L01:
       xor       edx,edx
       xor       eax,eax
       jmp       short M01_L00
; Total bytes of code 90
; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       sub       esp,8
       mov       esi,ecx
       mov       edi,edx
       cmp       byte ptr [esi+0C],0
       je        short M02_L01
       push      0
       mov       ecx,esi
       mov       edx,edi
       call      dword ptr ds:[0B07B8E8]
       lea       esp,[ebp-8]
       pop       esi
       pop       edi
       pop       ebp
       ret
M02_L00:
       mov       ecx,esi
       call      dword ptr ds:[0A169E40]
M02_L01:
       lea       ecx,[esi+10]
       mov       edx,[esi+8]
       mov       eax,[ecx+4]
       cmp       edx,eax
       ja        short M02_L02
       mov       ecx,[ecx]
       lea       ecx,[ecx+edx*2]
       sub       eax,edx
       mov       [ebp-10],edi
       push      eax
       push      ecx
       lea       ecx,[ebp-0C]
       push      ecx
       mov       ecx,7F58290
       mov       edx,[ebp-10]
       call      dword ptr ds:[0B07B930]; System.Enum.TryFormatPrimitiveDefault[[System.Int32, System.Private.CoreLib]](System.RuntimeType, Int32, System.Span`1<Char>, Int32 ByRef)
       test      eax,eax
       je        short M02_L00
       mov       eax,[ebp-0C]
       add       [esi+8],eax
       lea       esp,[ebp-8]
       pop       esi
       pop       edi
       pop       ebp
       ret
M02_L02:
       call      dword ptr ds:[85F7270]
       int       3
; Total bytes of code 112
; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       sub       esp,10
       mov       esi,ecx
       mov       edi,edx
       mov       ebx,[ebp+8]
       cmp       byte ptr [esi+0C],0
       je        short M03_L01
       push      ebx
       mov       ecx,esi
       mov       edx,edi
       call      dword ptr ds:[0B07B8E8]
       lea       esp,[ebp-0C]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret       4
M03_L00:
       mov       ecx,esi
       call      dword ptr ds:[0A169E40]
       mov       edi,[ebp-10]
M03_L01:
       lea       ecx,[esi+10]
       mov       edx,[esi+8]
       mov       eax,[ecx+4]
       cmp       edx,eax
       ja        short M03_L06
       mov       ecx,[ecx]
       lea       ecx,[ecx+edx*2]
       sub       eax,edx
       test      ebx,ebx
       je        short M03_L03
       mov       [ebp-10],edi
       lea       edx,[ebx+8]
       mov       edi,[ebx+4]
       mov       [ebp-1C],edx
M03_L02:
       mov       edx,[ebp-10]
       mov       [ebp-18],edx
       mov       edx,[ebp-1C]
       test      edi,edi
       jne       short M03_L04
       push      eax
       push      ecx
       lea       ecx,[ebp-14]
       push      ecx
       mov       ecx,7F58290
       mov       edx,[ebp-18]
       call      dword ptr ds:[0B07B930]; System.Enum.TryFormatPrimitiveDefault[[System.Int32, System.Private.CoreLib]](System.RuntimeType, Int32, System.Span`1<Char>, Int32 ByRef)
       jmp       short M03_L05
M03_L03:
       xor       edx,edx
       mov       [ebp-1C],edx
       xor       edx,edx
       mov       [ebp-10],edi
       mov       edi,edx
       jmp       short M03_L02
M03_L04:
       push      eax
       push      ecx
       lea       ecx,[ebp-14]
       push      ecx
       push      edi
       push      edx
       mov       ecx,7F58290
       mov       edx,[ebp-18]
       call      dword ptr ds:[0B0A1DC8]; System.Enum.TryFormatPrimitiveNonDefault[[System.Int32, System.Private.CoreLib]](System.RuntimeType, Int32, System.Span`1<Char>, Int32 ByRef, System.ReadOnlySpan`1<Char>)
M03_L05:
       test      eax,eax
       je        short M03_L00
       mov       eax,[ebp-14]
       add       [esi+8],eax
       lea       esp,[ebp-0C]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret       4
M03_L06:
       call      dword ptr ds:[85F7270]
       int       3
; Total bytes of code 188
; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.ToStringAndClear()
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       vzeroupper
       mov       esi,ecx
       lea       eax,[esi+10]
       mov       edx,[esi+8]
       mov       ecx,[eax+4]
       cmp       edx,ecx
       ja        short M04_L01
       mov       eax,[eax]
       push      edx
       push      eax
       call      System.String..ctor(System.ReadOnlySpan`1<Char>)
       mov       edi,eax
       mov       edx,[esi+4]
       vxorps    xmm0,xmm0,xmm0
       vmovq     qword ptr [esi],xmm0
       vmovq     qword ptr [esi+8],xmm0
       vmovq     qword ptr [esi+10],xmm0
       test      edx,edx
       je        short M04_L00
       push      0
       mov       ecx,ds:[6C21EFC]
       cmp       [ecx],ecx
       call      dword ptr ds:[0A62F820]; System.Buffers.TlsOverPerCoreLockedStacksArrayPool`1[[System.Char, System.Private.CoreLib]].Return(Char[], Boolean)
M04_L00:
       mov       eax,edi
       pop       esi
       pop       edi
       pop       ebp
       ret
M04_L01:
       call      dword ptr ds:[85F7270]
       int       3
; Total bytes of code 88

Compare BDN Disasm

; System.Tests.Perf_Enum.InterpolateIntoString(Colors)
       push      ebp
       mov       ebp,esp
       push      esi
       sub       esp,18
       vxorps    xmm4,xmm4,xmm4
       vmovdqu   xmmword ptr [ebp-1C],xmm4
       xor       eax,eax
       mov       [ebp-0C],eax
       mov       [ebp-8],eax
       mov       esi,edx
       push      5
       lea       ecx,[ebp-1C]
       mov       edx,4
       call      dword ptr ds:[860BBA0]; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler..ctor(Int32, Int32)
       lea       ecx,[ebp-1C]
       mov       edx,esi
       call      dword ptr ds:[0AF154E0]; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors)
       mov       ecx,[ebp-14]
       mov       edx,[ebp-8]
       cmp       ecx,edx
       ja        near ptr M00_L08
       mov       eax,[ebp-0C]
       lea       eax,[eax+ecx*2]
       sub       edx,ecx
       mov       ecx,eax
       cmp       edx,1
       jb        short M00_L00
       mov       edx,7DD5D3C
       add       edx,8
       push      2
       call      dword ptr ds:[83B34E0]; System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
       mov       ecx,[ebp-14]
       inc       ecx
       mov       [ebp-14],ecx
       jmp       short M00_L01
M00_L00:
       lea       ecx,[ebp-1C]
       mov       edx,7DD5D3C
       call      dword ptr ds:[860BDE0]
M00_L01:
       push      7DD7C98
       lea       ecx,[ebp-1C]
       mov       edx,esi
       call      dword ptr ds:[0AF154F8]; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       mov       ecx,[ebp-14]
       mov       edx,[ebp-8]
       cmp       ecx,edx
       ja        near ptr M00_L08
       mov       eax,[ebp-0C]
       lea       eax,[eax+ecx*2]
       sub       edx,ecx
       mov       ecx,eax
       cmp       edx,1
       jb        short M00_L02
       mov       edx,7DD5D3C
       add       edx,8
       push      2
       call      dword ptr ds:[83B34E0]; System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
       mov       ecx,[ebp-14]
       inc       ecx
       mov       [ebp-14],ecx
       jmp       short M00_L03
M00_L02:
       lea       ecx,[ebp-1C]
       mov       edx,7DD5D3C
       call      dword ptr ds:[860BDE0]
M00_L03:
       push      7DD83EC
       lea       ecx,[ebp-1C]
       mov       edx,esi
       call      dword ptr ds:[0AF154F8]; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       mov       ecx,[ebp-14]
       mov       edx,[ebp-8]
       cmp       ecx,edx
       ja        near ptr M00_L08
       mov       eax,[ebp-0C]
       lea       eax,[eax+ecx*2]
       sub       edx,ecx
       mov       ecx,eax
       cmp       edx,1
       jb        short M00_L04
       mov       edx,7DD5D3C
       add       edx,8
       push      2
       call      dword ptr ds:[83B34E0]; System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
       mov       ecx,[ebp-14]
       inc       ecx
       mov       [ebp-14],ecx
       jmp       short M00_L05
M00_L04:
       lea       ecx,[ebp-1C]
       mov       edx,7DD5D3C
       call      dword ptr ds:[860BDE0]
M00_L05:
       push      7DD83FC
       lea       ecx,[ebp-1C]
       mov       edx,esi
       call      dword ptr ds:[0AF154F8]; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       mov       ecx,[ebp-14]
       mov       edx,[ebp-8]
       cmp       ecx,edx
       ja        short M00_L08
       mov       eax,[ebp-0C]
       lea       eax,[eax+ecx*2]
       sub       edx,ecx
       mov       ecx,eax
       cmp       edx,1
       jb        short M00_L06
       mov       edx,7DD5D3C
       add       edx,8
       push      2
       call      dword ptr ds:[83B34E0]; System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
       mov       ecx,[ebp-14]
       inc       ecx
       mov       [ebp-14],ecx
       jmp       short M00_L07
M00_L06:
       lea       ecx,[ebp-1C]
       mov       edx,7DD5D3C
       call      dword ptr ds:[860BDE0]
M00_L07:
       push      7DD2BD4
       lea       ecx,[ebp-1C]
       mov       edx,esi
       call      dword ptr ds:[0AF154F8]; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       lea       ecx,[ebp-1C]
       call      dword ptr ds:[860BC30]; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.ToStringAndClear()
       lea       esp,[ebp-4]
       pop       esi
       pop       ebp
       ret
M00_L08:
       call      dword ptr ds:[8499270]
       int       3
; Total bytes of code 407
; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler..ctor(Int32, Int32)
       push      ebp
       mov       ebp,esp
       push      esi
       mov       esi,ecx
       xor       ecx,ecx
       mov       [esi],ecx
       mov       ecx,ds:[6BF1F00]
       imul      eax,[ebp+8],0B
       add       edx,eax
       mov       eax,100
       cmp       edx,100
       cmovle    edx,eax
       cmp       [ecx],ecx
       call      dword ptr ds:[0A4AF8CC]; System.Buffers.TlsOverPerCoreLockedStacksArrayPool`1[[System.Char, System.Private.CoreLib]].Rent(Int32)
       lea       edx,[esi+4]
       call      CORINFO_HELP_CHECKED_ASSIGN_REF_EAX
       test      eax,eax
       je        short M01_L01
       lea       edx,[eax+8]
       mov       eax,[eax+4]
M01_L00:
       lea       ecx,[esi+10]
       mov       [ecx],edx
       mov       [ecx+4],eax
       xor       edx,edx
       mov       [esi+8],edx
       mov       byte ptr [esi+0C],0
       pop       esi
       pop       ebp
       ret       4
M01_L01:
       xor       edx,edx
       xor       eax,eax
       jmp       short M01_L00
; Total bytes of code 90
; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       sub       esp,8
       mov       esi,ecx
       mov       edi,edx
       cmp       byte ptr [esi+0C],0
       je        short M02_L01
       push      0
       mov       ecx,esi
       mov       edx,edi
       call      dword ptr ds:[0AF15540]
       lea       esp,[ebp-8]
       pop       esi
       pop       edi
       pop       ebp
       ret
M02_L00:
       mov       ecx,esi
       call      dword ptr ds:[860BE28]
M02_L01:
       lea       ecx,[esi+10]
       mov       edx,[esi+8]
       mov       eax,[ecx+4]
       cmp       edx,eax
       ja        short M02_L02
       mov       ecx,[ecx]
       lea       ecx,[ecx+edx*2]
       sub       eax,edx
       mov       [ebp-10],edi
       push      eax
       push      ecx
       lea       ecx,[ebp-0C]
       push      ecx
       mov       ecx,7DD840C
       mov       edx,[ebp-10]
       call      dword ptr ds:[0AF15570]; System.Enum.TryFormatPrimitiveDefault[[System.Int32, System.Private.CoreLib],[System.UInt32, System.Private.CoreLib]](System.RuntimeType, Int32, System.Span`1<Char>, Int32 ByRef)
       test      eax,eax
       je        short M02_L00
       mov       eax,[ebp-0C]
       add       [esi+8],eax
       lea       esp,[ebp-8]
       pop       esi
       pop       edi
       pop       ebp
       ret
M02_L02:
       call      dword ptr ds:[8499270]
       int       3
; Total bytes of code 112
; System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       vzeroupper
       mov       eax,[ebp+8]
       mov       esi,ecx
       sub       esi,edx
       cmp       esi,eax
       jb        near ptr M03_L10
       mov       esi,edx
       sub       esi,ecx
       cmp       esi,eax
       jb        near ptr M03_L10
       lea       esi,[edx+eax]
       lea       edi,[ecx+eax]
       cmp       eax,10
       jbe       short M03_L05
       cmp       eax,40
       ja        short M03_L03
M03_L00:
       vmovups   xmm0,[edx]
       vmovups   [ecx],xmm0
       cmp       eax,20
       jbe       short M03_L01
       vmovups   xmm0,[edx+10]
       vmovups   [ecx+10],xmm0
       cmp       eax,30
       ja        near ptr M03_L09
M03_L01:
       vmovups   xmm0,[esi-10]
       vmovups   [edi-10],xmm0
M03_L02:
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret       4
M03_L03:
       cmp       eax,800
       ja        near ptr M03_L11
       mov       ebx,eax
       shr       ebx,6
M03_L04:
       vmovdqu   ymm0,ymmword ptr [edx]
       vmovdqu   ymmword ptr [ecx],ymm0
       vmovdqu   ymm0,ymmword ptr [edx+20]
       vmovdqu   ymmword ptr [ecx+20],ymm0
       add       ecx,40
       add       edx,40
       dec       ebx
       jne       short M03_L04
       and       eax,3F
       cmp       eax,10
       ja        short M03_L00
       jmp       short M03_L01
M03_L05:
       test      al,18
       jne       short M03_L06
       test      al,4
       jne       short M03_L08
       test      eax,eax
       je        short M03_L02
       movzx     edx,byte ptr [edx]
       mov       [ecx],dl
       test      al,2
       je        short M03_L02
       movsx     eax,word ptr [esi-2]
       mov       [edi-2],ax
       jmp       short M03_L02
M03_L06:
       mov       eax,[edx]
       mov       [ecx],eax
       mov       edx,[edx+4]
       mov       [ecx+4],edx
       mov       ecx,[esi-8]
       mov       [edi-8],ecx
M03_L07:
       mov       eax,[esi-4]
       mov       [edi-4],eax
       jmp       short M03_L02
M03_L08:
       mov       eax,[edx]
       mov       [ecx],eax
       jmp       short M03_L07
M03_L09:
       vmovups   xmm0,[edx+20]
       vmovups   [ecx+20],xmm0
       jmp       near ptr M03_L01
M03_L10:
       cmp       ecx,edx
       je        near ptr M03_L02
M03_L11:
       push      eax
       call      dword ptr ds:[83B34F8]
       jmp       near ptr M03_L02
; Total bytes of code 250
; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       sub       esp,10
       mov       esi,ecx
       mov       edi,edx
       mov       ebx,[ebp+8]
       cmp       byte ptr [esi+0C],0
       je        short M04_L01
       push      ebx
       mov       ecx,esi
       mov       edx,edi
       call      dword ptr ds:[0AF15540]
       lea       esp,[ebp-0C]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret       4
M04_L00:
       mov       ecx,esi
       call      dword ptr ds:[860BE28]
       mov       edi,[ebp-10]
M04_L01:
       lea       ecx,[esi+10]
       mov       edx,[esi+8]
       mov       eax,[ecx+4]
       cmp       edx,eax
       ja        short M04_L06
       mov       ecx,[ecx]
       lea       ecx,[ecx+edx*2]
       sub       eax,edx
       test      ebx,ebx
       je        short M04_L03
       mov       [ebp-10],edi
       lea       edx,[ebx+8]
       mov       edi,[ebx+4]
       mov       [ebp-1C],edx
M04_L02:
       mov       edx,[ebp-10]
       mov       [ebp-18],edx
       mov       edx,[ebp-1C]
       test      edi,edi
       jne       short M04_L04
       push      eax
       push      ecx
       lea       ecx,[ebp-14]
       push      ecx
       mov       ecx,7DD840C
       mov       edx,[ebp-18]
       call      dword ptr ds:[0AF15570]; System.Enum.TryFormatPrimitiveDefault[[System.Int32, System.Private.CoreLib],[System.UInt32, System.Private.CoreLib]](System.RuntimeType, Int32, System.Span`1<Char>, Int32 ByRef)
       jmp       short M04_L05
M04_L03:
       xor       edx,edx
       mov       [ebp-1C],edx
       xor       edx,edx
       mov       [ebp-10],edi
       mov       edi,edx
       jmp       short M04_L02
M04_L04:
       push      eax
       push      ecx
       lea       ecx,[ebp-14]
       push      ecx
       push      edi
       push      edx
       mov       ecx,7DD840C
       mov       edx,[ebp-18]
       call      dword ptr ds:[0AF1D6D8]; System.Enum.TryFormatPrimitiveNonDefault[[System.Int32, System.Private.CoreLib],[System.UInt32, System.Private.CoreLib]](System.RuntimeType, Int32, System.Span`1<Char>, Int32 ByRef, System.ReadOnlySpan`1<Char>)
M04_L05:
       test      eax,eax
       je        short M04_L00
       mov       eax,[ebp-14]
       add       [esi+8],eax
       lea       esp,[ebp-0C]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret       4
M04_L06:
       call      dword ptr ds:[8499270]
       int       3
; Total bytes of code 188
; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.ToStringAndClear()
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       vzeroupper
       mov       esi,ecx
       lea       eax,[esi+10]
       mov       edx,[esi+8]
       mov       ecx,[eax+4]
       cmp       edx,ecx
       ja        short M05_L01
       mov       eax,[eax]
       push      edx
       push      eax
       call      System.String..ctor(System.ReadOnlySpan`1<Char>)
       mov       edi,eax
       mov       edx,[esi+4]
       xor       ecx,ecx
       vxorps    xmm0,xmm0,xmm0
       vmovq     qword ptr [esi],xmm0
       vmovq     qword ptr [esi+8],xmm0
       vmovq     qword ptr [esi+10],xmm0
       test      edx,edx
       je        short M05_L00
       push      0
       mov       ecx,ds:[6BF1F00]
       cmp       [ecx],ecx
       call      dword ptr ds:[0A4AF8D0]; System.Buffers.TlsOverPerCoreLockedStacksArrayPool`1[[System.Char, System.Private.CoreLib]].Return(Char[], Boolean)
M05_L00:
       mov       eax,edi
       pop       esi
       pop       edi
       pop       ebp
       ret
M05_L01:
       call      dword ptr ds:[8499270]
       int       3
; Total bytes of code 90

System.Tests.Perf_Enum.InterpolateIntoString(value: Red, Green)


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 197.4543922718856 > 187.4583898733212.
IsChangePoint: Marked as a change because one of 3/22/2023 7:51:01 PM, 3/28/2023 7:07:52 AM falls between 3/19/2023 2:30:51 PM and 3/28/2023 7:07:52 AM.
IsRegressionStdDev: Marked as regression because -17.484662589734064 (T) = (0 -197.56510575328784) / Math.Sqrt((25.908531870078534 / (31)) + (12.673613887722977 / (29))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (31) + (29) - 2, .025) and -0.11091905090749085 = (177.83933545103963 - 197.56510575328784) / 177.83933545103963 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```#### System.Tests.Perf_Enum.InterpolateIntoSpan_Flags(value: Red)

```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 140.86847058248392 > 135.8598593641222.
IsChangePoint: Marked as a change because one of 1/18/2023 6:24:13 PM, 3/22/2023 7:51:01 PM, 3/28/2023 7:07:52 AM falls between 3/19/2023 2:30:51 PM and 3/28/2023 7:07:52 AM.
IsRegressionStdDev: Marked as regression because -26.306268554717 (T) = (0 -141.64185354946179) / Math.Sqrt((7.274518525905147 / (31)) + (0.89771130719909 / (29))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (31) + (29) - 2, .025) and -0.1058503529960116 = (128.08410574334974 - 141.64185354946179) / 128.08410574334974 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 BDN Disasm

```assembly
; System.Tests.Perf_Enum.InterpolateIntoSpan_Flags(Colors)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       mov       ecx,ds:[6BD44E0]
       test      ecx,ecx
       je        short M00_L01
       lea       esi,[ecx+8]
       mov       edi,[ecx+4]
M00_L00:
       push      edi
       push      esi
       mov       ecx,edx
       call      dword ptr ds:[0AEFBA08]; System.Tests.Perf_Enum.InterpolateIntoSpan[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](System.Span`1<Char>, Colors)
       pop       esi
       pop       edi
       pop       ebp
       ret
M00_L01:
       xor       esi,esi
       xor       edi,edi
       jmp       short M00_L00
; Total bytes of code 41
; System.Tests.Perf_Enum.InterpolateIntoSpan[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](System.Span`1<Char>, Colors)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       sub       esp,28
       vxorps    xmm4,xmm4,xmm4
       vmovdqu   xmmword ptr [ebp-34],xmm4
       xor       eax,eax
       mov       [ebp-24],eax
       mov       ebx,ecx
       mov       edx,[ebp+0C]
       lea       edi,[ebp-28]
       lea       esi,[ebp+8]
       movsd
       movsd
       xor       ecx,ecx
       cmp       edx,4
       setge     cl
       mov       edx,ecx
       mov       [ebp-2C],dl
       lea       edi,[ebp-20]
       lea       esi,[ebp-34]
       mov       ecx,5
       rep movsd
       test      edx,edx
       je        near ptr M01_L08
       lea       ecx,[ebp-20]
       mov       edx,ebx
       call      dword ptr ds:[0AEFBBA0]; System.MemoryExtensions+TryWriteInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors)
       test      eax,eax
       je        near ptr M01_L08
       mov       ecx,[ebp-14]
       mov       edx,[ebp-10]
       mov       eax,[ebp-1C]
       cmp       eax,edx
       jae       short M01_L00
       mov       word ptr [ecx+eax*2],20
       inc       eax
       mov       [ebp-1C],eax
       jmp       short M01_L01
M01_L00:
       mov       byte ptr [ebp-18],0
       jmp       near ptr M01_L08
M01_L01:
       push      7DD7B1C
       lea       ecx,[ebp-20]
       mov       edx,ebx
       call      dword ptr ds:[0AEFBBD0]; System.MemoryExtensions+TryWriteInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       test      eax,eax
       je        near ptr M01_L08
       mov       ecx,[ebp-14]
       mov       edx,[ebp-10]
       mov       eax,[ebp-1C]
       cmp       eax,edx
       jae       short M01_L02
       mov       word ptr [ecx+eax*2],20
       inc       eax
       mov       [ebp-1C],eax
       jmp       short M01_L03
M01_L02:
       mov       byte ptr [ebp-18],0
       jmp       near ptr M01_L08
M01_L03:
       push      7DD8284
       lea       ecx,[ebp-20]
       mov       edx,ebx
       call      dword ptr ds:[0AEFBBD0]; System.MemoryExtensions+TryWriteInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       test      eax,eax
       je        short M01_L08
       mov       ecx,[ebp-14]
       mov       edx,[ebp-10]
       mov       eax,[ebp-1C]
       cmp       eax,edx
       jae       short M01_L04
       mov       word ptr [ecx+eax*2],20
       inc       eax
       mov       [ebp-1C],eax
       jmp       short M01_L05
M01_L04:
       mov       byte ptr [ebp-18],0
       jmp       short M01_L08
M01_L05:
       push      7DD8294
       lea       ecx,[ebp-20]
       mov       edx,ebx
       call      dword ptr ds:[0AEFBBD0]; System.MemoryExtensions+TryWriteInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       test      eax,eax
       je        short M01_L08
       mov       ecx,[ebp-14]
       mov       edx,[ebp-10]
       mov       eax,[ebp-1C]
       cmp       eax,edx
       jae       short M01_L06
       mov       word ptr [ecx+eax*2],20
       inc       eax
       mov       [ebp-1C],eax
       jmp       short M01_L07
M01_L06:
       mov       byte ptr [ebp-18],0
       jmp       short M01_L08
M01_L07:
       push      7DD2BD4
       lea       ecx,[ebp-20]
       mov       edx,ebx
       call      dword ptr ds:[0AEFBBD0]; System.MemoryExtensions+TryWriteInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       test      eax,eax
       je        short M01_L08
       xor       eax,eax
       cmp       byte ptr [ebp-18],0
       setne     al
       lea       esp,[ebp-0C]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret       8
M01_L08:
       xor       eax,eax
       lea       esp,[ebp-0C]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret       8
; Total bytes of code 334

Compare BDN Disasm

; System.Tests.Perf_Enum.InterpolateIntoSpan_Flags(Colors)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       mov       ecx,ds:[75E44E0]
       test      ecx,ecx
       je        short M00_L01
       lea       esi,[ecx+8]
       mov       edi,[ecx+4]
M00_L00:
       push      edi
       push      esi
       mov       ecx,edx
       call      dword ptr ds:[0BAC5678]; System.Tests.Perf_Enum.InterpolateIntoSpan[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](System.Span`1<Char>, Colors)
       pop       esi
       pop       edi
       pop       ebp
       ret
M00_L01:
       xor       esi,esi
       xor       edi,edi
       jmp       short M00_L00
; Total bytes of code 41
; System.Tests.Perf_Enum.InterpolateIntoSpan[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](System.Span`1<Char>, Colors)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       sub       esp,28
       vxorps    xmm4,xmm4,xmm4
       vmovdqu   xmmword ptr [ebp-34],xmm4
       xor       eax,eax
       mov       [ebp-24],eax
       mov       ebx,ecx
       mov       edx,[ebp+0C]
       lea       edi,[ebp-28]
       lea       esi,[ebp+8]
       movsd
       movsd
       xor       ecx,ecx
       cmp       edx,4
       setge     cl
       mov       edx,ecx
       mov       [ebp-2C],dl
       lea       edi,[ebp-20]
       lea       esi,[ebp-34]
       mov       ecx,5
       rep movsd
       test      edx,edx
       je        near ptr M01_L08
       lea       ecx,[ebp-20]
       mov       edx,ebx
       call      dword ptr ds:[0BAC57F8]; System.MemoryExtensions+TryWriteInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors)
       test      eax,eax
       je        near ptr M01_L08
       mov       ecx,[ebp-1C]
       cmp       ecx,[ebp-10]
       ja        near ptr M01_L09
       mov       edx,[ebp-14]
       lea       edx,[edx+ecx*2]
       mov       eax,[ebp-10]
       sub       eax,ecx
       mov       ecx,edx
       cmp       eax,1
       jb        short M01_L00
       mov       esi,8
       add       esi,8915D3C
       mov       edx,esi
       push      2
       call      dword ptr ds:[8EF34E0]; System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
       mov       ecx,[ebp-1C]
       inc       ecx
       mov       [ebp-1C],ecx
       jmp       short M01_L01
M01_L00:
       mov       byte ptr [ebp-18],0
       jmp       near ptr M01_L08
M01_L01:
       push      8917C98
       lea       ecx,[ebp-20]
       mov       edx,ebx
       call      dword ptr ds:[0BAC5828]; System.MemoryExtensions+TryWriteInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       test      eax,eax
       je        near ptr M01_L08
       mov       ecx,[ebp-1C]
       cmp       ecx,[ebp-10]
       ja        near ptr M01_L09
       mov       edx,[ebp-14]
       lea       edx,[edx+ecx*2]
       mov       eax,[ebp-10]
       sub       eax,ecx
       mov       ecx,edx
       cmp       eax,1
       jb        short M01_L02
       mov       edx,esi
       push      2
       call      dword ptr ds:[8EF34E0]; System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
       mov       ecx,[ebp-1C]
       inc       ecx
       mov       [ebp-1C],ecx
       jmp       short M01_L03
M01_L02:
       mov       byte ptr [ebp-18],0
       jmp       near ptr M01_L08
M01_L03:
       push      8918400
       lea       ecx,[ebp-20]
       mov       edx,ebx
       call      dword ptr ds:[0BAC5828]; System.MemoryExtensions+TryWriteInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       test      eax,eax
       je        near ptr M01_L08
       mov       ecx,[ebp-1C]
       cmp       ecx,[ebp-10]
       ja        near ptr M01_L09
       mov       edx,[ebp-14]
       lea       edx,[edx+ecx*2]
       mov       eax,[ebp-10]
       sub       eax,ecx
       mov       ecx,edx
       cmp       eax,1
       jb        short M01_L04
       mov       edx,esi
       push      2
       call      dword ptr ds:[8EF34E0]; System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
       mov       ecx,[ebp-1C]
       inc       ecx
       mov       [ebp-1C],ecx
       jmp       short M01_L05
M01_L04:
       mov       byte ptr [ebp-18],0
       jmp       short M01_L08
M01_L05:
       push      8918410
       lea       ecx,[ebp-20]
       mov       edx,ebx
       call      dword ptr ds:[0BAC5828]; System.MemoryExtensions+TryWriteInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       test      eax,eax
       je        short M01_L08
       mov       ecx,[ebp-1C]
       cmp       ecx,[ebp-10]
       ja        short M01_L09
       mov       edx,[ebp-14]
       lea       edx,[edx+ecx*2]
       mov       eax,[ebp-10]
       sub       eax,ecx
       mov       ecx,edx
       cmp       eax,1
       jb        short M01_L06
       mov       edx,esi
       push      2
       call      dword ptr ds:[8EF34E0]; System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
       mov       ecx,[ebp-1C]
       inc       ecx
       mov       [ebp-1C],ecx
       jmp       short M01_L07
M01_L06:
       mov       byte ptr [ebp-18],0
       jmp       short M01_L08
M01_L07:
       push      8912BD4
       lea       ecx,[ebp-20]
       mov       edx,ebx
       call      dword ptr ds:[0BAC5828]; System.MemoryExtensions+TryWriteInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       test      eax,eax
       je        short M01_L08
       xor       eax,eax
       cmp       byte ptr [ebp-18],0
       setne     al
       lea       esp,[ebp-0C]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret       8
M01_L08:
       xor       eax,eax
       lea       esp,[ebp-0C]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret       8
M01_L09:
       call      dword ptr ds:[8FD9270]
       int       3
; Total bytes of code 448

System.Tests.Perf_Enum.InterpolateIntoSpan_NonFlags(value: 42)


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 148.6469456329724 > 143.4155598261658.
IsChangePoint: Marked as a change because one of 2/9/2023 4:10:34 PM, 2/23/2023 8:54:44 PM, 3/14/2023 8:42:09 PM, 3/22/2023 7:51:01 PM, 3/28/2023 7:07:52 AM falls between 3/19/2023 2:30:51 PM and 3/28/2023 7:07:52 AM.
IsRegressionStdDev: Marked as regression because -27.888121362143714 (T) = (0 -149.51388009146007) / Math.Sqrt((5.760486355506516 / (31)) + (2.9478886814278398 / (29))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (31) + (29) - 2, .025) and -0.11112152627897105 = (134.5612307522889 - 149.51388009146007) / 134.5612307522889 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 BDN Disasm

```assembly
; System.Tests.Perf_Enum.InterpolateIntoSpan_NonFlags(Colors)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       mov       ecx,ds:[70444E0]
       test      ecx,ecx
       je        short M00_L01
       lea       esi,[ecx+8]
       mov       edi,[ecx+4]
M00_L00:
       push      edi
       push      esi
       mov       ecx,edx
       call      dword ptr ds:[0B44BA08]; System.Tests.Perf_Enum.InterpolateIntoSpan[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](System.Span`1<Char>, Colors)
       pop       esi
       pop       edi
       pop       ebp
       ret
M00_L01:
       xor       esi,esi
       xor       edi,edi
       jmp       short M00_L00
; Total bytes of code 41
; System.Tests.Perf_Enum.InterpolateIntoSpan[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](System.Span`1<Char>, Colors)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       sub       esp,28
       vxorps    xmm4,xmm4,xmm4
       vmovdqu   xmmword ptr [ebp-34],xmm4
       xor       eax,eax
       mov       [ebp-24],eax
       mov       ebx,ecx
       mov       edx,[ebp+0C]
       lea       edi,[ebp-28]
       lea       esi,[ebp+8]
       movsd
       movsd
       xor       ecx,ecx
       cmp       edx,4
       setge     cl
       mov       edx,ecx
       mov       [ebp-2C],dl
       lea       edi,[ebp-20]
       lea       esi,[ebp-34]
       mov       ecx,5
       rep movsd
       test      edx,edx
       je        near ptr M01_L08
       lea       ecx,[ebp-20]
       mov       edx,ebx
       call      dword ptr ds:[0B44BBA0]; System.MemoryExtensions+TryWriteInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors)
       test      eax,eax
       je        near ptr M01_L08
       mov       ecx,[ebp-14]
       mov       edx,[ebp-10]
       mov       eax,[ebp-1C]
       cmp       eax,edx
       jae       short M01_L00
       mov       word ptr [ecx+eax*2],20
       inc       eax
       mov       [ebp-1C],eax
       jmp       short M01_L01
M01_L00:
       mov       byte ptr [ebp-18],0
       jmp       near ptr M01_L08
M01_L01:
       push      82B7B1C
       lea       ecx,[ebp-20]
       mov       edx,ebx
       call      dword ptr ds:[0B44BBD0]; System.MemoryExtensions+TryWriteInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       test      eax,eax
       je        near ptr M01_L08
       mov       ecx,[ebp-14]
       mov       edx,[ebp-10]
       mov       eax,[ebp-1C]
       cmp       eax,edx
       jae       short M01_L02
       mov       word ptr [ecx+eax*2],20
       inc       eax
       mov       [ebp-1C],eax
       jmp       short M01_L03
M01_L02:
       mov       byte ptr [ebp-18],0
       jmp       near ptr M01_L08
M01_L03:
       push      82B8284
       lea       ecx,[ebp-20]
       mov       edx,ebx
       call      dword ptr ds:[0B44BBD0]; System.MemoryExtensions+TryWriteInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       test      eax,eax
       je        short M01_L08
       mov       ecx,[ebp-14]
       mov       edx,[ebp-10]
       mov       eax,[ebp-1C]
       cmp       eax,edx
       jae       short M01_L04
       mov       word ptr [ecx+eax*2],20
       inc       eax
       mov       [ebp-1C],eax
       jmp       short M01_L05
M01_L04:
       mov       byte ptr [ebp-18],0
       jmp       short M01_L08
M01_L05:
       push      82B8294
       lea       ecx,[ebp-20]
       mov       edx,ebx
       call      dword ptr ds:[0B44BBD0]; System.MemoryExtensions+TryWriteInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       test      eax,eax
       je        short M01_L08
       mov       ecx,[ebp-14]
       mov       edx,[ebp-10]
       mov       eax,[ebp-1C]
       cmp       eax,edx
       jae       short M01_L06
       mov       word ptr [ecx+eax*2],20
       inc       eax
       mov       [ebp-1C],eax
       jmp       short M01_L07
M01_L06:
       mov       byte ptr [ebp-18],0
       jmp       short M01_L08
M01_L07:
       push      82B2BD4
       lea       ecx,[ebp-20]
       mov       edx,ebx
       call      dword ptr ds:[0B44BBD0]; System.MemoryExtensions+TryWriteInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       test      eax,eax
       je        short M01_L08
       xor       eax,eax
       cmp       byte ptr [ebp-18],0
       setne     al
       lea       esp,[ebp-0C]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret       8
M01_L08:
       xor       eax,eax
       lea       esp,[ebp-0C]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret       8
; Total bytes of code 334

Compare BDN Disasm

; System.Tests.Perf_Enum.InterpolateIntoSpan_NonFlags(Colors)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       mov       ecx,ds:[77044E0]
       test      ecx,ecx
       je        short M00_L01
       lea       esi,[ecx+8]
       mov       edi,[ecx+4]
M00_L00:
       push      edi
       push      esi
       mov       ecx,edx
       call      dword ptr ds:[0BC25678]; System.Tests.Perf_Enum.InterpolateIntoSpan[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](System.Span`1<Char>, Colors)
       pop       esi
       pop       edi
       pop       ebp
       ret
M00_L01:
       xor       esi,esi
       xor       edi,edi
       jmp       short M00_L00
; Total bytes of code 41
; System.Tests.Perf_Enum.InterpolateIntoSpan[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](System.Span`1<Char>, Colors)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       sub       esp,28
       vxorps    xmm4,xmm4,xmm4
       vmovdqu   xmmword ptr [ebp-34],xmm4
       xor       eax,eax
       mov       [ebp-24],eax
       mov       ebx,ecx
       mov       edx,[ebp+0C]
       lea       edi,[ebp-28]
       lea       esi,[ebp+8]
       movsd
       movsd
       xor       ecx,ecx
       cmp       edx,4
       setge     cl
       mov       edx,ecx
       mov       [ebp-2C],dl
       lea       edi,[ebp-20]
       lea       esi,[ebp-34]
       mov       ecx,5
       rep movsd
       test      edx,edx
       je        near ptr M01_L08
       lea       ecx,[ebp-20]
       mov       edx,ebx
       call      dword ptr ds:[0BC257F8]; System.MemoryExtensions+TryWriteInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors)
       test      eax,eax
       je        near ptr M01_L08
       mov       ecx,[ebp-1C]
       cmp       ecx,[ebp-10]
       ja        near ptr M01_L09
       mov       edx,[ebp-14]
       lea       edx,[edx+ecx*2]
       mov       eax,[ebp-10]
       sub       eax,ecx
       mov       ecx,edx
       cmp       eax,1
       jb        short M01_L00
       mov       esi,8
       add       esi,8A75D3C
       mov       edx,esi
       push      2
       call      dword ptr ds:[90534E0]; System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
       mov       ecx,[ebp-1C]
       inc       ecx
       mov       [ebp-1C],ecx
       jmp       short M01_L01
M01_L00:
       mov       byte ptr [ebp-18],0
       jmp       near ptr M01_L08
M01_L01:
       push      8A77C98
       lea       ecx,[ebp-20]
       mov       edx,ebx
       call      dword ptr ds:[0BC25828]; System.MemoryExtensions+TryWriteInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       test      eax,eax
       je        near ptr M01_L08
       mov       ecx,[ebp-1C]
       cmp       ecx,[ebp-10]
       ja        near ptr M01_L09
       mov       edx,[ebp-14]
       lea       edx,[edx+ecx*2]
       mov       eax,[ebp-10]
       sub       eax,ecx
       mov       ecx,edx
       cmp       eax,1
       jb        short M01_L02
       mov       edx,esi
       push      2
       call      dword ptr ds:[90534E0]; System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
       mov       ecx,[ebp-1C]
       inc       ecx
       mov       [ebp-1C],ecx
       jmp       short M01_L03
M01_L02:
       mov       byte ptr [ebp-18],0
       jmp       near ptr M01_L08
M01_L03:
       push      8A78400
       lea       ecx,[ebp-20]
       mov       edx,ebx
       call      dword ptr ds:[0BC25828]; System.MemoryExtensions+TryWriteInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       test      eax,eax
       je        near ptr M01_L08
       mov       ecx,[ebp-1C]
       cmp       ecx,[ebp-10]
       ja        near ptr M01_L09
       mov       edx,[ebp-14]
       lea       edx,[edx+ecx*2]
       mov       eax,[ebp-10]
       sub       eax,ecx
       mov       ecx,edx
       cmp       eax,1
       jb        short M01_L04
       mov       edx,esi
       push      2
       call      dword ptr ds:[90534E0]; System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
       mov       ecx,[ebp-1C]
       inc       ecx
       mov       [ebp-1C],ecx
       jmp       short M01_L05
M01_L04:
       mov       byte ptr [ebp-18],0
       jmp       short M01_L08
M01_L05:
       push      8A78410
       lea       ecx,[ebp-20]
       mov       edx,ebx
       call      dword ptr ds:[0BC25828]; System.MemoryExtensions+TryWriteInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       test      eax,eax
       je        short M01_L08
       mov       ecx,[ebp-1C]
       cmp       ecx,[ebp-10]
       ja        short M01_L09
       mov       edx,[ebp-14]
       lea       edx,[edx+ecx*2]
       mov       eax,[ebp-10]
       sub       eax,ecx
       mov       ecx,edx
       cmp       eax,1
       jb        short M01_L06
       mov       edx,esi
       push      2
       call      dword ptr ds:[90534E0]; System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
       mov       ecx,[ebp-1C]
       inc       ecx
       mov       [ebp-1C],ecx
       jmp       short M01_L07
M01_L06:
       mov       byte ptr [ebp-18],0
       jmp       short M01_L08
M01_L07:
       push      8A72BD4
       lea       ecx,[ebp-20]
       mov       edx,ebx
       call      dword ptr ds:[0BC25828]; System.MemoryExtensions+TryWriteInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       test      eax,eax
       je        short M01_L08
       xor       eax,eax
       cmp       byte ptr [ebp-18],0
       setne     al
       lea       esp,[ebp-0C]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret       8
M01_L08:
       xor       eax,eax
       lea       esp,[ebp-0C]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret       8
M01_L09:
       call      dword ptr ds:[9139270]
       int       3
; Total bytes of code 448

System.Tests.Perf_Enum.InterpolateIntoString(value: 32)


Description of detection logic

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 154.04661359778612 > 145.46593447251107.
IsChangePoint: Marked as a change because one of 1/21/2023 1:51:00 AM, 3/19/2023 10:05:03 PM, 3/22/2023 7:51:01 PM, 3/28/2023 7:07:52 AM falls between 3/19/2023 2:30:51 PM and 3/28/2023 7:07:52 AM.
IsRegressionStdDev: Marked as regression because -13.365004444048477 (T) = (0 -150.75065384386326) / Math.Sqrt((27.343909237211886 / (31)) + (6.679653730528674 / (28))) is less than -2.0024654592901125 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (31) + (28) - 2, .025) and -0.1035713483333037 = (136.6025441595038 - 150.75065384386326) / 136.6025441595038 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 BDN Disasm

```assembly
; System.Tests.Perf_Enum.InterpolateIntoString(Colors)
       push      ebp
       mov       ebp,esp
       push      esi
       sub       esp,18
       vxorps    xmm4,xmm4,xmm4
       vmovdqu   xmmword ptr [ebp-1C],xmm4
       xor       eax,eax
       mov       [ebp-0C],eax
       mov       [ebp-8],eax
       mov       esi,edx
       push      5
       lea       ecx,[ebp-1C]
       mov       edx,4
       call      dword ptr ds:[0A9F9BA0]; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler..ctor(Int32, Int32)
       lea       ecx,[ebp-1C]
       mov       edx,esi
       call      dword ptr ds:[0B90B888]; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors)
       mov       ecx,[ebp-14]
       mov       edx,[ebp-0C]
       mov       eax,[ebp-8]
       cmp       ecx,eax
       jae       short M00_L00
       mov       word ptr [edx+ecx*2],20
       inc       ecx
       mov       [ebp-14],ecx
       jmp       short M00_L01
M00_L00:
       lea       ecx,[ebp-1C]
       mov       edx,8855C54
       call      dword ptr ds:[0A9F9DF8]
M00_L01:
       push      8857B1C
       lea       ecx,[ebp-1C]
       mov       edx,esi
       call      dword ptr ds:[0B90B8A0]; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       mov       ecx,[ebp-14]
       mov       edx,[ebp-0C]
       mov       eax,[ebp-8]
       cmp       ecx,eax
       jae       short M00_L02
       mov       word ptr [edx+ecx*2],20
       inc       ecx
       mov       [ebp-14],ecx
       jmp       short M00_L03
M00_L02:
       lea       ecx,[ebp-1C]
       mov       edx,8855C54
       call      dword ptr ds:[0A9F9DF8]
M00_L03:
       push      8858270
       lea       ecx,[ebp-1C]
       mov       edx,esi
       call      dword ptr ds:[0B90B8A0]; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       mov       ecx,[ebp-14]
       mov       edx,[ebp-0C]
       mov       eax,[ebp-8]
       cmp       ecx,eax
       jae       short M00_L04
       mov       word ptr [edx+ecx*2],20
       inc       ecx
       mov       [ebp-14],ecx
       jmp       short M00_L05
M00_L04:
       lea       ecx,[ebp-1C]
       mov       edx,8855C54
       call      dword ptr ds:[0A9F9DF8]
M00_L05:
       push      8858280
       lea       ecx,[ebp-1C]
       mov       edx,esi
       call      dword ptr ds:[0B90B8A0]; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       mov       ecx,[ebp-14]
       mov       edx,[ebp-0C]
       mov       eax,[ebp-8]
       cmp       ecx,eax
       jae       short M00_L06
       mov       word ptr [edx+ecx*2],20
       inc       ecx
       mov       [ebp-14],ecx
       jmp       short M00_L07
M00_L06:
       lea       ecx,[ebp-1C]
       mov       edx,8855C54
       call      dword ptr ds:[0A9F9DF8]
M00_L07:
       push      8852BD4
       lea       ecx,[ebp-1C]
       mov       edx,esi
       call      dword ptr ds:[0B90B8A0]; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       lea       ecx,[ebp-1C]
       call      dword ptr ds:[0A9F9C30]; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.ToStringAndClear()
       lea       esp,[ebp-4]
       pop       esi
       pop       ebp
       ret
; Total bytes of code 288
; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler..ctor(Int32, Int32)
       push      ebp
       mov       ebp,esp
       push      esi
       mov       esi,ecx
       xor       ecx,ecx
       mov       [esi],ecx
       mov       ecx,ds:[75F1EFC]
       imul      eax,[ebp+8],0B
       add       edx,eax
       mov       eax,100
       cmp       edx,100
       cmovle    edx,eax
       cmp       [ecx],ecx
       call      dword ptr ds:[0AEBF81C]; System.Buffers.TlsOverPerCoreLockedStacksArrayPool`1[[System.Char, System.Private.CoreLib]].Rent(Int32)
       lea       edx,[esi+4]
       call      CORINFO_HELP_CHECKED_ASSIGN_REF_EAX
       test      eax,eax
       je        short M01_L01
       lea       edx,[eax+8]
       mov       eax,[eax+4]
M01_L00:
       lea       ecx,[esi+10]
       mov       [ecx],edx
       mov       [ecx+4],eax
       xor       edx,edx
       mov       [esi+8],edx
       mov       byte ptr [esi+0C],0
       pop       esi
       pop       ebp
       ret       4
M01_L01:
       xor       edx,edx
       xor       eax,eax
       jmp       short M01_L00
; Total bytes of code 90
; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       sub       esp,8
       mov       esi,ecx
       mov       edi,edx
       cmp       byte ptr [esi+0C],0
       je        short M02_L01
       push      0
       mov       ecx,esi
       mov       edx,edi
       call      dword ptr ds:[0B90B8E8]
       lea       esp,[ebp-8]
       pop       esi
       pop       edi
       pop       ebp
       ret
M02_L00:
       mov       ecx,esi
       call      dword ptr ds:[0A9F9E40]
M02_L01:
       lea       ecx,[esi+10]
       mov       edx,[esi+8]
       mov       eax,[ecx+4]
       cmp       edx,eax
       ja        short M02_L02
       mov       ecx,[ecx]
       lea       ecx,[ecx+edx*2]
       sub       eax,edx
       mov       [ebp-10],edi
       push      eax
       push      ecx
       lea       ecx,[ebp-0C]
       push      ecx
       mov       ecx,8858290
       mov       edx,[ebp-10]
       call      dword ptr ds:[0B90B930]; System.Enum.TryFormatPrimitiveDefault[[System.Int32, System.Private.CoreLib]](System.RuntimeType, Int32, System.Span`1<Char>, Int32 ByRef)
       test      eax,eax
       je        short M02_L00
       mov       eax,[ebp-0C]
       add       [esi+8],eax
       lea       esp,[ebp-8]
       pop       esi
       pop       edi
       pop       ebp
       ret
M02_L02:
       call      dword ptr ds:[8E87270]
       int       3
; Total bytes of code 112
; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       sub       esp,10
       mov       esi,ecx
       mov       edi,edx
       mov       ebx,[ebp+8]
       cmp       byte ptr [esi+0C],0
       je        short M03_L01
       push      ebx
       mov       ecx,esi
       mov       edx,edi
       call      dword ptr ds:[0B90B8E8]
       lea       esp,[ebp-0C]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret       4
M03_L00:
       mov       ecx,esi
       call      dword ptr ds:[0A9F9E40]
       mov       edi,[ebp-10]
M03_L01:
       lea       ecx,[esi+10]
       mov       edx,[esi+8]
       mov       eax,[ecx+4]
       cmp       edx,eax
       ja        short M03_L06
       mov       ecx,[ecx]
       lea       ecx,[ecx+edx*2]
       sub       eax,edx
       test      ebx,ebx
       je        short M03_L03
       mov       [ebp-10],edi
       lea       edx,[ebx+8]
       mov       edi,[ebx+4]
       mov       [ebp-1C],edx
M03_L02:
       mov       edx,[ebp-10]
       mov       [ebp-18],edx
       mov       edx,[ebp-1C]
       test      edi,edi
       jne       short M03_L04
       push      eax
       push      ecx
       lea       ecx,[ebp-14]
       push      ecx
       mov       ecx,8858290
       mov       edx,[ebp-18]
       call      dword ptr ds:[0B90B930]; System.Enum.TryFormatPrimitiveDefault[[System.Int32, System.Private.CoreLib]](System.RuntimeType, Int32, System.Span`1<Char>, Int32 ByRef)
       jmp       short M03_L05
M03_L03:
       xor       edx,edx
       mov       [ebp-1C],edx
       xor       edx,edx
       mov       [ebp-10],edi
       mov       edi,edx
       jmp       short M03_L02
M03_L04:
       push      eax
       push      ecx
       lea       ecx,[ebp-14]
       push      ecx
       push      edi
       push      edx
       mov       ecx,8858290
       mov       edx,[ebp-18]
       call      dword ptr ds:[0B931DC8]; System.Enum.TryFormatPrimitiveNonDefault[[System.Int32, System.Private.CoreLib]](System.RuntimeType, Int32, System.Span`1<Char>, Int32 ByRef, System.ReadOnlySpan`1<Char>)
M03_L05:
       test      eax,eax
       je        short M03_L00
       mov       eax,[ebp-14]
       add       [esi+8],eax
       lea       esp,[ebp-0C]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret       4
M03_L06:
       call      dword ptr ds:[8E87270]
       int       3
; Total bytes of code 188
; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.ToStringAndClear()
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       vzeroupper
       mov       esi,ecx
       lea       eax,[esi+10]
       mov       edx,[esi+8]
       mov       ecx,[eax+4]
       cmp       edx,ecx
       ja        short M04_L01
       mov       eax,[eax]
       push      edx
       push      eax
       call      System.String..ctor(System.ReadOnlySpan`1<Char>)
       mov       edi,eax
       mov       edx,[esi+4]
       vxorps    xmm0,xmm0,xmm0
       vmovq     qword ptr [esi],xmm0
       vmovq     qword ptr [esi+8],xmm0
       vmovq     qword ptr [esi+10],xmm0
       test      edx,edx
       je        short M04_L00
       push      0
       mov       ecx,ds:[75F1EFC]
       cmp       [ecx],ecx
       call      dword ptr ds:[0AEBF820]; System.Buffers.TlsOverPerCoreLockedStacksArrayPool`1[[System.Char, System.Private.CoreLib]].Return(Char[], Boolean)
M04_L00:
       mov       eax,edi
       pop       esi
       pop       edi
       pop       ebp
       ret
M04_L01:
       call      dword ptr ds:[8E87270]
       int       3
; Total bytes of code 88

Compare BDN Disasm

; System.Tests.Perf_Enum.InterpolateIntoString(Colors)
       push      ebp
       mov       ebp,esp
       push      esi
       sub       esp,18
       vxorps    xmm4,xmm4,xmm4
       vmovdqu   xmmword ptr [ebp-1C],xmm4
       xor       eax,eax
       mov       [ebp-0C],eax
       mov       [ebp-8],eax
       mov       esi,edx
       push      5
       lea       ecx,[ebp-1C]
       mov       edx,4
       call      dword ptr ds:[838BBA0]; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler..ctor(Int32, Int32)
       lea       ecx,[ebp-1C]
       mov       edx,esi
       call      dword ptr ds:[0AD954E0]; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors)
       mov       ecx,[ebp-14]
       mov       edx,[ebp-8]
       cmp       ecx,edx
       ja        near ptr M00_L08
       mov       eax,[ebp-0C]
       lea       eax,[eax+ecx*2]
       sub       edx,ecx
       mov       ecx,eax
       cmp       edx,1
       jb        short M00_L00
       mov       edx,7D25D3C
       add       edx,8
       push      2
       call      dword ptr ds:[49A34E0]; System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
       mov       ecx,[ebp-14]
       inc       ecx
       mov       [ebp-14],ecx
       jmp       short M00_L01
M00_L00:
       lea       ecx,[ebp-1C]
       mov       edx,7D25D3C
       call      dword ptr ds:[838BDE0]
M00_L01:
       push      7D27C98
       lea       ecx,[ebp-1C]
       mov       edx,esi
       call      dword ptr ds:[0AD954F8]; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       mov       ecx,[ebp-14]
       mov       edx,[ebp-8]
       cmp       ecx,edx
       ja        near ptr M00_L08
       mov       eax,[ebp-0C]
       lea       eax,[eax+ecx*2]
       sub       edx,ecx
       mov       ecx,eax
       cmp       edx,1
       jb        short M00_L02
       mov       edx,7D25D3C
       add       edx,8
       push      2
       call      dword ptr ds:[49A34E0]; System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
       mov       ecx,[ebp-14]
       inc       ecx
       mov       [ebp-14],ecx
       jmp       short M00_L03
M00_L02:
       lea       ecx,[ebp-1C]
       mov       edx,7D25D3C
       call      dword ptr ds:[838BDE0]
M00_L03:
       push      7D283EC
       lea       ecx,[ebp-1C]
       mov       edx,esi
       call      dword ptr ds:[0AD954F8]; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       mov       ecx,[ebp-14]
       mov       edx,[ebp-8]
       cmp       ecx,edx
       ja        near ptr M00_L08
       mov       eax,[ebp-0C]
       lea       eax,[eax+ecx*2]
       sub       edx,ecx
       mov       ecx,eax
       cmp       edx,1
       jb        short M00_L04
       mov       edx,7D25D3C
       add       edx,8
       push      2
       call      dword ptr ds:[49A34E0]; System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
       mov       ecx,[ebp-14]
       inc       ecx
       mov       [ebp-14],ecx
       jmp       short M00_L05
M00_L04:
       lea       ecx,[ebp-1C]
       mov       edx,7D25D3C
       call      dword ptr ds:[838BDE0]
M00_L05:
       push      7D283FC
       lea       ecx,[ebp-1C]
       mov       edx,esi
       call      dword ptr ds:[0AD954F8]; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       mov       ecx,[ebp-14]
       mov       edx,[ebp-8]
       cmp       ecx,edx
       ja        short M00_L08
       mov       eax,[ebp-0C]
       lea       eax,[eax+ecx*2]
       sub       edx,ecx
       mov       ecx,eax
       cmp       edx,1
       jb        short M00_L06
       mov       edx,7D25D3C
       add       edx,8
       push      2
       call      dword ptr ds:[49A34E0]; System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
       mov       ecx,[ebp-14]
       inc       ecx
       mov       [ebp-14],ecx
       jmp       short M00_L07
M00_L06:
       lea       ecx,[ebp-1C]
       mov       edx,7D25D3C
       call      dword ptr ds:[838BDE0]
M00_L07:
       push      7D22BD4
       lea       ecx,[ebp-1C]
       mov       edx,esi
       call      dword ptr ds:[0AD954F8]; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       lea       ecx,[ebp-1C]
       call      dword ptr ds:[838BC30]; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.ToStringAndClear()
       lea       esp,[ebp-4]
       pop       esi
       pop       ebp
       ret
M00_L08:
       call      dword ptr ds:[8319270]
       int       3
; Total bytes of code 407
; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler..ctor(Int32, Int32)
       push      ebp
       mov       ebp,esp
       push      esi
       mov       esi,ecx
       xor       ecx,ecx
       mov       [esi],ecx
       mov       ecx,ds:[6BA1F00]
       imul      eax,[ebp+8],0B
       add       edx,eax
       mov       eax,100
       cmp       edx,100
       cmovle    edx,eax
       cmp       [ecx],ecx
       call      dword ptr ds:[0A32F8CC]; System.Buffers.TlsOverPerCoreLockedStacksArrayPool`1[[System.Char, System.Private.CoreLib]].Rent(Int32)
       lea       edx,[esi+4]
       call      CORINFO_HELP_CHECKED_ASSIGN_REF_EAX
       test      eax,eax
       je        short M01_L01
       lea       edx,[eax+8]
       mov       eax,[eax+4]
M01_L00:
       lea       ecx,[esi+10]
       mov       [ecx],edx
       mov       [ecx+4],eax
       xor       edx,edx
       mov       [esi+8],edx
       mov       byte ptr [esi+0C],0
       pop       esi
       pop       ebp
       ret       4
M01_L01:
       xor       edx,edx
       xor       eax,eax
       jmp       short M01_L00
; Total bytes of code 90
; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       sub       esp,8
       mov       esi,ecx
       mov       edi,edx
       cmp       byte ptr [esi+0C],0
       je        short M02_L01
       push      0
       mov       ecx,esi
       mov       edx,edi
       call      dword ptr ds:[0AD95540]
       lea       esp,[ebp-8]
       pop       esi
       pop       edi
       pop       ebp
       ret
M02_L00:
       mov       ecx,esi
       call      dword ptr ds:[838BE28]
M02_L01:
       lea       ecx,[esi+10]
       mov       edx,[esi+8]
       mov       eax,[ecx+4]
       cmp       edx,eax
       ja        short M02_L02
       mov       ecx,[ecx]
       lea       ecx,[ecx+edx*2]
       sub       eax,edx
       mov       [ebp-10],edi
       push      eax
       push      ecx
       lea       ecx,[ebp-0C]
       push      ecx
       mov       ecx,7D2840C
       mov       edx,[ebp-10]
       call      dword ptr ds:[0AD95570]; System.Enum.TryFormatPrimitiveDefault[[System.Int32, System.Private.CoreLib],[System.UInt32, System.Private.CoreLib]](System.RuntimeType, Int32, System.Span`1<Char>, Int32 ByRef)
       test      eax,eax
       je        short M02_L00
       mov       eax,[ebp-0C]
       add       [esi+8],eax
       lea       esp,[ebp-8]
       pop       esi
       pop       edi
       pop       ebp
       ret
M02_L02:
       call      dword ptr ds:[8319270]
       int       3
; Total bytes of code 112
; System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       vzeroupper
       mov       eax,[ebp+8]
       mov       esi,ecx
       sub       esi,edx
       cmp       esi,eax
       jb        near ptr M03_L10
       mov       esi,edx
       sub       esi,ecx
       cmp       esi,eax
       jb        near ptr M03_L10
       lea       esi,[edx+eax]
       lea       edi,[ecx+eax]
       cmp       eax,10
       jbe       short M03_L05
       cmp       eax,40
       ja        short M03_L03
M03_L00:
       vmovups   xmm0,[edx]
       vmovups   [ecx],xmm0
       cmp       eax,20
       jbe       short M03_L01
       vmovups   xmm0,[edx+10]
       vmovups   [ecx+10],xmm0
       cmp       eax,30
       ja        near ptr M03_L09
M03_L01:
       vmovups   xmm0,[esi-10]
       vmovups   [edi-10],xmm0
M03_L02:
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret       4
M03_L03:
       cmp       eax,800
       ja        near ptr M03_L11
       mov       ebx,eax
       shr       ebx,6
M03_L04:
       vmovdqu   ymm0,ymmword ptr [edx]
       vmovdqu   ymmword ptr [ecx],ymm0
       vmovdqu   ymm0,ymmword ptr [edx+20]
       vmovdqu   ymmword ptr [ecx+20],ymm0
       add       ecx,40
       add       edx,40
       dec       ebx
       jne       short M03_L04
       and       eax,3F
       cmp       eax,10
       ja        short M03_L00
       jmp       short M03_L01
M03_L05:
       test      al,18
       jne       short M03_L06
       test      al,4
       jne       short M03_L08
       test      eax,eax
       je        short M03_L02
       movzx     edx,byte ptr [edx]
       mov       [ecx],dl
       test      al,2
       je        short M03_L02
       movsx     eax,word ptr [esi-2]
       mov       [edi-2],ax
       jmp       short M03_L02
M03_L06:
       mov       eax,[edx]
       mov       [ecx],eax
       mov       edx,[edx+4]
       mov       [ecx+4],edx
       mov       ecx,[esi-8]
       mov       [edi-8],ecx
M03_L07:
       mov       eax,[esi-4]
       mov       [edi-4],eax
       jmp       short M03_L02
M03_L08:
       mov       eax,[edx]
       mov       [ecx],eax
       jmp       short M03_L07
M03_L09:
       vmovups   xmm0,[edx+20]
       vmovups   [ecx+20],xmm0
       jmp       near ptr M03_L01
M03_L10:
       cmp       ecx,edx
       je        near ptr M03_L02
M03_L11:
       push      eax
       call      dword ptr ds:[49A34F8]
       jmp       near ptr M03_L02
; Total bytes of code 250
; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       sub       esp,10
       mov       esi,ecx
       mov       edi,edx
       mov       ebx,[ebp+8]
       cmp       byte ptr [esi+0C],0
       je        short M04_L01
       push      ebx
       mov       ecx,esi
       mov       edx,edi
       call      dword ptr ds:[0AD95540]
       lea       esp,[ebp-0C]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret       4
M04_L00:
       mov       ecx,esi
       call      dword ptr ds:[838BE28]
       mov       edi,[ebp-10]
M04_L01:
       lea       ecx,[esi+10]
       mov       edx,[esi+8]
       mov       eax,[ecx+4]
       cmp       edx,eax
       ja        short M04_L06
       mov       ecx,[ecx]
       lea       ecx,[ecx+edx*2]
       sub       eax,edx
       test      ebx,ebx
       je        short M04_L03
       mov       [ebp-10],edi
       lea       edx,[ebx+8]
       mov       edi,[ebx+4]
       mov       [ebp-1C],edx
M04_L02:
       mov       edx,[ebp-10]
       mov       [ebp-18],edx
       mov       edx,[ebp-1C]
       test      edi,edi
       jne       short M04_L04
       push      eax
       push      ecx
       lea       ecx,[ebp-14]
       push      ecx
       mov       ecx,7D2840C
       mov       edx,[ebp-18]
       call      dword ptr ds:[0AD95570]; System.Enum.TryFormatPrimitiveDefault[[System.Int32, System.Private.CoreLib],[System.UInt32, System.Private.CoreLib]](System.RuntimeType, Int32, System.Span`1<Char>, Int32 ByRef)
       jmp       short M04_L05
M04_L03:
       xor       edx,edx
       mov       [ebp-1C],edx
       xor       edx,edx
       mov       [ebp-10],edi
       mov       edi,edx
       jmp       short M04_L02
M04_L04:
       push      eax
       push      ecx
       lea       ecx,[ebp-14]
       push      ecx
       push      edi
       push      edx
       mov       ecx,7D2840C
       mov       edx,[ebp-18]
       call      dword ptr ds:[0AD9D6D8]; System.Enum.TryFormatPrimitiveNonDefault[[System.Int32, System.Private.CoreLib],[System.UInt32, System.Private.CoreLib]](System.RuntimeType, Int32, System.Span`1<Char>, Int32 ByRef, System.ReadOnlySpan`1<Char>)
M04_L05:
       test      eax,eax
       je        short M04_L00
       mov       eax,[ebp-14]
       add       [esi+8],eax
       lea       esp,[ebp-0C]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret       4
M04_L06:
       call      dword ptr ds:[8319270]
       int       3
; Total bytes of code 188
; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.ToStringAndClear()
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       vzeroupper
       mov       esi,ecx
       lea       eax,[esi+10]
       mov       edx,[esi+8]
       mov       ecx,[eax+4]
       cmp       edx,ecx
       ja        short M05_L01
       mov       eax,[eax]
       push      edx
       push      eax
       call      System.String..ctor(System.ReadOnlySpan`1<Char>)
       mov       edi,eax
       mov       edx,[esi+4]
       xor       ecx,ecx
       vxorps    xmm0,xmm0,xmm0
       vmovq     qword ptr [esi],xmm0
       vmovq     qword ptr [esi+8],xmm0
       vmovq     qword ptr [esi+10],xmm0
       test      edx,edx
       je        short M05_L00
       push      0
       mov       ecx,ds:[6BA1F00]
       cmp       [ecx],ecx
       call      dword ptr ds:[0A32F8D0]; System.Buffers.TlsOverPerCoreLockedStacksArrayPool`1[[System.Char, System.Private.CoreLib]].Return(Char[], Boolean)
M05_L00:
       mov       eax,edi
       pop       esi
       pop       edi
       pop       ebp
       ret
M05_L01:
       call      dword ptr ds:[8319270]
       int       3
; Total bytes of code 90

System.Tests.Perf_Enum.InterpolateIntoSpan_Flags(value: 32)


Description of detection logic

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 142.40812511961875 > 135.61182355156134.
IsChangePoint: Marked as a change because one of 2/9/2023 4:10:34 PM, 2/23/2023 8:54:44 PM, 3/14/2023 8:42:09 PM, 3/22/2023 7:51:01 PM, 3/28/2023 7:07:52 AM falls between 3/19/2023 2:30:51 PM and 3/28/2023 7:07:52 AM.
IsRegressionStdDev: Marked as regression because -33.31436980095097 (T) = (0 -142.43755067221898) / Math.Sqrt((3.6557536615152277 / (31)) + (2.2327619883642082 / (29))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (31) + (29) - 2, .025) and -0.11515115514096591 = (127.72936656664584 - 142.43755067221898) / 127.72936656664584 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 BDN Disasm

```assembly
; System.Tests.Perf_Enum.InterpolateIntoSpan_Flags(Colors)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       mov       ecx,ds:[6B844E0]
       test      ecx,ecx
       je        short M00_L01
       lea       esi,[ecx+8]
       mov       edi,[ecx+4]
M00_L00:
       push      edi
       push      esi
       mov       ecx,edx
       call      dword ptr ds:[0AFBBA08]; System.Tests.Perf_Enum.InterpolateIntoSpan[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](System.Span`1<Char>, Colors)
       pop       esi
       pop       edi
       pop       ebp
       ret
M00_L01:
       xor       esi,esi
       xor       edi,edi
       jmp       short M00_L00
; Total bytes of code 41
; System.Tests.Perf_Enum.InterpolateIntoSpan[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](System.Span`1<Char>, Colors)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       sub       esp,28
       vxorps    xmm4,xmm4,xmm4
       vmovdqu   xmmword ptr [ebp-34],xmm4
       xor       eax,eax
       mov       [ebp-24],eax
       mov       ebx,ecx
       mov       edx,[ebp+0C]
       lea       edi,[ebp-28]
       lea       esi,[ebp+8]
       movsd
       movsd
       xor       ecx,ecx
       cmp       edx,4
       setge     cl
       mov       edx,ecx
       mov       [ebp-2C],dl
       lea       edi,[ebp-20]
       lea       esi,[ebp-34]
       mov       ecx,5
       rep movsd
       test      edx,edx
       je        near ptr M01_L08
       lea       ecx,[ebp-20]
       mov       edx,ebx
       call      dword ptr ds:[0AFBBBA0]; System.MemoryExtensions+TryWriteInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors)
       test      eax,eax
       je        near ptr M01_L08
       mov       ecx,[ebp-14]
       mov       edx,[ebp-10]
       mov       eax,[ebp-1C]
       cmp       eax,edx
       jae       short M01_L00
       mov       word ptr [ecx+eax*2],20
       inc       eax
       mov       [ebp-1C],eax
       jmp       short M01_L01
M01_L00:
       mov       byte ptr [ebp-18],0
       jmp       near ptr M01_L08
M01_L01:
       push      7E97B1C
       lea       ecx,[ebp-20]
       mov       edx,ebx
       call      dword ptr ds:[0AFBBBD0]; System.MemoryExtensions+TryWriteInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       test      eax,eax
       je        near ptr M01_L08
       mov       ecx,[ebp-14]
       mov       edx,[ebp-10]
       mov       eax,[ebp-1C]
       cmp       eax,edx
       jae       short M01_L02
       mov       word ptr [ecx+eax*2],20
       inc       eax
       mov       [ebp-1C],eax
       jmp       short M01_L03
M01_L02:
       mov       byte ptr [ebp-18],0
       jmp       near ptr M01_L08
M01_L03:
       push      7E98284
       lea       ecx,[ebp-20]
       mov       edx,ebx
       call      dword ptr ds:[0AFBBBD0]; System.MemoryExtensions+TryWriteInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       test      eax,eax
       je        short M01_L08
       mov       ecx,[ebp-14]
       mov       edx,[ebp-10]
       mov       eax,[ebp-1C]
       cmp       eax,edx
       jae       short M01_L04
       mov       word ptr [ecx+eax*2],20
       inc       eax
       mov       [ebp-1C],eax
       jmp       short M01_L05
M01_L04:
       mov       byte ptr [ebp-18],0
       jmp       short M01_L08
M01_L05:
       push      7E98294
       lea       ecx,[ebp-20]
       mov       edx,ebx
       call      dword ptr ds:[0AFBBBD0]; System.MemoryExtensions+TryWriteInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       test      eax,eax
       je        short M01_L08
       mov       ecx,[ebp-14]
       mov       edx,[ebp-10]
       mov       eax,[ebp-1C]
       cmp       eax,edx
       jae       short M01_L06
       mov       word ptr [ecx+eax*2],20
       inc       eax
       mov       [ebp-1C],eax
       jmp       short M01_L07
M01_L06:
       mov       byte ptr [ebp-18],0
       jmp       short M01_L08
M01_L07:
       push      7E92BD4
       lea       ecx,[ebp-20]
       mov       edx,ebx
       call      dword ptr ds:[0AFBBBD0]; System.MemoryExtensions+TryWriteInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       test      eax,eax
       je        short M01_L08
       xor       eax,eax
       cmp       byte ptr [ebp-18],0
       setne     al
       lea       esp,[ebp-0C]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret       8
M01_L08:
       xor       eax,eax
       lea       esp,[ebp-0C]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret       8
; Total bytes of code 334

Compare BDN Disasm

; System.Tests.Perf_Enum.InterpolateIntoSpan_Flags(Colors)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       mov       ecx,ds:[70D44E0]
       test      ecx,ecx
       je        short M00_L01
       lea       esi,[ecx+8]
       mov       edi,[ecx+4]
M00_L00:
       push      edi
       push      esi
       mov       ecx,edx
       call      dword ptr ds:[0B455678]; System.Tests.Perf_Enum.InterpolateIntoSpan[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](System.Span`1<Char>, Colors)
       pop       esi
       pop       edi
       pop       ebp
       ret
M00_L01:
       xor       esi,esi
       xor       edi,edi
       jmp       short M00_L00
; Total bytes of code 41
; System.Tests.Perf_Enum.InterpolateIntoSpan[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](System.Span`1<Char>, Colors)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       sub       esp,28
       vxorps    xmm4,xmm4,xmm4
       vmovdqu   xmmword ptr [ebp-34],xmm4
       xor       eax,eax
       mov       [ebp-24],eax
       mov       ebx,ecx
       mov       edx,[ebp+0C]
       lea       edi,[ebp-28]
       lea       esi,[ebp+8]
       movsd
       movsd
       xor       ecx,ecx
       cmp       edx,4
       setge     cl
       mov       edx,ecx
       mov       [ebp-2C],dl
       lea       edi,[ebp-20]
       lea       esi,[ebp-34]
       mov       ecx,5
       rep movsd
       test      edx,edx
       je        near ptr M01_L08
       lea       ecx,[ebp-20]
       mov       edx,ebx
       call      dword ptr ds:[0B4557F8]; System.MemoryExtensions+TryWriteInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors)
       test      eax,eax
       je        near ptr M01_L08
       mov       ecx,[ebp-1C]
       cmp       ecx,[ebp-10]
       ja        near ptr M01_L09
       mov       edx,[ebp-14]
       lea       edx,[edx+ecx*2]
       mov       eax,[ebp-10]
       sub       eax,ecx
       mov       ecx,edx
       cmp       eax,1
       jb        short M01_L00
       mov       esi,8
       add       esi,8315D3C
       mov       edx,esi
       push      2
       call      dword ptr ds:[88F34E0]; System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
       mov       ecx,[ebp-1C]
       inc       ecx
       mov       [ebp-1C],ecx
       jmp       short M01_L01
M01_L00:
       mov       byte ptr [ebp-18],0
       jmp       near ptr M01_L08
M01_L01:
       push      8317C98
       lea       ecx,[ebp-20]
       mov       edx,ebx
       call      dword ptr ds:[0B455828]; System.MemoryExtensions+TryWriteInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       test      eax,eax
       je        near ptr M01_L08
       mov       ecx,[ebp-1C]
       cmp       ecx,[ebp-10]
       ja        near ptr M01_L09
       mov       edx,[ebp-14]
       lea       edx,[edx+ecx*2]
       mov       eax,[ebp-10]
       sub       eax,ecx
       mov       ecx,edx
       cmp       eax,1
       jb        short M01_L02
       mov       edx,esi
       push      2
       call      dword ptr ds:[88F34E0]; System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
       mov       ecx,[ebp-1C]
       inc       ecx
       mov       [ebp-1C],ecx
       jmp       short M01_L03
M01_L02:
       mov       byte ptr [ebp-18],0
       jmp       near ptr M01_L08
M01_L03:
       push      8318400
       lea       ecx,[ebp-20]
       mov       edx,ebx
       call      dword ptr ds:[0B455828]; System.MemoryExtensions+TryWriteInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       test      eax,eax
       je        near ptr M01_L08
       mov       ecx,[ebp-1C]
       cmp       ecx,[ebp-10]
       ja        near ptr M01_L09
       mov       edx,[ebp-14]
       lea       edx,[edx+ecx*2]
       mov       eax,[ebp-10]
       sub       eax,ecx
       mov       ecx,edx
       cmp       eax,1
       jb        short M01_L04
       mov       edx,esi
       push      2
       call      dword ptr ds:[88F34E0]; System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
       mov       ecx,[ebp-1C]
       inc       ecx
       mov       [ebp-1C],ecx
       jmp       short M01_L05
M01_L04:
       mov       byte ptr [ebp-18],0
       jmp       short M01_L08
M01_L05:
       push      8318410
       lea       ecx,[ebp-20]
       mov       edx,ebx
       call      dword ptr ds:[0B455828]; System.MemoryExtensions+TryWriteInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       test      eax,eax
       je        short M01_L08
       mov       ecx,[ebp-1C]
       cmp       ecx,[ebp-10]
       ja        short M01_L09
       mov       edx,[ebp-14]
       lea       edx,[edx+ecx*2]
       mov       eax,[ebp-10]
       sub       eax,ecx
       mov       ecx,edx
       cmp       eax,1
       jb        short M01_L06
       mov       edx,esi
       push      2
       call      dword ptr ds:[88F34E0]; System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
       mov       ecx,[ebp-1C]
       inc       ecx
       mov       [ebp-1C],ecx
       jmp       short M01_L07
M01_L06:
       mov       byte ptr [ebp-18],0
       jmp       short M01_L08
M01_L07:
       push      8312BD4
       lea       ecx,[ebp-20]
       mov       edx,ebx
       call      dword ptr ds:[0B455828]; System.MemoryExtensions+TryWriteInterpolatedStringHandler.AppendFormatted[[System.Tests.Perf_Enum+Colors, MicroBenchmarks]](Colors, System.String)
       test      eax,eax
       je        short M01_L08
       xor       eax,eax
       cmp       byte ptr [ebp-18],0
       setne     al
       lea       esp,[ebp-0C]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret       8
M01_L08:
       xor       eax,eax
       lea       esp,[ebp-0C]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret       8
M01_L09:
       call      dword ptr ds:[89D9270]
       int       3
; Total bytes of code 448

Docs

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

@performanceautofiler
Copy link
Author

performanceautofiler bot commented Mar 28, 2023

Run Information

Name Value
Architecture x86
OS Windows 10.0.18362
Queue TigerWindows
Baseline 6bcd4aa9cf626d6ee490a7bd35908cefd1603103
Compare 1e241c0044042409b8567c5ab9a72b7525ad128a
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in System.Collections.IterateForEachNonGeneric<Int32>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
ArrayList - Duration of single invocation 2.82 μs 3.41 μs 1.21 0.05 False
Stack - Duration of single invocation 3.39 μs 3.85 μs 1.14 0.03 False

graph
graph
Test Report

Repro

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

Payloads

Baseline
Compare

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

Payloads

Baseline
Compare

Histogram

System.Collections.IterateForEachNonGeneric<Int32>.ArrayList(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 3.4120894967732576 > 2.9469522053264017.
IsChangePoint: Marked as a change because one of 1/30/2023 9:42:46 PM, 2/13/2023 6:54:14 PM, 2/24/2023 9:01:57 AM, 3/6/2023 11:14:52 AM, 3/14/2023 8:42:09 PM, 3/22/2023 7:51:01 PM, 3/28/2023 7:07:52 AM falls between 3/19/2023 2:30:51 PM and 3/28/2023 7:07:52 AM.
IsRegressionStdDev: Marked as regression because -9.086913254910327 (T) = (0 -3417.548869357954) / Math.Sqrt((78368.35317097224 / (31)) + (759.8413276177824 / (28))) is less than -2.0024654592901125 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (31) + (28) - 2, .025) and -0.15527234245648666 = (2958.219238669843 - 3417.548869357954) / 2958.219238669843 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```#### System.Collections.IterateForEachNonGeneric&lt;Int32&gt;.Stack(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 3.853724981467754 > 3.560301776075608.
IsChangePoint: Marked as a change because one of 2/16/2023 9:36:08 AM, 2/24/2023 9:01:57 AM, 3/6/2023 11:14:52 AM, 3/14/2023 8:42:09 PM, 3/22/2023 7:51:01 PM, 3/28/2023 7:07:52 AM falls between 3/19/2023 2:30:51 PM and 3/28/2023 7:07:52 AM.
IsRegressionStdDev: Marked as regression because -9.871425135076336 (T) = (0 -3860.9228595593186) / Math.Sqrt((39923.63384309505 / (31)) + (127.44594218307918 / (29))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (31) + (29) - 2, .025) and -0.10121240456026391 = (3506.0655361043287 - 3860.9228595593186) / 3506.0655361043287 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

Name Value
Architecture x86
OS Windows 10.0.18362
Queue TigerWindows
Baseline 6bcd4aa9cf626d6ee490a7bd35908cefd1603103
Compare 1e241c0044042409b8567c5ab9a72b7525ad128a
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in System.Linq.Tests.Perf_Enumerable

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
Sum - Duration of single invocation 430.21 ns 494.80 ns 1.15 0.02 False Trace Trace
ElementAt - Duration of single invocation 157.40 ns 188.63 ns 1.20 0.11 False Trace Trace

graph
graph
Test Report

Repro

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

Payloads

Baseline
Compare

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

Payloads

Baseline
Compare

Histogram

System.Linq.Tests.Perf_Enumerable.Sum(input: IEnumerable)


Description of detection logic

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 494.80233255811487 > 452.09479519591946.
IsChangePoint: Marked as a change because one of 2/13/2023 6:54:14 PM, 3/6/2023 11:14:52 AM, 3/22/2023 7:51:01 PM, 3/28/2023 7:07:52 AM falls between 3/19/2023 2:30:51 PM and 3/28/2023 7:07:52 AM.
IsRegressionStdDev: Marked as regression because -346.66391828391096 (T) = (0 -494.0302644257426) / Math.Sqrt((0.43922083515177734 / (31)) + (0.5594181751652431 / (29))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (31) + (29) - 2, .025) and -0.14725480586015272 = (430.61947694814324 - 494.0302644257426) / 430.61947694814324 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 BDN Disasm

```assembly
; System.Linq.Tests.Perf_Enumerable.Sum(System.Linq.Tests.LinqTestData)
       mov       ecx,[edx+4]
       call      dword ptr ds:[0AFDDA08]; System.Linq.Enumerable.Sum[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>)
       ret
; Total bytes of code 10
; System.Linq.Enumerable.Sum[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>)
       push      ebp
       mov       ebp,esp
       push      esi
       sub       esp,24
       xor       eax,eax
       mov       [ebp-20],eax
       mov       [ebp-10],eax
       test      ecx,ecx
       je        near ptr M01_L09
       cmp       dword ptr [ecx],7E4641C
       jne       short M01_L00
       lea       eax,[ecx+8]
       mov       edx,[ecx+4]
       jmp       short M01_L06
M01_L00:
       mov       [ebp-24],ecx
       cmp       dword ptr [ecx],8524904
       jne       short M01_L01
       lea       ecx,[ebp-20]
       mov       edx,[ebp-24]
       call      dword ptr ds:[0AFDF678]
       mov       eax,[ebp-20]
       mov       edx,[ebp-1C]
       jmp       short M01_L06
M01_L01:
       xor       esi,esi
       mov       ecx,[ebp-24]
       call      dword ptr ds:[2BB02A8]
       mov       [ebp-28],eax
M01_L02:
       mov       ecx,eax
       call      dword ptr ds:[2BB02AC]
       test      eax,eax
       jne       short M01_L04
       jmp       short M01_L05
M01_L03:
       call      CORINFO_HELP_OVERFLOW
M01_L04:
       mov       ecx,[ebp-28]
       call      dword ptr ds:[2BB02B0]
       add       esi,eax
       jo        short M01_L03
       mov       eax,[ebp-28]
       jmp       short M01_L02
M01_L05:
       mov       ecx,[ebp-28]
       call      dword ptr ds:[2BB02B4]
       jmp       short M01_L08
M01_L06:
       push      edx
       push      eax
       call      dword ptr ds:[0AFDF618]
       lea       esp,[ebp-4]
       pop       esi
       pop       ebp
       ret
       cmp       dword ptr [ebp-28],0
       je        short M01_L07
       mov       ecx,[ebp-28]
       call      dword ptr ds:[2BB02B4]
M01_L07:
       pop       eax
       jmp       eax
M01_L08:
       mov       eax,esi
       lea       esp,[ebp-4]
       pop       esi
       pop       ebp
       ret
M01_L09:
       mov       ecx,10
       call      dword ptr ds:[0A5C5E10]
       int       3
; Total bytes of code 184

Compare BDN Disasm

; System.Linq.Tests.Perf_Enumerable.Sum(System.Linq.Tests.LinqTestData)
       mov       ecx,[edx+4]
       call      dword ptr ds:[0BBC9678]; System.Linq.Enumerable.Sum[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>)
       ret
; Total bytes of code 10
; System.Linq.Enumerable.Sum[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>)
       push      ebp
       mov       ebp,esp
       push      esi
       sub       esp,24
       xor       eax,eax
       mov       [ebp-20],eax
       mov       [ebp-10],eax
       test      ecx,ecx
       je        near ptr M01_L09
       cmp       dword ptr [ecx],56A64D4
       jne       short M01_L00
       lea       eax,[ecx+8]
       mov       edx,[ecx+4]
       jmp       short M01_L06
M01_L00:
       mov       [ebp-24],ecx
       cmp       dword ptr [ecx],90A4964
       jne       short M01_L01
       lea       ecx,[ebp-20]
       mov       edx,[ebp-24]
       call      dword ptr ds:[0BBCB630]
       mov       eax,[ebp-20]
       mov       edx,[ebp-1C]
       jmp       short M01_L06
M01_L01:
       xor       esi,esi
       mov       ecx,[ebp-24]
       call      dword ptr ds:[35A02A8]
       mov       [ebp-28],eax
M01_L02:
       mov       ecx,eax
       call      dword ptr ds:[35A02AC]
       test      eax,eax
       jne       short M01_L04
       jmp       short M01_L05
M01_L03:
       call      CORINFO_HELP_OVERFLOW
M01_L04:
       mov       ecx,[ebp-28]
       call      dword ptr ds:[35A02B0]
       add       esi,eax
       jo        short M01_L03
       mov       eax,[ebp-28]
       jmp       short M01_L02
M01_L05:
       mov       ecx,[ebp-28]
       call      dword ptr ds:[35A02B4]
       jmp       short M01_L08
M01_L06:
       push      edx
       push      eax
       call      dword ptr ds:[0BBCB5D0]
       lea       esp,[ebp-4]
       pop       esi
       pop       ebp
       ret
       cmp       dword ptr [ebp-28],0
       je        short M01_L07
       mov       ecx,[ebp-28]
       call      dword ptr ds:[35A02B4]
M01_L07:
       pop       eax
       jmp       eax
M01_L08:
       mov       eax,esi
       lea       esp,[ebp-4]
       pop       esi
       pop       ebp
       ret
M01_L09:
       mov       ecx,10
       call      dword ptr ds:[0B179798]
       int       3
; Total bytes of code 184

System.Linq.Tests.Perf_Enumerable.ElementAt(input: IEnumerable)


Description of detection logic

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 188.62542117551658 > 166.13445809148865.
IsChangePoint: Marked as a change because one of 2/16/2023 6:27:39 AM, 2/20/2023 10:31:48 AM, 2/23/2023 8:54:44 PM, 3/6/2023 11:14:52 AM, 3/15/2023 8:07:42 AM, 3/25/2023 12:18:49 AM, 3/28/2023 7:07:52 AM falls between 3/19/2023 2:30:51 PM and 3/28/2023 7:07:52 AM.
IsRegressionStdDev: Marked as regression because -15.5658707057936 (T) = (0 -186.68563349649824) / Math.Sqrt((1.003637176014782 / (42)) + (58.5110659612045 / (18))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (42) + (18) - 2, .025) and -0.17769180264145795 = (158.51824142596473 - 186.68563349649824) / 158.51824142596473 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 BDN Disasm

```assembly
; System.Linq.Tests.Perf_Enumerable.ElementAt(System.Linq.Tests.LinqTestData)
       mov       ecx,[edx+4]
       mov       edx,32
       call      dword ptr ds:[0AFCDA08]; System.Linq.Enumerable.ElementAt[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>, Int32)
       ret
; Total bytes of code 15
; System.Linq.Enumerable.ElementAt[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>, Int32)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       sub       esp,8
       mov       esi,ecx
       mov       edi,edx
       test      esi,esi
       je        short M01_L03
       mov       edx,esi
       mov       ecx,offset MT_System.Linq.IPartition`1[[System.Int32, System.Private.CoreLib]]
       call      dword ptr ds:[7E6B810]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(Void*, System.Object)
       test      eax,eax
       je        short M01_L00
       lea       ecx,[ebp-0C]
       push      ecx
       mov       ecx,eax
       mov       edx,edi
       call      dword ptr ds:[2A202F8]
       cmp       byte ptr [ebp-0C],0
       je        short M01_L02
       lea       esp,[ebp-8]
       pop       esi
       pop       edi
       pop       ebp
       ret
M01_L00:
       mov       edx,esi
       mov       ecx,offset MT_System.Collections.Generic.IList`1[[System.Int32, System.Private.CoreLib]]
       call      dword ptr ds:[7E6B810]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(Void*, System.Object)
       test      eax,eax
       je        short M01_L01
       mov       ecx,eax
       mov       edx,edi
       call      dword ptr ds:[2A202F4]
       lea       esp,[ebp-8]
       pop       esi
       pop       edi
       pop       ebp
       ret
M01_L01:
       lea       ecx,[ebp-10]
       push      ecx
       mov       ecx,esi
       mov       edx,edi
       call      dword ptr ds:[0AFCDA20]; System.Linq.Enumerable.TryGetElement[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>, Int32, Int32 ByRef)
       test      eax,eax
       je        short M01_L02
       mov       eax,[ebp-10]
       lea       esp,[ebp-8]
       pop       esi
       pop       edi
       pop       ebp
       ret
M01_L02:
       mov       ecx,6
       call      dword ptr ds:[0A5B5E28]
       int       3
M01_L03:
       mov       ecx,10
       call      dword ptr ds:[0A5B5E10]
       int       3
; Total bytes of code 146

Compare BDN Disasm

; System.Linq.Tests.Perf_Enumerable.ElementAt(System.Linq.Tests.LinqTestData)
       mov       ecx,[edx+4]
       mov       edx,32
       call      dword ptr ds:[0B029678]; System.Linq.Enumerable.ElementAt[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>, Int32)
       ret
; Total bytes of code 15
; System.Linq.Enumerable.ElementAt[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>, Int32)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       sub       esp,8
       mov       esi,ecx
       mov       edi,edx
       test      esi,esi
       je        short M01_L03
       mov       edx,esi
       mov       ecx,offset MT_System.Linq.IPartition`1[[System.Int32, System.Private.CoreLib]]
       call      dword ptr ds:[7E4B810]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(Void*, System.Object)
       test      eax,eax
       je        short M01_L00
       lea       ecx,[ebp-0C]
       push      ecx
       mov       ecx,eax
       mov       edx,edi
       call      dword ptr ds:[31202F8]
       cmp       byte ptr [ebp-0C],0
       je        short M01_L02
       lea       esp,[ebp-8]
       pop       esi
       pop       edi
       pop       ebp
       ret
M01_L00:
       mov       edx,esi
       mov       ecx,offset MT_System.Collections.Generic.IList`1[[System.Int32, System.Private.CoreLib]]
       call      dword ptr ds:[7E4B810]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(Void*, System.Object)
       test      eax,eax
       je        short M01_L01
       mov       ecx,eax
       mov       edx,edi
       call      dword ptr ds:[31202F4]
       lea       esp,[ebp-8]
       pop       esi
       pop       edi
       pop       ebp
       ret
M01_L01:
       lea       ecx,[ebp-10]
       push      ecx
       mov       ecx,esi
       mov       edx,edi
       call      dword ptr ds:[0B029690]; System.Linq.Enumerable.TryGetElement[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1<Int32>, Int32, Int32 ByRef)
       test      eax,eax
       je        short M01_L02
       mov       eax,[ebp-10]
       lea       esp,[ebp-8]
       pop       esi
       pop       edi
       pop       ebp
       ret
M01_L02:
       mov       ecx,6
       call      dword ptr ds:[0A5D97B0]
       int       3
M01_L03:
       mov       ecx,10
       call      dword ptr ds:[0A5D9798]
       int       3
; Total bytes of code 146

Docs

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

Run Information

Name Value
Architecture x86
OS Windows 10.0.18362
Queue TigerWindows
Baseline 6bcd4aa9cf626d6ee490a7bd35908cefd1603103
Compare 1e241c0044042409b8567c5ab9a72b7525ad128a
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in System.MathBenchmarks.Single

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
Max - Duration of single invocation 7.27 μs 7.83 μs 1.08 0.04 False Trace Trace

graph
Test Report

Repro

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

Payloads

Baseline
Compare

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.MathBenchmarks.Single*'

Payloads

Baseline
Compare

Histogram

System.MathBenchmarks.Single.Max


Description of detection logic

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 7.831048245614034 > 7.6178599259688085.
IsChangePoint: Marked as a change because one of 1/18/2023 6:24:13 PM, 1/30/2023 9:42:46 PM, 2/9/2023 4:27:10 AM, 2/16/2023 9:36:08 AM, 2/20/2023 10:31:48 AM, 3/6/2023 11:14:52 AM, 3/14/2023 8:42:09 PM, 3/22/2023 7:51:01 PM, 3/28/2023 7:07:52 AM falls between 3/19/2023 2:30:51 PM and 3/28/2023 7:07:52 AM.
IsRegressionStdDev: Marked as regression because -11.016184200933735 (T) = (0 -7812.070350474692) / Math.Sqrt((167307.17201520732 / (31)) + (168.2718570518952 / (29))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (31) + (29) - 2, .025) and -0.11563726875994229 = (7002.338994248548 - 7812.070350474692) / 7002.338994248548 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 BDN Disasm

```assembly
; System.MathBenchmarks.Single.Max()
       call      dword ptr ds:[0AFCF7F8]; System.MathBenchmarks.Single.MaxTest()
       ret
; Total bytes of code 7
; System.MathBenchmarks.Single.MaxTest()
       push      ebp
       mov       ebp,esp
       push      esi
       sub       esp,1C
       vzeroupper
       vxorps    xmm4,xmm4,xmm4
       vmovdqu   xmmword ptr [ebp-20],xmm4
       xor       eax,eax
       mov       [ebp-10],eax
       mov       [ebp-0C],eax
       vxorps    xmm0,xmm0,xmm0
       vmovss    xmm1,dword ptr ds:[0B93EF20]
       xor       ecx,ecx
       vmovss    xmm2,dword ptr ds:[0B93EF24]
M01_L00:
       vaddss    xmm1,xmm1,xmm2
       vucomiss  xmm1,dword ptr ds:[0B93EF28]
       jp        short M01_L03
       jne       short M01_L03
       vmovss    xmm3,dword ptr ds:[0B93EF28]
       vmovd     edx,xmm3
       test      edx,edx
       jl        short M01_L04
M01_L01:
       vmovaps   xmm3,xmm1
M01_L02:
       vaddss    xmm0,xmm0,xmm3
       inc       ecx
       cmp       ecx,1388
       jl        short M01_L00
       vmovss    xmm3,dword ptr ds:[0B93EF2C]
       vmovss    dword ptr [ebp-8],xmm0
       vsubss    xmm1,xmm3,xmm0
       vandps    xmm1,xmm1,ds:[0B93EF30]
       vucomiss  xmm1,dword ptr ds:[0B93EF40]
       ja        short M01_L05
       lea       esp,[ebp-4]
       pop       esi
       pop       ebp
       ret
M01_L03:
       vmovss    xmm3,dword ptr ds:[0B93EF28]
       vucomiss  xmm3,xmm1
       jbe       short M01_L01
M01_L04:
       vmovss    xmm3,dword ptr ds:[0B93EF28]
       jmp       short M01_L02
M01_L05:
       push      2
       lea       ecx,[ebp-20]
       mov       edx,20
       call      dword ptr ds:[0AAC9BA0]
       mov       ecx,5E71
       mov       edx,0B0F1624
       call      CORINFO_HELP_STRCNS
       mov       edx,eax
       lea       ecx,[ebp-20]
       call      dword ptr ds:[0AAC9C90]
       vmovss    xmm0,dword ptr ds:[0B93EF2C]
       sub       esp,4
       vmovss    dword ptr [esp],xmm0
       mov       ecx,5F11
       mov       edx,0B0F1624
       call      CORINFO_HELP_STRCNS
       push      eax
       lea       ecx,[ebp-20]
       mov       edx,0A
       call      dword ptr ds:[0B9DBA08]
       mov       ecx,5E9B
       mov       edx,0B0F1624
       call      CORINFO_HELP_STRCNS
       mov       edx,eax
       lea       ecx,[ebp-20]
       call      dword ptr ds:[0AAC9C90]
       push      dword ptr [ebp-8]
       mov       ecx,5F11
       mov       edx,0B0F1624
       call      CORINFO_HELP_STRCNS
       push      eax
       lea       ecx,[ebp-20]
       mov       edx,0A
       call      dword ptr ds:[0B9DBA08]
       mov       ecx,offset MT_System.Exception
       call      CORINFO_HELP_NEWSFAST
       mov       esi,eax
       lea       ecx,[ebp-20]
       call      dword ptr ds:[0AAC9C30]
       mov       edx,eax
       mov       ecx,esi
       call      dword ptr ds:[3B75C18]
       mov       ecx,esi
       call      CORINFO_HELP_THROW
       int       3
; Total bytes of code 349

Compare BDN Disasm

; System.MathBenchmarks.Single.Max()
       call      dword ptr ds:[0B2255E8]; System.MathBenchmarks.Single.MaxTest()
       ret
; Total bytes of code 7
; System.MathBenchmarks.Single.MaxTest()
       push      ebp
       mov       ebp,esp
       push      esi
       push      ebx
       sub       esp,1C
       vzeroupper
       vxorps    xmm4,xmm4,xmm4
       vmovdqu   xmmword ptr [ebp-24],xmm4
       xor       eax,eax
       mov       [ebp-14],eax
       mov       [ebp-10],eax
       vxorps    xmm0,xmm0,xmm0
       vmovss    xmm1,dword ptr ds:[0BA8F300]
       xor       ecx,ecx
       vmovss    xmm2,dword ptr ds:[0BA8F304]
M01_L00:
       vaddss    xmm1,xmm1,xmm2
       vucomiss  xmm1,dword ptr ds:[0BA8F308]
       jp        short M01_L03
       jne       short M01_L03
       vmovss    xmm3,dword ptr ds:[0BA8F308]
       vmovd     edx,xmm3
       test      edx,edx
       jl        near ptr M01_L11
M01_L01:
       vmovaps   xmm3,xmm1
M01_L02:
       vaddss    xmm0,xmm0,xmm3
       inc       ecx
       cmp       ecx,1388
       jl        short M01_L00
       vmovss    xmm3,dword ptr ds:[0BA8F30C]
       vmovss    dword ptr [ebp-0C],xmm0
       vsubss    xmm1,xmm3,xmm0
       vandps    xmm1,xmm1,ds:[0BA8F310]
       vucomiss  xmm1,dword ptr ds:[0BA8F320]
       ja        near ptr M01_L12
       lea       esp,[ebp-8]
       pop       ebx
       pop       esi
       pop       ebp
       ret
M01_L03:
       vmovss    xmm3,dword ptr ds:[0BA8F308]
       vucomiss  xmm3,xmm1
       ja        near ptr M01_L11
       jmp       short M01_L01
M01_L04:
       lea       ecx,[ebp-24]
       mov       edx,89C8400
       call      dword ptr ds:[91ABDE0]
M01_L05:
       vmovss    xmm0,dword ptr ds:[0BA8F30C]
       sub       esp,4
       vmovss    dword ptr [esp],xmm0
       push      89C8430
       lea       ecx,[ebp-24]
       mov       edx,0A
       call      dword ptr ds:[0BB25678]
       mov       esi,[ebp-1C]
       cmp       esi,[ebp-10]
       jbe       short M01_L07
M01_L06:
       call      dword ptr ds:[9039270]
       int       3
M01_L07:
       mov       ecx,[ebp-14]
       lea       ecx,[ecx+esi*2]
       mov       edx,[ebp-10]
       sub       edx,esi
       xor       ebx,ebx
       cmp       edx,10
       jb        short M01_L08
       mov       edx,89C8444
       add       edx,8
       push      20
       call      dword ptr ds:[8F534E0]; System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
       mov       ebx,1
M01_L08:
       test      ebx,ebx
       je        short M01_L09
       mov       ecx,[ebp-1C]
       add       ecx,10
       mov       [ebp-1C],ecx
       jmp       short M01_L10
M01_L09:
       lea       ecx,[ebp-24]
       mov       edx,89C8444
       call      dword ptr ds:[91ABDE0]
M01_L10:
       push      dword ptr [ebp-0C]
       mov       ecx,5F11
       mov       edx,0B232804
       call      CORINFO_HELP_STRCNS
       push      eax
       lea       ecx,[ebp-24]
       mov       edx,0A
       call      dword ptr ds:[0BB25678]
       mov       ecx,offset MT_System.Exception
       call      CORINFO_HELP_NEWSFAST
       mov       esi,eax
       lea       ecx,[ebp-24]
       call      dword ptr ds:[91ABC30]
       mov       edx,eax
       mov       ecx,esi
       call      dword ptr ds:[5565C18]
       mov       ecx,esi
       call      CORINFO_HELP_THROW
M01_L11:
       vmovss    xmm3,dword ptr ds:[0BA8F308]
       jmp       near ptr M01_L02
M01_L12:
       push      2
       lea       ecx,[ebp-24]
       mov       edx,20
       call      dword ptr ds:[91ABBA0]
       mov       ecx,[ebp-1C]
       cmp       ecx,[ebp-10]
       ja        near ptr M01_L06
       mov       edx,[ebp-14]
       lea       edx,[edx+ecx*2]
       mov       eax,[ebp-10]
       sub       eax,ecx
       mov       ecx,edx
       xor       ebx,ebx
       cmp       eax,10
       jb        short M01_L13
       mov       edx,89C8400
       add       edx,8
       push      20
       call      dword ptr ds:[8F534E0]; System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
       mov       ebx,1
M01_L13:
       test      ebx,ebx
       je        near ptr M01_L04
       mov       ecx,[ebp-1C]
       add       ecx,10
       mov       [ebp-1C],ecx
       jmp       near ptr M01_L05
; Total bytes of code 476

Docs

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

Run Information

Name Value
Architecture x86
OS Windows 10.0.18362
Queue TigerWindows
Baseline 6bcd4aa9cf626d6ee490a7bd35908cefd1603103
Compare 1e241c0044042409b8567c5ab9a72b7525ad128a
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in System.Collections.ContainsFalse<String>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
ICollection - Duration of single invocation 1.10 ms 1.17 ms 1.07 0.04 False

graph
Test Report

Repro

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

Payloads

Baseline
Compare

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

Payloads

Baseline
Compare

Histogram

System.Collections.ContainsFalse<String>.ICollection(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 1.171404776785714 > 1.153705875.
IsChangePoint: Marked as a change because one of 3/17/2023 1:30:52 PM, 3/22/2023 7:51:01 PM, 3/28/2023 7:07:52 AM falls between 3/19/2023 2:30:51 PM and 3/28/2023 7:07:52 AM.
IsRegressionStdDev: Marked as regression because -11.463113168440215 (T) = (0 -1172749.812161755) / Math.Sqrt((817289091.5059484 / (31)) + (86071256.81007624 / (29))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (31) + (29) - 2, .025) and -0.05589728924650072 = (1110666.5620845011 - 1172749.812161755) / 1110666.5620845011 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

Name Value
Architecture x86
OS Windows 10.0.18362
Queue TigerWindows
Baseline 6bcd4aa9cf626d6ee490a7bd35908cefd1603103
Compare 1e241c0044042409b8567c5ab9a72b7525ad128a
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

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
Interpolation_MultipleArgs - Duration of single invocation 91.57 ns 109.25 ns 1.19 0.08 True

Test Report

Repro

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

Payloads

Baseline
Compare

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

Payloads

Baseline
Compare

Histogram

System.Tests.Perf_String.Interpolation_MultipleArgs(c: '1', s: "Foo")


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 109.24956699223101 > 94.86893689264957.
IsChangePoint: Marked as a change because one of 3/22/2023 7:51:01 PM, 3/28/2023 7:07:52 AM falls between 3/19/2023 2:30:51 PM and 3/28/2023 7:07:52 AM.
IsRegressionStdDev: Marked as regression because -11.852242171712552 (T) = (0 -112.59977089729108) / Math.Sqrt((2.1414254124681067 / (31)) + (102.02545258064275 / (29))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (31) + (29) - 2, .025) and -0.24900267301562753 = (90.15174533247955 - 112.59977089729108) / 90.15174533247955 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 as regression because Edge Detector said so.

Docs

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

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

No branches or pull requests

1 participant