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] Improvement on 7/31/2022 3:07:22 PM #7195

Closed
performanceautofiler bot opened this issue Aug 9, 2022 · 8 comments
Closed

[Perf] Improvement on 7/31/2022 3:07:22 PM #7195

performanceautofiler bot opened this issue Aug 9, 2022 · 8 comments

Comments

@performanceautofiler
Copy link

No description provided.

@performanceautofiler
Copy link
Author

performanceautofiler bot commented Aug 9, 2022

Run Information

Architecture x86
OS Windows 10.0.18362
Baseline ec5e8b5fac0ca3524c01b826a048b0b293b63a7d
Compare 3605700d507d52716ed8750dac35d34dc45f0e3d
Diff Diff

Improvements in System.Buffers.Text.Tests.Utf8FormatterTests

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
FormatterDateTimeOffsetNow - Duration of single invocation 125.81 ns 117.29 ns 0.93 0.00 False

graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Buffers.Text.Tests.Utf8FormatterTests*'

Payloads

Baseline
Compare

Histogram

System.Buffers.Text.Tests.Utf8FormatterTests.FormatterDateTimeOffsetNow(value: 12/30/2017 3:45:22 AM -08:00)


Description of detection logic

IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small.
IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline.
IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small.
IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small.
IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline.
IsImprovementWindowed:Marked as improvement because 117.28820749588394 < 119.63830274768978.
IsChangePoint: Marked as a change because one of 7/31/2022 12:39:41 PM, 8/5/2022 10:47:59 PM falls between 7/28/2022 9:13:34 AM and 8/5/2022 10:47:59 PM.
IsImprovementStdDev: Marked as improvement because 50.71525668923233 (T) = (0 -117.99860059282344) / Math.Sqrt((0.25390556481780424 / (299)) + (0.7341778893647217 / (34))) is greater than 1.9671567996108528 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (34) - 2, .975) and 0.060492180166158614 = (125.59618781426676 - 117.99860059282344) / 125.59618781426676 is greater than 0.05.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Buffers.Text.Tests.Utf8FormatterTests.FormatterDateTimeOffsetNow(System.DateTimeOffset)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      eax
       xor       eax,eax
       mov       [ebp+0FFF4],eax
       mov       ecx,[ecx+4]
       test      ecx,ecx
       je        short 00000DF9
       lea       esi,[ecx+8]
       mov       edi,[ecx+4]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       push      edi
       push      esi
       sub       esp,4
       xor       ecx,ecx
       mov       [esp+1],cl
       xor       ecx,ecx
       mov       [esp],cl
       lea       ecx,[ebp+0FFF4]
       call      dword ptr ds:[0D018]
       pop       ecx
       pop       esi
       pop       edi
       pop       ebp
       ret       0C
       xor       esi,esi
       xor       edi,edi
       jmp       short 00000DD0
; Total bytes of code 71
; System.Buffers.Text.Utf8Formatter.TryFormat(System.DateTimeOffset, System.Span`1<Byte>, Int32 ByRef, System.Buffers.StandardFormat)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       sub       esp,70
       mov       esi,ecx
       mov       eax,ds:[13A8]
       add       eax,4
       mov       edx,[eax]
       mov       eax,[eax+4]
       mov       [ebp+0FFDC],edx
       mov       [ebp+0FFE0],eax
       movzx     eax,byte ptr [ebp+8]
       mov       edi,eax
       test      eax,eax
       jne       short 00000ED0
       cmp       byte ptr [ebp+9],0
       jne       short 00000ED0
       mov       edi,47
       movsx     eax,word ptr [ebp+14]
       mov       ecx,3C
       imul      ecx
       mov       [ebp+0FF8C],eax
       mov       [ebp+0FF90],edx
       mov       eax,[ebp+0FF8C]
       mov       edx,[ebp+0FF90]
       cmp       eax,0BF94D5E6
       mov       ecx,edx
       sbb       ecx,0D6
       jge       near ptr 00001047
       cmp       eax,406B2A1B
       mov       ecx,edx
       sbb       ecx,0FFFFFF29
       jl        near ptr 00001047
       push      edx
       push      eax
       push      0
       push      989680
       call      00001260
       mov       [ebp+0FFBC],eax
       mov       [ebp+0FFC0],edx
       mov       ecx,[ebp+0FFBC]
       mov       edx,[ebp+0FFC0]
       mov       [ebp+0FFDC],ecx
       mov       [ebp+0FFE0],edx
       cmp       edi,4F
       ja        short 00000EF9
       cmp       edi,47
       je        near ptr 00000FCD
       cmp       edi,4F
       jne       near ptr 0000104E
       lea       ecx,[ebp+14]
       lea       edx,[ebp+0FFE4]
       call      dword ptr ds:[0D900]
       movsx     ebx,word ptr [ebp+14]
       jmp       short 00000F58
       cmp       edi,52
       je        near ptr 00000FFD
       cmp       edi,6C
       jne       near ptr 0000104E
       mov       ecx,[ebp+18]
       mov       eax,[ebp+1C]
       mov       [ebp+0FFA4],ecx
       mov       [ebp+0FFA8],eax
       mov       ecx,[ebp+0FFA4]
       mov       eax,[ebp+0FFA8]
       and       ecx,0FFFFFFFF
       and       eax,3FFFFFFF
       or        ecx,0
       or        eax,40000000
       mov       [ebp+0FF9C],ecx
       mov       [ebp+0FFA0],eax
       mov       ecx,[ebp+0FF9C]
       mov       eax,[ebp+0FFA0]
       mov       [ebp+0FFCC],ecx
       mov       [ebp+0FFD0],eax
       push      dword ptr [ebp+0FFD0]
       push      dword ptr [ebp+0FFCC]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       mov       ecx,esi
       call      dword ptr ds:[0D060]
       jmp       near ptr 00000FF3
       mov       eax,3C
       imul      ebx
       mov       [ebp+0FF84],eax
       mov       [ebp+0FF88],edx
       mov       eax,[ebp+0FF84]
       mov       edx,[ebp+0FF88]
       cmp       eax,0BF94D5E6
       mov       ecx,edx
       sbb       ecx,0D6
       jge       near ptr 00001047
       cmp       eax,406B2A1B
       mov       ecx,edx
       sbb       ecx,0FFFFFF29
       jl        near ptr 00001047
       push      edx
       push      eax
       push      0
       push      989680
       call      00001260
       mov       [ebp+0FF94],eax
       mov       [ebp+0FF98],edx
       mov       ecx,[ebp+0FF94]
       mov       eax,[ebp+0FF98]
       mov       [ebp+0FFC4],ecx
       mov       [ebp+0FFC8],eax
       push      dword ptr [ebp+0FFE8]
       push      dword ptr [ebp+0FFE4]
       push      dword ptr [ebp+0FFC8]
       push      dword ptr [ebp+0FFC4]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       mov       ecx,esi
       call      dword ptr ds:[0D078]
       jmp       short 00000FF3
       lea       ecx,[ebp+14]
       lea       edx,[ebp+0FFEC]
       call      dword ptr ds:[0D900]
       push      dword ptr [ebp+0FFF0]
       push      dword ptr [ebp+0FFEC]
       push      dword ptr [ebp+0FFE0]
       push      dword ptr [ebp+0FFDC]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       mov       ecx,esi
       call      dword ptr ds:[0D048]
       lea       esp,[ebp+0FFF4]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret       18
       mov       ecx,[ebp+18]
       mov       eax,[ebp+1C]
       mov       [ebp+0FFB4],ecx
       mov       [ebp+0FFB8],eax
       mov       ecx,[ebp+0FFB4]
       mov       eax,[ebp+0FFB8]
       and       ecx,0FFFFFFFF
       and       eax,3FFFFFFF
       or        ecx,0
       or        eax,40000000
       mov       [ebp+0FFAC],ecx
       mov       [ebp+0FFB0],eax
       mov       ecx,[ebp+0FFAC]
       mov       eax,[ebp+0FFB0]
       mov       [ebp+0FFD4],ecx
       mov       [ebp+0FFD8],eax
       push      dword ptr [ebp+0FFD8]
       push      dword ptr [ebp+0FFD4]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       mov       ecx,esi
       call      dword ptr ds:[0D090]
       jmp       short 00000FF3
       call      dword ptr ds:[0B5B8]
       int       3
       xor       eax,eax
       mov       [esi],eax
       call      dword ptr ds:[0BA68]
       int       3
; Total bytes of code 537

Compare Jit Disasm

; System.Buffers.Text.Tests.Utf8FormatterTests.FormatterDateTimeOffsetNow(System.DateTimeOffset)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      eax
       xor       eax,eax
       mov       [ebp+0FFF4],eax
       mov       ecx,[ecx+4]
       test      ecx,ecx
       je        short 00000DF9
       lea       esi,[ecx+8]
       mov       edi,[ecx+4]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       push      edi
       push      esi
       sub       esp,4
       xor       ecx,ecx
       mov       [esp+1],cl
       xor       ecx,ecx
       mov       [esp],cl
       lea       ecx,[ebp+0FFF4]
       call      dword ptr ds:[1018]
       pop       ecx
       pop       esi
       pop       edi
       pop       ebp
       ret       0C
       xor       esi,esi
       xor       edi,edi
       jmp       short 00000DD0
; Total bytes of code 71
; System.Buffers.Text.Utf8Formatter.TryFormat(System.DateTimeOffset, System.Span`1<Byte>, Int32 ByRef, System.Buffers.StandardFormat)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       sub       esp,70
       mov       esi,ecx
       mov       eax,ds:[13A8]
       add       eax,4
       mov       edx,[eax]
       mov       eax,[eax+4]
       mov       [ebp+0FFDC],edx
       mov       [ebp+0FFE0],eax
       movzx     eax,byte ptr [ebp+8]
       mov       edi,eax
       test      eax,eax
       jne       short 00000ED0
       cmp       byte ptr [ebp+9],0
       jne       short 00000ED0
       mov       edi,47
       movsx     eax,word ptr [ebp+14]
       mov       ecx,3C
       imul      ecx
       mov       [ebp+0FF8C],eax
       mov       [ebp+0FF90],edx
       mov       eax,[ebp+0FF8C]
       mov       edx,[ebp+0FF90]
       cmp       eax,0BF94D5E6
       mov       ecx,edx
       sbb       ecx,0D6
       jge       near ptr 00001047
       cmp       eax,406B2A1B
       mov       ecx,edx
       sbb       ecx,0FFFFFF29
       jl        near ptr 00001047
       push      edx
       push      eax
       push      0
       push      989680
       call      00002A80
       mov       [ebp+0FFBC],eax
       mov       [ebp+0FFC0],edx
       mov       ecx,[ebp+0FFBC]
       mov       edx,[ebp+0FFC0]
       mov       [ebp+0FFDC],ecx
       mov       [ebp+0FFE0],edx
       cmp       edi,4F
       ja        short 00000EF9
       cmp       edi,47
       je        near ptr 00000FCD
       cmp       edi,4F
       jne       near ptr 0000104E
       lea       ecx,[ebp+14]
       lea       edx,[ebp+0FFE4]
       call      dword ptr ds:[0F900]
       movsx     ebx,word ptr [ebp+14]
       jmp       short 00000F58
       cmp       edi,52
       je        near ptr 00000FFD
       cmp       edi,6C
       jne       near ptr 0000104E
       mov       ecx,[ebp+18]
       mov       eax,[ebp+1C]
       mov       [ebp+0FFA4],ecx
       mov       [ebp+0FFA8],eax
       mov       ecx,[ebp+0FFA4]
       mov       eax,[ebp+0FFA8]
       and       ecx,0FFFFFFFF
       and       eax,3FFFFFFF
       or        ecx,0
       or        eax,40000000
       mov       [ebp+0FF9C],ecx
       mov       [ebp+0FFA0],eax
       mov       ecx,[ebp+0FF9C]
       mov       eax,[ebp+0FFA0]
       mov       [ebp+0FFCC],ecx
       mov       [ebp+0FFD0],eax
       push      dword ptr [ebp+0FFD0]
       push      dword ptr [ebp+0FFCC]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       mov       ecx,esi
       call      dword ptr ds:[1060]
       jmp       near ptr 00000FF3
       mov       eax,3C
       imul      ebx
       mov       [ebp+0FF84],eax
       mov       [ebp+0FF88],edx
       mov       eax,[ebp+0FF84]
       mov       edx,[ebp+0FF88]
       cmp       eax,0BF94D5E6
       mov       ecx,edx
       sbb       ecx,0D6
       jge       near ptr 00001047
       cmp       eax,406B2A1B
       mov       ecx,edx
       sbb       ecx,0FFFFFF29
       jl        near ptr 00001047
       push      edx
       push      eax
       push      0
       push      989680
       call      00002A80
       mov       [ebp+0FF94],eax
       mov       [ebp+0FF98],edx
       mov       ecx,[ebp+0FF94]
       mov       eax,[ebp+0FF98]
       mov       [ebp+0FFC4],ecx
       mov       [ebp+0FFC8],eax
       push      dword ptr [ebp+0FFE8]
       push      dword ptr [ebp+0FFE4]
       push      dword ptr [ebp+0FFC8]
       push      dword ptr [ebp+0FFC4]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       mov       ecx,esi
       call      dword ptr ds:[1078]
       jmp       short 00000FF3
       lea       ecx,[ebp+14]
       lea       edx,[ebp+0FFEC]
       call      dword ptr ds:[0F900]
       push      dword ptr [ebp+0FFF0]
       push      dword ptr [ebp+0FFEC]
       push      dword ptr [ebp+0FFE0]
       push      dword ptr [ebp+0FFDC]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       mov       ecx,esi
       call      dword ptr ds:[1048]
       lea       esp,[ebp+0FFF4]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret       18
       mov       ecx,[ebp+18]
       mov       eax,[ebp+1C]
       mov       [ebp+0FFB4],ecx
       mov       [ebp+0FFB8],eax
       mov       ecx,[ebp+0FFB4]
       mov       eax,[ebp+0FFB8]
       and       ecx,0FFFFFFFF
       and       eax,3FFFFFFF
       or        ecx,0
       or        eax,40000000
       mov       [ebp+0FFAC],ecx
       mov       [ebp+0FFB0],eax
       mov       ecx,[ebp+0FFAC]
       mov       eax,[ebp+0FFB0]
       mov       [ebp+0FFD4],ecx
       mov       [ebp+0FFD8],eax
       push      dword ptr [ebp+0FFD8]
       push      dword ptr [ebp+0FFD4]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       mov       ecx,esi
       call      dword ptr ds:[1090]
       jmp       short 00000FF3
       call      dword ptr ds:[0F228]
       int       3
       xor       eax,eax
       mov       [esi],eax
       call      dword ptr ds:[0F6D8]
       int       3
; Total bytes of code 537

Docs

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

### Run Information
Architecture x86
OS Windows 10.0.18362
Baseline ec5e8b5fac0ca3524c01b826a048b0b293b63a7d
Compare 3605700d507d52716ed8750dac35d34dc45f0e3d
Diff Diff

Improvements in System.Globalization.Tests.Perf_DateTimeCultureInfo

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
ToString - Duration of single invocation 325.93 ns 305.53 ns 0.94 0.00 False 2640.8915226196586 2526.6510922248626 0.9567417179326343 Trace Trace
ToString - Duration of single invocation 328.24 ns 306.02 ns 0.93 0.01 False 2680.2627393140147 2559.352930077093 0.9548888221056017 Trace Trace

graph
graph
Test Report

Repro

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

Payloads

Baseline
Compare

Histogram

System.Globalization.Tests.Perf_DateTimeCultureInfo.ToString(culturestring: ja)


Description of detection logic

IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small.
IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline.
IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small.
IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small.
IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline.
IsImprovementWindowed:Marked as improvement because 305.52665865400536 < 310.2449975059402.
IsChangePoint: Marked as a change because one of 6/27/2022 8:54:23 AM, 7/6/2022 12:32:56 PM, 7/31/2022 12:39:41 PM, 8/5/2022 10:47:59 PM falls between 7/28/2022 9:13:34 AM and 8/5/2022 10:47:59 PM.
IsImprovementStdDev: Marked as improvement because 27.65505586790604 (T) = (0 -305.5277745926793) / Math.Sqrt((30.372289027475457 / (299)) + (8.475701234444106 / (34))) is greater than 1.9671567996108528 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (34) - 2, .975) and 0.05088754210340426 = (321.9089287583306 - 305.5277745926793) / 321.9089287583306 is greater than 0.05.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Globalization.Tests.Perf_DateTimeCultureInfo.ToString(System.Globalization.CultureInfo)
       push      ebp
       mov       ebp,esp
       sub       esp,8
       add       ecx,8
       mov       eax,[ecx]
       mov       ecx,[ecx+4]
       mov       [ebp+0FFF8],eax
       mov       [ebp+0FFFC],ecx
       push      dword ptr [ebp+0FFFC]
       push      dword ptr [ebp+0FFF8]
       push      80000000
       push      0
       xor       ecx,ecx
       call      dword ptr ds:[0DD38]
       mov       esp,ebp
       pop       ebp
       ret
; Total bytes of code 45
; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       sub       esp,28
       vxorps    xmm4,xmm4,xmm4
       vmovdqu   xmmword ptr [ebp+0FFD4],xmm4
       vmovdqu   xmmword ptr [ebp+0FFE4],xmm4
       mov       [ebp+0FFF4],esp
       mov       dword ptr [ebp+0FFD0],37FECFF5
       mov       eax,edx
       test      ecx,ecx
       je        short 0000150B
       cmp       dword ptr [ecx+4],1
       jne       short 0000150B
       movzx     edx,word ptr [ecx+8]
       or        edx,20
       cmp       edx,6F
       je        near ptr 0000158B
       cmp       edx,72
       jne       short 0000150B
       mov       ecx,1D
       call      0000E8B8
       mov       esi,eax
       lea       ecx,[esi+8]
       mov       eax,[esi+4]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       push      eax
       push      ecx
       lea       ecx,[ebp+0FFDC]
       call      dword ptr ds:[0DE40]
       mov       eax,esi
       cmp       dword ptr [ebp+0FFD0],37FECFF5
       je        short 00001502
       call      00001790
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       test      [esp],esp
       mov       edx,esp
       sub       edx,200
       mov       esp,edx
       lea       edx,[esp]
       mov       [ebp+0FFF4],esp
       mov       [ebp+0FFD4],edx
       mov       dword ptr [ebp+0FFD8],100
       mov       edx,[ebp+0FFD4]
       mov       esi,[ebp+0FFD8]
       xor       edi,edi
       mov       [ebp+0FFE4],edi
       mov       [ebp+0FFEC],edx
       mov       [ebp+0FFF0],esi
       mov       [ebp+0FFE8],edi
       test      ecx,ecx
       je        near ptr 000015EF
       lea       edx,[ecx+8]
       mov       esi,[ecx+4]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      esi
       push      edx
       mov       ecx,eax
       call      dword ptr ds:[5978]
       mov       ecx,eax
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       lea       edx,[ebp+0FFE4]
       call      dword ptr ds:[0DD80]
       lea       ecx,[ebp+0FFE4]
       call      dword ptr ds:[5498]
       cmp       dword ptr [ebp+0FFD0],37FECFF5
       je        short 00001582
       call      00001790
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       test      [esp],esp
       mov       ecx,esp
       sub       ecx,44
       mov       esp,ecx
       lea       ecx,[esp]
       mov       [ebp+0FFF4],esp
       mov       [ebp+0FFD4],ecx
       mov       dword ptr [ebp+0FFD8],21
       mov       esi,[ebp+0FFD4]
       mov       edi,[ebp+0FFD8]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       push      edi
       push      esi
       lea       ecx,[ebp+0FFE0]
       call      dword ptr ds:[0DE28]
       mov       ecx,[ebp+0FFE0]
       cmp       ecx,edi
       ja        short 000015F8
       mov       [ebp+0FFD4],esi
       mov       [ebp+0FFD8],ecx
       lea       ecx,[ebp+0FFD4]
       call      dword ptr ds:[1D08]
       cmp       dword ptr [ebp+0FFD0],37FECFF5
       je        short 000015E6
       call      00001790
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       xor       edx,edx
       xor       esi,esi
       jmp       near ptr 0000154A
       call      dword ptr ds:[0B3D8]
       int       3
; Total bytes of code 375

Compare Jit Disasm

; System.Globalization.Tests.Perf_DateTimeCultureInfo.ToString(System.Globalization.CultureInfo)
       push      ebp
       mov       ebp,esp
       sub       esp,8
       add       ecx,8
       mov       eax,[ecx]
       mov       ecx,[ecx+4]
       mov       [ebp+0FFF8],eax
       mov       [ebp+0FFFC],ecx
       push      dword ptr [ebp+0FFFC]
       push      dword ptr [ebp+0FFF8]
       push      80000000
       push      0
       xor       ecx,ecx
       call      dword ptr ds:[1DF8]
       mov       esp,ebp
       pop       ebp
       ret
; Total bytes of code 45
; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       sub       esp,28
       vxorps    xmm4,xmm4,xmm4
       vmovdqu   xmmword ptr [ebp+0FFD4],xmm4
       vmovdqu   xmmword ptr [ebp+0FFE4],xmm4
       mov       [ebp+0FFF4],esp
       mov       dword ptr [ebp+0FFD0],0BBFFDAB8
       mov       eax,edx
       test      ecx,ecx
       je        short 000013AB
       cmp       dword ptr [ecx+4],1
       jne       short 000013AB
       movzx     edx,word ptr [ecx+8]
       or        edx,20
       cmp       edx,6F
       je        near ptr 0000142B
       cmp       edx,72
       jne       short 000013AB
       mov       ecx,1D
       call      0000E8B8
       mov       esi,eax
       lea       ecx,[esi+8]
       mov       eax,[esi+4]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       push      eax
       push      ecx
       lea       ecx,[ebp+0FFDC]
       call      dword ptr ds:[1F00]
       mov       eax,esi
       cmp       dword ptr [ebp+0FFD0],0BBFFDAB8
       je        short 000013A2
       call      000001A0
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       test      [esp],esp
       mov       edx,esp
       sub       edx,200
       mov       esp,edx
       lea       edx,[esp]
       mov       [ebp+0FFF4],esp
       mov       [ebp+0FFD4],edx
       mov       dword ptr [ebp+0FFD8],100
       mov       edx,[ebp+0FFD4]
       mov       esi,[ebp+0FFD8]
       xor       edi,edi
       mov       [ebp+0FFE4],edi
       mov       [ebp+0FFEC],edx
       mov       [ebp+0FFF0],esi
       mov       [ebp+0FFE8],edi
       test      ecx,ecx
       je        near ptr 0000148F
       lea       edx,[ecx+8]
       mov       esi,[ecx+4]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      esi
       push      edx
       mov       ecx,eax
       call      dword ptr ds:[9978]
       mov       ecx,eax
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       lea       edx,[ebp+0FFE4]
       call      dword ptr ds:[1E40]
       lea       ecx,[ebp+0FFE4]
       call      dword ptr ds:[9498]
       cmp       dword ptr [ebp+0FFD0],0BBFFDAB8
       je        short 00001422
       call      000001A0
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       test      [esp],esp
       mov       ecx,esp
       sub       ecx,44
       mov       esp,ecx
       lea       ecx,[esp]
       mov       [ebp+0FFF4],esp
       mov       [ebp+0FFD4],ecx
       mov       dword ptr [ebp+0FFD8],21
       mov       esi,[ebp+0FFD4]
       mov       edi,[ebp+0FFD8]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       push      edi
       push      esi
       lea       ecx,[ebp+0FFE0]
       call      dword ptr ds:[1EE8]
       mov       ecx,[ebp+0FFE0]
       cmp       ecx,edi
       ja        short 00001498
       mov       [ebp+0FFD4],esi
       mov       [ebp+0FFD8],ecx
       lea       ecx,[ebp+0FFD4]
       call      dword ptr ds:[0FD08]
       cmp       dword ptr [ebp+0FFD0],0BBFFDAB8
       je        short 00001486
       call      000001A0
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       xor       edx,edx
       xor       esi,esi
       jmp       near ptr 000013EA
       call      dword ptr ds:[0F048]
       int       3
; Total bytes of code 375

System.Globalization.Tests.Perf_DateTimeCultureInfo.ToString(culturestring: )


Description of detection logic

IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small.
IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline.
IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small.
IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small.
IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline.
IsImprovementWindowed:Marked as improvement because 306.0186826078275 < 311.7049719859902.
IsChangePoint: Marked as a change because one of 6/27/2022 8:54:23 AM, 7/6/2022 12:32:56 PM, 7/31/2022 12:39:41 PM, 8/5/2022 10:47:59 PM falls between 7/28/2022 9:13:34 AM and 8/5/2022 10:47:59 PM.
IsImprovementStdDev: Marked as improvement because 46.916780680035025 (T) = (0 -306.0850916896765) / Math.Sqrt((33.571394269992915 / (299)) + (0.7717702724932022 / (34))) is greater than 1.9671567996108528 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (34) - 2, .975) and 0.05331193916363282 = (323.3220152995915 - 306.0850916896765) / 323.3220152995915 is greater than 0.05.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Globalization.Tests.Perf_DateTimeCultureInfo.ToString(System.Globalization.CultureInfo)
       push      ebp
       mov       ebp,esp
       sub       esp,8
       add       ecx,8
       mov       eax,[ecx]
       mov       ecx,[ecx+4]
       mov       [ebp+0FFF8],eax
       mov       [ebp+0FFFC],ecx
       push      dword ptr [ebp+0FFFC]
       push      dword ptr [ebp+0FFF8]
       push      80000000
       push      0
       xor       ecx,ecx
       call      dword ptr ds:[0DD38]
       mov       esp,ebp
       pop       ebp
       ret
; Total bytes of code 45
; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       sub       esp,28
       vxorps    xmm4,xmm4,xmm4
       vmovdqu   xmmword ptr [ebp+0FFD4],xmm4
       vmovdqu   xmmword ptr [ebp+0FFE4],xmm4
       mov       [ebp+0FFF4],esp
       mov       dword ptr [ebp+0FFD0],6EE45AF3
       mov       eax,edx
       test      ecx,ecx
       je        short 0000150B
       cmp       dword ptr [ecx+4],1
       jne       short 0000150B
       movzx     edx,word ptr [ecx+8]
       or        edx,20
       cmp       edx,6F
       je        near ptr 0000158B
       cmp       edx,72
       jne       short 0000150B
       mov       ecx,1D
       call      0000E8B8
       mov       esi,eax
       lea       ecx,[esi+8]
       mov       eax,[esi+4]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       push      eax
       push      ecx
       lea       ecx,[ebp+0FFDC]
       call      dword ptr ds:[0DE40]
       mov       eax,esi
       cmp       dword ptr [ebp+0FFD0],6EE45AF3
       je        short 00001502
       call      00001790
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       test      [esp],esp
       mov       edx,esp
       sub       edx,200
       mov       esp,edx
       lea       edx,[esp]
       mov       [ebp+0FFF4],esp
       mov       [ebp+0FFD4],edx
       mov       dword ptr [ebp+0FFD8],100
       mov       edx,[ebp+0FFD4]
       mov       esi,[ebp+0FFD8]
       xor       edi,edi
       mov       [ebp+0FFE4],edi
       mov       [ebp+0FFEC],edx
       mov       [ebp+0FFF0],esi
       mov       [ebp+0FFE8],edi
       test      ecx,ecx
       je        near ptr 000015EF
       lea       edx,[ecx+8]
       mov       esi,[ecx+4]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      esi
       push      edx
       mov       ecx,eax
       call      dword ptr ds:[5978]
       mov       ecx,eax
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       lea       edx,[ebp+0FFE4]
       call      dword ptr ds:[0DD80]
       lea       ecx,[ebp+0FFE4]
       call      dword ptr ds:[5498]
       cmp       dword ptr [ebp+0FFD0],6EE45AF3
       je        short 00001582
       call      00001790
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       test      [esp],esp
       mov       ecx,esp
       sub       ecx,44
       mov       esp,ecx
       lea       ecx,[esp]
       mov       [ebp+0FFF4],esp
       mov       [ebp+0FFD4],ecx
       mov       dword ptr [ebp+0FFD8],21
       mov       esi,[ebp+0FFD4]
       mov       edi,[ebp+0FFD8]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       push      edi
       push      esi
       lea       ecx,[ebp+0FFE0]
       call      dword ptr ds:[0DE28]
       mov       ecx,[ebp+0FFE0]
       cmp       ecx,edi
       ja        short 000015F8
       mov       [ebp+0FFD4],esi
       mov       [ebp+0FFD8],ecx
       lea       ecx,[ebp+0FFD4]
       call      dword ptr ds:[1D08]
       cmp       dword ptr [ebp+0FFD0],6EE45AF3
       je        short 000015E6
       call      00001790
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       xor       edx,edx
       xor       esi,esi
       jmp       near ptr 0000154A
       call      dword ptr ds:[0B3D8]
       int       3
; Total bytes of code 375

Compare Jit Disasm

; System.Globalization.Tests.Perf_DateTimeCultureInfo.ToString(System.Globalization.CultureInfo)
       push      ebp
       mov       ebp,esp
       sub       esp,8
       add       ecx,8
       mov       eax,[ecx]
       mov       ecx,[ecx+4]
       mov       [ebp+0FFF8],eax
       mov       [ebp+0FFFC],ecx
       push      dword ptr [ebp+0FFFC]
       push      dword ptr [ebp+0FFF8]
       push      80000000
       push      0
       xor       ecx,ecx
       call      dword ptr ds:[1DF8]
       mov       esp,ebp
       pop       ebp
       ret
; Total bytes of code 45
; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       sub       esp,28
       vxorps    xmm4,xmm4,xmm4
       vmovdqu   xmmword ptr [ebp+0FFD4],xmm4
       vmovdqu   xmmword ptr [ebp+0FFE4],xmm4
       mov       [ebp+0FFF4],esp
       mov       dword ptr [ebp+0FFD0],93C38B9A
       mov       eax,edx
       test      ecx,ecx
       je        short 000013AB
       cmp       dword ptr [ecx+4],1
       jne       short 000013AB
       movzx     edx,word ptr [ecx+8]
       or        edx,20
       cmp       edx,6F
       je        near ptr 0000142B
       cmp       edx,72
       jne       short 000013AB
       mov       ecx,1D
       call      0000E8B8
       mov       esi,eax
       lea       ecx,[esi+8]
       mov       eax,[esi+4]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       push      eax
       push      ecx
       lea       ecx,[ebp+0FFDC]
       call      dword ptr ds:[1F00]
       mov       eax,esi
       cmp       dword ptr [ebp+0FFD0],93C38B9A
       je        short 000013A2
       call      000001A0
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       test      [esp],esp
       mov       edx,esp
       sub       edx,200
       mov       esp,edx
       lea       edx,[esp]
       mov       [ebp+0FFF4],esp
       mov       [ebp+0FFD4],edx
       mov       dword ptr [ebp+0FFD8],100
       mov       edx,[ebp+0FFD4]
       mov       esi,[ebp+0FFD8]
       xor       edi,edi
       mov       [ebp+0FFE4],edi
       mov       [ebp+0FFEC],edx
       mov       [ebp+0FFF0],esi
       mov       [ebp+0FFE8],edi
       test      ecx,ecx
       je        near ptr 0000148F
       lea       edx,[ecx+8]
       mov       esi,[ecx+4]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      esi
       push      edx
       mov       ecx,eax
       call      dword ptr ds:[9978]
       mov       ecx,eax
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       lea       edx,[ebp+0FFE4]
       call      dword ptr ds:[1E40]
       lea       ecx,[ebp+0FFE4]
       call      dword ptr ds:[9498]
       cmp       dword ptr [ebp+0FFD0],93C38B9A
       je        short 00001422
       call      000001A0
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       test      [esp],esp
       mov       ecx,esp
       sub       ecx,44
       mov       esp,ecx
       lea       ecx,[esp]
       mov       [ebp+0FFF4],esp
       mov       [ebp+0FFD4],ecx
       mov       dword ptr [ebp+0FFD8],21
       mov       esi,[ebp+0FFD4]
       mov       edi,[ebp+0FFD8]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       push      edi
       push      esi
       lea       ecx,[ebp+0FFE0]
       call      dword ptr ds:[1EE8]
       mov       ecx,[ebp+0FFE0]
       cmp       ecx,edi
       ja        short 00001498
       mov       [ebp+0FFD4],esi
       mov       [ebp+0FFD8],ecx
       lea       ecx,[ebp+0FFD4]
       call      dword ptr ds:[0FD08]
       cmp       dword ptr [ebp+0FFD0],93C38B9A
       je        short 00001486
       call      000001A0
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       xor       edx,edx
       xor       esi,esi
       jmp       near ptr 000013EA
       call      dword ptr ds:[0F048]
       int       3
; Total bytes of code 375

Docs

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

@performanceautofiler
Copy link
Author

performanceautofiler bot commented Aug 9, 2022

Run Information

Architecture x86
OS Windows 10.0.18362
Baseline ec5e8b5fac0ca3524c01b826a048b0b293b63a7d
Compare 3605700d507d52716ed8750dac35d34dc45f0e3d
Diff Diff

Improvements in System.Tests.Perf_DateTime

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
ToString - Duration of single invocation 149.05 ns 139.30 ns 0.93 0.00 False 957.0148255563721 921.8701971633074 0.9632768192774517 Trace Trace
ToString - Duration of single invocation 112.85 ns 103.45 ns 0.92 0.00 False 707.2502056491701 664.2516318751814 0.9392031653995474 Trace Trace
GetNow - Duration of single invocation 430.14 ns 403.20 ns 0.94 0.00 False Trace Trace
ToString - Duration of single invocation 351.65 ns 326.73 ns 0.93 0.01 False 2912.0262954369687 2772.7256324203386 0.9521636658175413 Trace Trace
ToString - Duration of single invocation 361.02 ns 331.57 ns 0.92 0.00 False 2934.0501023955803 2785.9971481555367 0.9495397320859783 Trace Trace

graph
graph
graph
graph
graph
Test Report

Repro

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

Payloads

Baseline
Compare

Histogram

System.Tests.Perf_DateTime.ToString(format: "o")


Description of detection logic

IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small.
IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline.
IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small.
IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small.
IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline.
IsImprovementWindowed:Marked as improvement because 139.3036634292064 < 141.1309429025781.
IsChangePoint: Marked as a change because one of 7/31/2022 12:39:41 PM, 8/5/2022 10:47:59 PM falls between 7/28/2022 9:13:34 AM and 8/5/2022 10:47:59 PM.
IsImprovementStdDev: Marked as improvement because 72.28011741626067 (T) = (0 -140.81609842592204) / Math.Sqrt((0.6632530403976817 / (299)) + (0.3890554349186997 / (33))) is greater than 1.9671786747533526 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (33) - 2, .975) and 0.05727144139561702 = (149.37077819556717 - 140.81609842592204) / 149.37077819556717 is greater than 0.05.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Tests.Perf_DateTime.ToString(System.String)
       push      ebp
       mov       ebp,esp
       sub       esp,8
       add       ecx,4
       mov       eax,[ecx]
       mov       ecx,[ecx+4]
       mov       [ebp+0FFF8],eax
       mov       [ebp+0FFFC],ecx
       push      dword ptr [ebp+0FFFC]
       push      dword ptr [ebp+0FFF8]
       push      80000000
       push      0
       mov       ecx,edx
       xor       edx,edx
       call      dword ptr ds:[0BD38]
       mov       esp,ebp
       pop       ebp
       ret
; Total bytes of code 47
; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       sub       esp,28
       vxorps    xmm4,xmm4,xmm4
       vmovdqu   xmmword ptr [ebp+0FFD4],xmm4
       vmovdqu   xmmword ptr [ebp+0FFE4],xmm4
       mov       [ebp+0FFF4],esp
       mov       dword ptr [ebp+0FFD0],528A5D6A
       mov       eax,edx
       test      ecx,ecx
       je        short 00000DAB
       cmp       dword ptr [ecx+4],1
       jne       short 00000DAB
       movzx     edx,word ptr [ecx+8]
       or        edx,20
       cmp       edx,6F
       je        near ptr 00000E2B
       cmp       edx,72
       jne       short 00000DAB
       mov       ecx,1D
       call      0000E8B8
       mov       esi,eax
       lea       ecx,[esi+8]
       mov       eax,[esi+4]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       push      eax
       push      ecx
       lea       ecx,[ebp+0FFDC]
       call      dword ptr ds:[0BE40]
       mov       eax,esi
       cmp       dword ptr [ebp+0FFD0],528A5D6A
       je        short 00000DA2
       call      00001790
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       test      [esp],esp
       mov       edx,esp
       sub       edx,200
       mov       esp,edx
       lea       edx,[esp]
       mov       [ebp+0FFF4],esp
       mov       [ebp+0FFD4],edx
       mov       dword ptr [ebp+0FFD8],100
       mov       edx,[ebp+0FFD4]
       mov       esi,[ebp+0FFD8]
       xor       edi,edi
       mov       [ebp+0FFE4],edi
       mov       [ebp+0FFEC],edx
       mov       [ebp+0FFF0],esi
       mov       [ebp+0FFE8],edi
       test      ecx,ecx
       je        near ptr 00000E8F
       lea       edx,[ecx+8]
       mov       esi,[ecx+4]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      esi
       push      edx
       mov       ecx,eax
       call      dword ptr ds:[5978]
       mov       ecx,eax
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       lea       edx,[ebp+0FFE4]
       call      dword ptr ds:[0BD80]
       lea       ecx,[ebp+0FFE4]
       call      dword ptr ds:[0F420]
       cmp       dword ptr [ebp+0FFD0],528A5D6A
       je        short 00000E22
       call      00001790
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       test      [esp],esp
       mov       ecx,esp
       sub       ecx,44
       mov       esp,ecx
       lea       ecx,[esp]
       mov       [ebp+0FFF4],esp
       mov       [ebp+0FFD4],ecx
       mov       dword ptr [ebp+0FFD8],21
       mov       esi,[ebp+0FFD4]
       mov       edi,[ebp+0FFD8]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       push      edi
       push      esi
       lea       ecx,[ebp+0FFE0]
       call      dword ptr ds:[0BE28]
       mov       ecx,[ebp+0FFE0]
       cmp       ecx,edi
       ja        short 00000E98
       mov       [ebp+0FFD4],esi
       mov       [ebp+0FFD8],ecx
       lea       ecx,[ebp+0FFD4]
       call      dword ptr ds:[1D08]
       cmp       dword ptr [ebp+0FFD0],528A5D6A
       je        short 00000E86
       call      00001790
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       xor       edx,edx
       xor       esi,esi
       jmp       near ptr 00000DEA
       call      dword ptr ds:[0B3D8]
       int       3
; Total bytes of code 375

Compare Jit Disasm

; System.Tests.Perf_DateTime.ToString(System.String)
       push      ebp
       mov       ebp,esp
       sub       esp,8
       add       ecx,4
       mov       eax,[ecx]
       mov       ecx,[ecx+4]
       mov       [ebp+0FFF8],eax
       mov       [ebp+0FFFC],ecx
       push      dword ptr [ebp+0FFFC]
       push      dword ptr [ebp+0FFF8]
       push      80000000
       push      0
       mov       ecx,edx
       xor       edx,edx
       call      dword ptr ds:[0FDF8]
       mov       esp,ebp
       pop       ebp
       ret
; Total bytes of code 47
; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       sub       esp,28
       vxorps    xmm4,xmm4,xmm4
       vmovdqu   xmmword ptr [ebp+0FFD4],xmm4
       vmovdqu   xmmword ptr [ebp+0FFE4],xmm4
       mov       [ebp+0FFF4],esp
       mov       dword ptr [ebp+0FFD0],48517807
       mov       eax,edx
       test      ecx,ecx
       je        short 00000DAB
       cmp       dword ptr [ecx+4],1
       jne       short 00000DAB
       movzx     edx,word ptr [ecx+8]
       or        edx,20
       cmp       edx,6F
       je        near ptr 00000E2B
       cmp       edx,72
       jne       short 00000DAB
       mov       ecx,1D
       call      0000E8B8
       mov       esi,eax
       lea       ecx,[esi+8]
       mov       eax,[esi+4]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       push      eax
       push      ecx
       lea       ecx,[ebp+0FFDC]
       call      dword ptr ds:[0FF00]
       mov       eax,esi
       cmp       dword ptr [ebp+0FFD0],48517807
       je        short 00000DA2
       call      000001A0
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       test      [esp],esp
       mov       edx,esp
       sub       edx,200
       mov       esp,edx
       lea       edx,[esp]
       mov       [ebp+0FFF4],esp
       mov       [ebp+0FFD4],edx
       mov       dword ptr [ebp+0FFD8],100
       mov       edx,[ebp+0FFD4]
       mov       esi,[ebp+0FFD8]
       xor       edi,edi
       mov       [ebp+0FFE4],edi
       mov       [ebp+0FFEC],edx
       mov       [ebp+0FFF0],esi
       mov       [ebp+0FFE8],edi
       test      ecx,ecx
       je        near ptr 00000E8F
       lea       edx,[ecx+8]
       mov       esi,[ecx+4]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      esi
       push      edx
       mov       ecx,eax
       call      dword ptr ds:[9978]
       mov       ecx,eax
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       lea       edx,[ebp+0FFE4]
       call      dword ptr ds:[0FE40]
       lea       ecx,[ebp+0FFE4]
       call      dword ptr ds:[3420]
       cmp       dword ptr [ebp+0FFD0],48517807
       je        short 00000E22
       call      000001A0
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       test      [esp],esp
       mov       ecx,esp
       sub       ecx,44
       mov       esp,ecx
       lea       ecx,[esp]
       mov       [ebp+0FFF4],esp
       mov       [ebp+0FFD4],ecx
       mov       dword ptr [ebp+0FFD8],21
       mov       esi,[ebp+0FFD4]
       mov       edi,[ebp+0FFD8]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       push      edi
       push      esi
       lea       ecx,[ebp+0FFE0]
       call      dword ptr ds:[0FEE8]
       mov       ecx,[ebp+0FFE0]
       cmp       ecx,edi
       ja        short 00000E98
       mov       [ebp+0FFD4],esi
       mov       [ebp+0FFD8],ecx
       lea       ecx,[ebp+0FFD4]
       call      dword ptr ds:[0FD08]
       cmp       dword ptr [ebp+0FFD0],48517807
       je        short 00000E86
       call      000001A0
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       xor       edx,edx
       xor       esi,esi
       jmp       near ptr 00000DEA
       call      dword ptr ds:[0F048]
       int       3
; Total bytes of code 375

System.Tests.Perf_DateTime.ToString(format: "r")


Description of detection logic

IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small.
IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline.
IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small.
IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small.
IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline.
IsImprovementWindowed:Marked as improvement because 103.45437638931165 < 107.73852183281893.
IsChangePoint: Marked as a change because one of 7/31/2022 12:39:41 PM, 8/5/2022 10:47:59 PM falls between 7/28/2022 9:13:34 AM and 8/5/2022 10:47:59 PM.
IsImprovementStdDev: Marked as improvement because 53.93974072503954 (T) = (0 -104.27423099529797) / Math.Sqrt((1.004405619118278 / (299)) + (0.9271170567891521 / (34))) is greater than 1.9671567996108528 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (34) - 2, .975) and 0.08301365635044555 = (113.71405007002869 - 104.27423099529797) / 113.71405007002869 is greater than 0.05.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Tests.Perf_DateTime.ToString(System.String)
       push      ebp
       mov       ebp,esp
       sub       esp,8
       add       ecx,4
       mov       eax,[ecx]
       mov       ecx,[ecx+4]
       mov       [ebp+0FFF8],eax
       mov       [ebp+0FFFC],ecx
       push      dword ptr [ebp+0FFFC]
       push      dword ptr [ebp+0FFF8]
       push      80000000
       push      0
       mov       ecx,edx
       xor       edx,edx
       call      dword ptr ds:[0BD38]
       mov       esp,ebp
       pop       ebp
       ret
; Total bytes of code 47
; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       sub       esp,28
       vxorps    xmm4,xmm4,xmm4
       vmovdqu   xmmword ptr [ebp+0FFD4],xmm4
       vmovdqu   xmmword ptr [ebp+0FFE4],xmm4
       mov       [ebp+0FFF4],esp
       mov       dword ptr [ebp+0FFD0],69A0D408
       mov       eax,edx
       test      ecx,ecx
       je        short 00000C5B
       cmp       dword ptr [ecx+4],1
       jne       short 00000C5B
       movzx     edx,word ptr [ecx+8]
       or        edx,20
       cmp       edx,6F
       je        near ptr 00000CDB
       cmp       edx,72
       jne       short 00000C5B
       mov       ecx,1D
       call      0000E8B8
       mov       esi,eax
       lea       ecx,[esi+8]
       mov       eax,[esi+4]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       push      eax
       push      ecx
       lea       ecx,[ebp+0FFDC]
       call      dword ptr ds:[0BE40]
       mov       eax,esi
       cmp       dword ptr [ebp+0FFD0],69A0D408
       je        short 00000C52
       call      00001790
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       test      [esp],esp
       mov       edx,esp
       sub       edx,200
       mov       esp,edx
       lea       edx,[esp]
       mov       [ebp+0FFF4],esp
       mov       [ebp+0FFD4],edx
       mov       dword ptr [ebp+0FFD8],100
       mov       edx,[ebp+0FFD4]
       mov       esi,[ebp+0FFD8]
       xor       edi,edi
       mov       [ebp+0FFE4],edi
       mov       [ebp+0FFEC],edx
       mov       [ebp+0FFF0],esi
       mov       [ebp+0FFE8],edi
       test      ecx,ecx
       je        near ptr 00000D3F
       lea       edx,[ecx+8]
       mov       esi,[ecx+4]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      esi
       push      edx
       mov       ecx,eax
       call      dword ptr ds:[5978]
       mov       ecx,eax
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       lea       edx,[ebp+0FFE4]
       call      dword ptr ds:[0BD80]
       lea       ecx,[ebp+0FFE4]
       call      dword ptr ds:[0F420]
       cmp       dword ptr [ebp+0FFD0],69A0D408
       je        short 00000CD2
       call      00001790
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       test      [esp],esp
       mov       ecx,esp
       sub       ecx,44
       mov       esp,ecx
       lea       ecx,[esp]
       mov       [ebp+0FFF4],esp
       mov       [ebp+0FFD4],ecx
       mov       dword ptr [ebp+0FFD8],21
       mov       esi,[ebp+0FFD4]
       mov       edi,[ebp+0FFD8]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       push      edi
       push      esi
       lea       ecx,[ebp+0FFE0]
       call      dword ptr ds:[0BE28]
       mov       ecx,[ebp+0FFE0]
       cmp       ecx,edi
       ja        short 00000D48
       mov       [ebp+0FFD4],esi
       mov       [ebp+0FFD8],ecx
       lea       ecx,[ebp+0FFD4]
       call      dword ptr ds:[1D08]
       cmp       dword ptr [ebp+0FFD0],69A0D408
       je        short 00000D36
       call      00001790
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       xor       edx,edx
       xor       esi,esi
       jmp       near ptr 00000C9A
       call      dword ptr ds:[0B3D8]
       int       3
; Total bytes of code 375

Compare Jit Disasm

; System.Tests.Perf_DateTime.ToString(System.String)
       push      ebp
       mov       ebp,esp
       sub       esp,8
       add       ecx,4
       mov       eax,[ecx]
       mov       ecx,[ecx+4]
       mov       [ebp+0FFF8],eax
       mov       [ebp+0FFFC],ecx
       push      dword ptr [ebp+0FFFC]
       push      dword ptr [ebp+0FFF8]
       push      80000000
       push      0
       mov       ecx,edx
       xor       edx,edx
       call      dword ptr ds:[0FDF8]
       mov       esp,ebp
       pop       ebp
       ret
; Total bytes of code 47
; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       sub       esp,28
       vxorps    xmm4,xmm4,xmm4
       vmovdqu   xmmword ptr [ebp+0FFD4],xmm4
       vmovdqu   xmmword ptr [ebp+0FFE4],xmm4
       mov       [ebp+0FFF4],esp
       mov       dword ptr [ebp+0FFD0],691BF863
       mov       eax,edx
       test      ecx,ecx
       je        short 00000C5B
       cmp       dword ptr [ecx+4],1
       jne       short 00000C5B
       movzx     edx,word ptr [ecx+8]
       or        edx,20
       cmp       edx,6F
       je        near ptr 00000CDB
       cmp       edx,72
       jne       short 00000C5B
       mov       ecx,1D
       call      0000E8B8
       mov       esi,eax
       lea       ecx,[esi+8]
       mov       eax,[esi+4]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       push      eax
       push      ecx
       lea       ecx,[ebp+0FFDC]
       call      dword ptr ds:[0FF00]
       mov       eax,esi
       cmp       dword ptr [ebp+0FFD0],691BF863
       je        short 00000C52
       call      000001A0
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       test      [esp],esp
       mov       edx,esp
       sub       edx,200
       mov       esp,edx
       lea       edx,[esp]
       mov       [ebp+0FFF4],esp
       mov       [ebp+0FFD4],edx
       mov       dword ptr [ebp+0FFD8],100
       mov       edx,[ebp+0FFD4]
       mov       esi,[ebp+0FFD8]
       xor       edi,edi
       mov       [ebp+0FFE4],edi
       mov       [ebp+0FFEC],edx
       mov       [ebp+0FFF0],esi
       mov       [ebp+0FFE8],edi
       test      ecx,ecx
       je        near ptr 00000D3F
       lea       edx,[ecx+8]
       mov       esi,[ecx+4]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      esi
       push      edx
       mov       ecx,eax
       call      dword ptr ds:[9978]
       mov       ecx,eax
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       lea       edx,[ebp+0FFE4]
       call      dword ptr ds:[0FE40]
       lea       ecx,[ebp+0FFE4]
       call      dword ptr ds:[3420]
       cmp       dword ptr [ebp+0FFD0],691BF863
       je        short 00000CD2
       call      000001A0
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       test      [esp],esp
       mov       ecx,esp
       sub       ecx,44
       mov       esp,ecx
       lea       ecx,[esp]
       mov       [ebp+0FFF4],esp
       mov       [ebp+0FFD4],ecx
       mov       dword ptr [ebp+0FFD8],21
       mov       esi,[ebp+0FFD4]
       mov       edi,[ebp+0FFD8]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       push      edi
       push      esi
       lea       ecx,[ebp+0FFE0]
       call      dword ptr ds:[0FEE8]
       mov       ecx,[ebp+0FFE0]
       cmp       ecx,edi
       ja        short 00000D48
       mov       [ebp+0FFD4],esi
       mov       [ebp+0FFD8],ecx
       lea       ecx,[ebp+0FFD4]
       call      dword ptr ds:[0FD08]
       cmp       dword ptr [ebp+0FFD0],691BF863
       je        short 00000D36
       call      000001A0
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       xor       edx,edx
       xor       esi,esi
       jmp       near ptr 00000C9A
       call      dword ptr ds:[0F048]
       int       3
; Total bytes of code 375

System.Tests.Perf_DateTime.GetNow


Description of detection logic

IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small.
IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline.
IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small.
IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small.
IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline.
IsImprovementWindowed:Marked as improvement because 403.1997706583999 < 407.3138241337036.
IsChangePoint: Marked as a change because one of 7/31/2022 12:39:41 PM, 8/5/2022 10:47:59 PM falls between 7/28/2022 9:13:34 AM and 8/5/2022 10:47:59 PM.
IsImprovementStdDev: Marked as improvement because 32.825921925562454 (T) = (0 -399.1672393466197) / Math.Sqrt((5.56700979331188 / (299)) + (28.031087523557137 / (33))) is greater than 1.9671786747533526 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (33) - 2, .975) and 0.0711658286229512 = (429.7508119827588 - 399.1672393466197) / 429.7508119827588 is greater than 0.05.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Tests.Perf_DateTime.GetNow()
       mov       ecx,edx
       call      dword ptr ds:[3240]
       ret
; Total bytes of code 9
; System.DateTime.get_Now()
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       sub       esp,48
       mov       [ebp+0FFAC],ecx
       lea       eax,[ebp+0FFD8]
       push      eax
       mov       eax,76D54380
       call      eax
       mov       esi,[ebp+0FFD8]
       mov       edi,[ebp+0FFDC]
       mov       ebx,ds:[1114]
       lea       ecx,[ebx+4]
       mov       eax,[ecx]
       mov       ecx,[ecx+4]
       sub       esi,eax
       sbb       edi,ecx
       cmp       dword ptr ds:[31BC],0
       jne       near ptr 000019A1
       cmp       esi,0B2D05E00
       mov       ecx,edi
       sbb       ecx,0
       jae       short 000018C9
       add       ebx,0C
       mov       ecx,[ebx]
       mov       eax,[ebx+4]
       add       ecx,esi
       adc       eax,edi
       mov       [ebp+0FFB0],ecx
       mov       [ebp+0FFB4],eax
       mov       ecx,[ebp+0FFB0]
       mov       eax,[ebp+0FFB4]
       mov       [ebp+0FFE0],ecx
       mov       [ebp+0FFE4],eax
       jmp       short 000018D2
       lea       ecx,[ebp+0FFE0]
       call      dword ptr ds:[3BD0]
       mov       ecx,[ebp+0FFE0]
       mov       edx,[ebp+0FFE4]
       mov       [ebp+0FFD0],ecx
       mov       [ebp+0FFD4],edx
       push      dword ptr [ebp+0FFD4]
       push      dword ptr [ebp+0FFD0]
       lea       ecx,[ebp+0FFE8]
       lea       edx,[ebp+0FFF0]
       call      dword ptr ds:[0D948]
       mov       eax,[ebp+0FFE8]
       mov       edx,[ebp+0FFEC]
       mov       ecx,[ebp+0FFD0]
       mov       esi,[ebp+0FFD4]
       and       ecx,0FFFFFFFF
       and       esi,3FFFFFFF
       add       eax,ecx
       adc       esi,edx
       cmp       eax,0F4374000
       mov       edx,esi
       sbb       edx,2BCA2875
       jae       short 0000196C
       cmp       byte ptr [ebp+0FFF0],0
       jne       short 00001943
       or        eax,0
       or        esi,80000000
       mov       [ebp+0FFB8],eax
       mov       [ebp+0FFBC],esi
       mov       esi,[ebp+0FFAC]
       mov       eax,[ebp+0FFB8]
       mov       [esi],eax
       mov       eax,[ebp+0FFBC]
       mov       [esi+4],eax
       lea       esp,[ebp+0FFF4]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       or        eax,0
       mov       edx,esi
       or        edx,0C0000000
       mov       [ebp+0FFC0],eax
       mov       [ebp+0FFC4],edx
       mov       esi,[ebp+0FFAC]
       mov       eax,esi
       mov       edx,[ebp+0FFC0]
       mov       [eax],edx
       mov       edx,[ebp+0FFC4]
       mov       [eax+4],edx
       lea       esp,[ebp+0FFF4]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       test      esi,esi
       jl        short 0000197C
       mov       eax,0F4373FFF
       mov       edx,0ABCA2875
       jmp       short 00001983
       xor       eax,eax
       mov       edx,80000000
       mov       [ebp+0FFC8],eax
       mov       [ebp+0FFCC],edx
       mov       esi,[ebp+0FFAC]
       mov       eax,esi
       mov       edx,[ebp+0FFC8]
       mov       [eax],edx
       mov       edx,[ebp+0FFCC]
       mov       [eax+4],edx
       lea       esp,[ebp+0FFF4]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       call      0000A570
       jmp       near ptr 0000189C
; Total bytes of code 331

Compare Jit Disasm

; System.Tests.Perf_DateTime.GetNow()
       mov       ecx,edx
       call      dword ptr ds:[9828]
       ret
; Total bytes of code 9
; System.DateTime.get_Now()
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       sub       esp,48
       mov       [ebp+0FFAC],ecx
       lea       eax,[ebp+0FFD8]
       push      eax
       mov       eax,760C3610
       call      eax
       mov       esi,[ebp+0FFD8]
       mov       edi,[ebp+0FFDC]
       mov       ebx,ds:[1114]
       lea       ecx,[ebx+4]
       mov       eax,[ecx]
       mov       ecx,[ecx+4]
       sub       esi,eax
       sbb       edi,ecx
       cmp       dword ptr ds:[21BC],0
       jne       near ptr 00001871
       cmp       esi,0B2D05E00
       mov       ecx,edi
       sbb       ecx,0
       jae       short 00001799
       add       ebx,0C
       mov       ecx,[ebx]
       mov       eax,[ebx+4]
       add       ecx,esi
       adc       eax,edi
       mov       [ebp+0FFB0],ecx
       mov       [ebp+0FFB4],eax
       mov       ecx,[ebp+0FFB0]
       mov       eax,[ebp+0FFB4]
       mov       [ebp+0FFE0],ecx
       mov       [ebp+0FFE4],eax
       jmp       short 000017A2
       lea       ecx,[ebp+0FFE0]
       call      dword ptr ds:[0B5B8]
       mov       ecx,[ebp+0FFE0]
       mov       edx,[ebp+0FFE4]
       mov       [ebp+0FFD0],ecx
       mov       [ebp+0FFD4],edx
       push      dword ptr [ebp+0FFD4]
       push      dword ptr [ebp+0FFD0]
       lea       ecx,[ebp+0FFE8]
       lea       edx,[ebp+0FFF0]
       call      dword ptr ds:[1948]
       mov       eax,[ebp+0FFE8]
       mov       edx,[ebp+0FFEC]
       mov       ecx,[ebp+0FFD0]
       mov       esi,[ebp+0FFD4]
       and       ecx,0FFFFFFFF
       and       esi,3FFFFFFF
       add       eax,ecx
       adc       esi,edx
       cmp       eax,0F4374000
       mov       edx,esi
       sbb       edx,2BCA2875
       jae       short 0000183C
       cmp       byte ptr [ebp+0FFF0],0
       jne       short 00001813
       or        eax,0
       or        esi,80000000
       mov       [ebp+0FFB8],eax
       mov       [ebp+0FFBC],esi
       mov       esi,[ebp+0FFAC]
       mov       eax,[ebp+0FFB8]
       mov       [esi],eax
       mov       eax,[ebp+0FFBC]
       mov       [esi+4],eax
       lea       esp,[ebp+0FFF4]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       or        eax,0
       mov       edx,esi
       or        edx,0C0000000
       mov       [ebp+0FFC0],eax
       mov       [ebp+0FFC4],edx
       mov       esi,[ebp+0FFAC]
       mov       eax,esi
       mov       edx,[ebp+0FFC0]
       mov       [eax],edx
       mov       edx,[ebp+0FFC4]
       mov       [eax+4],edx
       lea       esp,[ebp+0FFF4]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       test      esi,esi
       jl        short 0000184C
       mov       eax,0F4373FFF
       mov       edx,0ABCA2875
       jmp       short 00001853
       xor       eax,eax
       mov       edx,80000000
       mov       [ebp+0FFC8],eax
       mov       [ebp+0FFCC],edx
       mov       esi,[ebp+0FFAC]
       mov       eax,esi
       mov       edx,[ebp+0FFC8]
       mov       [eax],edx
       mov       edx,[ebp+0FFCC]
       mov       [eax+4],edx
       lea       esp,[ebp+0FFF4]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       call      00007290
       jmp       near ptr 0000176C
; Total bytes of code 331

System.Tests.Perf_DateTime.ToString(format: "s")


Description of detection logic

IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small.
IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline.
IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small.
IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small.
IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline.
IsImprovementWindowed:Marked as improvement because 326.7250125494022 < 337.9369573299744.
IsChangePoint: Marked as a change because one of 7/31/2022 12:39:41 PM, 8/5/2022 10:47:59 PM falls between 7/28/2022 9:13:34 AM and 8/5/2022 10:47:59 PM.
IsImprovementStdDev: Marked as improvement because 45.25285621773808 (T) = (0 -330.053027014699) / Math.Sqrt((7.069509875980274 / (299)) + (7.3091331240524156 / (34))) is greater than 1.9671567996108528 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (34) - 2, .975) and 0.06277111716640647 = (352.15840341670355 - 330.053027014699) / 352.15840341670355 is greater than 0.05.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Tests.Perf_DateTime.ToString(System.String)
       push      ebp
       mov       ebp,esp
       sub       esp,8
       add       ecx,4
       mov       eax,[ecx]
       mov       ecx,[ecx+4]
       mov       [ebp+0FFF8],eax
       mov       [ebp+0FFFC],ecx
       push      dword ptr [ebp+0FFFC]
       push      dword ptr [ebp+0FFF8]
       push      80000000
       push      0
       mov       ecx,edx
       xor       edx,edx
       call      dword ptr ds:[0BD38]
       mov       esp,ebp
       pop       ebp
       ret
; Total bytes of code 47
; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       sub       esp,28
       vxorps    xmm4,xmm4,xmm4
       vmovdqu   xmmword ptr [ebp+0FFD4],xmm4
       vmovdqu   xmmword ptr [ebp+0FFE4],xmm4
       mov       [ebp+0FFF4],esp
       mov       dword ptr [ebp+0FFD0],0B785F7D
       mov       eax,edx
       test      ecx,ecx
       je        short 000012A3
       cmp       dword ptr [ecx+4],1
       jne       short 000012A3
       movzx     edx,word ptr [ecx+8]
       or        edx,20
       cmp       edx,6F
       je        near ptr 00001323
       cmp       edx,72
       jne       short 000012A3
       mov       ecx,1D
       call      0000E8B8
       mov       esi,eax
       lea       ecx,[esi+8]
       mov       eax,[esi+4]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       push      eax
       push      ecx
       lea       ecx,[ebp+0FFDC]
       call      dword ptr ds:[0BE40]
       mov       eax,esi
       cmp       dword ptr [ebp+0FFD0],0B785F7D
       je        short 0000129A
       call      00001790
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       test      [esp],esp
       mov       edx,esp
       sub       edx,200
       mov       esp,edx
       lea       edx,[esp]
       mov       [ebp+0FFF4],esp
       mov       [ebp+0FFD4],edx
       mov       dword ptr [ebp+0FFD8],100
       mov       edx,[ebp+0FFD4]
       mov       esi,[ebp+0FFD8]
       xor       edi,edi
       mov       [ebp+0FFE4],edi
       mov       [ebp+0FFEC],edx
       mov       [ebp+0FFF0],esi
       mov       [ebp+0FFE8],edi
       test      ecx,ecx
       je        near ptr 00001387
       lea       edx,[ecx+8]
       mov       esi,[ecx+4]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      esi
       push      edx
       mov       ecx,eax
       call      dword ptr ds:[5978]
       mov       ecx,eax
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       lea       edx,[ebp+0FFE4]
       call      dword ptr ds:[0BD80]
       lea       ecx,[ebp+0FFE4]
       call      dword ptr ds:[0F420]
       cmp       dword ptr [ebp+0FFD0],0B785F7D
       je        short 0000131A
       call      00001790
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       test      [esp],esp
       mov       ecx,esp
       sub       ecx,44
       mov       esp,ecx
       lea       ecx,[esp]
       mov       [ebp+0FFF4],esp
       mov       [ebp+0FFD4],ecx
       mov       dword ptr [ebp+0FFD8],21
       mov       esi,[ebp+0FFD4]
       mov       edi,[ebp+0FFD8]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       push      edi
       push      esi
       lea       ecx,[ebp+0FFE0]
       call      dword ptr ds:[0BE28]
       mov       ecx,[ebp+0FFE0]
       cmp       ecx,edi
       ja        short 00001390
       mov       [ebp+0FFD4],esi
       mov       [ebp+0FFD8],ecx
       lea       ecx,[ebp+0FFD4]
       call      dword ptr ds:[1D08]
       cmp       dword ptr [ebp+0FFD0],0B785F7D
       je        short 0000137E
       call      00001790
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       xor       edx,edx
       xor       esi,esi
       jmp       near ptr 000012E2
       call      dword ptr ds:[0B3D8]
       int       3
; Total bytes of code 375

Compare Jit Disasm

; System.Tests.Perf_DateTime.ToString(System.String)
       push      ebp
       mov       ebp,esp
       sub       esp,8
       add       ecx,4
       mov       eax,[ecx]
       mov       ecx,[ecx+4]
       mov       [ebp+0FFF8],eax
       mov       [ebp+0FFFC],ecx
       push      dword ptr [ebp+0FFFC]
       push      dword ptr [ebp+0FFF8]
       push      80000000
       push      0
       mov       ecx,edx
       xor       edx,edx
       call      dword ptr ds:[0FDF8]
       mov       esp,ebp
       pop       ebp
       ret
; Total bytes of code 47
; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       sub       esp,28
       vxorps    xmm4,xmm4,xmm4
       vmovdqu   xmmword ptr [ebp+0FFD4],xmm4
       vmovdqu   xmmword ptr [ebp+0FFE4],xmm4
       mov       [ebp+0FFF4],esp
       mov       dword ptr [ebp+0FFD0],88E0FB66
       mov       eax,edx
       test      ecx,ecx
       je        short 0000112B
       cmp       dword ptr [ecx+4],1
       jne       short 0000112B
       movzx     edx,word ptr [ecx+8]
       or        edx,20
       cmp       edx,6F
       je        near ptr 000011AB
       cmp       edx,72
       jne       short 0000112B
       mov       ecx,1D
       call      0000E8B8
       mov       esi,eax
       lea       ecx,[esi+8]
       mov       eax,[esi+4]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       push      eax
       push      ecx
       lea       ecx,[ebp+0FFDC]
       call      dword ptr ds:[0FF00]
       mov       eax,esi
       cmp       dword ptr [ebp+0FFD0],88E0FB66
       je        short 00001122
       call      000001A0
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       test      [esp],esp
       mov       edx,esp
       sub       edx,200
       mov       esp,edx
       lea       edx,[esp]
       mov       [ebp+0FFF4],esp
       mov       [ebp+0FFD4],edx
       mov       dword ptr [ebp+0FFD8],100
       mov       edx,[ebp+0FFD4]
       mov       esi,[ebp+0FFD8]
       xor       edi,edi
       mov       [ebp+0FFE4],edi
       mov       [ebp+0FFEC],edx
       mov       [ebp+0FFF0],esi
       mov       [ebp+0FFE8],edi
       test      ecx,ecx
       je        near ptr 0000120F
       lea       edx,[ecx+8]
       mov       esi,[ecx+4]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      esi
       push      edx
       mov       ecx,eax
       call      dword ptr ds:[9978]
       mov       ecx,eax
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       lea       edx,[ebp+0FFE4]
       call      dword ptr ds:[0FE40]
       lea       ecx,[ebp+0FFE4]
       call      dword ptr ds:[3420]
       cmp       dword ptr [ebp+0FFD0],88E0FB66
       je        short 000011A2
       call      000001A0
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       test      [esp],esp
       mov       ecx,esp
       sub       ecx,44
       mov       esp,ecx
       lea       ecx,[esp]
       mov       [ebp+0FFF4],esp
       mov       [ebp+0FFD4],ecx
       mov       dword ptr [ebp+0FFD8],21
       mov       esi,[ebp+0FFD4]
       mov       edi,[ebp+0FFD8]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       push      edi
       push      esi
       lea       ecx,[ebp+0FFE0]
       call      dword ptr ds:[0FEE8]
       mov       ecx,[ebp+0FFE0]
       cmp       ecx,edi
       ja        short 00001218
       mov       [ebp+0FFD4],esi
       mov       [ebp+0FFD8],ecx
       lea       ecx,[ebp+0FFD4]
       call      dword ptr ds:[0FD08]
       cmp       dword ptr [ebp+0FFD0],88E0FB66
       je        short 00001206
       call      000001A0
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       xor       edx,edx
       xor       esi,esi
       jmp       near ptr 0000116A
       call      dword ptr ds:[0F048]
       int       3
; Total bytes of code 375

System.Tests.Perf_DateTime.ToString(format: null)


Description of detection logic

IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small.
IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline.
IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small.
IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small.
IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline.
IsImprovementWindowed:Marked as improvement because 331.57210974839927 < 345.7589807278231.
IsChangePoint: Marked as a change because one of 7/6/2022 12:32:56 PM, 7/31/2022 12:39:41 PM, 8/5/2022 10:47:59 PM falls between 7/28/2022 9:13:34 AM and 8/5/2022 10:47:59 PM.
IsImprovementStdDev: Marked as improvement because 40.76364269919337 (T) = (0 -336.0331737095988) / Math.Sqrt((26.087209617636248 / (299)) + (5.509670053626411 / (34))) is greater than 1.9671567996108528 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (34) - 2, .975) and 0.05710981401384802 = (356.3863307773723 - 336.0331737095988) / 356.3863307773723 is greater than 0.05.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Tests.Perf_DateTime.ToString(System.String)
       push      ebp
       mov       ebp,esp
       sub       esp,8
       add       ecx,4
       mov       eax,[ecx]
       mov       ecx,[ecx+4]
       mov       [ebp+0FFF8],eax
       mov       [ebp+0FFFC],ecx
       push      dword ptr [ebp+0FFFC]
       push      dword ptr [ebp+0FFF8]
       push      80000000
       push      0
       mov       ecx,edx
       xor       edx,edx
       call      dword ptr ds:[0BD38]
       mov       esp,ebp
       pop       ebp
       ret
; Total bytes of code 47
; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       sub       esp,28
       vxorps    xmm4,xmm4,xmm4
       vmovdqu   xmmword ptr [ebp+0FFD4],xmm4
       vmovdqu   xmmword ptr [ebp+0FFE4],xmm4
       mov       [ebp+0FFF4],esp
       mov       dword ptr [ebp+0FFD0],22E67407
       mov       eax,edx
       test      ecx,ecx
       je        short 000012A3
       cmp       dword ptr [ecx+4],1
       jne       short 000012A3
       movzx     edx,word ptr [ecx+8]
       or        edx,20
       cmp       edx,6F
       je        near ptr 00001323
       cmp       edx,72
       jne       short 000012A3
       mov       ecx,1D
       call      0000E8B8
       mov       esi,eax
       lea       ecx,[esi+8]
       mov       eax,[esi+4]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       push      eax
       push      ecx
       lea       ecx,[ebp+0FFDC]
       call      dword ptr ds:[0BE40]
       mov       eax,esi
       cmp       dword ptr [ebp+0FFD0],22E67407
       je        short 0000129A
       call      00001790
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       test      [esp],esp
       mov       edx,esp
       sub       edx,200
       mov       esp,edx
       lea       edx,[esp]
       mov       [ebp+0FFF4],esp
       mov       [ebp+0FFD4],edx
       mov       dword ptr [ebp+0FFD8],100
       mov       edx,[ebp+0FFD4]
       mov       esi,[ebp+0FFD8]
       xor       edi,edi
       mov       [ebp+0FFE4],edi
       mov       [ebp+0FFEC],edx
       mov       [ebp+0FFF0],esi
       mov       [ebp+0FFE8],edi
       test      ecx,ecx
       je        near ptr 00001387
       lea       edx,[ecx+8]
       mov       esi,[ecx+4]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      esi
       push      edx
       mov       ecx,eax
       call      dword ptr ds:[5978]
       mov       ecx,eax
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       lea       edx,[ebp+0FFE4]
       call      dword ptr ds:[0BD80]
       lea       ecx,[ebp+0FFE4]
       call      dword ptr ds:[0F420]
       cmp       dword ptr [ebp+0FFD0],22E67407
       je        short 0000131A
       call      00001790
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       test      [esp],esp
       mov       ecx,esp
       sub       ecx,44
       mov       esp,ecx
       lea       ecx,[esp]
       mov       [ebp+0FFF4],esp
       mov       [ebp+0FFD4],ecx
       mov       dword ptr [ebp+0FFD8],21
       mov       esi,[ebp+0FFD4]
       mov       edi,[ebp+0FFD8]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       push      edi
       push      esi
       lea       ecx,[ebp+0FFE0]
       call      dword ptr ds:[0BE28]
       mov       ecx,[ebp+0FFE0]
       cmp       ecx,edi
       ja        short 00001390
       mov       [ebp+0FFD4],esi
       mov       [ebp+0FFD8],ecx
       lea       ecx,[ebp+0FFD4]
       call      dword ptr ds:[1D08]
       cmp       dword ptr [ebp+0FFD0],22E67407
       je        short 0000137E
       call      00001790
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       xor       edx,edx
       xor       esi,esi
       jmp       near ptr 000012E2
       call      dword ptr ds:[0B3D8]
       int       3
; Total bytes of code 375

Compare Jit Disasm

; System.Tests.Perf_DateTime.ToString(System.String)
       push      ebp
       mov       ebp,esp
       sub       esp,8
       add       ecx,4
       mov       eax,[ecx]
       mov       ecx,[ecx+4]
       mov       [ebp+0FFF8],eax
       mov       [ebp+0FFFC],ecx
       push      dword ptr [ebp+0FFFC]
       push      dword ptr [ebp+0FFF8]
       push      80000000
       push      0
       mov       ecx,edx
       xor       edx,edx
       call      dword ptr ds:[0FDF8]
       mov       esp,ebp
       pop       ebp
       ret
; Total bytes of code 47
; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       sub       esp,28
       vxorps    xmm4,xmm4,xmm4
       vmovdqu   xmmword ptr [ebp+0FFD4],xmm4
       vmovdqu   xmmword ptr [ebp+0FFE4],xmm4
       mov       [ebp+0FFF4],esp
       mov       dword ptr [ebp+0FFD0],0EF2C975B
       mov       eax,edx
       test      ecx,ecx
       je        short 00001043
       cmp       dword ptr [ecx+4],1
       jne       short 00001043
       movzx     edx,word ptr [ecx+8]
       or        edx,20
       cmp       edx,6F
       je        near ptr 000010C3
       cmp       edx,72
       jne       short 00001043
       mov       ecx,1D
       call      0000E8B8
       mov       esi,eax
       lea       ecx,[esi+8]
       mov       eax,[esi+4]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       push      eax
       push      ecx
       lea       ecx,[ebp+0FFDC]
       call      dword ptr ds:[0FF00]
       mov       eax,esi
       cmp       dword ptr [ebp+0FFD0],0EF2C975B
       je        short 0000103A
       call      000001A0
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       test      [esp],esp
       mov       edx,esp
       sub       edx,200
       mov       esp,edx
       lea       edx,[esp]
       mov       [ebp+0FFF4],esp
       mov       [ebp+0FFD4],edx
       mov       dword ptr [ebp+0FFD8],100
       mov       edx,[ebp+0FFD4]
       mov       esi,[ebp+0FFD8]
       xor       edi,edi
       mov       [ebp+0FFE4],edi
       mov       [ebp+0FFEC],edx
       mov       [ebp+0FFF0],esi
       mov       [ebp+0FFE8],edi
       test      ecx,ecx
       je        near ptr 00001127
       lea       edx,[ecx+8]
       mov       esi,[ecx+4]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      esi
       push      edx
       mov       ecx,eax
       call      dword ptr ds:[9978]
       mov       ecx,eax
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       lea       edx,[ebp+0FFE4]
       call      dword ptr ds:[0FE40]
       lea       ecx,[ebp+0FFE4]
       call      dword ptr ds:[3420]
       cmp       dword ptr [ebp+0FFD0],0EF2C975B
       je        short 000010BA
       call      000001A0
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       test      [esp],esp
       mov       ecx,esp
       sub       ecx,44
       mov       esp,ecx
       lea       ecx,[esp]
       mov       [ebp+0FFF4],esp
       mov       [ebp+0FFD4],ecx
       mov       dword ptr [ebp+0FFD8],21
       mov       esi,[ebp+0FFD4]
       mov       edi,[ebp+0FFD8]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       push      edi
       push      esi
       lea       ecx,[ebp+0FFE0]
       call      dword ptr ds:[0FEE8]
       mov       ecx,[ebp+0FFE0]
       cmp       ecx,edi
       ja        short 00001130
       mov       [ebp+0FFD4],esi
       mov       [ebp+0FFD8],ecx
       lea       ecx,[ebp+0FFD4]
       call      dword ptr ds:[0FD08]
       cmp       dword ptr [ebp+0FFD0],0EF2C975B
       je        short 0000111E
       call      000001A0
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       xor       edx,edx
       xor       esi,esi
       jmp       near ptr 00001082
       call      dword ptr ds:[0F048]
       int       3
; Total bytes of code 375

Docs

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

@performanceautofiler
Copy link
Author

performanceautofiler bot commented Aug 9, 2022

Run Information

Architecture x86
OS Windows 10.0.18362
Baseline ec5e8b5fac0ca3524c01b826a048b0b293b63a7d
Compare 3605700d507d52716ed8750dac35d34dc45f0e3d
Diff Diff

Improvements in System.Tests.Perf_DateTimeOffset

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
ToString - Duration of single invocation 370.44 ns 347.69 ns 0.94 0.00 False 3037.714403802439 2900.6254781792513 0.9548710288723695 Trace Trace
ToString - Duration of single invocation 130.92 ns 121.37 ns 0.93 0.00 False 849.7634244422942 812.7413929149882 0.9564325429143955 Trace Trace

graph
graph
Test Report

Repro

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

Payloads

Baseline
Compare

Histogram

System.Tests.Perf_DateTimeOffset.ToString(format: "G")


Description of detection logic

IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small.
IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline.
IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small.
IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small.
IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline.
IsImprovementWindowed:Marked as improvement because 347.69158461677426 < 354.88094644978236.
IsChangePoint: Marked as a change because one of 7/6/2022 12:32:56 PM, 7/31/2022 12:39:41 PM, 8/5/2022 10:47:59 PM falls between 7/28/2022 9:13:34 AM and 8/5/2022 10:47:59 PM.
IsImprovementStdDev: Marked as improvement because 26.941433392349023 (T) = (0 -350.6059063332358) / Math.Sqrt((25.898139050699122 / (299)) + (12.932661880966196 / (31))) is greater than 1.9672228266464409 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (31) - 2, .975) and 0.05172090076545369 = (369.72860270383046 - 350.6059063332358) / 369.72860270383046 is greater than 0.05.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Tests.Perf_DateTimeOffset.ToString(System.String)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       sub       esp,20
       mov       esi,edx
       cmp       [ecx],cl
       lea       edi,[ecx+4]
       lea       edx,[ebp+0FFF0]
       mov       ecx,edi
       call      dword ptr ds:[0D900]
       movsx     eax,word ptr [edi]
       mov       ecx,3C
       imul      ecx
       mov       [ebp+0FFD8],eax
       mov       [ebp+0FFDC],edx
       mov       eax,[ebp+0FFD8]
       mov       edx,[ebp+0FFDC]
       cmp       eax,0BF94D5E6
       mov       ecx,edx
       sbb       ecx,0D6
       jge       short 0000112B
       cmp       eax,406B2A1B
       mov       ecx,edx
       sbb       ecx,0FFFFFF29
       jl        short 0000112B
       push      edx
       push      eax
       push      0
       push      989680
       call      00001260
       mov       [ebp+0FFE0],eax
       mov       [ebp+0FFE4],edx
       mov       ecx,[ebp+0FFE0]
       mov       edx,[ebp+0FFE4]
       mov       [ebp+0FFE8],ecx
       mov       [ebp+0FFEC],edx
       push      dword ptr [ebp+0FFF4]
       push      dword ptr [ebp+0FFF0]
       push      dword ptr [ebp+0FFEC]
       push      dword ptr [ebp+0FFE8]
       mov       ecx,esi
       xor       edx,edx
       call      dword ptr ds:[0BD38]
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret
       call      dword ptr ds:[0B5B8]
       int       3
; Total bytes of code 146
; System.DateTimeOffset.get_ClockDateTime()
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       sub       esp,30
       mov       esi,edx
       lea       eax,[ecx+4]
       mov       edx,[eax]
       mov       eax,[eax+4]
       mov       [ebp+0FFF0],edx
       mov       [ebp+0FFF4],eax
       movsx     eax,word ptr [ecx]
       mov       ecx,3C
       imul      ecx
       mov       [ebp+0FFC8],eax
       mov       [ebp+0FFCC],edx
       mov       eax,[ebp+0FFC8]
       mov       edx,[ebp+0FFCC]
       cmp       eax,0BF94D5E6
       mov       ecx,edx
       sbb       ecx,0D6
       jge       near ptr 000012D2
       cmp       eax,406B2A1B
       mov       ecx,edx
       sbb       ecx,0FFFFFF29
       jl        near ptr 000012D2
       push      edx
       push      eax
       push      0
       push      989680
       call      00001260
       mov       [ebp+0FFE0],eax
       mov       [ebp+0FFE4],edx
       mov       eax,[ebp+0FFF0]
       mov       edx,[ebp+0FFF4]
       mov       [ebp+0FFD8],eax
       mov       [ebp+0FFDC],edx
       mov       eax,[ebp+0FFD8]
       mov       edx,[ebp+0FFDC]
       and       eax,0FFFFFFFF
       and       edx,3FFFFFFF
       add       eax,[ebp+0FFE0]
       adc       edx,[ebp+0FFE4]
       cmp       eax,0F4374000
       mov       ecx,edx
       sbb       ecx,2BCA2875
       jae       short 000012D9
       mov       ecx,[ebp+0FFD8]
       mov       edi,[ebp+0FFDC]
       and       ecx,0
       and       edi,0C0000000
       or        eax,ecx
       or        edx,edi
       mov       [ebp+0FFD0],eax
       mov       [ebp+0FFD4],edx
       mov       eax,[ebp+0FFD0]
       mov       edx,[ebp+0FFD4]
       and       eax,0FFFFFFFF
       and       edx,3FFFFFFF
       mov       ecx,eax
       mov       edi,edx
       cmp       ecx,0F4374000
       sbb       edi,2BCA2875
       jae       short 000012E5
       mov       [ebp+0FFE8],eax
       mov       [ebp+0FFEC],edx
       mov       eax,[ebp+0FFE8]
       mov       [esi],eax
       mov       eax,[ebp+0FFEC]
       mov       [esi+4],eax
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret
       call      dword ptr ds:[0B5B8]
       int       3
       mov       ecx,1
       call      dword ptr ds:[1558]
       int       3
       call      dword ptr ds:[14F8]
       int       3
; Total bytes of code 260
; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       sub       esp,28
       vxorps    xmm4,xmm4,xmm4
       vmovdqu   xmmword ptr [ebp+0FFD4],xmm4
       vmovdqu   xmmword ptr [ebp+0FFE4],xmm4
       mov       [ebp+0FFF4],esp
       mov       dword ptr [ebp+0FFD0],6F2DF839
       mov       eax,edx
       test      ecx,ecx
       je        short 00001403
       cmp       dword ptr [ecx+4],1
       jne       short 00001403
       movzx     edx,word ptr [ecx+8]
       or        edx,20
       cmp       edx,6F
       je        near ptr 00001483
       cmp       edx,72
       jne       short 00001403
       mov       ecx,1D
       call      0000E8B8
       mov       esi,eax
       lea       ecx,[esi+8]
       mov       eax,[esi+4]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       push      eax
       push      ecx
       lea       ecx,[ebp+0FFDC]
       call      dword ptr ds:[0BE40]
       mov       eax,esi
       cmp       dword ptr [ebp+0FFD0],6F2DF839
       je        short 000013FA
       call      00001790
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       test      [esp],esp
       mov       edx,esp
       sub       edx,200
       mov       esp,edx
       lea       edx,[esp]
       mov       [ebp+0FFF4],esp
       mov       [ebp+0FFD4],edx
       mov       dword ptr [ebp+0FFD8],100
       mov       edx,[ebp+0FFD4]
       mov       esi,[ebp+0FFD8]
       xor       edi,edi
       mov       [ebp+0FFE4],edi
       mov       [ebp+0FFEC],edx
       mov       [ebp+0FFF0],esi
       mov       [ebp+0FFE8],edi
       test      ecx,ecx
       je        near ptr 000014E7
       lea       edx,[ecx+8]
       mov       esi,[ecx+4]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      esi
       push      edx
       mov       ecx,eax
       call      dword ptr ds:[5978]
       mov       ecx,eax
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       lea       edx,[ebp+0FFE4]
       call      dword ptr ds:[0BD80]
       lea       ecx,[ebp+0FFE4]
       call      dword ptr ds:[0F420]
       cmp       dword ptr [ebp+0FFD0],6F2DF839
       je        short 0000147A
       call      00001790
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       test      [esp],esp
       mov       ecx,esp
       sub       ecx,44
       mov       esp,ecx
       lea       ecx,[esp]
       mov       [ebp+0FFF4],esp
       mov       [ebp+0FFD4],ecx
       mov       dword ptr [ebp+0FFD8],21
       mov       esi,[ebp+0FFD4]
       mov       edi,[ebp+0FFD8]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       push      edi
       push      esi
       lea       ecx,[ebp+0FFE0]
       call      dword ptr ds:[0BE28]
       mov       ecx,[ebp+0FFE0]
       cmp       ecx,edi
       ja        short 000014F0
       mov       [ebp+0FFD4],esi
       mov       [ebp+0FFD8],ecx
       lea       ecx,[ebp+0FFD4]
       call      dword ptr ds:[1D08]
       cmp       dword ptr [ebp+0FFD0],6F2DF839
       je        short 000014DE
       call      00001790
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       xor       edx,edx
       xor       esi,esi
       jmp       near ptr 00001442
       call      dword ptr ds:[0B3D8]
       int       3
; Total bytes of code 375

Compare Jit Disasm

; System.Tests.Perf_DateTimeOffset.ToString(System.String)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       sub       esp,20
       mov       esi,edx
       cmp       [ecx],cl
       lea       edi,[ecx+4]
       lea       edx,[ebp+0FFF0]
       mov       ecx,edi
       call      dword ptr ds:[0F900]
       movsx     eax,word ptr [edi]
       mov       ecx,3C
       imul      ecx
       mov       [ebp+0FFD8],eax
       mov       [ebp+0FFDC],edx
       mov       eax,[ebp+0FFD8]
       mov       edx,[ebp+0FFDC]
       cmp       eax,0BF94D5E6
       mov       ecx,edx
       sbb       ecx,0D6
       jge       short 00000FCB
       cmp       eax,406B2A1B
       mov       ecx,edx
       sbb       ecx,0FFFFFF29
       jl        short 00000FCB
       push      edx
       push      eax
       push      0
       push      989680
       call      00002A80
       mov       [ebp+0FFE0],eax
       mov       [ebp+0FFE4],edx
       mov       ecx,[ebp+0FFE0]
       mov       edx,[ebp+0FFE4]
       mov       [ebp+0FFE8],ecx
       mov       [ebp+0FFEC],edx
       push      dword ptr [ebp+0FFF4]
       push      dword ptr [ebp+0FFF0]
       push      dword ptr [ebp+0FFEC]
       push      dword ptr [ebp+0FFE8]
       mov       ecx,esi
       xor       edx,edx
       call      dword ptr ds:[0FDF8]
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret
       call      dword ptr ds:[0F228]
       int       3
; Total bytes of code 146
; System.DateTimeOffset.get_ClockDateTime()
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       sub       esp,30
       mov       esi,edx
       lea       eax,[ecx+4]
       mov       edx,[eax]
       mov       eax,[eax+4]
       mov       [ebp+0FFF0],edx
       mov       [ebp+0FFF4],eax
       movsx     eax,word ptr [ecx]
       mov       ecx,3C
       imul      ecx
       mov       [ebp+0FFC8],eax
       mov       [ebp+0FFCC],edx
       mov       eax,[ebp+0FFC8]
       mov       edx,[ebp+0FFCC]
       cmp       eax,0BF94D5E6
       mov       ecx,edx
       sbb       ecx,0D6
       jge       near ptr 00001172
       cmp       eax,406B2A1B
       mov       ecx,edx
       sbb       ecx,0FFFFFF29
       jl        near ptr 00001172
       push      edx
       push      eax
       push      0
       push      989680
       call      00002A80
       mov       [ebp+0FFE0],eax
       mov       [ebp+0FFE4],edx
       mov       eax,[ebp+0FFF0]
       mov       edx,[ebp+0FFF4]
       mov       [ebp+0FFD8],eax
       mov       [ebp+0FFDC],edx
       mov       eax,[ebp+0FFD8]
       mov       edx,[ebp+0FFDC]
       and       eax,0FFFFFFFF
       and       edx,3FFFFFFF
       add       eax,[ebp+0FFE0]
       adc       edx,[ebp+0FFE4]
       cmp       eax,0F4374000
       mov       ecx,edx
       sbb       ecx,2BCA2875
       jae       short 00001179
       mov       ecx,[ebp+0FFD8]
       mov       edi,[ebp+0FFDC]
       and       ecx,0
       and       edi,0C0000000
       or        eax,ecx
       or        edx,edi
       mov       [ebp+0FFD0],eax
       mov       [ebp+0FFD4],edx
       mov       eax,[ebp+0FFD0]
       mov       edx,[ebp+0FFD4]
       and       eax,0FFFFFFFF
       and       edx,3FFFFFFF
       mov       ecx,eax
       mov       edi,edx
       cmp       ecx,0F4374000
       sbb       edi,2BCA2875
       jae       short 00001185
       mov       [ebp+0FFE8],eax
       mov       [ebp+0FFEC],edx
       mov       eax,[ebp+0FFE8]
       mov       [esi],eax
       mov       eax,[ebp+0FFEC]
       mov       [esi+4],eax
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret
       call      dword ptr ds:[0F228]
       int       3
       mov       ecx,1
       call      dword ptr ds:[9108]
       int       3
       call      dword ptr ds:[90A8]
       int       3
; Total bytes of code 260
; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       sub       esp,28
       vxorps    xmm4,xmm4,xmm4
       vmovdqu   xmmword ptr [ebp+0FFD4],xmm4
       vmovdqu   xmmword ptr [ebp+0FFE4],xmm4
       mov       [ebp+0FFF4],esp
       mov       dword ptr [ebp+0FFD0],900D2817
       mov       eax,edx
       test      ecx,ecx
       je        short 000012A3
       cmp       dword ptr [ecx+4],1
       jne       short 000012A3
       movzx     edx,word ptr [ecx+8]
       or        edx,20
       cmp       edx,6F
       je        near ptr 00001323
       cmp       edx,72
       jne       short 000012A3
       mov       ecx,1D
       call      0000E8B8
       mov       esi,eax
       lea       ecx,[esi+8]
       mov       eax,[esi+4]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       push      eax
       push      ecx
       lea       ecx,[ebp+0FFDC]
       call      dword ptr ds:[0FF00]
       mov       eax,esi
       cmp       dword ptr [ebp+0FFD0],900D2817
       je        short 0000129A
       call      000001A0
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       test      [esp],esp
       mov       edx,esp
       sub       edx,200
       mov       esp,edx
       lea       edx,[esp]
       mov       [ebp+0FFF4],esp
       mov       [ebp+0FFD4],edx
       mov       dword ptr [ebp+0FFD8],100
       mov       edx,[ebp+0FFD4]
       mov       esi,[ebp+0FFD8]
       xor       edi,edi
       mov       [ebp+0FFE4],edi
       mov       [ebp+0FFEC],edx
       mov       [ebp+0FFF0],esi
       mov       [ebp+0FFE8],edi
       test      ecx,ecx
       je        near ptr 00001387
       lea       edx,[ecx+8]
       mov       esi,[ecx+4]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      esi
       push      edx
       mov       ecx,eax
       call      dword ptr ds:[9978]
       mov       ecx,eax
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       lea       edx,[ebp+0FFE4]
       call      dword ptr ds:[0FE40]
       lea       ecx,[ebp+0FFE4]
       call      dword ptr ds:[3420]
       cmp       dword ptr [ebp+0FFD0],900D2817
       je        short 0000131A
       call      000001A0
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       test      [esp],esp
       mov       ecx,esp
       sub       ecx,44
       mov       esp,ecx
       lea       ecx,[esp]
       mov       [ebp+0FFF4],esp
       mov       [ebp+0FFD4],ecx
       mov       dword ptr [ebp+0FFD8],21
       mov       esi,[ebp+0FFD4]
       mov       edi,[ebp+0FFD8]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       push      edi
       push      esi
       lea       ecx,[ebp+0FFE0]
       call      dword ptr ds:[0FEE8]
       mov       ecx,[ebp+0FFE0]
       cmp       ecx,edi
       ja        short 00001390
       mov       [ebp+0FFD4],esi
       mov       [ebp+0FFD8],ecx
       lea       ecx,[ebp+0FFD4]
       call      dword ptr ds:[0FD08]
       cmp       dword ptr [ebp+0FFD0],900D2817
       je        short 0000137E
       call      000001A0
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       xor       edx,edx
       xor       esi,esi
       jmp       near ptr 000012E2
       call      dword ptr ds:[0F048]
       int       3
; Total bytes of code 375

System.Tests.Perf_DateTimeOffset.ToString(format: "r")


Description of detection logic

IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small.
IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline.
IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small.
IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small.
IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline.
IsImprovementWindowed:Marked as improvement because 121.37135804956681 < 124.014035576433.
IsChangePoint: Marked as a change because one of 7/31/2022 12:39:41 PM, 8/5/2022 10:47:59 PM falls between 7/28/2022 9:13:34 AM and 8/5/2022 10:47:59 PM.
IsImprovementStdDev: Marked as improvement because 76.156806258917 (T) = (0 -121.62515054961034) / Math.Sqrt((0.7340311350285157 / (299)) + (0.43696475421177794 / (34))) is greater than 1.9671567996108528 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (34) - 2, .975) and 0.07189911549664023 = (131.04733825859213 - 121.62515054961034) / 131.04733825859213 is greater than 0.05.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Tests.Perf_DateTimeOffset.ToString(System.String)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       sub       esp,20
       mov       esi,edx
       cmp       [ecx],cl
       lea       edi,[ecx+4]
       lea       edx,[ebp+0FFF0]
       mov       ecx,edi
       call      dword ptr ds:[0D900]
       movsx     eax,word ptr [edi]
       mov       ecx,3C
       imul      ecx
       mov       [ebp+0FFD8],eax
       mov       [ebp+0FFDC],edx
       mov       eax,[ebp+0FFD8]
       mov       edx,[ebp+0FFDC]
       cmp       eax,0BF94D5E6
       mov       ecx,edx
       sbb       ecx,0D6
       jge       short 00000BE3
       cmp       eax,406B2A1B
       mov       ecx,edx
       sbb       ecx,0FFFFFF29
       jl        short 00000BE3
       push      edx
       push      eax
       push      0
       push      989680
       call      00001260
       mov       [ebp+0FFE0],eax
       mov       [ebp+0FFE4],edx
       mov       ecx,[ebp+0FFE0]
       mov       edx,[ebp+0FFE4]
       mov       [ebp+0FFE8],ecx
       mov       [ebp+0FFEC],edx
       push      dword ptr [ebp+0FFF4]
       push      dword ptr [ebp+0FFF0]
       push      dword ptr [ebp+0FFEC]
       push      dword ptr [ebp+0FFE8]
       mov       ecx,esi
       xor       edx,edx
       call      dword ptr ds:[0BD38]
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret
       call      dword ptr ds:[0B5B8]
       int       3
; Total bytes of code 146
; System.DateTimeOffset.get_ClockDateTime()
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       sub       esp,30
       mov       esi,edx
       lea       eax,[ecx+4]
       mov       edx,[eax]
       mov       eax,[eax+4]
       mov       [ebp+0FFF0],edx
       mov       [ebp+0FFF4],eax
       movsx     eax,word ptr [ecx]
       mov       ecx,3C
       imul      ecx
       mov       [ebp+0FFC8],eax
       mov       [ebp+0FFCC],edx
       mov       eax,[ebp+0FFC8]
       mov       edx,[ebp+0FFCC]
       cmp       eax,0BF94D5E6
       mov       ecx,edx
       sbb       ecx,0D6
       jge       near ptr 00000D8A
       cmp       eax,406B2A1B
       mov       ecx,edx
       sbb       ecx,0FFFFFF29
       jl        near ptr 00000D8A
       push      edx
       push      eax
       push      0
       push      989680
       call      00001260
       mov       [ebp+0FFE0],eax
       mov       [ebp+0FFE4],edx
       mov       eax,[ebp+0FFF0]
       mov       edx,[ebp+0FFF4]
       mov       [ebp+0FFD8],eax
       mov       [ebp+0FFDC],edx
       mov       eax,[ebp+0FFD8]
       mov       edx,[ebp+0FFDC]
       and       eax,0FFFFFFFF
       and       edx,3FFFFFFF
       add       eax,[ebp+0FFE0]
       adc       edx,[ebp+0FFE4]
       cmp       eax,0F4374000
       mov       ecx,edx
       sbb       ecx,2BCA2875
       jae       short 00000D91
       mov       ecx,[ebp+0FFD8]
       mov       edi,[ebp+0FFDC]
       and       ecx,0
       and       edi,0C0000000
       or        eax,ecx
       or        edx,edi
       mov       [ebp+0FFD0],eax
       mov       [ebp+0FFD4],edx
       mov       eax,[ebp+0FFD0]
       mov       edx,[ebp+0FFD4]
       and       eax,0FFFFFFFF
       and       edx,3FFFFFFF
       mov       ecx,eax
       mov       edi,edx
       cmp       ecx,0F4374000
       sbb       edi,2BCA2875
       jae       short 00000D9D
       mov       [ebp+0FFE8],eax
       mov       [ebp+0FFEC],edx
       mov       eax,[ebp+0FFE8]
       mov       [esi],eax
       mov       eax,[ebp+0FFEC]
       mov       [esi+4],eax
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret
       call      dword ptr ds:[0B5B8]
       int       3
       mov       ecx,1
       call      dword ptr ds:[1558]
       int       3
       call      dword ptr ds:[14F8]
       int       3
; Total bytes of code 260
; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       sub       esp,28
       vxorps    xmm4,xmm4,xmm4
       vmovdqu   xmmword ptr [ebp+0FFD4],xmm4
       vmovdqu   xmmword ptr [ebp+0FFE4],xmm4
       mov       [ebp+0FFF4],esp
       mov       dword ptr [ebp+0FFD0],0EDE876F4
       mov       eax,edx
       test      ecx,ecx
       je        short 00000EC3
       cmp       dword ptr [ecx+4],1
       jne       short 00000EC3
       movzx     edx,word ptr [ecx+8]
       or        edx,20
       cmp       edx,6F
       je        near ptr 00000F43
       cmp       edx,72
       jne       short 00000EC3
       mov       ecx,1D
       call      0000E8B8
       mov       esi,eax
       lea       ecx,[esi+8]
       mov       eax,[esi+4]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       push      eax
       push      ecx
       lea       ecx,[ebp+0FFDC]
       call      dword ptr ds:[0BE40]
       mov       eax,esi
       cmp       dword ptr [ebp+0FFD0],0EDE876F4
       je        short 00000EBA
       call      00001790
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       test      [esp],esp
       mov       edx,esp
       sub       edx,200
       mov       esp,edx
       lea       edx,[esp]
       mov       [ebp+0FFF4],esp
       mov       [ebp+0FFD4],edx
       mov       dword ptr [ebp+0FFD8],100
       mov       edx,[ebp+0FFD4]
       mov       esi,[ebp+0FFD8]
       xor       edi,edi
       mov       [ebp+0FFE4],edi
       mov       [ebp+0FFEC],edx
       mov       [ebp+0FFF0],esi
       mov       [ebp+0FFE8],edi
       test      ecx,ecx
       je        near ptr 00000FA7
       lea       edx,[ecx+8]
       mov       esi,[ecx+4]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      esi
       push      edx
       mov       ecx,eax
       call      dword ptr ds:[5978]
       mov       ecx,eax
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       lea       edx,[ebp+0FFE4]
       call      dword ptr ds:[0BD80]
       lea       ecx,[ebp+0FFE4]
       call      dword ptr ds:[0F420]
       cmp       dword ptr [ebp+0FFD0],0EDE876F4
       je        short 00000F3A
       call      00001790
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       test      [esp],esp
       mov       ecx,esp
       sub       ecx,44
       mov       esp,ecx
       lea       ecx,[esp]
       mov       [ebp+0FFF4],esp
       mov       [ebp+0FFD4],ecx
       mov       dword ptr [ebp+0FFD8],21
       mov       esi,[ebp+0FFD4]
       mov       edi,[ebp+0FFD8]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       push      edi
       push      esi
       lea       ecx,[ebp+0FFE0]
       call      dword ptr ds:[0BE28]
       mov       ecx,[ebp+0FFE0]
       cmp       ecx,edi
       ja        short 00000FB0
       mov       [ebp+0FFD4],esi
       mov       [ebp+0FFD8],ecx
       lea       ecx,[ebp+0FFD4]
       call      dword ptr ds:[1D08]
       cmp       dword ptr [ebp+0FFD0],0EDE876F4
       je        short 00000F9E
       call      00001790
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       xor       edx,edx
       xor       esi,esi
       jmp       near ptr 00000F02
       call      dword ptr ds:[0B3D8]
       int       3
; Total bytes of code 375

Compare Jit Disasm

; System.Tests.Perf_DateTimeOffset.ToString(System.String)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       sub       esp,20
       mov       esi,edx
       cmp       [ecx],cl
       lea       edi,[ecx+4]
       lea       edx,[ebp+0FFF0]
       mov       ecx,edi
       call      dword ptr ds:[0F900]
       movsx     eax,word ptr [edi]
       mov       ecx,3C
       imul      ecx
       mov       [ebp+0FFD8],eax
       mov       [ebp+0FFDC],edx
       mov       eax,[ebp+0FFD8]
       mov       edx,[ebp+0FFDC]
       cmp       eax,0BF94D5E6
       mov       ecx,edx
       sbb       ecx,0D6
       jge       short 00000BE3
       cmp       eax,406B2A1B
       mov       ecx,edx
       sbb       ecx,0FFFFFF29
       jl        short 00000BE3
       push      edx
       push      eax
       push      0
       push      989680
       call      00002A80
       mov       [ebp+0FFE0],eax
       mov       [ebp+0FFE4],edx
       mov       ecx,[ebp+0FFE0]
       mov       edx,[ebp+0FFE4]
       mov       [ebp+0FFE8],ecx
       mov       [ebp+0FFEC],edx
       push      dword ptr [ebp+0FFF4]
       push      dword ptr [ebp+0FFF0]
       push      dword ptr [ebp+0FFEC]
       push      dword ptr [ebp+0FFE8]
       mov       ecx,esi
       xor       edx,edx
       call      dword ptr ds:[0FDF8]
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret
       call      dword ptr ds:[0F228]
       int       3
; Total bytes of code 146
; System.DateTimeOffset.get_ClockDateTime()
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       sub       esp,30
       mov       esi,edx
       lea       eax,[ecx+4]
       mov       edx,[eax]
       mov       eax,[eax+4]
       mov       [ebp+0FFF0],edx
       mov       [ebp+0FFF4],eax
       movsx     eax,word ptr [ecx]
       mov       ecx,3C
       imul      ecx
       mov       [ebp+0FFC8],eax
       mov       [ebp+0FFCC],edx
       mov       eax,[ebp+0FFC8]
       mov       edx,[ebp+0FFCC]
       cmp       eax,0BF94D5E6
       mov       ecx,edx
       sbb       ecx,0D6
       jge       near ptr 00000D8A
       cmp       eax,406B2A1B
       mov       ecx,edx
       sbb       ecx,0FFFFFF29
       jl        near ptr 00000D8A
       push      edx
       push      eax
       push      0
       push      989680
       call      00002A80
       mov       [ebp+0FFE0],eax
       mov       [ebp+0FFE4],edx
       mov       eax,[ebp+0FFF0]
       mov       edx,[ebp+0FFF4]
       mov       [ebp+0FFD8],eax
       mov       [ebp+0FFDC],edx
       mov       eax,[ebp+0FFD8]
       mov       edx,[ebp+0FFDC]
       and       eax,0FFFFFFFF
       and       edx,3FFFFFFF
       add       eax,[ebp+0FFE0]
       adc       edx,[ebp+0FFE4]
       cmp       eax,0F4374000
       mov       ecx,edx
       sbb       ecx,2BCA2875
       jae       short 00000D91
       mov       ecx,[ebp+0FFD8]
       mov       edi,[ebp+0FFDC]
       and       ecx,0
       and       edi,0C0000000
       or        eax,ecx
       or        edx,edi
       mov       [ebp+0FFD0],eax
       mov       [ebp+0FFD4],edx
       mov       eax,[ebp+0FFD0]
       mov       edx,[ebp+0FFD4]
       and       eax,0FFFFFFFF
       and       edx,3FFFFFFF
       mov       ecx,eax
       mov       edi,edx
       cmp       ecx,0F4374000
       sbb       edi,2BCA2875
       jae       short 00000D9D
       mov       [ebp+0FFE8],eax
       mov       [ebp+0FFEC],edx
       mov       eax,[ebp+0FFE8]
       mov       [esi],eax
       mov       eax,[ebp+0FFEC]
       mov       [esi+4],eax
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret
       call      dword ptr ds:[0F228]
       int       3
       mov       ecx,1
       call      dword ptr ds:[9108]
       int       3
       call      dword ptr ds:[90A8]
       int       3
; Total bytes of code 260
; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       sub       esp,28
       vxorps    xmm4,xmm4,xmm4
       vmovdqu   xmmword ptr [ebp+0FFD4],xmm4
       vmovdqu   xmmword ptr [ebp+0FFE4],xmm4
       mov       [ebp+0FFF4],esp
       mov       dword ptr [ebp+0FFD0],8DC45A1E
       mov       eax,edx
       test      ecx,ecx
       je        short 00000EC3
       cmp       dword ptr [ecx+4],1
       jne       short 00000EC3
       movzx     edx,word ptr [ecx+8]
       or        edx,20
       cmp       edx,6F
       je        near ptr 00000F43
       cmp       edx,72
       jne       short 00000EC3
       mov       ecx,1D
       call      0000E8B8
       mov       esi,eax
       lea       ecx,[esi+8]
       mov       eax,[esi+4]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       push      eax
       push      ecx
       lea       ecx,[ebp+0FFDC]
       call      dword ptr ds:[0FF00]
       mov       eax,esi
       cmp       dword ptr [ebp+0FFD0],8DC45A1E
       je        short 00000EBA
       call      000001A0
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       test      [esp],esp
       mov       edx,esp
       sub       edx,200
       mov       esp,edx
       lea       edx,[esp]
       mov       [ebp+0FFF4],esp
       mov       [ebp+0FFD4],edx
       mov       dword ptr [ebp+0FFD8],100
       mov       edx,[ebp+0FFD4]
       mov       esi,[ebp+0FFD8]
       xor       edi,edi
       mov       [ebp+0FFE4],edi
       mov       [ebp+0FFEC],edx
       mov       [ebp+0FFF0],esi
       mov       [ebp+0FFE8],edi
       test      ecx,ecx
       je        near ptr 00000FA7
       lea       edx,[ecx+8]
       mov       esi,[ecx+4]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      esi
       push      edx
       mov       ecx,eax
       call      dword ptr ds:[9978]
       mov       ecx,eax
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       lea       edx,[ebp+0FFE4]
       call      dword ptr ds:[0FE40]
       lea       ecx,[ebp+0FFE4]
       call      dword ptr ds:[3420]
       cmp       dword ptr [ebp+0FFD0],8DC45A1E
       je        short 00000F3A
       call      000001A0
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       test      [esp],esp
       mov       ecx,esp
       sub       ecx,44
       mov       esp,ecx
       lea       ecx,[esp]
       mov       [ebp+0FFF4],esp
       mov       [ebp+0FFD4],ecx
       mov       dword ptr [ebp+0FFD8],21
       mov       esi,[ebp+0FFD4]
       mov       edi,[ebp+0FFD8]
       push      dword ptr [ebp+14]
       push      dword ptr [ebp+10]
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       push      edi
       push      esi
       lea       ecx,[ebp+0FFE0]
       call      dword ptr ds:[0FEE8]
       mov       ecx,[ebp+0FFE0]
       cmp       ecx,edi
       ja        short 00000FB0
       mov       [ebp+0FFD4],esi
       mov       [ebp+0FFD8],ecx
       lea       ecx,[ebp+0FFD4]
       call      dword ptr ds:[0FD08]
       cmp       dword ptr [ebp+0FFD0],8DC45A1E
       je        short 00000F9E
       call      000001A0
       lea       esp,[ebp+0FFF8]
       pop       esi
       pop       edi
       pop       ebp
       ret       10
       xor       edx,edx
       xor       esi,esi
       jmp       near ptr 00000F02
       call      dword ptr ds:[0F048]
       int       3
; Total bytes of code 375

Docs

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

@performanceautofiler
Copy link
Author

Run Information

Architecture x86
OS Windows 10.0.18362
Baseline ec5e8b5fac0ca3524c01b826a048b0b293b63a7d
Compare 3605700d507d52716ed8750dac35d34dc45f0e3d
Diff Diff

Improvements in System.Text.Json.Tests.Perf_DateTimes

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
WriteDateTimes - Duration of single invocation 12.61 ms 11.83 ms 0.94 0.00 False 88970000 85377777.77777778 0.9596243427872067 Trace Trace
WriteDateTimes - Duration of single invocation 13.59 ms 12.72 ms 0.94 0.00 False 98090909.0909091 94496969.69696969 0.9633611368551126 Trace Trace
WriteDateTimes - Duration of single invocation 13.39 ms 12.63 ms 0.94 0.00 False 96498245.61403508 92903333.33333334 0.9627463457203114 Trace Trace
WriteDateTimes - Duration of single invocation 12.68 ms 11.90 ms 0.94 0.01 False 90494444.44444443 86846153.84615384 0.9596849218679903 Trace Trace

graph
graph
graph
graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Text.Json.Tests.Perf_DateTimes*'

Payloads

Baseline
Compare

Histogram

System.Text.Json.Tests.Perf_DateTimes.WriteDateTimes(Formatted: False, SkipValidation: True)


Description of detection logic

IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small.
IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline.
IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small.
IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small.
IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline.
IsImprovementWindowed:Marked as improvement because 11.827070952380952 < 12.021957448717949.
IsChangePoint: Marked as a change because one of 7/31/2022 12:39:41 PM, 8/5/2022 10:47:59 PM falls between 7/28/2022 9:13:34 AM and 8/5/2022 10:47:59 PM.
IsImprovementStdDev: Marked as improvement because 120.41604236318393 (T) = (0 -11845269.13919414) / Math.Sqrt((2351034411.9522853 / (299)) + (1173061522.2225537 / (34))) is greater than 1.9671567996108528 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (34) - 2, .975) and 0.062060708649789784 = (12629036.067080937 - 11845269.13919414) / 12629036.067080937 is greater than 0.05.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Text.Json.Tests.Perf_DateTimes.WriteDateTimes()
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       sub       esp,18
       xor       eax,eax
       mov       [ebp+0FFE0],eax
       mov       [ebp+0FFE4],eax
       mov       [ebp+0FFE8],eax
       mov       [ebp+0FFEC],eax
       mov       esi,ecx
       mov       edi,[esi+4]
       mov       ecx,[edi+4]
       mov       edx,[edi+8]
       test      ecx,ecx
       je        near ptr 0000F51E
       mov       eax,[ecx+4]
       cmp       [ecx+4],edx
       jb        near ptr 0000F52B
       add       ecx,8
       call      dword ptr ds:[0DC00]
       xor       ecx,ecx
       mov       [edi+8],ecx
       mov       edi,[esi+4]
       movzx     ecx,byte ptr [esi+0C]
       test      ecx,ecx
       je        short 0000F3F6
       mov       ebx,1
       jmp       short 0000F3F8
       xor       ebx,ebx
       movzx     ecx,byte ptr [esi+0D]
       test      ecx,ecx
       je        short 0000F405
       or        ebx,2
       jmp       short 0000F408
       and       ebx,0FFFFFFFD
       mov       ecx,offset MT_System.Text.Json.Utf8JsonWriter
       call      0000300C
       mov       ecx,eax
       mov       eax,ebx
       test      edi,edi
       je        near ptr 0000F532
       lea       edx,[ecx+0C]
       call      000000C8
       lea       edx,[ecx+40]
       xor       edi,edi
       mov       [edx],edi
       mov       [edx+4],edi
       mov       [edx+8],eax
       cmp       dword ptr [ecx+44],0
       jne       short 0000F440
       mov       dword ptr [ecx+44],3E8
       mov       [ebp+0FFDC],ecx
       mov       edx,5B
       call      dword ptr ds:[0D8D0]
       mov       ecx,[ebp+0FFDC]
       mov       byte ptr [ecx+21],3
       xor       edi,edi
       mov       eax,ecx
       mov       edx,[esi+8]
       cmp       edi,[edx+4]
       jae       short 0000F4B1
       mov       ebx,edi
       shl       ebx,3
       add       ebx,8
       add       edx,ebx
       push      dword ptr [edx+4]
       push      dword ptr [edx]
       mov       ecx,eax
       call      dword ptr ds:[1A98]
       inc       edi
       cmp       edi,186A0
       mov       ecx,[ebp+0FFDC]
       jl        short 0000F457
       mov       edx,[ecx+48]
       cmp       edx,2
       je        short 0000F4D1
       test      dl,1
       je        short 0000F4B6
       test      dl,2
       jne       short 0000F4A4
       mov       edx,5D
       call      dword ptr ds:[0DB28]
       mov       ecx,[ebp+0FFDC]
       mov       edx,5D
       call      dword ptr ds:[0DB40]
       jmp       short 0000F4DC
       call      000006A0
       mov       edx,5D
       call      dword ptr ds:[0DB28]
       mov       ecx,[ebp+0FFDC]
       mov       edx,5D
       call      dword ptr ds:[0DAF8]
       jmp       short 0000F4DC
       mov       edx,5D
       call      dword ptr ds:[0DAF8]
       mov       ecx,[ebp+0FFDC]
       mov       eax,[ecx+18]
       or        eax,80000000
       mov       [ecx+18],eax
       test      eax,7FFFFFFF
       je        short 0000F4F5
       dec       eax
       mov       [ecx+18],eax
       mov       byte ptr [ecx+21],4
       call      dword ptr ds:[0D840]
       mov       ecx,[ebp+0FFDC]
       call      dword ptr ds:[0A838]
       jmp       short 0000F516
       mov       ecx,[ebp+0FFDC]
       call      dword ptr ds:[0A838]
       pop       eax
       jmp       eax
       lea       esp,[ebp+0FFF4]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       test      edx,edx
       jne       short 0000F52B
       xor       ecx,ecx
       xor       edx,edx
       jmp       near ptr 0000F3D9
       call      dword ptr ds:[0B3D8]
       int       3
       mov       ecx,2E9D
       mov       edx,0B1579D0
       call      0000E360
       mov       ecx,eax
       call      dword ptr ds:[5018]
       int       3
; Total bytes of code 426
; System.SpanHelpers.ClearWithoutReferences(Byte ByRef, UIntPtr)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       test      edx,edx
       je        short 00002862
       xor       eax,eax
       mov       esi,edx
       sub       esi,1
       sbb       eax,0
       cmp       esi,16
       sbb       eax,0
       jb        short 00002867
       cmp       edx,200
       jae       near ptr 00002922
       xor       edi,edi
       mov       eax,ecx
       test      al,3
       jne       near ptr 00002A28
       mov       eax,ecx
       dec       eax
       test      al,4
       je        short 00002889
       lea       eax,[edx+0FFF0]
       sub       edx,edi
       lea       esi,[edi+10]
       xor       ebx,ebx
       mov       [ecx+edi],ebx
       mov       [ecx+edi+4],ebx
       mov       [ecx+edi+8],ebx
       mov       [ecx+edi+0C],ebx
       mov       edi,esi
       cmp       edi,eax
       jbe       short 00002820
       test      dl,8
       je        short 0000284B
       xor       eax,eax
       mov       [ecx+edi],eax
       mov       [ecx+edi+4],eax
       add       edi,8
       test      dl,4
       je        short 00002858
       xor       eax,eax
       mov       [ecx+edi],eax
       add       edi,4
       test      dl,2
       jne       short 00002878
       test      dl,1
       jne       short 00002883
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       cmp       esi,0B
       jne       short 00002893
       xor       edx,edx
       mov       [ecx],edx
       mov       [ecx+4],edx
       mov       [ecx+8],edx
       jmp       short 00002862
       mov       word ptr [ecx+edi],0
       add       edi,2
       jmp       short 0000285D
       mov       byte ptr [ecx+edi],0
       jmp       short 00002862
       xor       eax,eax
       mov       [ecx+edi],eax
       add       edi,4
       jmp       short 0000281B
       cmp       esi,15
       ja        near ptr 000027FC
       lea       eax,ds:[2A58]
       mov       eax,[eax+esi*4]
       lea       edx,ds:[27E6]
       add       eax,edx
       jmp       eax
       xor       eax,eax
       mov       [ecx],eax
       jmp       short 00002862
       xor       eax,eax
       mov       [ecx],eax
       mov       word ptr [ecx+4],0
       mov       byte ptr [ecx+6],0
       jmp       short 00002862
       xor       eax,eax
       mov       [ecx],eax
       mov       word ptr [ecx+4],0
       jmp       short 00002862
       xor       eax,eax
       mov       [ecx],eax
       mov       byte ptr [ecx+4],0
       jmp       short 00002862
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       word ptr [ecx+8],0
       jmp       near ptr 00002862
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       jmp       near ptr 00002862
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       byte ptr [ecx+8],0
       jmp       near ptr 00002862
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       word ptr [ecx+0C],0
       mov       byte ptr [ecx+0E],0
       jmp       near ptr 00002862
       call      dword ptr ds:[0B888]
       jmp       near ptr 00002862
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       [ecx+10],eax
       jmp       near ptr 00002862
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       byte ptr [ecx+10],0
       jmp       near ptr 00002862
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       [ecx+10],eax
       mov       word ptr [ecx+14],0
       jmp       near ptr 00002862
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       word ptr [ecx+8],0
       mov       byte ptr [ecx+0A],0
       jmp       near ptr 00002862
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       jmp       near ptr 00002862
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       word ptr [ecx+0C],0
       jmp       near ptr 00002862
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       word ptr [ecx+10],0
       jmp       near ptr 00002862
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       byte ptr [ecx+0C],0
       jmp       near ptr 00002862
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       word ptr [ecx+10],0
       mov       byte ptr [ecx+12],0
       jmp       near ptr 00002862
       mov       word ptr [ecx],0
       jmp       near ptr 00002862
       mov       word ptr [ecx],0
       mov       byte ptr [ecx+2],0
       jmp       near ptr 00002862
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       [ecx+10],eax
       mov       byte ptr [ecx+14],0
       jmp       near ptr 00002862
       mov       eax,ecx
       test      al,1
       je        short 00002A40
       mov       byte ptr [ecx],0
       mov       edi,1
       mov       eax,ecx
       test      al,2
       jne       near ptr 00002814
       mov       word ptr [ecx+edi],0
       add       edi,2
       jmp       near ptr 00002814
       mov       byte ptr [ecx],0
       jmp       near ptr 00002862
; Total bytes of code 630
; System.Text.Json.Utf8JsonWriter.WriteStart(Byte)
       push      ebp
       mov       ebp,esp
       push      esi
       mov       esi,ecx
       mov       ecx,[esi+18]
       and       ecx,7FFFFFFF
       cmp       ecx,[esi+44]
       jge       short 00002D35
       cmp       dword ptr [esi+48],2
       je        short 00002D17
       movzx     edx,dl
       mov       ecx,esi
       call      dword ptr ds:[0D900]
       jmp       short 00002D22
       movzx     edx,dl
       mov       ecx,esi
       call      dword ptr ds:[0D8E8]
       mov       edx,[esi+18]
       and       edx,7FFFFFFF
       mov       [esi+18],edx
       inc       edx
       mov       [esi+18],edx
       pop       esi
       pop       ebp
       ret
       mov       edx,[esi+18]
       push      dword ptr [esi+44]
       push      0
       push      0
       mov       ecx,1A
       call      dword ptr ds:[53D8]
       int       3
; Total bytes of code 91
; System.Text.Json.Utf8JsonWriter.WriteStringValue(System.DateTime)
       push      ebp
       mov       ebp,esp
       push      esi
       mov       esi,ecx
       test      byte ptr [esi+48],2
       jne       short 00001B14
       mov       ecx,esi
       call      dword ptr ds:[3138]
       test      byte ptr [esi+48],1
       je        short 00001B2A
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       mov       ecx,esi
       call      dword ptr ds:[1AC8]
       jmp       short 00001B38
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       mov       ecx,esi
       call      dword ptr ds:[1AB0]
       or        dword ptr [esi+18],80000000
       mov       byte ptr [esi+21],7
       pop       esi
       pop       ebp
       ret       8
; Total bytes of code 72
; System.Text.Json.Utf8JsonWriter.WriteEndMinimized(Byte)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       sub       esp,8
       xor       eax,eax
       mov       [ebp+0FFEC],eax
       mov       esi,ecx
       mov       ebx,edx
       mov       ecx,[esi+2C]
       sub       ecx,[esi+1C]
       test      ecx,ecx
       jg        short 00002AF1
       mov       ecx,esi
       mov       edx,1
       call      dword ptr ds:[0DB88]
       lea       edi,[esi+24]
       xor       edx,edx
       xor       ecx,ecx
       mov       eax,[edi]
       test      eax,eax
       je        short 00002B27
       mov       edx,[eax]
       test      dword ptr [edx],80000000
       je        short 00002B3F
       lea       edx,[eax+8]
       mov       ecx,[eax+4]
       mov       eax,[edi+4]
       and       eax,7FFFFFFF
       mov       edi,[edi+8]
       cmp       eax,ecx
       ja        short 00002B54
       sub       ecx,eax
       cmp       ecx,edi
       jb        short 00002B54
       add       edx,eax
       mov       ecx,edi
       mov       eax,[esi+1C]
       lea       edi,[eax+1]
       mov       [esi+1C],edi
       cmp       eax,ecx
       jae       short 00002B5B
       mov       [edx+eax],bl
       lea       esp,[ebp+0FFF4]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       lea       edx,[ebp+0FFEC]
       mov       ecx,eax
       mov       eax,[eax]
       mov       eax,[eax+28]
       call      dword ptr [eax+14]
       mov       edx,[ebp+0FFEC]
       mov       ecx,[ebp+0FFF0]
       jmp       short 00002B0E
       call      dword ptr ds:[0B3D8]
       int       3
       call      000006A0
       int       3
; Total bytes of code 153
; System.Text.Json.Utf8JsonWriter.Flush()
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       mov       esi,ecx
       cmp       dword ptr [esi+10],0
       jne       short 00002678
       cmp       dword ptr [esi+0C],0
       je        near ptr 0000275A
       xor       ecx,ecx
       mov       [esi+24],ecx
       mov       [esi+28],ecx
       mov       [esi+2C],ecx
       cmp       dword ptr [esi+10],0
       je        near ptr 00002724
       mov       edx,[esi+1C]
       test      edx,edx
       je        near ptr 00002714
       mov       ecx,[esi+14]
       cmp       [ecx],ecx
       call      dword ptr ds:[0DE20]
       xor       ecx,ecx
       mov       [esi+1C],ecx
       mov       ecx,[esi+10]
       mov       eax,[esi+14]
       mov       edx,[eax+4]
       mov       edi,[eax+8]
       test      edx,edx
       je        near ptr 00002761
       mov       eax,[edx+4]
       cmp       [edx+4],edi
       jb        near ptr 00002778
       add       edx,8
       push      edi
       push      edx
       mov       eax,[ecx]
       mov       eax,[eax+38]
       call      dword ptr [eax+1C]
       lea       ecx,[esi+4]
       mov       edx,[ecx]
       mov       ecx,[ecx+4]
       mov       edi,[esi+14]
       mov       eax,[edi+8]
       mov       ebx,eax
       sar       ebx,1F
       add       edx,eax
       adc       ecx,ebx
       lea       eax,[esi+4]
       mov       [eax],edx
       mov       [eax+4],ecx
       mov       ecx,[edi+4]
       mov       edx,[edi+8]
       test      ecx,ecx
       je        short 0000276E
       mov       eax,[ecx+4]
       cmp       [ecx+4],edx
       jb        short 00002778
       add       ecx,8
       call      dword ptr ds:[0DC00]
       xor       ecx,ecx
       mov       [edi+8],ecx
       mov       ecx,[esi+10]
       mov       eax,[ecx]
       mov       eax,[eax+30]
       call      dword ptr [eax+18]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       mov       edx,[esi+1C]
       test      edx,edx
       je        short 00002755
       mov       ecx,[esi+0C]
       call      dword ptr ds:[29C]
       lea       eax,[esi+4]
       mov       edx,[eax]
       mov       eax,[eax+4]
       mov       ecx,[esi+1C]
       mov       edi,ecx
       sar       edi,1F
       add       edx,ecx
       adc       eax,edi
       lea       ecx,[esi+4]
       mov       [ecx],edx
       mov       [ecx+4],eax
       xor       eax,eax
       mov       [esi+1C],eax
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       call      dword ptr ds:[5558]
       int       3
       test      edi,edi
       jne       short 00002778
       xor       edx,edx
       xor       edi,edi
       jmp       near ptr 000026CB
       test      edx,edx
       jne       short 00002778
       xor       ecx,ecx
       xor       edx,edx
       jmp       short 00002709
       call      dword ptr ds:[0B3D8]
       int       3
; Total bytes of code 287
; System.Text.Json.Utf8JsonWriter.Dispose()
       push      ebp
       mov       ebp,esp
       push      esi
       mov       esi,ecx
       cmp       dword ptr [esi+10],0
       jne       short 00002BFD
       cmp       dword ptr [esi+0C],0
       jne       short 00002BFD
       pop       esi
       pop       ebp
       ret
       mov       ecx,esi
       call      dword ptr ds:[0D840]
       mov       ecx,esi
       call      dword ptr ds:[0D810]
       xor       eax,eax
       mov       [esi+10],eax
       mov       [esi+14],eax
       mov       [esi+0C],eax
       pop       esi
       pop       ebp
       ret
; Total bytes of code 51

Compare Jit Disasm

; System.Text.Json.Tests.Perf_DateTimes.WriteDateTimes()
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       sub       esp,18
       xor       eax,eax
       mov       [ebp+0FFE0],eax
       mov       [ebp+0FFE4],eax
       mov       [ebp+0FFE8],eax
       mov       [ebp+0FFEC],eax
       mov       esi,ecx
       mov       edi,[esi+4]
       mov       ecx,[edi+4]
       mov       edx,[edi+8]
       test      ecx,ecx
       je        near ptr 0000F53E
       mov       eax,[ecx+4]
       cmp       [ecx+4],edx
       jb        near ptr 0000F54B
       add       ecx,8
       call      dword ptr ds:[0DC00]
       xor       ecx,ecx
       mov       [edi+8],ecx
       mov       edi,[esi+4]
       movzx     ecx,byte ptr [esi+0C]
       test      ecx,ecx
       je        short 0000F416
       mov       ebx,1
       jmp       short 0000F418
       xor       ebx,ebx
       movzx     ecx,byte ptr [esi+0D]
       test      ecx,ecx
       je        short 0000F425
       or        ebx,2
       jmp       short 0000F428
       and       ebx,0FFFFFFFD
       mov       ecx,offset MT_System.Text.Json.Utf8JsonWriter
       call      0000300C
       mov       ecx,eax
       mov       eax,ebx
       test      edi,edi
       je        near ptr 0000F552
       lea       edx,[ecx+0C]
       call      000000C8
       lea       edx,[ecx+40]
       xor       edi,edi
       mov       [edx],edi
       mov       [edx+4],edi
       mov       [edx+8],eax
       cmp       dword ptr [ecx+44],0
       jne       short 0000F460
       mov       dword ptr [ecx+44],3E8
       mov       [ebp+0FFDC],ecx
       mov       edx,5B
       call      dword ptr ds:[1A38]
       mov       ecx,[ebp+0FFDC]
       mov       byte ptr [ecx+21],3
       xor       edi,edi
       mov       eax,ecx
       mov       edx,[esi+8]
       cmp       edi,[edx+4]
       jae       short 0000F4D1
       mov       ebx,edi
       shl       ebx,3
       add       ebx,8
       add       edx,ebx
       push      dword ptr [edx+4]
       push      dword ptr [edx]
       mov       ecx,eax
       call      dword ptr ds:[5AF8]
       inc       edi
       cmp       edi,186A0
       mov       ecx,[ebp+0FFDC]
       jl        short 0000F477
       mov       edx,[ecx+48]
       cmp       edx,2
       je        short 0000F4F1
       test      dl,1
       je        short 0000F4D6
       test      dl,2
       jne       short 0000F4C4
       mov       edx,5D
       call      dword ptr ds:[1C90]
       mov       ecx,[ebp+0FFDC]
       mov       edx,5D
       call      dword ptr ds:[1CA8]
       jmp       short 0000F4FC
       call      0000F0B0
       mov       edx,5D
       call      dword ptr ds:[1C90]
       mov       ecx,[ebp+0FFDC]
       mov       edx,5D
       call      dword ptr ds:[1C60]
       jmp       short 0000F4FC
       mov       edx,5D
       call      dword ptr ds:[1C60]
       mov       ecx,[ebp+0FFDC]
       mov       eax,[ecx+18]
       or        eax,80000000
       mov       [ecx+18],eax
       test      eax,7FFFFFFF
       je        short 0000F515
       dec       eax
       mov       [ecx+18],eax
       mov       byte ptr [ecx+21],4
       call      dword ptr ds:[19A8]
       mov       ecx,[ebp+0FFDC]
       call      dword ptr ds:[0BC84]
       jmp       short 0000F536
       mov       ecx,[ebp+0FFDC]
       call      dword ptr ds:[0BC84]
       pop       eax
       jmp       eax
       lea       esp,[ebp+0FFF4]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       test      edx,edx
       jne       short 0000F54B
       xor       ecx,ecx
       xor       edx,edx
       jmp       near ptr 0000F3F9
       call      dword ptr ds:[0F048]
       int       3
       mov       ecx,3007
       mov       edx,0B2182F8
       call      0000CA50
       mov       ecx,eax
       call      dword ptr ds:[9018]
       int       3
; Total bytes of code 426
; System.SpanHelpers.ClearWithoutReferences(Byte ByRef, UIntPtr)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       test      edx,edx
       je        short 00002882
       xor       eax,eax
       mov       esi,edx
       sub       esi,1
       sbb       eax,0
       cmp       esi,16
       sbb       eax,0
       jb        short 00002887
       cmp       edx,200
       jae       near ptr 00002942
       xor       edi,edi
       mov       eax,ecx
       test      al,3
       jne       near ptr 00002A48
       mov       eax,ecx
       dec       eax
       test      al,4
       je        short 000028A9
       lea       eax,[edx+0FFF0]
       sub       edx,edi
       lea       esi,[edi+10]
       xor       ebx,ebx
       mov       [ecx+edi],ebx
       mov       [ecx+edi+4],ebx
       mov       [ecx+edi+8],ebx
       mov       [ecx+edi+0C],ebx
       mov       edi,esi
       cmp       edi,eax
       jbe       short 00002840
       test      dl,8
       je        short 0000286B
       xor       eax,eax
       mov       [ecx+edi],eax
       mov       [ecx+edi+4],eax
       add       edi,8
       test      dl,4
       je        short 00002878
       xor       eax,eax
       mov       [ecx+edi],eax
       add       edi,4
       test      dl,2
       jne       short 00002898
       test      dl,1
       jne       short 000028A3
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       cmp       esi,0B
       jne       short 000028B3
       xor       edx,edx
       mov       [ecx],edx
       mov       [ecx+4],edx
       mov       [ecx+8],edx
       jmp       short 00002882
       mov       word ptr [ecx+edi],0
       add       edi,2
       jmp       short 0000287D
       mov       byte ptr [ecx+edi],0
       jmp       short 00002882
       xor       eax,eax
       mov       [ecx+edi],eax
       add       edi,4
       jmp       short 0000283B
       cmp       esi,15
       ja        near ptr 0000281C
       lea       eax,ds:[2A78]
       mov       eax,[eax+esi*4]
       lea       edx,ds:[2806]
       add       eax,edx
       jmp       eax
       xor       eax,eax
       mov       [ecx],eax
       jmp       short 00002882
       xor       eax,eax
       mov       [ecx],eax
       mov       word ptr [ecx+4],0
       mov       byte ptr [ecx+6],0
       jmp       short 00002882
       xor       eax,eax
       mov       [ecx],eax
       mov       word ptr [ecx+4],0
       jmp       short 00002882
       xor       eax,eax
       mov       [ecx],eax
       mov       byte ptr [ecx+4],0
       jmp       short 00002882
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       word ptr [ecx+8],0
       jmp       near ptr 00002882
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       jmp       near ptr 00002882
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       byte ptr [ecx+8],0
       jmp       near ptr 00002882
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       word ptr [ecx+0C],0
       mov       byte ptr [ecx+0E],0
       jmp       near ptr 00002882
       call      dword ptr ds:[9588]
       jmp       near ptr 00002882
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       [ecx+10],eax
       jmp       near ptr 00002882
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       byte ptr [ecx+10],0
       jmp       near ptr 00002882
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       [ecx+10],eax
       mov       word ptr [ecx+14],0
       jmp       near ptr 00002882
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       word ptr [ecx+8],0
       mov       byte ptr [ecx+0A],0
       jmp       near ptr 00002882
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       jmp       near ptr 00002882
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       word ptr [ecx+0C],0
       jmp       near ptr 00002882
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       word ptr [ecx+10],0
       jmp       near ptr 00002882
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       byte ptr [ecx+0C],0
       jmp       near ptr 00002882
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       word ptr [ecx+10],0
       mov       byte ptr [ecx+12],0
       jmp       near ptr 00002882
       mov       word ptr [ecx],0
       jmp       near ptr 00002882
       mov       word ptr [ecx],0
       mov       byte ptr [ecx+2],0
       jmp       near ptr 00002882
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       [ecx+10],eax
       mov       byte ptr [ecx+14],0
       jmp       near ptr 00002882
       mov       eax,ecx
       test      al,1
       je        short 00002A60
       mov       byte ptr [ecx],0
       mov       edi,1
       mov       eax,ecx
       test      al,2
       jne       near ptr 00002834
       mov       word ptr [ecx+edi],0
       add       edi,2
       jmp       near ptr 00002834
       mov       byte ptr [ecx],0
       jmp       near ptr 00002882
; Total bytes of code 630
; System.Text.Json.Utf8JsonWriter.WriteStart(Byte)
       push      ebp
       mov       ebp,esp
       push      esi
       mov       esi,ecx
       mov       ecx,[esi+18]
       and       ecx,7FFFFFFF
       cmp       ecx,[esi+44]
       jge       short 00002D55
       cmp       dword ptr [esi+48],2
       je        short 00002D37
       movzx     edx,dl
       mov       ecx,esi
       call      dword ptr ds:[1A68]
       jmp       short 00002D42
       movzx     edx,dl
       mov       ecx,esi
       call      dword ptr ds:[1A50]
       mov       edx,[esi+18]
       and       edx,7FFFFFFF
       mov       [esi+18],edx
       inc       edx
       mov       [esi+18],edx
       pop       esi
       pop       ebp
       ret
       mov       edx,[esi+18]
       push      dword ptr [esi+44]
       push      0
       push      0
       mov       ecx,1A
       call      dword ptr ds:[93D8]
       int       3
; Total bytes of code 91
; System.Text.Json.Utf8JsonWriter.WriteStringValue(System.DateTime)
       push      ebp
       mov       ebp,esp
       push      esi
       mov       esi,ecx
       test      byte ptr [esi+48],2
       jne       short 00001B14
       mov       ecx,esi
       call      dword ptr ds:[7198]
       test      byte ptr [esi+48],1
       je        short 00001B2A
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       mov       ecx,esi
       call      dword ptr ds:[5B28]
       jmp       short 00001B38
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       mov       ecx,esi
       call      dword ptr ds:[5B10]
       or        dword ptr [esi+18],80000000
       mov       byte ptr [esi+21],7
       pop       esi
       pop       ebp
       ret       8
; Total bytes of code 72
; System.Text.Json.Utf8JsonWriter.WriteEndMinimized(Byte)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       sub       esp,8
       xor       eax,eax
       mov       [ebp+0FFEC],eax
       mov       esi,ecx
       mov       ebx,edx
       mov       ecx,[esi+2C]
       sub       ecx,[esi+1C]
       test      ecx,ecx
       jg        short 00002B11
       mov       ecx,esi
       mov       edx,1
       call      dword ptr ds:[1CF0]
       lea       edi,[esi+24]
       xor       edx,edx
       xor       ecx,ecx
       mov       eax,[edi]
       test      eax,eax
       je        short 00002B47
       mov       edx,[eax]
       test      dword ptr [edx],80000000
       je        short 00002B5F
       lea       edx,[eax+8]
       mov       ecx,[eax+4]
       mov       eax,[edi+4]
       and       eax,7FFFFFFF
       mov       edi,[edi+8]
       cmp       eax,ecx
       ja        short 00002B74
       sub       ecx,eax
       cmp       ecx,edi
       jb        short 00002B74
       add       edx,eax
       mov       ecx,edi
       mov       eax,[esi+1C]
       lea       edi,[eax+1]
       mov       [esi+1C],edi
       cmp       eax,ecx
       jae       short 00002B7B
       mov       [edx+eax],bl
       lea       esp,[ebp+0FFF4]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       lea       edx,[ebp+0FFEC]
       mov       ecx,eax
       mov       eax,[eax]
       mov       eax,[eax+28]
       call      dword ptr [eax+14]
       mov       edx,[ebp+0FFEC]
       mov       ecx,[ebp+0FFF0]
       jmp       short 00002B2E
       call      dword ptr ds:[0F048]
       int       3
       call      0000F0B0
       int       3
; Total bytes of code 153
; System.Text.Json.Utf8JsonWriter.Flush()
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       mov       esi,ecx
       cmp       dword ptr [esi+10],0
       jne       short 00002618
       cmp       dword ptr [esi+0C],0
       je        near ptr 000026FA
       xor       ecx,ecx
       mov       [esi+24],ecx
       mov       [esi+28],ecx
       mov       [esi+2C],ecx
       cmp       dword ptr [esi+10],0
       je        near ptr 000026C4
       mov       edx,[esi+1C]
       test      edx,edx
       je        near ptr 000026B4
       mov       ecx,[esi+14]
       cmp       [ecx],ecx
       call      dword ptr ds:[0E720]
       xor       ecx,ecx
       mov       [esi+1C],ecx
       mov       ecx,[esi+10]
       mov       eax,[esi+14]
       mov       edx,[eax+4]
       mov       edi,[eax+8]
       test      edx,edx
       je        near ptr 00002701
       mov       eax,[edx+4]
       cmp       [edx+4],edi
       jb        near ptr 00002718
       add       edx,8
       push      edi
       push      edx
       mov       eax,[ecx]
       mov       eax,[eax+38]
       call      dword ptr [eax+1C]
       lea       ecx,[esi+4]
       mov       edx,[ecx]
       mov       ecx,[ecx+4]
       mov       edi,[esi+14]
       mov       eax,[edi+8]
       mov       ebx,eax
       sar       ebx,1F
       add       edx,eax
       adc       ecx,ebx
       lea       eax,[esi+4]
       mov       [eax],edx
       mov       [eax+4],ecx
       mov       ecx,[edi+4]
       mov       edx,[edi+8]
       test      ecx,ecx
       je        short 0000270E
       mov       eax,[ecx+4]
       cmp       [ecx+4],edx
       jb        short 00002718
       add       ecx,8
       call      dword ptr ds:[0DC00]
       xor       ecx,ecx
       mov       [edi+8],ecx
       mov       ecx,[esi+10]
       mov       eax,[ecx]
       mov       eax,[eax+30]
       call      dword ptr [eax+18]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       mov       edx,[esi+1C]
       test      edx,edx
       je        short 000026F5
       mov       ecx,[esi+0C]
       call      dword ptr ds:[29C]
       lea       eax,[esi+4]
       mov       edx,[eax]
       mov       eax,[eax+4]
       mov       ecx,[esi+1C]
       mov       edi,ecx
       sar       edi,1F
       add       edx,ecx
       adc       eax,edi
       lea       ecx,[esi+4]
       mov       [ecx],edx
       mov       [ecx+4],eax
       xor       eax,eax
       mov       [esi+1C],eax
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       call      dword ptr ds:[9558]
       int       3
       test      edi,edi
       jne       short 00002718
       xor       edx,edx
       xor       edi,edi
       jmp       near ptr 0000266B
       test      edx,edx
       jne       short 00002718
       xor       ecx,ecx
       xor       edx,edx
       jmp       short 000026A9
       call      dword ptr ds:[0F048]
       int       3
; Total bytes of code 287
; System.Text.Json.Utf8JsonWriter.Dispose()
       push      ebp
       mov       ebp,esp
       push      esi
       mov       esi,ecx
       cmp       dword ptr [esi+10],0
       jne       short 00002C1D
       cmp       dword ptr [esi+0C],0
       jne       short 00002C1D
       pop       esi
       pop       ebp
       ret
       mov       ecx,esi
       call      dword ptr ds:[19A8]
       mov       ecx,esi
       call      dword ptr ds:[1978]
       xor       eax,eax
       mov       [esi+10],eax
       mov       [esi+14],eax
       mov       [esi+0C],eax
       pop       esi
       pop       ebp
       ret
; Total bytes of code 51

System.Text.Json.Tests.Perf_DateTimes.WriteDateTimes(Formatted: True, SkipValidation: False)


Description of detection logic

IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small.
IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline.
IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small.
IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small.
IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline.
IsImprovementWindowed:Marked as improvement because 12.715660666666667 < 12.939374144179896.
IsChangePoint: Marked as a change because one of 7/31/2022 12:39:41 PM, 8/5/2022 10:47:59 PM falls between 7/28/2022 9:13:34 AM and 8/5/2022 10:47:59 PM.
IsImprovementStdDev: Marked as improvement because 140.55724600234169 (T) = (0 -12728914.803221289) / Math.Sqrt((2738538861.9888377 / (299)) + (714422585.925488 / (34))) is greater than 1.9671567996108528 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (34) - 2, .975) and 0.057185509747694326 = (13500974.937089603 - 12728914.803221289) / 13500974.937089603 is greater than 0.05.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Text.Json.Tests.Perf_DateTimes.WriteDateTimes()
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       sub       esp,18
       xor       eax,eax
       mov       [ebp+0FFE0],eax
       mov       [ebp+0FFE4],eax
       mov       [ebp+0FFE8],eax
       mov       [ebp+0FFEC],eax
       mov       esi,ecx
       mov       edi,[esi+4]
       mov       ecx,[edi+4]
       mov       edx,[edi+8]
       test      ecx,ecx
       je        near ptr 0000F51E
       mov       eax,[ecx+4]
       cmp       [ecx+4],edx
       jb        near ptr 0000F52B
       add       ecx,8
       call      dword ptr ds:[0DC00]
       xor       ecx,ecx
       mov       [edi+8],ecx
       mov       edi,[esi+4]
       movzx     ecx,byte ptr [esi+0C]
       test      ecx,ecx
       je        short 0000F3F6
       mov       ebx,1
       jmp       short 0000F3F8
       xor       ebx,ebx
       movzx     ecx,byte ptr [esi+0D]
       test      ecx,ecx
       je        short 0000F405
       or        ebx,2
       jmp       short 0000F408
       and       ebx,0FFFFFFFD
       mov       ecx,offset MT_System.Text.Json.Utf8JsonWriter
       call      0000300C
       mov       ecx,eax
       mov       eax,ebx
       test      edi,edi
       je        near ptr 0000F532
       lea       edx,[ecx+0C]
       call      000000C8
       lea       edx,[ecx+40]
       xor       edi,edi
       mov       [edx],edi
       mov       [edx+4],edi
       mov       [edx+8],eax
       cmp       dword ptr [ecx+44],0
       jne       short 0000F440
       mov       dword ptr [ecx+44],3E8
       mov       [ebp+0FFDC],ecx
       mov       edx,5B
       call      dword ptr ds:[0D8D0]
       mov       ecx,[ebp+0FFDC]
       mov       byte ptr [ecx+21],3
       xor       edi,edi
       mov       eax,ecx
       mov       edx,[esi+8]
       cmp       edi,[edx+4]
       jae       short 0000F4B1
       mov       ebx,edi
       shl       ebx,3
       add       ebx,8
       add       edx,ebx
       push      dword ptr [edx+4]
       push      dword ptr [edx]
       mov       ecx,eax
       call      dword ptr ds:[1A98]
       inc       edi
       cmp       edi,186A0
       mov       ecx,[ebp+0FFDC]
       jl        short 0000F457
       mov       edx,[ecx+48]
       cmp       edx,2
       je        short 0000F4D1
       test      dl,1
       je        short 0000F4B6
       test      dl,2
       jne       short 0000F4A4
       mov       edx,5D
       call      dword ptr ds:[0DB28]
       mov       ecx,[ebp+0FFDC]
       mov       edx,5D
       call      dword ptr ds:[0DB40]
       jmp       short 0000F4DC
       call      000006A0
       mov       edx,5D
       call      dword ptr ds:[0DB28]
       mov       ecx,[ebp+0FFDC]
       mov       edx,5D
       call      dword ptr ds:[0DAF8]
       jmp       short 0000F4DC
       mov       edx,5D
       call      dword ptr ds:[0DAF8]
       mov       ecx,[ebp+0FFDC]
       mov       eax,[ecx+18]
       or        eax,80000000
       mov       [ecx+18],eax
       test      eax,7FFFFFFF
       je        short 0000F4F5
       dec       eax
       mov       [ecx+18],eax
       mov       byte ptr [ecx+21],4
       call      dword ptr ds:[0D840]
       mov       ecx,[ebp+0FFDC]
       call      dword ptr ds:[0A838]
       jmp       short 0000F516
       mov       ecx,[ebp+0FFDC]
       call      dword ptr ds:[0A838]
       pop       eax
       jmp       eax
       lea       esp,[ebp+0FFF4]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       test      edx,edx
       jne       short 0000F52B
       xor       ecx,ecx
       xor       edx,edx
       jmp       near ptr 0000F3D9
       call      dword ptr ds:[0B3D8]
       int       3
       mov       ecx,2E9D
       mov       edx,0B1E79D0
       call      0000E360
       mov       ecx,eax
       call      dword ptr ds:[5018]
       int       3
; Total bytes of code 426
; System.SpanHelpers.ClearWithoutReferences(Byte ByRef, UIntPtr)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       test      edx,edx
       je        short 00005502
       xor       eax,eax
       mov       esi,edx
       sub       esi,1
       sbb       eax,0
       cmp       esi,16
       sbb       eax,0
       jb        short 00005507
       cmp       edx,200
       jae       near ptr 000055C2
       xor       edi,edi
       mov       eax,ecx
       test      al,3
       jne       near ptr 000056C8
       mov       eax,ecx
       dec       eax
       test      al,4
       je        short 00005529
       lea       eax,[edx+0FFF0]
       sub       edx,edi
       lea       esi,[edi+10]
       xor       ebx,ebx
       mov       [ecx+edi],ebx
       mov       [ecx+edi+4],ebx
       mov       [ecx+edi+8],ebx
       mov       [ecx+edi+0C],ebx
       mov       edi,esi
       cmp       edi,eax
       jbe       short 000054C0
       test      dl,8
       je        short 000054EB
       xor       eax,eax
       mov       [ecx+edi],eax
       mov       [ecx+edi+4],eax
       add       edi,8
       test      dl,4
       je        short 000054F8
       xor       eax,eax
       mov       [ecx+edi],eax
       add       edi,4
       test      dl,2
       jne       short 00005518
       test      dl,1
       jne       short 00005523
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       cmp       esi,0B
       jne       short 00005533
       xor       edx,edx
       mov       [ecx],edx
       mov       [ecx+4],edx
       mov       [ecx+8],edx
       jmp       short 00005502
       mov       word ptr [ecx+edi],0
       add       edi,2
       jmp       short 000054FD
       mov       byte ptr [ecx+edi],0
       jmp       short 00005502
       xor       eax,eax
       mov       [ecx+edi],eax
       add       edi,4
       jmp       short 000054BB
       cmp       esi,15
       ja        near ptr 0000549C
       lea       eax,ds:[56F8]
       mov       eax,[eax+esi*4]
       lea       edx,ds:[5486]
       add       eax,edx
       jmp       eax
       xor       eax,eax
       mov       [ecx],eax
       jmp       short 00005502
       xor       eax,eax
       mov       [ecx],eax
       mov       word ptr [ecx+4],0
       mov       byte ptr [ecx+6],0
       jmp       short 00005502
       xor       eax,eax
       mov       [ecx],eax
       mov       word ptr [ecx+4],0
       jmp       short 00005502
       xor       eax,eax
       mov       [ecx],eax
       mov       byte ptr [ecx+4],0
       jmp       short 00005502
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       word ptr [ecx+8],0
       jmp       near ptr 00005502
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       jmp       near ptr 00005502
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       byte ptr [ecx+8],0
       jmp       near ptr 00005502
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       word ptr [ecx+0C],0
       mov       byte ptr [ecx+0E],0
       jmp       near ptr 00005502
       call      dword ptr ds:[0B888]
       jmp       near ptr 00005502
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       [ecx+10],eax
       jmp       near ptr 00005502
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       byte ptr [ecx+10],0
       jmp       near ptr 00005502
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       [ecx+10],eax
       mov       word ptr [ecx+14],0
       jmp       near ptr 00005502
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       word ptr [ecx+8],0
       mov       byte ptr [ecx+0A],0
       jmp       near ptr 00005502
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       jmp       near ptr 00005502
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       word ptr [ecx+0C],0
       jmp       near ptr 00005502
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       word ptr [ecx+10],0
       jmp       near ptr 00005502
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       byte ptr [ecx+0C],0
       jmp       near ptr 00005502
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       word ptr [ecx+10],0
       mov       byte ptr [ecx+12],0
       jmp       near ptr 00005502
       mov       word ptr [ecx],0
       jmp       near ptr 00005502
       mov       word ptr [ecx],0
       mov       byte ptr [ecx+2],0
       jmp       near ptr 00005502
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       [ecx+10],eax
       mov       byte ptr [ecx+14],0
       jmp       near ptr 00005502
       mov       eax,ecx
       test      al,1
       je        short 000056E0
       mov       byte ptr [ecx],0
       mov       edi,1
       mov       eax,ecx
       test      al,2
       jne       near ptr 000054B4
       mov       word ptr [ecx+edi],0
       add       edi,2
       jmp       near ptr 000054B4
       mov       byte ptr [ecx],0
       jmp       near ptr 00005502
; Total bytes of code 630
; System.Text.Json.Utf8JsonWriter.WriteStart(Byte)
       push      ebp
       mov       ebp,esp
       push      esi
       mov       esi,ecx
       mov       ecx,[esi+18]
       and       ecx,7FFFFFFF
       cmp       ecx,[esi+44]
       jge       short 00005C1D
       cmp       dword ptr [esi+48],2
       je        short 00005BFF
       movzx     edx,dl
       mov       ecx,esi
       call      dword ptr ds:[0D900]
       jmp       short 00005C0A
       movzx     edx,dl
       mov       ecx,esi
       call      dword ptr ds:[0D8E8]
       mov       edx,[esi+18]
       and       edx,7FFFFFFF
       mov       [esi+18],edx
       inc       edx
       mov       [esi+18],edx
       pop       esi
       pop       ebp
       ret
       mov       edx,[esi+18]
       push      dword ptr [esi+44]
       push      0
       push      0
       mov       ecx,1A
       call      dword ptr ds:[53D8]
       int       3
; Total bytes of code 91
; System.Text.Json.Utf8JsonWriter.WriteStringValue(System.DateTime)
       push      ebp
       mov       ebp,esp
       push      esi
       mov       esi,ecx
       test      byte ptr [esi+48],2
       jne       short 000022B4
       mov       ecx,esi
       call      dword ptr ds:[3138]
       test      byte ptr [esi+48],1
       je        short 000022CA
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       mov       ecx,esi
       call      dword ptr ds:[1AC8]
       jmp       short 000022D8
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       mov       ecx,esi
       call      dword ptr ds:[1AB0]
       or        dword ptr [esi+18],80000000
       mov       byte ptr [esi+21],7
       pop       esi
       pop       ebp
       ret       8
; Total bytes of code 72
; System.Text.Json.Utf8JsonWriter.ValidateEnd(Byte)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       mov       esi,ecx
       cmp       dword ptr [esi+3C],0
       jle       short 000057DA
       cmp       byte ptr [esi+21],5
       je        short 000057DA
       cmp       dl,5D
       jne       short 000057B9
       cmp       byte ptr [esi+20],0
       jne       short 000057F4
       lea       ecx,[esi+30]
       dec       dword ptr [ecx+0C]
       mov       eax,[ecx+0C]
       cmp       eax,40
       jge       short 000057C1
       mov       eax,ecx
       mov       edx,[eax]
       mov       eax,[eax+4]
       shrd      edx,eax,1
       shr       eax,1
       mov       edi,ecx
       mov       [edi],edx
       mov       [edi+4],eax
       xor       ebx,ebx
       test      byte ptr [ecx],1
       setne     bl
       mov       [esi+20],bl
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       cmp       byte ptr [esi+20],0
       je        short 0000580E
       jmp       short 00005787
       cmp       eax,40
       jne       short 000057D0
       xor       ebx,ebx
       test      byte ptr [ecx],1
       setne     bl
       jmp       short 000057B1
       call      dword ptr ds:[0D588]
       mov       ebx,eax
       jmp       short 000057B1
       push      dword ptr [esi+44]
       movzx     ecx,dl
       push      ecx
       movzx     ecx,byte ptr [esi+21]
       push      ecx
       mov       ecx,17
       xor       edx,edx
       call      dword ptr ds:[53D8]
       int       3
       push      dword ptr [esi+44]
       movzx     ecx,dl
       push      ecx
       movzx     ecx,byte ptr [esi+21]
       push      ecx
       mov       ecx,17
       xor       edx,edx
       call      dword ptr ds:[53D8]
       int       3
       push      dword ptr [esi+44]
       movzx     ecx,dl
       push      ecx
       movzx     ecx,byte ptr [esi+21]
       push      ecx
       mov       ecx,17
       xor       edx,edx
       call      dword ptr ds:[53D8]
       int       3
; Total bytes of code 192
; System.Text.Json.Utf8JsonWriter.WriteEndIndented(Byte)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       sub       esp,28
       xor       eax,eax
       mov       [ebp+0FFE8],eax
       mov       [ebp+0FFD0],eax
       mov       esi,ecx
       mov       ebx,edx
       movzx     edx,byte ptr [esi+21]
       cmp       edx,1
       je        short 000058DB
       cmp       edx,3
       jne       short 000058EE
       movzx     edx,bl
       mov       ecx,esi
       call      dword ptr ds:[0DAF8]
       lea       esp,[ebp+0FFF4]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       mov       edi,[esi+18]
       and       edi,7FFFFFFF
       add       edi,edi
       je        short 000058FE
       add       edi,0FFFFFFFE
       lea       edx,[edi+3]
       mov       ecx,[esi+2C]
       sub       ecx,[esi+1C]
       cmp       ecx,edx
       jge       short 00005913
       mov       ecx,esi
       call      dword ptr ds:[0DB88]
       lea       eax,[esi+24]
       mov       [ebp+0FFDC],eax
       xor       ecx,ecx
       mov       [ebp+0FFE0],ecx
       xor       edx,edx
       mov       ecx,[eax]
       test      ecx,ecx
       je        short 00005965
       mov       edx,[ecx]
       test      dword ptr [edx],80000000
       je        near ptr 000059E3
       lea       edx,[ecx+8]
       mov       [ebp+0FFE0],edx
       mov       ecx,[ecx+4]
       mov       edx,[eax+4]
       and       edx,7FFFFFFF
       mov       eax,[eax+8]
       cmp       edx,ecx
       ja        near ptr 00005A14
       sub       ecx,edx
       cmp       ecx,eax
       jb        near ptr 00005A14
       mov       ecx,[ebp+0FFE0]
       add       ecx,edx
       mov       [ebp+0FFE0],ecx
       mov       edx,eax
       mov       ecx,[ebp+0FFE0]
       mov       eax,ecx
       mov       [ebp+0FFD4],eax
       mov       [ebp+0FFE4],edx
       mov       ecx,[esi+1C]
       lea       eax,[ecx+1]
       mov       [esi+1C],eax
       cmp       ecx,edx
       jae       near ptr 00005A1B
       mov       eax,[ebp+0FFD4]
       mov       byte ptr [eax+ecx],0D
       mov       ecx,[esi+1C]
       lea       eax,[ecx+1]
       mov       [esi+1C],eax
       cmp       ecx,edx
       jae       near ptr 00005A1B
       mov       eax,[ebp+0FFD4]
       mov       byte ptr [eax+ecx],0A
       mov       ecx,[esi+1C]
       cmp       ecx,edx
       ja        short 00005A14
       mov       [ebp+0FFD4],eax
       add       eax,ecx
       mov       [ebp+0FFD8],eax
       mov       eax,edx
       sub       eax,ecx
       mov       ecx,[ebp+0FFD8]
       push      eax
       push      ecx
       mov       ecx,edi
       call      dword ptr ds:[71F8]
       mov       edx,edi
       add       edx,[esi+1C]
       mov       ecx,edx
       mov       [esi+1C],ecx
       lea       ecx,[edx+1]
       mov       [esi+1C],ecx
       cmp       edx,[ebp+0FFE4]
       jae       short 00005A1B
       mov       esi,[ebp+0FFD4]
       mov       [esi+edx],bl
       lea       esp,[ebp+0FFF4]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       mov       [ebp+0FFF0],ebx
       lea       edx,[ebp+0FFE8]
       mov       [ebp+0FFD0],edx
       mov       edx,[ecx]
       mov       edx,[edx+28]
       mov       [ebp+0FFCC],edx
       mov       edx,[ebp+0FFD0]
       mov       ebx,[ebp+0FFCC]
       call      dword ptr [ebx+14]
       mov       ecx,[ebp+0FFE8]
       mov       edx,[ebp+0FFEC]
       mov       [ebp+0FFE0],ecx
       mov       ecx,edx
       mov       eax,[ebp+0FFDC]
       movzx     ebx,byte ptr [ebp+0FFF0]
       jmp       near ptr 0000593D
       call      dword ptr ds:[0B3D8]
       int       3
       call      000006A0
       int       3
; Total bytes of code 361
; System.Text.Json.Utf8JsonWriter.Flush()
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       mov       esi,ecx
       cmp       dword ptr [esi+10],0
       jne       short 00004FA0
       cmp       dword ptr [esi+0C],0
       je        near ptr 00005082
       xor       ecx,ecx
       mov       [esi+24],ecx
       mov       [esi+28],ecx
       mov       [esi+2C],ecx
       cmp       dword ptr [esi+10],0
       je        near ptr 0000504C
       mov       edx,[esi+1C]
       test      edx,edx
       je        near ptr 0000503C
       mov       ecx,[esi+14]
       cmp       [ecx],ecx
       call      dword ptr ds:[0DE20]
       xor       ecx,ecx
       mov       [esi+1C],ecx
       mov       ecx,[esi+10]
       mov       eax,[esi+14]
       mov       edx,[eax+4]
       mov       edi,[eax+8]
       test      edx,edx
       je        near ptr 00005089
       mov       eax,[edx+4]
       cmp       [edx+4],edi
       jb        near ptr 000050A0
       add       edx,8
       push      edi
       push      edx
       mov       eax,[ecx]
       mov       eax,[eax+38]
       call      dword ptr [eax+1C]
       lea       ecx,[esi+4]
       mov       edx,[ecx]
       mov       ecx,[ecx+4]
       mov       edi,[esi+14]
       mov       eax,[edi+8]
       mov       ebx,eax
       sar       ebx,1F
       add       edx,eax
       adc       ecx,ebx
       lea       eax,[esi+4]
       mov       [eax],edx
       mov       [eax+4],ecx
       mov       ecx,[edi+4]
       mov       edx,[edi+8]
       test      ecx,ecx
       je        short 00005096
       mov       eax,[ecx+4]
       cmp       [ecx+4],edx
       jb        short 000050A0
       add       ecx,8
       call      dword ptr ds:[0DC00]
       xor       ecx,ecx
       mov       [edi+8],ecx
       mov       ecx,[esi+10]
       mov       eax,[ecx]
       mov       eax,[eax+30]
       call      dword ptr [eax+18]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       mov       edx,[esi+1C]
       test      edx,edx
       je        short 0000507D
       mov       ecx,[esi+0C]
       call      dword ptr ds:[2BC]
       lea       eax,[esi+4]
       mov       edx,[eax]
       mov       eax,[eax+4]
       mov       ecx,[esi+1C]
       mov       edi,ecx
       sar       edi,1F
       add       edx,ecx
       adc       eax,edi
       lea       ecx,[esi+4]
       mov       [ecx],edx
       mov       [ecx+4],eax
       xor       eax,eax
       mov       [esi+1C],eax
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       call      dword ptr ds:[5558]
       int       3
       test      edi,edi
       jne       short 000050A0
       xor       edx,edx
       xor       edi,edi
       jmp       near ptr 00004FF3
       test      edx,edx
       jne       short 000050A0
       xor       ecx,ecx
       xor       edx,edx
       jmp       short 00005031
       call      dword ptr ds:[0B3D8]
       int       3
; Total bytes of code 287
; System.Text.Json.Utf8JsonWriter.Dispose()
       push      ebp
       mov       ebp,esp
       push      esi
       mov       esi,ecx
       cmp       dword ptr [esi+10],0
       jne       short 00005AE5
       cmp       dword ptr [esi+0C],0
       jne       short 00005AE5
       pop       esi
       pop       ebp
       ret
       mov       ecx,esi
       call      dword ptr ds:[0D840]
       mov       ecx,esi
       call      dword ptr ds:[0D810]
       xor       eax,eax
       mov       [esi+10],eax
       mov       [esi+14],eax
       mov       [esi+0C],eax
       pop       esi
       pop       ebp
       ret
; Total bytes of code 51

Compare Jit Disasm

; System.Text.Json.Tests.Perf_DateTimes.WriteDateTimes()
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       sub       esp,18
       xor       eax,eax
       mov       [ebp+0FFE0],eax
       mov       [ebp+0FFE4],eax
       mov       [ebp+0FFE8],eax
       mov       [ebp+0FFEC],eax
       mov       esi,ecx
       mov       edi,[esi+4]
       mov       ecx,[edi+4]
       mov       edx,[edi+8]
       test      ecx,ecx
       je        near ptr 0000F53E
       mov       eax,[ecx+4]
       cmp       [ecx+4],edx
       jb        near ptr 0000F54B
       add       ecx,8
       call      dword ptr ds:[0DC00]
       xor       ecx,ecx
       mov       [edi+8],ecx
       mov       edi,[esi+4]
       movzx     ecx,byte ptr [esi+0C]
       test      ecx,ecx
       je        short 0000F416
       mov       ebx,1
       jmp       short 0000F418
       xor       ebx,ebx
       movzx     ecx,byte ptr [esi+0D]
       test      ecx,ecx
       je        short 0000F425
       or        ebx,2
       jmp       short 0000F428
       and       ebx,0FFFFFFFD
       mov       ecx,offset MT_System.Text.Json.Utf8JsonWriter
       call      0000300C
       mov       ecx,eax
       mov       eax,ebx
       test      edi,edi
       je        near ptr 0000F552
       lea       edx,[ecx+0C]
       call      000000C8
       lea       edx,[ecx+40]
       xor       edi,edi
       mov       [edx],edi
       mov       [edx+4],edi
       mov       [edx+8],eax
       cmp       dword ptr [ecx+44],0
       jne       short 0000F460
       mov       dword ptr [ecx+44],3E8
       mov       [ebp+0FFDC],ecx
       mov       edx,5B
       call      dword ptr ds:[1A38]
       mov       ecx,[ebp+0FFDC]
       mov       byte ptr [ecx+21],3
       xor       edi,edi
       mov       eax,ecx
       mov       edx,[esi+8]
       cmp       edi,[edx+4]
       jae       short 0000F4D1
       mov       ebx,edi
       shl       ebx,3
       add       ebx,8
       add       edx,ebx
       push      dword ptr [edx+4]
       push      dword ptr [edx]
       mov       ecx,eax
       call      dword ptr ds:[5AF8]
       inc       edi
       cmp       edi,186A0
       mov       ecx,[ebp+0FFDC]
       jl        short 0000F477
       mov       edx,[ecx+48]
       cmp       edx,2
       je        short 0000F4F1
       test      dl,1
       je        short 0000F4D6
       test      dl,2
       jne       short 0000F4C4
       mov       edx,5D
       call      dword ptr ds:[1C90]
       mov       ecx,[ebp+0FFDC]
       mov       edx,5D
       call      dword ptr ds:[1CA8]
       jmp       short 0000F4FC
       call      0000F0B0
       mov       edx,5D
       call      dword ptr ds:[1C90]
       mov       ecx,[ebp+0FFDC]
       mov       edx,5D
       call      dword ptr ds:[1C60]
       jmp       short 0000F4FC
       mov       edx,5D
       call      dword ptr ds:[1C60]
       mov       ecx,[ebp+0FFDC]
       mov       eax,[ecx+18]
       or        eax,80000000
       mov       [ecx+18],eax
       test      eax,7FFFFFFF
       je        short 0000F515
       dec       eax
       mov       [ecx+18],eax
       mov       byte ptr [ecx+21],4
       call      dword ptr ds:[19A8]
       mov       ecx,[ebp+0FFDC]
       call      dword ptr ds:[0BC84]
       jmp       short 0000F536
       mov       ecx,[ebp+0FFDC]
       call      dword ptr ds:[0BC84]
       pop       eax
       jmp       eax
       lea       esp,[ebp+0FFF4]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       test      edx,edx
       jne       short 0000F54B
       xor       ecx,ecx
       xor       edx,edx
       jmp       near ptr 0000F3F9
       call      dword ptr ds:[0F048]
       int       3
       mov       ecx,3007
       mov       edx,0B0082F8
       call      0000CA50
       mov       ecx,eax
       call      dword ptr ds:[9018]
       int       3
; Total bytes of code 426
; System.SpanHelpers.ClearWithoutReferences(Byte ByRef, UIntPtr)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       test      edx,edx
       je        short 00005402
       xor       eax,eax
       mov       esi,edx
       sub       esi,1
       sbb       eax,0
       cmp       esi,16
       sbb       eax,0
       jb        short 00005407
       cmp       edx,200
       jae       near ptr 000054C2
       xor       edi,edi
       mov       eax,ecx
       test      al,3
       jne       near ptr 000055C8
       mov       eax,ecx
       dec       eax
       test      al,4
       je        short 00005429
       lea       eax,[edx+0FFF0]
       sub       edx,edi
       lea       esi,[edi+10]
       xor       ebx,ebx
       mov       [ecx+edi],ebx
       mov       [ecx+edi+4],ebx
       mov       [ecx+edi+8],ebx
       mov       [ecx+edi+0C],ebx
       mov       edi,esi
       cmp       edi,eax
       jbe       short 000053C0
       test      dl,8
       je        short 000053EB
       xor       eax,eax
       mov       [ecx+edi],eax
       mov       [ecx+edi+4],eax
       add       edi,8
       test      dl,4
       je        short 000053F8
       xor       eax,eax
       mov       [ecx+edi],eax
       add       edi,4
       test      dl,2
       jne       short 00005418
       test      dl,1
       jne       short 00005423
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       cmp       esi,0B
       jne       short 00005433
       xor       edx,edx
       mov       [ecx],edx
       mov       [ecx+4],edx
       mov       [ecx+8],edx
       jmp       short 00005402
       mov       word ptr [ecx+edi],0
       add       edi,2
       jmp       short 000053FD
       mov       byte ptr [ecx+edi],0
       jmp       short 00005402
       xor       eax,eax
       mov       [ecx+edi],eax
       add       edi,4
       jmp       short 000053BB
       cmp       esi,15
       ja        near ptr 0000539C
       lea       eax,ds:[55F8]
       mov       eax,[eax+esi*4]
       lea       edx,ds:[5386]
       add       eax,edx
       jmp       eax
       xor       eax,eax
       mov       [ecx],eax
       jmp       short 00005402
       xor       eax,eax
       mov       [ecx],eax
       mov       word ptr [ecx+4],0
       mov       byte ptr [ecx+6],0
       jmp       short 00005402
       xor       eax,eax
       mov       [ecx],eax
       mov       word ptr [ecx+4],0
       jmp       short 00005402
       xor       eax,eax
       mov       [ecx],eax
       mov       byte ptr [ecx+4],0
       jmp       short 00005402
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       word ptr [ecx+8],0
       jmp       near ptr 00005402
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       jmp       near ptr 00005402
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       byte ptr [ecx+8],0
       jmp       near ptr 00005402
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       word ptr [ecx+0C],0
       mov       byte ptr [ecx+0E],0
       jmp       near ptr 00005402
       call      dword ptr ds:[9588]
       jmp       near ptr 00005402
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       [ecx+10],eax
       jmp       near ptr 00005402
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       byte ptr [ecx+10],0
       jmp       near ptr 00005402
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       [ecx+10],eax
       mov       word ptr [ecx+14],0
       jmp       near ptr 00005402
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       word ptr [ecx+8],0
       mov       byte ptr [ecx+0A],0
       jmp       near ptr 00005402
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       jmp       near ptr 00005402
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       word ptr [ecx+0C],0
       jmp       near ptr 00005402
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       word ptr [ecx+10],0
       jmp       near ptr 00005402
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       byte ptr [ecx+0C],0
       jmp       near ptr 00005402
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       word ptr [ecx+10],0
       mov       byte ptr [ecx+12],0
       jmp       near ptr 00005402
       mov       word ptr [ecx],0
       jmp       near ptr 00005402
       mov       word ptr [ecx],0
       mov       byte ptr [ecx+2],0
       jmp       near ptr 00005402
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       [ecx+10],eax
       mov       byte ptr [ecx+14],0
       jmp       near ptr 00005402
       mov       eax,ecx
       test      al,1
       je        short 000055E0
       mov       byte ptr [ecx],0
       mov       edi,1
       mov       eax,ecx
       test      al,2
       jne       near ptr 000053B4
       mov       word ptr [ecx+edi],0
       add       edi,2
       jmp       near ptr 000053B4
       mov       byte ptr [ecx],0
       jmp       near ptr 00005402
; Total bytes of code 630
; System.Text.Json.Utf8JsonWriter.WriteStart(Byte)
       push      ebp
       mov       ebp,esp
       push      esi
       mov       esi,ecx
       mov       ecx,[esi+18]
       and       ecx,7FFFFFFF
       cmp       ecx,[esi+44]
       jge       short 00005B1D
       cmp       dword ptr [esi+48],2
       je        short 00005AFF
       movzx     edx,dl
       mov       ecx,esi
       call      dword ptr ds:[1A68]
       jmp       short 00005B0A
       movzx     edx,dl
       mov       ecx,esi
       call      dword ptr ds:[1A50]
       mov       edx,[esi+18]
       and       edx,7FFFFFFF
       mov       [esi+18],edx
       inc       edx
       mov       [esi+18],edx
       pop       esi
       pop       ebp
       ret
       mov       edx,[esi+18]
       push      dword ptr [esi+44]
       push      0
       push      0
       mov       ecx,1A
       call      dword ptr ds:[93D8]
       int       3
; Total bytes of code 91
; System.Text.Json.Utf8JsonWriter.WriteStringValue(System.DateTime)
       push      ebp
       mov       ebp,esp
       push      esi
       mov       esi,ecx
       test      byte ptr [esi+48],2
       jne       short 000022B4
       mov       ecx,esi
       call      dword ptr ds:[7198]
       test      byte ptr [esi+48],1
       je        short 000022CA
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       mov       ecx,esi
       call      dword ptr ds:[5B28]
       jmp       short 000022D8
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       mov       ecx,esi
       call      dword ptr ds:[5B10]
       or        dword ptr [esi+18],80000000
       mov       byte ptr [esi+21],7
       pop       esi
       pop       ebp
       ret       8
; Total bytes of code 72
; System.Text.Json.Utf8JsonWriter.ValidateEnd(Byte)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       mov       esi,ecx
       cmp       dword ptr [esi+3C],0
       jle       short 000056DA
       cmp       byte ptr [esi+21],5
       je        short 000056DA
       cmp       dl,5D
       jne       short 000056B9
       cmp       byte ptr [esi+20],0
       jne       short 000056F4
       lea       ecx,[esi+30]
       dec       dword ptr [ecx+0C]
       mov       eax,[ecx+0C]
       cmp       eax,40
       jge       short 000056C1
       mov       eax,ecx
       mov       edx,[eax]
       mov       eax,[eax+4]
       shrd      edx,eax,1
       shr       eax,1
       mov       edi,ecx
       mov       [edi],edx
       mov       [edi+4],eax
       xor       ebx,ebx
       test      byte ptr [ecx],1
       setne     bl
       mov       [esi+20],bl
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       cmp       byte ptr [esi+20],0
       je        short 0000570E
       jmp       short 00005687
       cmp       eax,40
       jne       short 000056D0
       xor       ebx,ebx
       test      byte ptr [ecx],1
       setne     bl
       jmp       short 000056B1
       call      dword ptr ds:[1690]
       mov       ebx,eax
       jmp       short 000056B1
       push      dword ptr [esi+44]
       movzx     ecx,dl
       push      ecx
       movzx     ecx,byte ptr [esi+21]
       push      ecx
       mov       ecx,17
       xor       edx,edx
       call      dword ptr ds:[93D8]
       int       3
       push      dword ptr [esi+44]
       movzx     ecx,dl
       push      ecx
       movzx     ecx,byte ptr [esi+21]
       push      ecx
       mov       ecx,17
       xor       edx,edx
       call      dword ptr ds:[93D8]
       int       3
       push      dword ptr [esi+44]
       movzx     ecx,dl
       push      ecx
       movzx     ecx,byte ptr [esi+21]
       push      ecx
       mov       ecx,17
       xor       edx,edx
       call      dword ptr ds:[93D8]
       int       3
; Total bytes of code 192
; System.Text.Json.Utf8JsonWriter.WriteEndIndented(Byte)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       sub       esp,28
       xor       eax,eax
       mov       [ebp+0FFE8],eax
       mov       [ebp+0FFD0],eax
       mov       esi,ecx
       mov       ebx,edx
       movzx     edx,byte ptr [esi+21]
       cmp       edx,1
       je        short 000057DB
       cmp       edx,3
       jne       short 000057EE
       movzx     edx,bl
       mov       ecx,esi
       call      dword ptr ds:[1C60]
       lea       esp,[ebp+0FFF4]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       mov       edi,[esi+18]
       and       edi,7FFFFFFF
       add       edi,edi
       je        short 000057FE
       add       edi,0FFFFFFFE
       lea       edx,[edi+3]
       mov       ecx,[esi+2C]
       sub       ecx,[esi+1C]
       cmp       ecx,edx
       jge       short 00005813
       mov       ecx,esi
       call      dword ptr ds:[1CF0]
       lea       eax,[esi+24]
       mov       [ebp+0FFDC],eax
       xor       ecx,ecx
       mov       [ebp+0FFE0],ecx
       xor       edx,edx
       mov       ecx,[eax]
       test      ecx,ecx
       je        short 00005865
       mov       edx,[ecx]
       test      dword ptr [edx],80000000
       je        near ptr 000058E3
       lea       edx,[ecx+8]
       mov       [ebp+0FFE0],edx
       mov       ecx,[ecx+4]
       mov       edx,[eax+4]
       and       edx,7FFFFFFF
       mov       eax,[eax+8]
       cmp       edx,ecx
       ja        near ptr 00005914
       sub       ecx,edx
       cmp       ecx,eax
       jb        near ptr 00005914
       mov       ecx,[ebp+0FFE0]
       add       ecx,edx
       mov       [ebp+0FFE0],ecx
       mov       edx,eax
       mov       ecx,[ebp+0FFE0]
       mov       eax,ecx
       mov       [ebp+0FFD4],eax
       mov       [ebp+0FFE4],edx
       mov       ecx,[esi+1C]
       lea       eax,[ecx+1]
       mov       [esi+1C],eax
       cmp       ecx,edx
       jae       near ptr 0000591B
       mov       eax,[ebp+0FFD4]
       mov       byte ptr [eax+ecx],0D
       mov       ecx,[esi+1C]
       lea       eax,[ecx+1]
       mov       [esi+1C],eax
       cmp       ecx,edx
       jae       near ptr 0000591B
       mov       eax,[ebp+0FFD4]
       mov       byte ptr [eax+ecx],0A
       mov       ecx,[esi+1C]
       cmp       ecx,edx
       ja        short 00005914
       mov       [ebp+0FFD4],eax
       add       eax,ecx
       mov       [ebp+0FFD8],eax
       mov       eax,edx
       sub       eax,ecx
       mov       ecx,[ebp+0FFD8]
       push      eax
       push      ecx
       mov       ecx,edi
       call      dword ptr ds:[0B1F8]
       mov       edx,edi
       add       edx,[esi+1C]
       mov       ecx,edx
       mov       [esi+1C],ecx
       lea       ecx,[edx+1]
       mov       [esi+1C],ecx
       cmp       edx,[ebp+0FFE4]
       jae       short 0000591B
       mov       esi,[ebp+0FFD4]
       mov       [esi+edx],bl
       lea       esp,[ebp+0FFF4]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       mov       [ebp+0FFF0],ebx
       lea       edx,[ebp+0FFE8]
       mov       [ebp+0FFD0],edx
       mov       edx,[ecx]
       mov       edx,[edx+28]
       mov       [ebp+0FFCC],edx
       mov       edx,[ebp+0FFD0]
       mov       ebx,[ebp+0FFCC]
       call      dword ptr [ebx+14]
       mov       ecx,[ebp+0FFE8]
       mov       edx,[ebp+0FFEC]
       mov       [ebp+0FFE0],ecx
       mov       ecx,edx
       mov       eax,[ebp+0FFDC]
       movzx     ebx,byte ptr [ebp+0FFF0]
       jmp       near ptr 0000583D
       call      dword ptr ds:[0F048]
       int       3
       call      0000F0B0
       int       3
; Total bytes of code 361
; System.Text.Json.Utf8JsonWriter.Flush()
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       mov       esi,ecx
       cmp       dword ptr [esi+10],0
       jne       short 00004EC0
       cmp       dword ptr [esi+0C],0
       je        near ptr 00004FA2
       xor       ecx,ecx
       mov       [esi+24],ecx
       mov       [esi+28],ecx
       mov       [esi+2C],ecx
       cmp       dword ptr [esi+10],0
       je        near ptr 00004F6C
       mov       edx,[esi+1C]
       test      edx,edx
       je        near ptr 00004F5C
       mov       ecx,[esi+14]
       cmp       [ecx],ecx
       call      dword ptr ds:[0E720]
       xor       ecx,ecx
       mov       [esi+1C],ecx
       mov       ecx,[esi+10]
       mov       eax,[esi+14]
       mov       edx,[eax+4]
       mov       edi,[eax+8]
       test      edx,edx
       je        near ptr 00004FA9
       mov       eax,[edx+4]
       cmp       [edx+4],edi
       jb        near ptr 00004FC0
       add       edx,8
       push      edi
       push      edx
       mov       eax,[ecx]
       mov       eax,[eax+38]
       call      dword ptr [eax+1C]
       lea       ecx,[esi+4]
       mov       edx,[ecx]
       mov       ecx,[ecx+4]
       mov       edi,[esi+14]
       mov       eax,[edi+8]
       mov       ebx,eax
       sar       ebx,1F
       add       edx,eax
       adc       ecx,ebx
       lea       eax,[esi+4]
       mov       [eax],edx
       mov       [eax+4],ecx
       mov       ecx,[edi+4]
       mov       edx,[edi+8]
       test      ecx,ecx
       je        short 00004FB6
       mov       eax,[ecx+4]
       cmp       [ecx+4],edx
       jb        short 00004FC0
       add       ecx,8
       call      dword ptr ds:[0DC00]
       xor       ecx,ecx
       mov       [edi+8],ecx
       mov       ecx,[esi+10]
       mov       eax,[ecx]
       mov       eax,[eax+30]
       call      dword ptr [eax+18]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       mov       edx,[esi+1C]
       test      edx,edx
       je        short 00004F9D
       mov       ecx,[esi+0C]
       call      dword ptr ds:[2BC]
       lea       eax,[esi+4]
       mov       edx,[eax]
       mov       eax,[eax+4]
       mov       ecx,[esi+1C]
       mov       edi,ecx
       sar       edi,1F
       add       edx,ecx
       adc       eax,edi
       lea       ecx,[esi+4]
       mov       [ecx],edx
       mov       [ecx+4],eax
       xor       eax,eax
       mov       [esi+1C],eax
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       call      dword ptr ds:[9558]
       int       3
       test      edi,edi
       jne       short 00004FC0
       xor       edx,edx
       xor       edi,edi
       jmp       near ptr 00004F13
       test      edx,edx
       jne       short 00004FC0
       xor       ecx,ecx
       xor       edx,edx
       jmp       short 00004F51
       call      dword ptr ds:[0F048]
       int       3
; Total bytes of code 287
; System.Text.Json.Utf8JsonWriter.Dispose()
       push      ebp
       mov       ebp,esp
       push      esi
       mov       esi,ecx
       cmp       dword ptr [esi+10],0
       jne       short 000059E5
       cmp       dword ptr [esi+0C],0
       jne       short 000059E5
       pop       esi
       pop       ebp
       ret
       mov       ecx,esi
       call      dword ptr ds:[19A8]
       mov       ecx,esi
       call      dword ptr ds:[1978]
       xor       eax,eax
       mov       [esi+10],eax
       mov       [esi+14],eax
       mov       [esi+0C],eax
       pop       esi
       pop       ebp
       ret
; Total bytes of code 51

System.Text.Json.Tests.Perf_DateTimes.WriteDateTimes(Formatted: True, SkipValidation: True)


Description of detection logic

IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small.
IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline.
IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small.
IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small.
IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline.
IsImprovementWindowed:Marked as improvement because 12.628452666666666 < 12.750473166666668.
IsChangePoint: Marked as a change because one of 7/31/2022 12:39:41 PM, 8/5/2022 10:47:59 PM falls between 7/28/2022 9:13:34 AM and 8/5/2022 10:47:59 PM.
IsImprovementStdDev: Marked as improvement because 99.64936862403695 (T) = (0 -12648138.308958199) / Math.Sqrt((1601714369.3864496 / (299)) + (1933845398.8201656 / (34))) is greater than 1.9671567996108528 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (34) - 2, .975) and 0.05851632897647324 = (13434262.003936693 - 12648138.308958199) / 13434262.003936693 is greater than 0.05.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Text.Json.Tests.Perf_DateTimes.WriteDateTimes()
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       sub       esp,18
       xor       eax,eax
       mov       [ebp+0FFE0],eax
       mov       [ebp+0FFE4],eax
       mov       [ebp+0FFE8],eax
       mov       [ebp+0FFEC],eax
       mov       esi,ecx
       mov       edi,[esi+4]
       mov       ecx,[edi+4]
       mov       edx,[edi+8]
       test      ecx,ecx
       je        near ptr 0000F51E
       mov       eax,[ecx+4]
       cmp       [ecx+4],edx
       jb        near ptr 0000F52B
       add       ecx,8
       call      dword ptr ds:[0DC00]
       xor       ecx,ecx
       mov       [edi+8],ecx
       mov       edi,[esi+4]
       movzx     ecx,byte ptr [esi+0C]
       test      ecx,ecx
       je        short 0000F3F6
       mov       ebx,1
       jmp       short 0000F3F8
       xor       ebx,ebx
       movzx     ecx,byte ptr [esi+0D]
       test      ecx,ecx
       je        short 0000F405
       or        ebx,2
       jmp       short 0000F408
       and       ebx,0FFFFFFFD
       mov       ecx,offset MT_System.Text.Json.Utf8JsonWriter
       call      0000300C
       mov       ecx,eax
       mov       eax,ebx
       test      edi,edi
       je        near ptr 0000F532
       lea       edx,[ecx+0C]
       call      000000C8
       lea       edx,[ecx+40]
       xor       edi,edi
       mov       [edx],edi
       mov       [edx+4],edi
       mov       [edx+8],eax
       cmp       dword ptr [ecx+44],0
       jne       short 0000F440
       mov       dword ptr [ecx+44],3E8
       mov       [ebp+0FFDC],ecx
       mov       edx,5B
       call      dword ptr ds:[0D8D0]
       mov       ecx,[ebp+0FFDC]
       mov       byte ptr [ecx+21],3
       xor       edi,edi
       mov       eax,ecx
       mov       edx,[esi+8]
       cmp       edi,[edx+4]
       jae       short 0000F4B1
       mov       ebx,edi
       shl       ebx,3
       add       ebx,8
       add       edx,ebx
       push      dword ptr [edx+4]
       push      dword ptr [edx]
       mov       ecx,eax
       call      dword ptr ds:[1A98]
       inc       edi
       cmp       edi,186A0
       mov       ecx,[ebp+0FFDC]
       jl        short 0000F457
       mov       edx,[ecx+48]
       cmp       edx,2
       je        short 0000F4D1
       test      dl,1
       je        short 0000F4B6
       test      dl,2
       jne       short 0000F4A4
       mov       edx,5D
       call      dword ptr ds:[0DB28]
       mov       ecx,[ebp+0FFDC]
       mov       edx,5D
       call      dword ptr ds:[0DB40]
       jmp       short 0000F4DC
       call      000006A0
       mov       edx,5D
       call      dword ptr ds:[0DB28]
       mov       ecx,[ebp+0FFDC]
       mov       edx,5D
       call      dword ptr ds:[0DAF8]
       jmp       short 0000F4DC
       mov       edx,5D
       call      dword ptr ds:[0DAF8]
       mov       ecx,[ebp+0FFDC]
       mov       eax,[ecx+18]
       or        eax,80000000
       mov       [ecx+18],eax
       test      eax,7FFFFFFF
       je        short 0000F4F5
       dec       eax
       mov       [ecx+18],eax
       mov       byte ptr [ecx+21],4
       call      dword ptr ds:[0D840]
       mov       ecx,[ebp+0FFDC]
       call      dword ptr ds:[0A838]
       jmp       short 0000F516
       mov       ecx,[ebp+0FFDC]
       call      dword ptr ds:[0A838]
       pop       eax
       jmp       eax
       lea       esp,[ebp+0FFF4]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       test      edx,edx
       jne       short 0000F52B
       xor       ecx,ecx
       xor       edx,edx
       jmp       near ptr 0000F3D9
       call      dword ptr ds:[0B3D8]
       int       3
       mov       ecx,2E9D
       mov       edx,0B4D79D0
       call      0000E360
       mov       ecx,eax
       call      dword ptr ds:[5018]
       int       3
; Total bytes of code 426
; System.SpanHelpers.ClearWithoutReferences(Byte ByRef, UIntPtr)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       test      edx,edx
       je        short 00002C82
       xor       eax,eax
       mov       esi,edx
       sub       esi,1
       sbb       eax,0
       cmp       esi,16
       sbb       eax,0
       jb        short 00002C87
       cmp       edx,200
       jae       near ptr 00002D42
       xor       edi,edi
       mov       eax,ecx
       test      al,3
       jne       near ptr 00002E48
       mov       eax,ecx
       dec       eax
       test      al,4
       je        short 00002CA9
       lea       eax,[edx+0FFF0]
       sub       edx,edi
       lea       esi,[edi+10]
       xor       ebx,ebx
       mov       [ecx+edi],ebx
       mov       [ecx+edi+4],ebx
       mov       [ecx+edi+8],ebx
       mov       [ecx+edi+0C],ebx
       mov       edi,esi
       cmp       edi,eax
       jbe       short 00002C40
       test      dl,8
       je        short 00002C6B
       xor       eax,eax
       mov       [ecx+edi],eax
       mov       [ecx+edi+4],eax
       add       edi,8
       test      dl,4
       je        short 00002C78
       xor       eax,eax
       mov       [ecx+edi],eax
       add       edi,4
       test      dl,2
       jne       short 00002C98
       test      dl,1
       jne       short 00002CA3
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       cmp       esi,0B
       jne       short 00002CB3
       xor       edx,edx
       mov       [ecx],edx
       mov       [ecx+4],edx
       mov       [ecx+8],edx
       jmp       short 00002C82
       mov       word ptr [ecx+edi],0
       add       edi,2
       jmp       short 00002C7D
       mov       byte ptr [ecx+edi],0
       jmp       short 00002C82
       xor       eax,eax
       mov       [ecx+edi],eax
       add       edi,4
       jmp       short 00002C3B
       cmp       esi,15
       ja        near ptr 00002C1C
       lea       eax,ds:[2E78]
       mov       eax,[eax+esi*4]
       lea       edx,ds:[2C06]
       add       eax,edx
       jmp       eax
       xor       eax,eax
       mov       [ecx],eax
       jmp       short 00002C82
       xor       eax,eax
       mov       [ecx],eax
       mov       word ptr [ecx+4],0
       mov       byte ptr [ecx+6],0
       jmp       short 00002C82
       xor       eax,eax
       mov       [ecx],eax
       mov       word ptr [ecx+4],0
       jmp       short 00002C82
       xor       eax,eax
       mov       [ecx],eax
       mov       byte ptr [ecx+4],0
       jmp       short 00002C82
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       word ptr [ecx+8],0
       jmp       near ptr 00002C82
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       jmp       near ptr 00002C82
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       byte ptr [ecx+8],0
       jmp       near ptr 00002C82
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       word ptr [ecx+0C],0
       mov       byte ptr [ecx+0E],0
       jmp       near ptr 00002C82
       call      dword ptr ds:[0B888]
       jmp       near ptr 00002C82
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       [ecx+10],eax
       jmp       near ptr 00002C82
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       byte ptr [ecx+10],0
       jmp       near ptr 00002C82
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       [ecx+10],eax
       mov       word ptr [ecx+14],0
       jmp       near ptr 00002C82
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       word ptr [ecx+8],0
       mov       byte ptr [ecx+0A],0
       jmp       near ptr 00002C82
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       jmp       near ptr 00002C82
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       word ptr [ecx+0C],0
       jmp       near ptr 00002C82
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       word ptr [ecx+10],0
       jmp       near ptr 00002C82
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       byte ptr [ecx+0C],0
       jmp       near ptr 00002C82
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       word ptr [ecx+10],0
       mov       byte ptr [ecx+12],0
       jmp       near ptr 00002C82
       mov       word ptr [ecx],0
       jmp       near ptr 00002C82
       mov       word ptr [ecx],0
       mov       byte ptr [ecx+2],0
       jmp       near ptr 00002C82
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       [ecx+10],eax
       mov       byte ptr [ecx+14],0
       jmp       near ptr 00002C82
       mov       eax,ecx
       test      al,1
       je        short 00002E60
       mov       byte ptr [ecx],0
       mov       edi,1
       mov       eax,ecx
       test      al,2
       jne       near ptr 00002C34
       mov       word ptr [ecx+edi],0
       add       edi,2
       jmp       near ptr 00002C34
       mov       byte ptr [ecx],0
       jmp       near ptr 00002C82
; Total bytes of code 630
; System.Text.Json.Utf8JsonWriter.WriteStart(Byte)
       push      ebp
       mov       ebp,esp
       push      esi
       mov       esi,ecx
       mov       ecx,[esi+18]
       and       ecx,7FFFFFFF
       cmp       ecx,[esi+44]
       jge       short 00003225
       cmp       dword ptr [esi+48],2
       je        short 00003207
       movzx     edx,dl
       mov       ecx,esi
       call      dword ptr ds:[0D900]
       jmp       short 00003212
       movzx     edx,dl
       mov       ecx,esi
       call      dword ptr ds:[0D8E8]
       mov       edx,[esi+18]
       and       edx,7FFFFFFF
       mov       [esi+18],edx
       inc       edx
       mov       [esi+18],edx
       pop       esi
       pop       ebp
       ret
       mov       edx,[esi+18]
       push      dword ptr [esi+44]
       push      0
       push      0
       mov       ecx,1A
       call      dword ptr ds:[53D8]
       int       3
; Total bytes of code 91
; System.Text.Json.Utf8JsonWriter.WriteStringValue(System.DateTime)
       push      ebp
       mov       ebp,esp
       push      esi
       mov       esi,ecx
       test      byte ptr [esi+48],2
       jne       short 00001DF4
       mov       ecx,esi
       call      dword ptr ds:[3138]
       test      byte ptr [esi+48],1
       je        short 00001E0A
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       mov       ecx,esi
       call      dword ptr ds:[1AC8]
       jmp       short 00001E18
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       mov       ecx,esi
       call      dword ptr ds:[1AB0]
       or        dword ptr [esi+18],80000000
       mov       byte ptr [esi+21],7
       pop       esi
       pop       ebp
       ret       8
; Total bytes of code 72
; System.Text.Json.Utf8JsonWriter.WriteEndIndented(Byte)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       sub       esp,28
       xor       eax,eax
       mov       [ebp+0FFE8],eax
       mov       [ebp+0FFD0],eax
       mov       esi,ecx
       mov       ebx,edx
       movzx     edx,byte ptr [esi+21]
       cmp       edx,1
       je        short 00002F0B
       cmp       edx,3
       jne       short 00002F1E
       movzx     edx,bl
       mov       ecx,esi
       call      dword ptr ds:[0DAF8]
       lea       esp,[ebp+0FFF4]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       mov       edi,[esi+18]
       and       edi,7FFFFFFF
       add       edi,edi
       je        short 00002F2E
       add       edi,0FFFFFFFE
       lea       edx,[edi+3]
       mov       ecx,[esi+2C]
       sub       ecx,[esi+1C]
       cmp       ecx,edx
       jge       short 00002F43
       mov       ecx,esi
       call      dword ptr ds:[0DB88]
       lea       eax,[esi+24]
       mov       [ebp+0FFDC],eax
       xor       ecx,ecx
       mov       [ebp+0FFE0],ecx
       xor       edx,edx
       mov       ecx,[eax]
       test      ecx,ecx
       je        short 00002F95
       mov       edx,[ecx]
       test      dword ptr [edx],80000000
       je        near ptr 00003013
       lea       edx,[ecx+8]
       mov       [ebp+0FFE0],edx
       mov       ecx,[ecx+4]
       mov       edx,[eax+4]
       and       edx,7FFFFFFF
       mov       eax,[eax+8]
       cmp       edx,ecx
       ja        near ptr 00003044
       sub       ecx,edx
       cmp       ecx,eax
       jb        near ptr 00003044
       mov       ecx,[ebp+0FFE0]
       add       ecx,edx
       mov       [ebp+0FFE0],ecx
       mov       edx,eax
       mov       ecx,[ebp+0FFE0]
       mov       eax,ecx
       mov       [ebp+0FFD4],eax
       mov       [ebp+0FFE4],edx
       mov       ecx,[esi+1C]
       lea       eax,[ecx+1]
       mov       [esi+1C],eax
       cmp       ecx,edx
       jae       near ptr 0000304B
       mov       eax,[ebp+0FFD4]
       mov       byte ptr [eax+ecx],0D
       mov       ecx,[esi+1C]
       lea       eax,[ecx+1]
       mov       [esi+1C],eax
       cmp       ecx,edx
       jae       near ptr 0000304B
       mov       eax,[ebp+0FFD4]
       mov       byte ptr [eax+ecx],0A
       mov       ecx,[esi+1C]
       cmp       ecx,edx
       ja        short 00003044
       mov       [ebp+0FFD4],eax
       add       eax,ecx
       mov       [ebp+0FFD8],eax
       mov       eax,edx
       sub       eax,ecx
       mov       ecx,[ebp+0FFD8]
       push      eax
       push      ecx
       mov       ecx,edi
       call      dword ptr ds:[71F8]
       mov       edx,edi
       add       edx,[esi+1C]
       mov       ecx,edx
       mov       [esi+1C],ecx
       lea       ecx,[edx+1]
       mov       [esi+1C],ecx
       cmp       edx,[ebp+0FFE4]
       jae       short 0000304B
       mov       esi,[ebp+0FFD4]
       mov       [esi+edx],bl
       lea       esp,[ebp+0FFF4]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       mov       [ebp+0FFF0],ebx
       lea       edx,[ebp+0FFE8]
       mov       [ebp+0FFD0],edx
       mov       edx,[ecx]
       mov       edx,[edx+28]
       mov       [ebp+0FFCC],edx
       mov       edx,[ebp+0FFD0]
       mov       ebx,[ebp+0FFCC]
       call      dword ptr [ebx+14]
       mov       ecx,[ebp+0FFE8]
       mov       edx,[ebp+0FFEC]
       mov       [ebp+0FFE0],ecx
       mov       ecx,edx
       mov       eax,[ebp+0FFDC]
       movzx     ebx,byte ptr [ebp+0FFF0]
       jmp       near ptr 00002F6D
       call      dword ptr ds:[0B3D8]
       int       3
       call      000006A0
       int       3
; Total bytes of code 361
; System.Text.Json.Utf8JsonWriter.Flush()
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       mov       esi,ecx
       cmp       dword ptr [esi+10],0
       jne       short 00002A18
       cmp       dword ptr [esi+0C],0
       je        near ptr 00002AFA
       xor       ecx,ecx
       mov       [esi+24],ecx
       mov       [esi+28],ecx
       mov       [esi+2C],ecx
       cmp       dword ptr [esi+10],0
       je        near ptr 00002AC4
       mov       edx,[esi+1C]
       test      edx,edx
       je        near ptr 00002AB4
       mov       ecx,[esi+14]
       cmp       [ecx],ecx
       call      dword ptr ds:[0DE20]
       xor       ecx,ecx
       mov       [esi+1C],ecx
       mov       ecx,[esi+10]
       mov       eax,[esi+14]
       mov       edx,[eax+4]
       mov       edi,[eax+8]
       test      edx,edx
       je        near ptr 00002B01
       mov       eax,[edx+4]
       cmp       [edx+4],edi
       jb        near ptr 00002B18
       add       edx,8
       push      edi
       push      edx
       mov       eax,[ecx]
       mov       eax,[eax+38]
       call      dword ptr [eax+1C]
       lea       ecx,[esi+4]
       mov       edx,[ecx]
       mov       ecx,[ecx+4]
       mov       edi,[esi+14]
       mov       eax,[edi+8]
       mov       ebx,eax
       sar       ebx,1F
       add       edx,eax
       adc       ecx,ebx
       lea       eax,[esi+4]
       mov       [eax],edx
       mov       [eax+4],ecx
       mov       ecx,[edi+4]
       mov       edx,[edi+8]
       test      ecx,ecx
       je        short 00002B0E
       mov       eax,[ecx+4]
       cmp       [ecx+4],edx
       jb        short 00002B18
       add       ecx,8
       call      dword ptr ds:[0DC00]
       xor       ecx,ecx
       mov       [edi+8],ecx
       mov       ecx,[esi+10]
       mov       eax,[ecx]
       mov       eax,[eax+30]
       call      dword ptr [eax+18]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       mov       edx,[esi+1C]
       test      edx,edx
       je        short 00002AF5
       mov       ecx,[esi+0C]
       call      dword ptr ds:[29C]
       lea       eax,[esi+4]
       mov       edx,[eax]
       mov       eax,[eax+4]
       mov       ecx,[esi+1C]
       mov       edi,ecx
       sar       edi,1F
       add       edx,ecx
       adc       eax,edi
       lea       ecx,[esi+4]
       mov       [ecx],edx
       mov       [ecx+4],eax
       xor       eax,eax
       mov       [esi+1C],eax
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       call      dword ptr ds:[5558]
       int       3
       test      edi,edi
       jne       short 00002B18
       xor       edx,edx
       xor       edi,edi
       jmp       near ptr 00002A6B
       test      edx,edx
       jne       short 00002B18
       xor       ecx,ecx
       xor       edx,edx
       jmp       short 00002AA9
       call      dword ptr ds:[0B3D8]
       int       3
; Total bytes of code 287
; System.Text.Json.Utf8JsonWriter.Dispose()
       push      ebp
       mov       ebp,esp
       push      esi
       mov       esi,ecx
       cmp       dword ptr [esi+10],0
       jne       short 000030ED
       cmp       dword ptr [esi+0C],0
       jne       short 000030ED
       pop       esi
       pop       ebp
       ret
       mov       ecx,esi
       call      dword ptr ds:[0D840]
       mov       ecx,esi
       call      dword ptr ds:[0D810]
       xor       eax,eax
       mov       [esi+10],eax
       mov       [esi+14],eax
       mov       [esi+0C],eax
       pop       esi
       pop       ebp
       ret
; Total bytes of code 51

Compare Jit Disasm

; System.Text.Json.Tests.Perf_DateTimes.WriteDateTimes()
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       sub       esp,18
       xor       eax,eax
       mov       [ebp+0FFE0],eax
       mov       [ebp+0FFE4],eax
       mov       [ebp+0FFE8],eax
       mov       [ebp+0FFEC],eax
       mov       esi,ecx
       mov       edi,[esi+4]
       mov       ecx,[edi+4]
       mov       edx,[edi+8]
       test      ecx,ecx
       je        near ptr 0000F53E
       mov       eax,[ecx+4]
       cmp       [ecx+4],edx
       jb        near ptr 0000F54B
       add       ecx,8
       call      dword ptr ds:[0DC00]
       xor       ecx,ecx
       mov       [edi+8],ecx
       mov       edi,[esi+4]
       movzx     ecx,byte ptr [esi+0C]
       test      ecx,ecx
       je        short 0000F416
       mov       ebx,1
       jmp       short 0000F418
       xor       ebx,ebx
       movzx     ecx,byte ptr [esi+0D]
       test      ecx,ecx
       je        short 0000F425
       or        ebx,2
       jmp       short 0000F428
       and       ebx,0FFFFFFFD
       mov       ecx,offset MT_System.Text.Json.Utf8JsonWriter
       call      0000300C
       mov       ecx,eax
       mov       eax,ebx
       test      edi,edi
       je        near ptr 0000F552
       lea       edx,[ecx+0C]
       call      000000C8
       lea       edx,[ecx+40]
       xor       edi,edi
       mov       [edx],edi
       mov       [edx+4],edi
       mov       [edx+8],eax
       cmp       dword ptr [ecx+44],0
       jne       short 0000F460
       mov       dword ptr [ecx+44],3E8
       mov       [ebp+0FFDC],ecx
       mov       edx,5B
       call      dword ptr ds:[1A38]
       mov       ecx,[ebp+0FFDC]
       mov       byte ptr [ecx+21],3
       xor       edi,edi
       mov       eax,ecx
       mov       edx,[esi+8]
       cmp       edi,[edx+4]
       jae       short 0000F4D1
       mov       ebx,edi
       shl       ebx,3
       add       ebx,8
       add       edx,ebx
       push      dword ptr [edx+4]
       push      dword ptr [edx]
       mov       ecx,eax
       call      dword ptr ds:[5AF8]
       inc       edi
       cmp       edi,186A0
       mov       ecx,[ebp+0FFDC]
       jl        short 0000F477
       mov       edx,[ecx+48]
       cmp       edx,2
       je        short 0000F4F1
       test      dl,1
       je        short 0000F4D6
       test      dl,2
       jne       short 0000F4C4
       mov       edx,5D
       call      dword ptr ds:[1C90]
       mov       ecx,[ebp+0FFDC]
       mov       edx,5D
       call      dword ptr ds:[1CA8]
       jmp       short 0000F4FC
       call      0000F0B0
       mov       edx,5D
       call      dword ptr ds:[1C90]
       mov       ecx,[ebp+0FFDC]
       mov       edx,5D
       call      dword ptr ds:[1C60]
       jmp       short 0000F4FC
       mov       edx,5D
       call      dword ptr ds:[1C60]
       mov       ecx,[ebp+0FFDC]
       mov       eax,[ecx+18]
       or        eax,80000000
       mov       [ecx+18],eax
       test      eax,7FFFFFFF
       je        short 0000F515
       dec       eax
       mov       [ecx+18],eax
       mov       byte ptr [ecx+21],4
       call      dword ptr ds:[19A8]
       mov       ecx,[ebp+0FFDC]
       call      dword ptr ds:[0BC84]
       jmp       short 0000F536
       mov       ecx,[ebp+0FFDC]
       call      dword ptr ds:[0BC84]
       pop       eax
       jmp       eax
       lea       esp,[ebp+0FFF4]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       test      edx,edx
       jne       short 0000F54B
       xor       ecx,ecx
       xor       edx,edx
       jmp       near ptr 0000F3F9
       call      dword ptr ds:[0F048]
       int       3
       mov       ecx,3007
       mov       edx,0B6582F8
       call      0000CA50
       mov       ecx,eax
       call      dword ptr ds:[9018]
       int       3
; Total bytes of code 426
; System.SpanHelpers.ClearWithoutReferences(Byte ByRef, UIntPtr)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       test      edx,edx
       je        short 00002E82
       xor       eax,eax
       mov       esi,edx
       sub       esi,1
       sbb       eax,0
       cmp       esi,16
       sbb       eax,0
       jb        short 00002E87
       cmp       edx,200
       jae       near ptr 00002F42
       xor       edi,edi
       mov       eax,ecx
       test      al,3
       jne       near ptr 00003048
       mov       eax,ecx
       dec       eax
       test      al,4
       je        short 00002EA9
       lea       eax,[edx+0FFF0]
       sub       edx,edi
       lea       esi,[edi+10]
       xor       ebx,ebx
       mov       [ecx+edi],ebx
       mov       [ecx+edi+4],ebx
       mov       [ecx+edi+8],ebx
       mov       [ecx+edi+0C],ebx
       mov       edi,esi
       cmp       edi,eax
       jbe       short 00002E40
       test      dl,8
       je        short 00002E6B
       xor       eax,eax
       mov       [ecx+edi],eax
       mov       [ecx+edi+4],eax
       add       edi,8
       test      dl,4
       je        short 00002E78
       xor       eax,eax
       mov       [ecx+edi],eax
       add       edi,4
       test      dl,2
       jne       short 00002E98
       test      dl,1
       jne       short 00002EA3
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       cmp       esi,0B
       jne       short 00002EB3
       xor       edx,edx
       mov       [ecx],edx
       mov       [ecx+4],edx
       mov       [ecx+8],edx
       jmp       short 00002E82
       mov       word ptr [ecx+edi],0
       add       edi,2
       jmp       short 00002E7D
       mov       byte ptr [ecx+edi],0
       jmp       short 00002E82
       xor       eax,eax
       mov       [ecx+edi],eax
       add       edi,4
       jmp       short 00002E3B
       cmp       esi,15
       ja        near ptr 00002E1C
       lea       eax,ds:[3078]
       mov       eax,[eax+esi*4]
       lea       edx,ds:[2E06]
       add       eax,edx
       jmp       eax
       xor       eax,eax
       mov       [ecx],eax
       jmp       short 00002E82
       xor       eax,eax
       mov       [ecx],eax
       mov       word ptr [ecx+4],0
       mov       byte ptr [ecx+6],0
       jmp       short 00002E82
       xor       eax,eax
       mov       [ecx],eax
       mov       word ptr [ecx+4],0
       jmp       short 00002E82
       xor       eax,eax
       mov       [ecx],eax
       mov       byte ptr [ecx+4],0
       jmp       short 00002E82
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       word ptr [ecx+8],0
       jmp       near ptr 00002E82
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       jmp       near ptr 00002E82
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       byte ptr [ecx+8],0
       jmp       near ptr 00002E82
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       word ptr [ecx+0C],0
       mov       byte ptr [ecx+0E],0
       jmp       near ptr 00002E82
       call      dword ptr ds:[9588]
       jmp       near ptr 00002E82
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       [ecx+10],eax
       jmp       near ptr 00002E82
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       byte ptr [ecx+10],0
       jmp       near ptr 00002E82
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       [ecx+10],eax
       mov       word ptr [ecx+14],0
       jmp       near ptr 00002E82
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       word ptr [ecx+8],0
       mov       byte ptr [ecx+0A],0
       jmp       near ptr 00002E82
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       jmp       near ptr 00002E82
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       word ptr [ecx+0C],0
       jmp       near ptr 00002E82
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       word ptr [ecx+10],0
       jmp       near ptr 00002E82
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       byte ptr [ecx+0C],0
       jmp       near ptr 00002E82
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       word ptr [ecx+10],0
       mov       byte ptr [ecx+12],0
       jmp       near ptr 00002E82
       mov       word ptr [ecx],0
       jmp       near ptr 00002E82
       mov       word ptr [ecx],0
       mov       byte ptr [ecx+2],0
       jmp       near ptr 00002E82
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       [ecx+10],eax
       mov       byte ptr [ecx+14],0
       jmp       near ptr 00002E82
       mov       eax,ecx
       test      al,1
       je        short 00003060
       mov       byte ptr [ecx],0
       mov       edi,1
       mov       eax,ecx
       test      al,2
       jne       near ptr 00002E34
       mov       word ptr [ecx+edi],0
       add       edi,2
       jmp       near ptr 00002E34
       mov       byte ptr [ecx],0
       jmp       near ptr 00002E82
; Total bytes of code 630
; System.Text.Json.Utf8JsonWriter.WriteStart(Byte)
       push      ebp
       mov       ebp,esp
       push      esi
       mov       esi,ecx
       mov       ecx,[esi+18]
       and       ecx,7FFFFFFF
       cmp       ecx,[esi+44]
       jge       short 00003425
       cmp       dword ptr [esi+48],2
       je        short 00003407
       movzx     edx,dl
       mov       ecx,esi
       call      dword ptr ds:[1A68]
       jmp       short 00003412
       movzx     edx,dl
       mov       ecx,esi
       call      dword ptr ds:[1A50]
       mov       edx,[esi+18]
       and       edx,7FFFFFFF
       mov       [esi+18],edx
       inc       edx
       mov       [esi+18],edx
       pop       esi
       pop       ebp
       ret
       mov       edx,[esi+18]
       push      dword ptr [esi+44]
       push      0
       push      0
       mov       ecx,1A
       call      dword ptr ds:[93D8]
       int       3
; Total bytes of code 91
; System.Text.Json.Utf8JsonWriter.WriteStringValue(System.DateTime)
       push      ebp
       mov       ebp,esp
       push      esi
       mov       esi,ecx
       test      byte ptr [esi+48],2
       jne       short 00002054
       mov       ecx,esi
       call      dword ptr ds:[7198]
       test      byte ptr [esi+48],1
       je        short 0000206A
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       mov       ecx,esi
       call      dword ptr ds:[5B28]
       jmp       short 00002078
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       mov       ecx,esi
       call      dword ptr ds:[5B10]
       or        dword ptr [esi+18],80000000
       mov       byte ptr [esi+21],7
       pop       esi
       pop       ebp
       ret       8
; Total bytes of code 72
; System.Text.Json.Utf8JsonWriter.WriteEndIndented(Byte)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       sub       esp,28
       xor       eax,eax
       mov       [ebp+0FFE8],eax
       mov       [ebp+0FFD0],eax
       mov       esi,ecx
       mov       ebx,edx
       movzx     edx,byte ptr [esi+21]
       cmp       edx,1
       je        short 0000310B
       cmp       edx,3
       jne       short 0000311E
       movzx     edx,bl
       mov       ecx,esi
       call      dword ptr ds:[1C60]
       lea       esp,[ebp+0FFF4]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       mov       edi,[esi+18]
       and       edi,7FFFFFFF
       add       edi,edi
       je        short 0000312E
       add       edi,0FFFFFFFE
       lea       edx,[edi+3]
       mov       ecx,[esi+2C]
       sub       ecx,[esi+1C]
       cmp       ecx,edx
       jge       short 00003143
       mov       ecx,esi
       call      dword ptr ds:[1CF0]
       lea       eax,[esi+24]
       mov       [ebp+0FFDC],eax
       xor       ecx,ecx
       mov       [ebp+0FFE0],ecx
       xor       edx,edx
       mov       ecx,[eax]
       test      ecx,ecx
       je        short 00003195
       mov       edx,[ecx]
       test      dword ptr [edx],80000000
       je        near ptr 00003213
       lea       edx,[ecx+8]
       mov       [ebp+0FFE0],edx
       mov       ecx,[ecx+4]
       mov       edx,[eax+4]
       and       edx,7FFFFFFF
       mov       eax,[eax+8]
       cmp       edx,ecx
       ja        near ptr 00003244
       sub       ecx,edx
       cmp       ecx,eax
       jb        near ptr 00003244
       mov       ecx,[ebp+0FFE0]
       add       ecx,edx
       mov       [ebp+0FFE0],ecx
       mov       edx,eax
       mov       ecx,[ebp+0FFE0]
       mov       eax,ecx
       mov       [ebp+0FFD4],eax
       mov       [ebp+0FFE4],edx
       mov       ecx,[esi+1C]
       lea       eax,[ecx+1]
       mov       [esi+1C],eax
       cmp       ecx,edx
       jae       near ptr 0000324B
       mov       eax,[ebp+0FFD4]
       mov       byte ptr [eax+ecx],0D
       mov       ecx,[esi+1C]
       lea       eax,[ecx+1]
       mov       [esi+1C],eax
       cmp       ecx,edx
       jae       near ptr 0000324B
       mov       eax,[ebp+0FFD4]
       mov       byte ptr [eax+ecx],0A
       mov       ecx,[esi+1C]
       cmp       ecx,edx
       ja        short 00003244
       mov       [ebp+0FFD4],eax
       add       eax,ecx
       mov       [ebp+0FFD8],eax
       mov       eax,edx
       sub       eax,ecx
       mov       ecx,[ebp+0FFD8]
       push      eax
       push      ecx
       mov       ecx,edi
       call      dword ptr ds:[0B1F8]
       mov       edx,edi
       add       edx,[esi+1C]
       mov       ecx,edx
       mov       [esi+1C],ecx
       lea       ecx,[edx+1]
       mov       [esi+1C],ecx
       cmp       edx,[ebp+0FFE4]
       jae       short 0000324B
       mov       esi,[ebp+0FFD4]
       mov       [esi+edx],bl
       lea       esp,[ebp+0FFF4]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       mov       [ebp+0FFF0],ebx
       lea       edx,[ebp+0FFE8]
       mov       [ebp+0FFD0],edx
       mov       edx,[ecx]
       mov       edx,[edx+28]
       mov       [ebp+0FFCC],edx
       mov       edx,[ebp+0FFD0]
       mov       ebx,[ebp+0FFCC]
       call      dword ptr [ebx+14]
       mov       ecx,[ebp+0FFE8]
       mov       edx,[ebp+0FFEC]
       mov       [ebp+0FFE0],ecx
       mov       ecx,edx
       mov       eax,[ebp+0FFDC]
       movzx     ebx,byte ptr [ebp+0FFF0]
       jmp       near ptr 0000316D
       call      dword ptr ds:[0F048]
       int       3
       call      0000F0B0
       int       3
; Total bytes of code 361
; System.Text.Json.Utf8JsonWriter.Flush()
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       mov       esi,ecx
       cmp       dword ptr [esi+10],0
       jne       short 00002C18
       cmp       dword ptr [esi+0C],0
       je        near ptr 00002CFA
       xor       ecx,ecx
       mov       [esi+24],ecx
       mov       [esi+28],ecx
       mov       [esi+2C],ecx
       cmp       dword ptr [esi+10],0
       je        near ptr 00002CC4
       mov       edx,[esi+1C]
       test      edx,edx
       je        near ptr 00002CB4
       mov       ecx,[esi+14]
       cmp       [ecx],ecx
       call      dword ptr ds:[0E720]
       xor       ecx,ecx
       mov       [esi+1C],ecx
       mov       ecx,[esi+10]
       mov       eax,[esi+14]
       mov       edx,[eax+4]
       mov       edi,[eax+8]
       test      edx,edx
       je        near ptr 00002D01
       mov       eax,[edx+4]
       cmp       [edx+4],edi
       jb        near ptr 00002D18
       add       edx,8
       push      edi
       push      edx
       mov       eax,[ecx]
       mov       eax,[eax+38]
       call      dword ptr [eax+1C]
       lea       ecx,[esi+4]
       mov       edx,[ecx]
       mov       ecx,[ecx+4]
       mov       edi,[esi+14]
       mov       eax,[edi+8]
       mov       ebx,eax
       sar       ebx,1F
       add       edx,eax
       adc       ecx,ebx
       lea       eax,[esi+4]
       mov       [eax],edx
       mov       [eax+4],ecx
       mov       ecx,[edi+4]
       mov       edx,[edi+8]
       test      ecx,ecx
       je        short 00002D0E
       mov       eax,[ecx+4]
       cmp       [ecx+4],edx
       jb        short 00002D18
       add       ecx,8
       call      dword ptr ds:[0DC00]
       xor       ecx,ecx
       mov       [edi+8],ecx
       mov       ecx,[esi+10]
       mov       eax,[ecx]
       mov       eax,[eax+30]
       call      dword ptr [eax+18]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       mov       edx,[esi+1C]
       test      edx,edx
       je        short 00002CF5
       mov       ecx,[esi+0C]
       call      dword ptr ds:[29C]
       lea       eax,[esi+4]
       mov       edx,[eax]
       mov       eax,[eax+4]
       mov       ecx,[esi+1C]
       mov       edi,ecx
       sar       edi,1F
       add       edx,ecx
       adc       eax,edi
       lea       ecx,[esi+4]
       mov       [ecx],edx
       mov       [ecx+4],eax
       xor       eax,eax
       mov       [esi+1C],eax
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       call      dword ptr ds:[9558]
       int       3
       test      edi,edi
       jne       short 00002D18
       xor       edx,edx
       xor       edi,edi
       jmp       near ptr 00002C6B
       test      edx,edx
       jne       short 00002D18
       xor       ecx,ecx
       xor       edx,edx
       jmp       short 00002CA9
       call      dword ptr ds:[0F048]
       int       3
; Total bytes of code 287
; System.Text.Json.Utf8JsonWriter.Dispose()
       push      ebp
       mov       ebp,esp
       push      esi
       mov       esi,ecx
       cmp       dword ptr [esi+10],0
       jne       short 000032ED
       cmp       dword ptr [esi+0C],0
       jne       short 000032ED
       pop       esi
       pop       ebp
       ret
       mov       ecx,esi
       call      dword ptr ds:[19A8]
       mov       ecx,esi
       call      dword ptr ds:[1978]
       xor       eax,eax
       mov       [esi+10],eax
       mov       [esi+14],eax
       mov       [esi+0C],eax
       pop       esi
       pop       ebp
       ret
; Total bytes of code 51

System.Text.Json.Tests.Perf_DateTimes.WriteDateTimes(Formatted: False, SkipValidation: False)


Description of detection logic

IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small.
IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline.
IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small.
IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small.
IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline.
IsImprovementWindowed:Marked as improvement because 11.901066666666663 < 12.101652873767257.
IsChangePoint: Marked as a change because one of 7/31/2022 12:39:41 PM, 8/5/2022 10:47:59 PM falls between 7/28/2022 9:13:34 AM and 8/5/2022 10:47:59 PM.
IsImprovementStdDev: Marked as improvement because 92.59718848771102 (T) = (0 -11914696.019632705) / Math.Sqrt((14611217211.491175 / (299)) + (1045023325.9970634 / (34))) is greater than 1.9671567996108528 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (34) - 2, .975) and 0.06484310931232153 = (12740852.511786653 - 11914696.019632705) / 12740852.511786653 is greater than 0.05.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Text.Json.Tests.Perf_DateTimes.WriteDateTimes()
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       sub       esp,18
       xor       eax,eax
       mov       [ebp+0FFE0],eax
       mov       [ebp+0FFE4],eax
       mov       [ebp+0FFE8],eax
       mov       [ebp+0FFEC],eax
       mov       esi,ecx
       mov       edi,[esi+4]
       mov       ecx,[edi+4]
       mov       edx,[edi+8]
       test      ecx,ecx
       je        near ptr 0000F51E
       mov       eax,[ecx+4]
       cmp       [ecx+4],edx
       jb        near ptr 0000F52B
       add       ecx,8
       call      dword ptr ds:[0DC00]
       xor       ecx,ecx
       mov       [edi+8],ecx
       mov       edi,[esi+4]
       movzx     ecx,byte ptr [esi+0C]
       test      ecx,ecx
       je        short 0000F3F6
       mov       ebx,1
       jmp       short 0000F3F8
       xor       ebx,ebx
       movzx     ecx,byte ptr [esi+0D]
       test      ecx,ecx
       je        short 0000F405
       or        ebx,2
       jmp       short 0000F408
       and       ebx,0FFFFFFFD
       mov       ecx,offset MT_System.Text.Json.Utf8JsonWriter
       call      0000300C
       mov       ecx,eax
       mov       eax,ebx
       test      edi,edi
       je        near ptr 0000F532
       lea       edx,[ecx+0C]
       call      000000C8
       lea       edx,[ecx+40]
       xor       edi,edi
       mov       [edx],edi
       mov       [edx+4],edi
       mov       [edx+8],eax
       cmp       dword ptr [ecx+44],0
       jne       short 0000F440
       mov       dword ptr [ecx+44],3E8
       mov       [ebp+0FFDC],ecx
       mov       edx,5B
       call      dword ptr ds:[0D8D0]
       mov       ecx,[ebp+0FFDC]
       mov       byte ptr [ecx+21],3
       xor       edi,edi
       mov       eax,ecx
       mov       edx,[esi+8]
       cmp       edi,[edx+4]
       jae       short 0000F4B1
       mov       ebx,edi
       shl       ebx,3
       add       ebx,8
       add       edx,ebx
       push      dword ptr [edx+4]
       push      dword ptr [edx]
       mov       ecx,eax
       call      dword ptr ds:[1A98]
       inc       edi
       cmp       edi,186A0
       mov       ecx,[ebp+0FFDC]
       jl        short 0000F457
       mov       edx,[ecx+48]
       cmp       edx,2
       je        short 0000F4D1
       test      dl,1
       je        short 0000F4B6
       test      dl,2
       jne       short 0000F4A4
       mov       edx,5D
       call      dword ptr ds:[0DB28]
       mov       ecx,[ebp+0FFDC]
       mov       edx,5D
       call      dword ptr ds:[0DB40]
       jmp       short 0000F4DC
       call      000006A0
       mov       edx,5D
       call      dword ptr ds:[0DB28]
       mov       ecx,[ebp+0FFDC]
       mov       edx,5D
       call      dword ptr ds:[0DAF8]
       jmp       short 0000F4DC
       mov       edx,5D
       call      dword ptr ds:[0DAF8]
       mov       ecx,[ebp+0FFDC]
       mov       eax,[ecx+18]
       or        eax,80000000
       mov       [ecx+18],eax
       test      eax,7FFFFFFF
       je        short 0000F4F5
       dec       eax
       mov       [ecx+18],eax
       mov       byte ptr [ecx+21],4
       call      dword ptr ds:[0D840]
       mov       ecx,[ebp+0FFDC]
       call      dword ptr ds:[0A838]
       jmp       short 0000F516
       mov       ecx,[ebp+0FFDC]
       call      dword ptr ds:[0A838]
       pop       eax
       jmp       eax
       lea       esp,[ebp+0FFF4]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       test      edx,edx
       jne       short 0000F52B
       xor       ecx,ecx
       xor       edx,edx
       jmp       near ptr 0000F3D9
       call      dword ptr ds:[0B3D8]
       int       3
       mov       ecx,2E9D
       mov       edx,0AFF79D0
       call      0000E360
       mov       ecx,eax
       call      dword ptr ds:[5018]
       int       3
; Total bytes of code 426
; System.SpanHelpers.ClearWithoutReferences(Byte ByRef, UIntPtr)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       test      edx,edx
       je        short 00003E22
       xor       eax,eax
       mov       esi,edx
       sub       esi,1
       sbb       eax,0
       cmp       esi,16
       sbb       eax,0
       jb        short 00003E27
       cmp       edx,200
       jae       near ptr 00003EE2
       xor       edi,edi
       mov       eax,ecx
       test      al,3
       jne       near ptr 00003FE8
       mov       eax,ecx
       dec       eax
       test      al,4
       je        short 00003E49
       lea       eax,[edx+0FFF0]
       sub       edx,edi
       lea       esi,[edi+10]
       xor       ebx,ebx
       mov       [ecx+edi],ebx
       mov       [ecx+edi+4],ebx
       mov       [ecx+edi+8],ebx
       mov       [ecx+edi+0C],ebx
       mov       edi,esi
       cmp       edi,eax
       jbe       short 00003DE0
       test      dl,8
       je        short 00003E0B
       xor       eax,eax
       mov       [ecx+edi],eax
       mov       [ecx+edi+4],eax
       add       edi,8
       test      dl,4
       je        short 00003E18
       xor       eax,eax
       mov       [ecx+edi],eax
       add       edi,4
       test      dl,2
       jne       short 00003E38
       test      dl,1
       jne       short 00003E43
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       cmp       esi,0B
       jne       short 00003E53
       xor       edx,edx
       mov       [ecx],edx
       mov       [ecx+4],edx
       mov       [ecx+8],edx
       jmp       short 00003E22
       mov       word ptr [ecx+edi],0
       add       edi,2
       jmp       short 00003E1D
       mov       byte ptr [ecx+edi],0
       jmp       short 00003E22
       xor       eax,eax
       mov       [ecx+edi],eax
       add       edi,4
       jmp       short 00003DDB
       cmp       esi,15
       ja        near ptr 00003DBC
       lea       eax,ds:[4018]
       mov       eax,[eax+esi*4]
       lea       edx,ds:[3DA6]
       add       eax,edx
       jmp       eax
       xor       eax,eax
       mov       [ecx],eax
       jmp       short 00003E22
       xor       eax,eax
       mov       [ecx],eax
       mov       word ptr [ecx+4],0
       mov       byte ptr [ecx+6],0
       jmp       short 00003E22
       xor       eax,eax
       mov       [ecx],eax
       mov       word ptr [ecx+4],0
       jmp       short 00003E22
       xor       eax,eax
       mov       [ecx],eax
       mov       byte ptr [ecx+4],0
       jmp       short 00003E22
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       word ptr [ecx+8],0
       jmp       near ptr 00003E22
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       jmp       near ptr 00003E22
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       byte ptr [ecx+8],0
       jmp       near ptr 00003E22
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       word ptr [ecx+0C],0
       mov       byte ptr [ecx+0E],0
       jmp       near ptr 00003E22
       call      dword ptr ds:[0B888]
       jmp       near ptr 00003E22
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       [ecx+10],eax
       jmp       near ptr 00003E22
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       byte ptr [ecx+10],0
       jmp       near ptr 00003E22
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       [ecx+10],eax
       mov       word ptr [ecx+14],0
       jmp       near ptr 00003E22
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       word ptr [ecx+8],0
       mov       byte ptr [ecx+0A],0
       jmp       near ptr 00003E22
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       jmp       near ptr 00003E22
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       word ptr [ecx+0C],0
       jmp       near ptr 00003E22
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       word ptr [ecx+10],0
       jmp       near ptr 00003E22
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       byte ptr [ecx+0C],0
       jmp       near ptr 00003E22
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       word ptr [ecx+10],0
       mov       byte ptr [ecx+12],0
       jmp       near ptr 00003E22
       mov       word ptr [ecx],0
       jmp       near ptr 00003E22
       mov       word ptr [ecx],0
       mov       byte ptr [ecx+2],0
       jmp       near ptr 00003E22
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       [ecx+10],eax
       mov       byte ptr [ecx+14],0
       jmp       near ptr 00003E22
       mov       eax,ecx
       test      al,1
       je        short 00004000
       mov       byte ptr [ecx],0
       mov       edi,1
       mov       eax,ecx
       test      al,2
       jne       near ptr 00003DD4
       mov       word ptr [ecx+edi],0
       add       edi,2
       jmp       near ptr 00003DD4
       mov       byte ptr [ecx],0
       jmp       near ptr 00003E22
; Total bytes of code 630
; System.Text.Json.Utf8JsonWriter.WriteStart(Byte)
       push      ebp
       mov       ebp,esp
       push      esi
       mov       esi,ecx
       mov       ecx,[esi+18]
       and       ecx,7FFFFFFF
       cmp       ecx,[esi+44]
       jge       short 00005E85
       cmp       dword ptr [esi+48],2
       je        short 00005E67
       movzx     edx,dl
       mov       ecx,esi
       call      dword ptr ds:[0D900]
       jmp       short 00005E72
       movzx     edx,dl
       mov       ecx,esi
       call      dword ptr ds:[0D8E8]
       mov       edx,[esi+18]
       and       edx,7FFFFFFF
       mov       [esi+18],edx
       inc       edx
       mov       [esi+18],edx
       pop       esi
       pop       ebp
       ret
       mov       edx,[esi+18]
       push      dword ptr [esi+44]
       push      0
       push      0
       mov       ecx,1A
       call      dword ptr ds:[53D8]
       int       3
; Total bytes of code 91
; System.Text.Json.Utf8JsonWriter.WriteStringValue(System.DateTime)
       push      ebp
       mov       ebp,esp
       push      esi
       mov       esi,ecx
       test      byte ptr [esi+48],2
       jne       short 00002014
       mov       ecx,esi
       call      dword ptr ds:[3138]
       test      byte ptr [esi+48],1
       je        short 0000202A
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       mov       ecx,esi
       call      dword ptr ds:[1AC8]
       jmp       short 00002038
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       mov       ecx,esi
       call      dword ptr ds:[1AB0]
       or        dword ptr [esi+18],80000000
       mov       byte ptr [esi+21],7
       pop       esi
       pop       ebp
       ret       8
; Total bytes of code 72
; System.Text.Json.Utf8JsonWriter.ValidateEnd(Byte)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       mov       esi,ecx
       cmp       dword ptr [esi+3C],0
       jle       short 00005B3A
       cmp       byte ptr [esi+21],5
       je        short 00005B3A
       cmp       dl,5D
       jne       short 00005B19
       cmp       byte ptr [esi+20],0
       jne       short 00005B54
       lea       ecx,[esi+30]
       dec       dword ptr [ecx+0C]
       mov       eax,[ecx+0C]
       cmp       eax,40
       jge       short 00005B21
       mov       eax,ecx
       mov       edx,[eax]
       mov       eax,[eax+4]
       shrd      edx,eax,1
       shr       eax,1
       mov       edi,ecx
       mov       [edi],edx
       mov       [edi+4],eax
       xor       ebx,ebx
       test      byte ptr [ecx],1
       setne     bl
       mov       [esi+20],bl
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       cmp       byte ptr [esi+20],0
       je        short 00005B6E
       jmp       short 00005AE7
       cmp       eax,40
       jne       short 00005B30
       xor       ebx,ebx
       test      byte ptr [ecx],1
       setne     bl
       jmp       short 00005B11
       call      dword ptr ds:[0D588]
       mov       ebx,eax
       jmp       short 00005B11
       push      dword ptr [esi+44]
       movzx     ecx,dl
       push      ecx
       movzx     ecx,byte ptr [esi+21]
       push      ecx
       mov       ecx,17
       xor       edx,edx
       call      dword ptr ds:[53D8]
       int       3
       push      dword ptr [esi+44]
       movzx     ecx,dl
       push      ecx
       movzx     ecx,byte ptr [esi+21]
       push      ecx
       mov       ecx,17
       xor       edx,edx
       call      dword ptr ds:[53D8]
       int       3
       push      dword ptr [esi+44]
       movzx     ecx,dl
       push      ecx
       movzx     ecx,byte ptr [esi+21]
       push      ecx
       mov       ecx,17
       xor       edx,edx
       call      dword ptr ds:[53D8]
       int       3
; Total bytes of code 192
; System.Text.Json.Utf8JsonWriter.WriteEndMinimized(Byte)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       sub       esp,8
       xor       eax,eax
       mov       [ebp+0FFEC],eax
       mov       esi,ecx
       mov       ebx,edx
       mov       ecx,[esi+2C]
       sub       ecx,[esi+1C]
       test      ecx,ecx
       jg        short 00005C41
       mov       ecx,esi
       mov       edx,1
       call      dword ptr ds:[0DB88]
       lea       edi,[esi+24]
       xor       edx,edx
       xor       ecx,ecx
       mov       eax,[edi]
       test      eax,eax
       je        short 00005C77
       mov       edx,[eax]
       test      dword ptr [edx],80000000
       je        short 00005C8F
       lea       edx,[eax+8]
       mov       ecx,[eax+4]
       mov       eax,[edi+4]
       and       eax,7FFFFFFF
       mov       edi,[edi+8]
       cmp       eax,ecx
       ja        short 00005CA4
       sub       ecx,eax
       cmp       ecx,edi
       jb        short 00005CA4
       add       edx,eax
       mov       ecx,edi
       mov       eax,[esi+1C]
       lea       edi,[eax+1]
       mov       [esi+1C],edi
       cmp       eax,ecx
       jae       short 00005CAB
       mov       [edx+eax],bl
       lea       esp,[ebp+0FFF4]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       lea       edx,[ebp+0FFEC]
       mov       ecx,eax
       mov       eax,[eax]
       mov       eax,[eax+28]
       call      dword ptr [eax+14]
       mov       edx,[ebp+0FFEC]
       mov       ecx,[ebp+0FFF0]
       jmp       short 00005C5E
       call      dword ptr ds:[0B3D8]
       int       3
       call      000006A0
       int       3
; Total bytes of code 153
; System.Text.Json.Utf8JsonWriter.Flush()
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       mov       esi,ecx
       cmp       dword ptr [esi+10],0
       jne       short 00003C30
       cmp       dword ptr [esi+0C],0
       je        near ptr 00003D12
       xor       ecx,ecx
       mov       [esi+24],ecx
       mov       [esi+28],ecx
       mov       [esi+2C],ecx
       cmp       dword ptr [esi+10],0
       je        near ptr 00003CDC
       mov       edx,[esi+1C]
       test      edx,edx
       je        near ptr 00003CCC
       mov       ecx,[esi+14]
       cmp       [ecx],ecx
       call      dword ptr ds:[0DE20]
       xor       ecx,ecx
       mov       [esi+1C],ecx
       mov       ecx,[esi+10]
       mov       eax,[esi+14]
       mov       edx,[eax+4]
       mov       edi,[eax+8]
       test      edx,edx
       je        near ptr 00003D19
       mov       eax,[edx+4]
       cmp       [edx+4],edi
       jb        near ptr 00003D30
       add       edx,8
       push      edi
       push      edx
       mov       eax,[ecx]
       mov       eax,[eax+38]
       call      dword ptr [eax+1C]
       lea       ecx,[esi+4]
       mov       edx,[ecx]
       mov       ecx,[ecx+4]
       mov       edi,[esi+14]
       mov       eax,[edi+8]
       mov       ebx,eax
       sar       ebx,1F
       add       edx,eax
       adc       ecx,ebx
       lea       eax,[esi+4]
       mov       [eax],edx
       mov       [eax+4],ecx
       mov       ecx,[edi+4]
       mov       edx,[edi+8]
       test      ecx,ecx
       je        short 00003D26
       mov       eax,[ecx+4]
       cmp       [ecx+4],edx
       jb        short 00003D30
       add       ecx,8
       call      dword ptr ds:[0DC00]
       xor       ecx,ecx
       mov       [edi+8],ecx
       mov       ecx,[esi+10]
       mov       eax,[ecx]
       mov       eax,[eax+30]
       call      dword ptr [eax+18]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       mov       edx,[esi+1C]
       test      edx,edx
       je        short 00003D0D
       mov       ecx,[esi+0C]
       call      dword ptr ds:[2BC]
       lea       eax,[esi+4]
       mov       edx,[eax]
       mov       eax,[eax+4]
       mov       ecx,[esi+1C]
       mov       edi,ecx
       sar       edi,1F
       add       edx,ecx
       adc       eax,edi
       lea       ecx,[esi+4]
       mov       [ecx],edx
       mov       [ecx+4],eax
       xor       eax,eax
       mov       [esi+1C],eax
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       call      dword ptr ds:[5558]
       int       3
       test      edi,edi
       jne       short 00003D30
       xor       edx,edx
       xor       edi,edi
       jmp       near ptr 00003C83
       test      edx,edx
       jne       short 00003D30
       xor       ecx,ecx
       xor       edx,edx
       jmp       short 00003CC1
       call      dword ptr ds:[0B3D8]
       int       3
; Total bytes of code 287
; System.Text.Json.Utf8JsonWriter.Dispose()
       push      ebp
       mov       ebp,esp
       push      esi
       mov       esi,ecx
       cmp       dword ptr [esi+10],0
       jne       short 00005D4D
       cmp       dword ptr [esi+0C],0
       jne       short 00005D4D
       pop       esi
       pop       ebp
       ret
       mov       ecx,esi
       call      dword ptr ds:[0D840]
       mov       ecx,esi
       call      dword ptr ds:[0D810]
       xor       eax,eax
       mov       [esi+10],eax
       mov       [esi+14],eax
       mov       [esi+0C],eax
       pop       esi
       pop       ebp
       ret
; Total bytes of code 51

Compare Jit Disasm

; System.Text.Json.Tests.Perf_DateTimes.WriteDateTimes()
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       sub       esp,18
       xor       eax,eax
       mov       [ebp+0FFE0],eax
       mov       [ebp+0FFE4],eax
       mov       [ebp+0FFE8],eax
       mov       [ebp+0FFEC],eax
       mov       esi,ecx
       mov       edi,[esi+4]
       mov       ecx,[edi+4]
       mov       edx,[edi+8]
       test      ecx,ecx
       je        near ptr 0000F53E
       mov       eax,[ecx+4]
       cmp       [ecx+4],edx
       jb        near ptr 0000F54B
       add       ecx,8
       call      dword ptr ds:[0DC00]
       xor       ecx,ecx
       mov       [edi+8],ecx
       mov       edi,[esi+4]
       movzx     ecx,byte ptr [esi+0C]
       test      ecx,ecx
       je        short 0000F416
       mov       ebx,1
       jmp       short 0000F418
       xor       ebx,ebx
       movzx     ecx,byte ptr [esi+0D]
       test      ecx,ecx
       je        short 0000F425
       or        ebx,2
       jmp       short 0000F428
       and       ebx,0FFFFFFFD
       mov       ecx,offset MT_System.Text.Json.Utf8JsonWriter
       call      0000300C
       mov       ecx,eax
       mov       eax,ebx
       test      edi,edi
       je        near ptr 0000F552
       lea       edx,[ecx+0C]
       call      000000C8
       lea       edx,[ecx+40]
       xor       edi,edi
       mov       [edx],edi
       mov       [edx+4],edi
       mov       [edx+8],eax
       cmp       dword ptr [ecx+44],0
       jne       short 0000F460
       mov       dword ptr [ecx+44],3E8
       mov       [ebp+0FFDC],ecx
       mov       edx,5B
       call      dword ptr ds:[1A38]
       mov       ecx,[ebp+0FFDC]
       mov       byte ptr [ecx+21],3
       xor       edi,edi
       mov       eax,ecx
       mov       edx,[esi+8]
       cmp       edi,[edx+4]
       jae       short 0000F4D1
       mov       ebx,edi
       shl       ebx,3
       add       ebx,8
       add       edx,ebx
       push      dword ptr [edx+4]
       push      dword ptr [edx]
       mov       ecx,eax
       call      dword ptr ds:[5AF8]
       inc       edi
       cmp       edi,186A0
       mov       ecx,[ebp+0FFDC]
       jl        short 0000F477
       mov       edx,[ecx+48]
       cmp       edx,2
       je        short 0000F4F1
       test      dl,1
       je        short 0000F4D6
       test      dl,2
       jne       short 0000F4C4
       mov       edx,5D
       call      dword ptr ds:[1C90]
       mov       ecx,[ebp+0FFDC]
       mov       edx,5D
       call      dword ptr ds:[1CA8]
       jmp       short 0000F4FC
       call      0000F0B0
       mov       edx,5D
       call      dword ptr ds:[1C90]
       mov       ecx,[ebp+0FFDC]
       mov       edx,5D
       call      dword ptr ds:[1C60]
       jmp       short 0000F4FC
       mov       edx,5D
       call      dword ptr ds:[1C60]
       mov       ecx,[ebp+0FFDC]
       mov       eax,[ecx+18]
       or        eax,80000000
       mov       [ecx+18],eax
       test      eax,7FFFFFFF
       je        short 0000F515
       dec       eax
       mov       [ecx+18],eax
       mov       byte ptr [ecx+21],4
       call      dword ptr ds:[19A8]
       mov       ecx,[ebp+0FFDC]
       call      dword ptr ds:[0BC84]
       jmp       short 0000F536
       mov       ecx,[ebp+0FFDC]
       call      dword ptr ds:[0BC84]
       pop       eax
       jmp       eax
       lea       esp,[ebp+0FFF4]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       test      edx,edx
       jne       short 0000F54B
       xor       ecx,ecx
       xor       edx,edx
       jmp       near ptr 0000F3F9
       call      dword ptr ds:[0F048]
       int       3
       mov       ecx,3007
       mov       edx,0B1F82F8
       call      0000CA50
       mov       ecx,eax
       call      dword ptr ds:[9018]
       int       3
; Total bytes of code 426
; System.SpanHelpers.ClearWithoutReferences(Byte ByRef, UIntPtr)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       test      edx,edx
       je        short 00004DA2
       xor       eax,eax
       mov       esi,edx
       sub       esi,1
       sbb       eax,0
       cmp       esi,16
       sbb       eax,0
       jb        short 00004DA7
       cmp       edx,200
       jae       near ptr 00004E62
       xor       edi,edi
       mov       eax,ecx
       test      al,3
       jne       near ptr 00004F68
       mov       eax,ecx
       dec       eax
       test      al,4
       je        short 00004DC9
       lea       eax,[edx+0FFF0]
       sub       edx,edi
       lea       esi,[edi+10]
       xor       ebx,ebx
       mov       [ecx+edi],ebx
       mov       [ecx+edi+4],ebx
       mov       [ecx+edi+8],ebx
       mov       [ecx+edi+0C],ebx
       mov       edi,esi
       cmp       edi,eax
       jbe       short 00004D60
       test      dl,8
       je        short 00004D8B
       xor       eax,eax
       mov       [ecx+edi],eax
       mov       [ecx+edi+4],eax
       add       edi,8
       test      dl,4
       je        short 00004D98
       xor       eax,eax
       mov       [ecx+edi],eax
       add       edi,4
       test      dl,2
       jne       short 00004DB8
       test      dl,1
       jne       short 00004DC3
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       cmp       esi,0B
       jne       short 00004DD3
       xor       edx,edx
       mov       [ecx],edx
       mov       [ecx+4],edx
       mov       [ecx+8],edx
       jmp       short 00004DA2
       mov       word ptr [ecx+edi],0
       add       edi,2
       jmp       short 00004D9D
       mov       byte ptr [ecx+edi],0
       jmp       short 00004DA2
       xor       eax,eax
       mov       [ecx+edi],eax
       add       edi,4
       jmp       short 00004D5B
       cmp       esi,15
       ja        near ptr 00004D3C
       lea       eax,ds:[4F98]
       mov       eax,[eax+esi*4]
       lea       edx,ds:[4D26]
       add       eax,edx
       jmp       eax
       xor       eax,eax
       mov       [ecx],eax
       jmp       short 00004DA2
       xor       eax,eax
       mov       [ecx],eax
       mov       word ptr [ecx+4],0
       mov       byte ptr [ecx+6],0
       jmp       short 00004DA2
       xor       eax,eax
       mov       [ecx],eax
       mov       word ptr [ecx+4],0
       jmp       short 00004DA2
       xor       eax,eax
       mov       [ecx],eax
       mov       byte ptr [ecx+4],0
       jmp       short 00004DA2
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       word ptr [ecx+8],0
       jmp       near ptr 00004DA2
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       jmp       near ptr 00004DA2
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       byte ptr [ecx+8],0
       jmp       near ptr 00004DA2
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       word ptr [ecx+0C],0
       mov       byte ptr [ecx+0E],0
       jmp       near ptr 00004DA2
       call      dword ptr ds:[9588]
       jmp       near ptr 00004DA2
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       [ecx+10],eax
       jmp       near ptr 00004DA2
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       byte ptr [ecx+10],0
       jmp       near ptr 00004DA2
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       [ecx+10],eax
       mov       word ptr [ecx+14],0
       jmp       near ptr 00004DA2
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       word ptr [ecx+8],0
       mov       byte ptr [ecx+0A],0
       jmp       near ptr 00004DA2
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       jmp       near ptr 00004DA2
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       word ptr [ecx+0C],0
       jmp       near ptr 00004DA2
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       word ptr [ecx+10],0
       jmp       near ptr 00004DA2
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       byte ptr [ecx+0C],0
       jmp       near ptr 00004DA2
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       word ptr [ecx+10],0
       mov       byte ptr [ecx+12],0
       jmp       near ptr 00004DA2
       mov       word ptr [ecx],0
       jmp       near ptr 00004DA2
       mov       word ptr [ecx],0
       mov       byte ptr [ecx+2],0
       jmp       near ptr 00004DA2
       xor       eax,eax
       mov       [ecx],eax
       mov       [ecx+4],eax
       mov       [ecx+8],eax
       mov       [ecx+0C],eax
       mov       [ecx+10],eax
       mov       byte ptr [ecx+14],0
       jmp       near ptr 00004DA2
       mov       eax,ecx
       test      al,1
       je        short 00004F80
       mov       byte ptr [ecx],0
       mov       edi,1
       mov       eax,ecx
       test      al,2
       jne       near ptr 00004D54
       mov       word ptr [ecx+edi],0
       add       edi,2
       jmp       near ptr 00004D54
       mov       byte ptr [ecx],0
       jmp       near ptr 00004DA2
; Total bytes of code 630
; System.Text.Json.Utf8JsonWriter.WriteStart(Byte)
       push      ebp
       mov       ebp,esp
       push      esi
       mov       esi,ecx
       mov       ecx,[esi+18]
       and       ecx,7FFFFFFF
       cmp       ecx,[esi+44]
       jge       short 0000556D
       cmp       dword ptr [esi+48],2
       je        short 0000554F
       movzx     edx,dl
       mov       ecx,esi
       call      dword ptr ds:[1A68]
       jmp       short 0000555A
       movzx     edx,dl
       mov       ecx,esi
       call      dword ptr ds:[1A50]
       mov       edx,[esi+18]
       and       edx,7FFFFFFF
       mov       [esi+18],edx
       inc       edx
       mov       [esi+18],edx
       pop       esi
       pop       ebp
       ret
       mov       edx,[esi+18]
       push      dword ptr [esi+44]
       push      0
       push      0
       mov       ecx,1A
       call      dword ptr ds:[93D8]
       int       3
; Total bytes of code 91
; System.Text.Json.Utf8JsonWriter.WriteStringValue(System.DateTime)
       push      ebp
       mov       ebp,esp
       push      esi
       mov       esi,ecx
       test      byte ptr [esi+48],2
       jne       short 00002014
       mov       ecx,esi
       call      dword ptr ds:[7198]
       test      byte ptr [esi+48],1
       je        short 0000202A
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       mov       ecx,esi
       call      dword ptr ds:[5B28]
       jmp       short 00002038
       push      dword ptr [ebp+0C]
       push      dword ptr [ebp+8]
       mov       ecx,esi
       call      dword ptr ds:[5B10]
       or        dword ptr [esi+18],80000000
       mov       byte ptr [esi+21],7
       pop       esi
       pop       ebp
       ret       8
; Total bytes of code 72
; System.Text.Json.Utf8JsonWriter.ValidateEnd(Byte)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       mov       esi,ecx
       cmp       dword ptr [esi+3C],0
       jle       short 000051FA
       cmp       byte ptr [esi+21],5
       je        short 000051FA
       cmp       dl,5D
       jne       short 000051D9
       cmp       byte ptr [esi+20],0
       jne       short 00005214
       lea       ecx,[esi+30]
       dec       dword ptr [ecx+0C]
       mov       eax,[ecx+0C]
       cmp       eax,40
       jge       short 000051E1
       mov       eax,ecx
       mov       edx,[eax]
       mov       eax,[eax+4]
       shrd      edx,eax,1
       shr       eax,1
       mov       edi,ecx
       mov       [edi],edx
       mov       [edi+4],eax
       xor       ebx,ebx
       test      byte ptr [ecx],1
       setne     bl
       mov       [esi+20],bl
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       cmp       byte ptr [esi+20],0
       je        short 0000522E
       jmp       short 000051A7
       cmp       eax,40
       jne       short 000051F0
       xor       ebx,ebx
       test      byte ptr [ecx],1
       setne     bl
       jmp       short 000051D1
       call      dword ptr ds:[1690]
       mov       ebx,eax
       jmp       short 000051D1
       push      dword ptr [esi+44]
       movzx     ecx,dl
       push      ecx
       movzx     ecx,byte ptr [esi+21]
       push      ecx
       mov       ecx,17
       xor       edx,edx
       call      dword ptr ds:[93D8]
       int       3
       push      dword ptr [esi+44]
       movzx     ecx,dl
       push      ecx
       movzx     ecx,byte ptr [esi+21]
       push      ecx
       mov       ecx,17
       xor       edx,edx
       call      dword ptr ds:[93D8]
       int       3
       push      dword ptr [esi+44]
       movzx     ecx,dl
       push      ecx
       movzx     ecx,byte ptr [esi+21]
       push      ecx
       mov       ecx,17
       xor       edx,edx
       call      dword ptr ds:[93D8]
       int       3
; Total bytes of code 192
; System.Text.Json.Utf8JsonWriter.WriteEndMinimized(Byte)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       sub       esp,8
       xor       eax,eax
       mov       [ebp+0FFEC],eax
       mov       esi,ecx
       mov       ebx,edx
       mov       ecx,[esi+2C]
       sub       ecx,[esi+1C]
       test      ecx,ecx
       jg        short 00005301
       mov       ecx,esi
       mov       edx,1
       call      dword ptr ds:[1CF0]
       lea       edi,[esi+24]
       xor       edx,edx
       xor       ecx,ecx
       mov       eax,[edi]
       test      eax,eax
       je        short 00005337
       mov       edx,[eax]
       test      dword ptr [edx],80000000
       je        short 0000534F
       lea       edx,[eax+8]
       mov       ecx,[eax+4]
       mov       eax,[edi+4]
       and       eax,7FFFFFFF
       mov       edi,[edi+8]
       cmp       eax,ecx
       ja        short 00005364
       sub       ecx,eax
       cmp       ecx,edi
       jb        short 00005364
       add       edx,eax
       mov       ecx,edi
       mov       eax,[esi+1C]
       lea       edi,[eax+1]
       mov       [esi+1C],edi
       cmp       eax,ecx
       jae       short 0000536B
       mov       [edx+eax],bl
       lea       esp,[ebp+0FFF4]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       lea       edx,[ebp+0FFEC]
       mov       ecx,eax
       mov       eax,[eax]
       mov       eax,[eax+28]
       call      dword ptr [eax+14]
       mov       edx,[ebp+0FFEC]
       mov       ecx,[ebp+0FFF0]
       jmp       short 0000531E
       call      dword ptr ds:[0F048]
       int       3
       call      0000F0B0
       int       3
; Total bytes of code 153
; System.Text.Json.Utf8JsonWriter.Flush()
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       push      ebx
       mov       esi,ecx
       cmp       dword ptr [esi+10],0
       jne       short 00004BA0
       cmp       dword ptr [esi+0C],0
       je        near ptr 00004C82
       xor       ecx,ecx
       mov       [esi+24],ecx
       mov       [esi+28],ecx
       mov       [esi+2C],ecx
       cmp       dword ptr [esi+10],0
       je        near ptr 00004C4C
       mov       edx,[esi+1C]
       test      edx,edx
       je        near ptr 00004C3C
       mov       ecx,[esi+14]
       cmp       [ecx],ecx
       call      dword ptr ds:[0E720]
       xor       ecx,ecx
       mov       [esi+1C],ecx
       mov       ecx,[esi+10]
       mov       eax,[esi+14]
       mov       edx,[eax+4]
       mov       edi,[eax+8]
       test      edx,edx
       je        near ptr 00004C89
       mov       eax,[edx+4]
       cmp       [edx+4],edi
       jb        near ptr 00004CA0
       add       edx,8
       push      edi
       push      edx
       mov       eax,[ecx]
       mov       eax,[eax+38]
       call      dword ptr [eax+1C]
       lea       ecx,[esi+4]
       mov       edx,[ecx]
       mov       ecx,[ecx+4]
       mov       edi,[esi+14]
       mov       eax,[edi+8]
       mov       ebx,eax
       sar       ebx,1F
       add       edx,eax
       adc       ecx,ebx
       lea       eax,[esi+4]
       mov       [eax],edx
       mov       [eax+4],ecx
       mov       ecx,[edi+4]
       mov       edx,[edi+8]
       test      ecx,ecx
       je        short 00004C96
       mov       eax,[ecx+4]
       cmp       [ecx+4],edx
       jb        short 00004CA0
       add       ecx,8
       call      dword ptr ds:[0DC00]
       xor       ecx,ecx
       mov       [edi+8],ecx
       mov       ecx,[esi+10]
       mov       eax,[ecx]
       mov       eax,[eax+30]
       call      dword ptr [eax+18]
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       mov       edx,[esi+1C]
       test      edx,edx
       je        short 00004C7D
       mov       ecx,[esi+0C]
       call      dword ptr ds:[2BC]
       lea       eax,[esi+4]
       mov       edx,[eax]
       mov       eax,[eax+4]
       mov       ecx,[esi+1C]
       mov       edi,ecx
       sar       edi,1F
       add       edx,ecx
       adc       eax,edi
       lea       ecx,[esi+4]
       mov       [ecx],edx
       mov       [ecx+4],eax
       xor       eax,eax
       mov       [esi+1C],eax
       pop       ebx
       pop       esi
       pop       edi
       pop       ebp
       ret
       call      dword ptr ds:[9558]
       int       3
       test      edi,edi
       jne       short 00004CA0
       xor       edx,edx
       xor       edi,edi
       jmp       near ptr 00004BF3
       test      edx,edx
       jne       short 00004CA0
       xor       ecx,ecx
       xor       edx,edx
       jmp       short 00004C31
       call      dword ptr ds:[0F048]
       int       3
; Total bytes of code 287
; System.Text.Json.Utf8JsonWriter.Dispose()
       push      ebp
       mov       ebp,esp
       push      esi
       mov       esi,ecx
       cmp       dword ptr [esi+10],0
       jne       short 00005435
       cmp       dword ptr [esi+0C],0
       jne       short 00005435
       pop       esi
       pop       ebp
       ret
       mov       ecx,esi
       call      dword ptr ds:[19A8]
       mov       ecx,esi
       call      dword ptr ds:[1978]
       xor       eax,eax
       mov       [esi+10],eax
       mov       [esi+14],eax
       mov       [esi+0C],eax
       pop       esi
       pop       ebp
       ret
; Total bytes of code 51

Docs

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

@danmoseley
Copy link
Member

@DrewScoggins do you recall whether we understood the improvement between Nov and Mar? Was there a correctness/measurement issue, or did we regress some win and never get it back?

#7195 (comment)

image

@danmoseley
Copy link
Member

cc @EgorBo

@EgorBo
Copy link
Member

EgorBo commented Aug 16, 2022

@danmoseley it's the DST-related issue and is tracked by dotnet/runtime#67932

(it contains flamegraphs for before and after DST, but it was before we merged that DateTime improvement PR)

@danmoseley
Copy link
Member

Oh - haha I remember that. We're fastest in winter!

The DateTime improvement PR didn't of course touch anything related to timezones so I'd expect it to be an additive effect to the DST impact.

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

4 participants