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 #7174

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

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

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

Comments

@performanceautofiler
Copy link

Run Information

Architecture x64
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
GetNow - Duration of single invocation 160.08 ns 150.55 ns 0.94 0.01 False Trace Trace
ToString - Duration of single invocation 43.69 ns 38.86 ns 0.89 0.01 False 439.58937766277216 399.1431379330707 0.9079908619613427 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.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 150.5528594538015 < 151.68704426445217.
IsChangePoint: Marked as a change because one of 7/2/2022 7:35:06 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 54.25615510523928 (T) = (0 -150.37303696973444) / Math.Sqrt((3.620349526786433 / (299)) + (0.32643944815647014 / (34))) is greater than 1.9671567996108528 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (34) - 2, .975) and 0.05047859286608014 = (158.36718987055542 - 150.37303696973444) / 158.36718987055542 is greater than 0.05.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Tests.Perf_DateTimeOffset.GetNow()
       push      rsi
       sub       rsp,20
       mov       rsi,rdx
       call      qword ptr [1918]
       mov       rdx,rax
       mov       rcx,rsi
       mov       r8d,1
       add       rsp,20
       pop       rsi
       jmp       qword ptr [0B918]
; Total bytes of code 37
; System.DateTime.get_UtcNow()
       push      rbp
       push      rdi
       push      rsi
       sub       rsp,30
       lea       rbp,[rsp+40]
       lea       rcx,[rbp+0FFE8]
       mov       rax,7FF978F25040
       call      rax
       mov       rsi,[rbp+0FFE8]
       mov       rax,172B9C00228
       mov       rdi,[rax]
       sub       rsi,[rdi+8]
       cmp       dword ptr [6CDC],0
       jne       short 00000000000001E2
       mov       eax,0B2D05E00
       cmp       rsi,rax
       jae       short 00000000000001D3
       mov       rax,rsi
       add       rax,[rdi+10]
       add       rsp,30
       pop       rsi
       pop       rdi
       pop       rbp
       ret
       call      qword ptr [19A8]
       nop
       add       rsp,30
       pop       rsi
       pop       rdi
       pop       rbp
       ret
       call      000000000000EAE0
       jmp       short 00000000000001BA
; Total bytes of code 105
; System.DateTimeOffset.ToLocalTime(System.DateTime, Boolean)
       push      r14
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,30
       vzeroupper
       mov       rsi,rcx
       mov       rdi,rdx
       mov       ebx,r8d
       mov       rcx,172B9C00408
       mov       rbp,[rcx]
       mov       rcx,[rbp+8]
       test      rcx,rcx
       je        near ptr 00000000000002D2
       mov       rdx,rdi
       mov       r9,rbp
       mov       r8d,2
       cmp       [rcx],ecx
       call      qword ptr [0D948]
       mov       rbp,rax
       mov       r14,0FFFFFFFFFFFF
       and       rdi,r14
       add       rdi,rbp
       js        near ptr 00000000000002FF
       mov       rcx,2875F4373FFF
       cmp       rdi,rcx
       jg        near ptr 00000000000002FF
       vxorps    xmm0,xmm0,xmm0
       vmovupd   [rsp+20],xmm0
       mov       rcx,rbp
       call      qword ptr [0BAC8]
       mov       ebx,eax
       mov       rcx,2875F4373FFF
       cmp       rdi,rcx
       ja        short 00000000000002F8
       mov       rcx,rdi
       mov       rdx,rbp
       call      qword ptr [0BAE0]
       mov       [rsp+28],rax
       mov       [rsp+20],bx
       vmovupd   xmm0,[rsp+20]
       vmovupd   [rsi],xmm0
       mov       rax,rsi
       add       rsp,30
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       ret
       mov       rcx,rbp
       call      qword ptr [0F270]
       mov       rcx,rax
       jmp       near ptr 0000000000000240
       test      rdi,rdi
       jl        short 00000000000002F4
       mov       rdi,2875F4373FFF
       jmp       short 00000000000002F6
       xor       edi,edi
       jmp       short 0000000000000280
       call      qword ptr [0F7F8]
       int       3
       test      bl,bl
       je        short 00000000000002E3
       mov       rcx,offset MT_System.ArgumentException
       call      000000000000A6A0
       mov       rdi,rax
       mov       ecx,355F
       mov       rdx,7FF8D3564000
       call      0000000000001EF0
       mov       rcx,rax
       call      qword ptr [5030]
       mov       rdx,rax
       mov       rcx,rdi
       call      qword ptr [0BB88]
       mov       rcx,rdi
       call      000000000000C1B0
       int       3
; Total bytes of code 311

Compare Jit Disasm

; System.Tests.Perf_DateTimeOffset.GetNow()
       push      rsi
       sub       rsp,20
       mov       rsi,rdx
       call      qword ptr [0B918]
       mov       rdx,rax
       mov       rcx,rsi
       mov       r8d,1
       add       rsp,20
       pop       rsi
       jmp       qword ptr [0D918]
; Total bytes of code 37
; System.DateTime.get_UtcNow()
       push      rbp
       push      rdi
       push      rsi
       sub       rsp,30
       lea       rbp,[rsp+40]
       lea       rcx,[rbp+0FFE8]
       mov       rax,7FFC7BEE2570
       call      rax
       mov       rsi,[rbp+0FFE8]
       mov       rax,193EAC00228
       mov       rdi,[rax]
       sub       rsi,[rdi+8]
       cmp       dword ptr [5D3C],0
       jne       short 000000000000FFB2
       mov       eax,0B2D05E00
       cmp       rsi,rax
       jae       short 000000000000FFA3
       mov       rax,rsi
       add       rax,[rdi+10]
       add       rsp,30
       pop       rsi
       pop       rdi
       pop       rbp
       ret
       call      qword ptr [0B9A8]
       nop
       add       rsp,30
       pop       rsi
       pop       rdi
       pop       rbp
       ret
       call      000000000000DDD0
       jmp       short 000000000000FF8A
; Total bytes of code 105
; System.DateTimeOffset.ToLocalTime(System.DateTime, Boolean)
       push      r14
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,30
       vzeroupper
       mov       rsi,rcx
       mov       rdi,rdx
       mov       ebx,r8d
       mov       rcx,193EAC00408
       mov       rbp,[rcx]
       mov       rcx,[rbp+8]
       test      rcx,rcx
       je        near ptr 00000000000000A2
       mov       rdx,rdi
       mov       r9,rbp
       mov       r8d,2
       cmp       [rcx],ecx
       call      qword ptr [1948]
       mov       rbp,rax
       mov       r14,0FFFFFFFFFFFF
       and       rdi,r14
       add       rdi,rbp
       js        near ptr 00000000000000CF
       mov       rcx,2875F4373FFF
       cmp       rdi,rcx
       jg        near ptr 00000000000000CF
       vxorps    xmm0,xmm0,xmm0
       vmovupd   [rsp+20],xmm0
       mov       rcx,rbp
       call      qword ptr [0DAC8]
       mov       ebx,eax
       mov       rcx,2875F4373FFF
       cmp       rdi,rcx
       ja        short 00000000000000C8
       mov       rcx,rdi
       mov       rdx,rbp
       call      qword ptr [0DAE0]
       mov       [rsp+28],rax
       mov       [rsp+20],bx
       vmovupd   xmm0,[rsp+20]
       vmovupd   [rsi],xmm0
       mov       rax,rsi
       add       rsp,30
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       pop       r14
       ret
       mov       rcx,rbp
       call      qword ptr [3270]
       mov       rcx,rax
       jmp       near ptr 0000000000000010
       test      rdi,rdi
       jl        short 00000000000000C4
       mov       rdi,2875F4373FFF
       jmp       short 00000000000000C6
       xor       edi,edi
       jmp       short 0000000000000050
       call      qword ptr [97E0]
       int       3
       test      bl,bl
       je        short 00000000000000B3
       mov       rcx,offset MT_System.ArgumentException
       call      000000000000C390
       mov       rdi,rax
       mov       ecx,355F
       mov       rdx,7FFBC2364000
       call      00000000000014A0
       mov       rcx,rax
       call      qword ptr [9030]
       mov       rdx,rax
       mov       rcx,rdi
       call      qword ptr [0BB88]
       mov       rcx,rdi
       call      0000000000004690
       int       3
; Total bytes of code 311

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 38.864848670745346 < 41.15242073981757.
IsChangePoint: Marked as a change because one of 7/2/2022 7:35:06 PM, 7/6/2022 3:55:24 AM, 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 25.386469194413117 (T) = (0 -38.575201105753436) / Math.Sqrt((11.607034564783692 / (299)) + (0.1977135072032935 / (34))) is greater than 1.9671567996108528 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (34) - 2, .975) and 0.12206530011495058 = (43.93857665132065 - 38.575201105753436) / 43.93857665132065 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      rdi
       push      rsi
       sub       rsp,28
       mov       rsi,rdx
       cmp       [rcx],cl
       lea       rdi,[rcx+8]
       mov       rcx,rdi
       call      qword ptr [0B318]
       mov       rcx,rax
       movsx     rdx,word ptr [rdi]
       movsxd    rdx,edx
       imul      rdx,3C
       mov       r9,0D6BF94D5E5
       cmp       rdx,r9
       jg        short 000000000000F4ED
       mov       r9,0FF29406B2A1B
       cmp       rdx,r9
       jl        short 000000000000F4ED
       imul      r9,rdx,989680
       mov       rdx,rsi
       xor       r8d,r8d
       add       rsp,28
       pop       rsi
       pop       rdi
       jmp       qword ptr [0D978]
       call      qword ptr [7678]
       int       3
; Total bytes of code 100
; System.DateTimeOffset.get_ClockDateTime()
       sub       rsp,28
       mov       rdx,[rcx+8]
       movsx     rcx,word ptr [rcx]
       movsxd    rcx,ecx
       imul      rcx,3C
       mov       rax,0D6BF94D5E5
       cmp       rcx,rax
       jg        short 000000000000F5FC
       mov       rax,0FF29406B2A1B
       cmp       rcx,rax
       jl        short 000000000000F5FC
       imul      rcx,989680
       mov       [rsp+20],rcx
       mov       rcx,rdx
       mov       rdx,[rsp+20]
       call      qword ptr [1450]
       mov       rdx,0FFFFFFFFFFFF
       and       rax,rdx
       mov       rdx,2875F4373FFF
       cmp       rax,rdx
       ja        short 000000000000F603
       add       rsp,28
       ret
       call      qword ptr [7678]
       int       3
       call      qword ptr [0F738]
       int       3
; Total bytes of code 122
; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
       push      rbp
       push      r14
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,0A0
       lea       rbp,[rsp+30]
       vxorps    xmm4,xmm4,xmm4
       mov       rax,0FFFFFFFFFFA0
       vmovdqa   xmmword ptr [rbp+rax+70],xmm4
       vmovdqa   xmmword ptr [rbp+rax+80],xmm4
       vmovdqa   xmmword ptr [rbp+rax+90],xmm4
       add       rax,30
       jne       short 000000000000F6A0
       mov       rax,36A019E5EA85
       mov       [rbp+8],rax
       mov       rsi,rcx
       mov       rax,r8
       mov       rdi,r9
       test      rdx,rdx
       je        short 000000000000F74A
       mov       ebx,[rdx+8]
       cmp       ebx,1
       jne       short 000000000000F74A
       movzx     ecx,word ptr [rdx+0C]
       or        ecx,20
       cmp       ecx,6F
       je        near ptr 000000000000F7EA
       cmp       ecx,72
       jne       short 000000000000F74A
       mov       ecx,1D
       call      0
       mov       rbx,rax
       lea       rcx,[rbx+0C]
       mov       edx,[rbx+8]
       mov       [rbp+20],rcx
       mov       [rbp+28],edx
       mov       rcx,rsi
       mov       rdx,rdi
       lea       r8,[rbp+20]
       lea       r9,[rbp+40]
       call      qword ptr [0DA80]
       mov       rax,rbx
       mov       rcx,36A019E5EA85
       cmp       [rbp+8],rcx
       je        short 000000000000F73E
       call      0000000000009600
       nop
       lea       rsp,[rbp+70]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r14
       pop       rbp
       ret
       test      [rsp],esp
       sub       rsp,200
       lea       rcx,[rsp+30]
       mov       [rbp+30],rcx
       mov       dword ptr [rbp+38],100
       mov       rcx,[rbp+30]
       mov       r8d,[rbp+38]
       xor       r9d,r9d
       mov       [rbp+50],r9
       mov       [rbp+60],rcx
       mov       [rbp+68],r8d
       mov       [rbp+58],r9d
       test      rdx,rdx
       je        near ptr 000000000000F85F
       lea       rcx,[rdx+0C]
       mov       ebx,[rdx+8]
       mov       r8d,ebx
       mov       [rbp+10],rcx
       mov       [rbp+18],r8d
       mov       rcx,rax
       call      qword ptr [31B0]
       mov       r8,rax
       lea       rdx,[rbp+50]
       mov       [rsp+20],rdx
       lea       rdx,[rbp+10]
       mov       rcx,rsi
       mov       r9,rdi
       call      qword ptr [0D9C0]
       lea       rcx,[rbp+50]
       call      qword ptr [0D420]
       mov       rcx,36A019E5EA85
       cmp       [rbp+8],rcx
       je        short 000000000000F7DE
       call      0000000000009600
       nop
       lea       rsp,[rbp+70]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r14
       pop       rbp
       ret
       test      [rsp],esp
       sub       rsp,50
       lea       rcx,[rsp+30]
       mov       [rbp+30],rcx
       mov       dword ptr [rbp+38],21
       mov       rbx,[rbp+30]
       mov       r14d,[rbp+38]
       mov       rcx,rsi
       mov       rdx,rdi
       mov       [rbp+20],rbx
       mov       [rbp+28],r14d
       lea       r8,[rbp+20]
       lea       r9,[rbp+48]
       call      qword ptr [0DA68]
       mov       ecx,[rbp+48]
       cmp       ecx,r14d
       ja        short 000000000000F869
       mov       [rbp+30],rbx
       mov       [rbp+38],ecx
       lea       rcx,[rbp+30]
       call      qword ptr [1B10]
       mov       rcx,36A019E5EA85
       cmp       [rbp+8],rcx
       je        short 000000000000F853
       call      0000000000009600
       nop
       lea       rsp,[rbp+70]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r14
       pop       rbp
       ret
       xor       ecx,ecx
       xor       r8d,r8d
       jmp       near ptr 000000000000F792
       call      qword ptr [7498]
       int       3
; Total bytes of code 496

Compare Jit Disasm

; System.Tests.Perf_DateTimeOffset.ToString(System.String)
       push      rdi
       push      rsi
       sub       rsp,28
       mov       rsi,rdx
       cmp       [rcx],cl
       lea       rdi,[rcx+8]
       mov       rcx,rdi
       call      qword ptr [0D318]
       mov       rcx,rax
       movsx     rdx,word ptr [rdi]
       movsxd    rdx,edx
       imul      rdx,3C
       mov       r9,0D6BF94D5E5
       cmp       rdx,r9
       jg        short 000000000000FCAD
       mov       r9,0FF29406B2A1B
       cmp       rdx,r9
       jl        short 000000000000FCAD
       imul      r9,rdx,989680
       mov       rdx,rsi
       xor       r8d,r8d
       add       rsp,28
       pop       rsi
       pop       rdi
       jmp       qword ptr [1978]
       call      qword ptr [0B678]
       int       3
; Total bytes of code 100
; System.DateTimeOffset.get_ClockDateTime()
       sub       rsp,28
       mov       rdx,[rcx+8]
       movsx     rcx,word ptr [rcx]
       movsxd    rcx,ecx
       imul      rcx,3C
       mov       rax,0D6BF94D5E5
       cmp       rcx,rax
       jg        short 000000000000F55C
       mov       rax,0FF29406B2A1B
       cmp       rcx,rax
       jl        short 000000000000F55C
       imul      rcx,989680
       mov       [rsp+20],rcx
       mov       rcx,rdx
       mov       rdx,[rsp+20]
       call      qword ptr [0B450]
       mov       rdx,0FFFFFFFFFFFF
       and       rax,rdx
       mov       rdx,2875F4373FFF
       cmp       rax,rdx
       ja        short 000000000000F563
       add       rsp,28
       ret
       call      qword ptr [0B678]
       int       3
       call      qword ptr [97E0]
       int       3
; Total bytes of code 122
; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
       push      rbp
       push      r14
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,0A0
       lea       rbp,[rsp+30]
       vxorps    xmm4,xmm4,xmm4
       mov       rax,0FFFFFFFFFFA0
       vmovdqa   xmmword ptr [rbp+rax+70],xmm4
       vmovdqa   xmmword ptr [rbp+rax+80],xmm4
       vmovdqa   xmmword ptr [rbp+rax+90],xmm4
       add       rax,30
       jne       short 000000000000F600
       mov       rax,0AACFD15014CF
       mov       [rbp+8],rax
       mov       rsi,rcx
       mov       rax,r8
       mov       rdi,r9
       test      rdx,rdx
       je        short 000000000000F6AA
       mov       ebx,[rdx+8]
       cmp       ebx,1
       jne       short 000000000000F6AA
       movzx     ecx,word ptr [rdx+0C]
       or        ecx,20
       cmp       ecx,6F
       je        near ptr 000000000000F74A
       cmp       ecx,72
       jne       short 000000000000F6AA
       mov       ecx,1D
       call      0
       mov       rbx,rax
       lea       rcx,[rbx+0C]
       mov       edx,[rbx+8]
       mov       [rbp+20],rcx
       mov       [rbp+28],edx
       mov       rcx,rsi
       mov       rdx,rdi
       lea       r8,[rbp+20]
       lea       r9,[rbp+40]
       call      qword ptr [1A80]
       mov       rax,rbx
       mov       rcx,0AACFD15014CF
       cmp       [rbp+8],rcx
       je        short 000000000000F69E
       call      00000000000081F0
       nop
       lea       rsp,[rbp+70]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r14
       pop       rbp
       ret
       test      [rsp],esp
       sub       rsp,200
       lea       rcx,[rsp+30]
       mov       [rbp+30],rcx
       mov       dword ptr [rbp+38],100
       mov       rcx,[rbp+30]
       mov       r8d,[rbp+38]
       xor       r9d,r9d
       mov       [rbp+50],r9
       mov       [rbp+60],rcx
       mov       [rbp+68],r8d
       mov       [rbp+58],r9d
       test      rdx,rdx
       je        near ptr 000000000000F7BF
       lea       rcx,[rdx+0C]
       mov       ebx,[rdx+8]
       mov       r8d,ebx
       mov       [rbp+10],rcx
       mov       [rbp+18],r8d
       mov       rcx,rax
       call      qword ptr [71B0]
       mov       r8,rax
       lea       rdx,[rbp+50]
       mov       [rsp+20],rdx
       lea       rdx,[rbp+10]
       mov       rcx,rsi
       mov       r9,rdi
       call      qword ptr [19C0]
       lea       rcx,[rbp+50]
       call      qword ptr [1420]
       mov       rcx,0AACFD15014CF
       cmp       [rbp+8],rcx
       je        short 000000000000F73E
       call      00000000000081F0
       nop
       lea       rsp,[rbp+70]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r14
       pop       rbp
       ret
       test      [rsp],esp
       sub       rsp,50
       lea       rcx,[rsp+30]
       mov       [rbp+30],rcx
       mov       dword ptr [rbp+38],21
       mov       rbx,[rbp+30]
       mov       r14d,[rbp+38]
       mov       rcx,rsi
       mov       rdx,rdi
       mov       [rbp+20],rbx
       mov       [rbp+28],r14d
       lea       r8,[rbp+20]
       lea       r9,[rbp+48]
       call      qword ptr [1A68]
       mov       ecx,[rbp+48]
       cmp       ecx,r14d
       ja        short 000000000000F7C9
       mov       [rbp+30],rbx
       mov       [rbp+38],ecx
       lea       rcx,[rbp+30]
       call      qword ptr [3510]
       mov       rcx,0AACFD15014CF
       cmp       [rbp+8],rcx
       je        short 000000000000F7B3
       call      00000000000081F0
       nop
       lea       rsp,[rbp+70]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r14
       pop       rbp
       ret
       xor       ecx,ecx
       xor       r8d,r8d
       jmp       near ptr 000000000000F6F2
       call      qword ptr [0B498]
       int       3
; Total bytes of code 496

Docs

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

### Run Information
Architecture x64
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 34.37 ns 30.92 ns 0.90 0.01 False Trace Trace
GetNow - Duration of single invocation 121.11 ns 112.53 ns 0.93 0.00 False 1052.418965849894 955.2608477552044 0.9076811410214103 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_DateTime*'

Payloads

Baseline
Compare

Histogram

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 30.924281546151693 < 33.31920051624428.
IsChangePoint: Marked as a change because one of 7/2/2022 7:35:06 PM, 7/6/2022 3:55:24 AM, 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 23.349663838817865 (T) = (0 -30.837207217128586) / Math.Sqrt((12.906726054274369 / (299)) + (0.07478491770103321 / (34))) is greater than 1.9671567996108528 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (34) - 2, .975) and 0.13887839078758757 = (35.81051373839347 - 30.837207217128586) / 35.81051373839347 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)
       mov       rcx,[rcx+8]
       mov       r9,0
       xor       r8d,r8d
       jmp       qword ptr [0D978]
; Total bytes of code 23
; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
       push      rbp
       push      r14
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,0A0
       lea       rbp,[rsp+30]
       vxorps    xmm4,xmm4,xmm4
       mov       rax,0FFFFFFFFFFA0
       vmovdqa   xmmword ptr [rbp+rax+70],xmm4
       vmovdqa   xmmword ptr [rbp+rax+80],xmm4
       vmovdqa   xmmword ptr [rbp+rax+90],xmm4
       add       rax,30
       jne       short 000000000000F490
       mov       rax,0CAC14CD7BD2
       mov       [rbp+8],rax
       mov       rsi,rcx
       mov       rax,r8
       mov       rdi,r9
       test      rdx,rdx
       je        short 000000000000F53A
       mov       ebx,[rdx+8]
       cmp       ebx,1
       jne       short 000000000000F53A
       movzx     ecx,word ptr [rdx+0C]
       or        ecx,20
       cmp       ecx,6F
       je        near ptr 000000000000F5DA
       cmp       ecx,72
       jne       short 000000000000F53A
       mov       ecx,1D
       call      0
       mov       rbx,rax
       lea       rcx,[rbx+0C]
       mov       edx,[rbx+8]
       mov       [rbp+20],rcx
       mov       [rbp+28],edx
       mov       rcx,rsi
       mov       rdx,rdi
       lea       r8,[rbp+20]
       lea       r9,[rbp+40]
       call      qword ptr [0DA80]
       mov       rax,rbx
       mov       rcx,0CAC14CD7BD2
       cmp       [rbp+8],rcx
       je        short 000000000000F52E
       call      0000000000009600
       nop
       lea       rsp,[rbp+70]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r14
       pop       rbp
       ret
       test      [rsp],esp
       sub       rsp,200
       lea       rcx,[rsp+30]
       mov       [rbp+30],rcx
       mov       dword ptr [rbp+38],100
       mov       rcx,[rbp+30]
       mov       r8d,[rbp+38]
       xor       r9d,r9d
       mov       [rbp+50],r9
       mov       [rbp+60],rcx
       mov       [rbp+68],r8d
       mov       [rbp+58],r9d
       test      rdx,rdx
       je        near ptr 000000000000F64F
       lea       rcx,[rdx+0C]
       mov       ebx,[rdx+8]
       mov       r8d,ebx
       mov       [rbp+10],rcx
       mov       [rbp+18],r8d
       mov       rcx,rax
       call      qword ptr [31B0]
       mov       r8,rax
       lea       rdx,[rbp+50]
       mov       [rsp+20],rdx
       lea       rdx,[rbp+10]
       mov       rcx,rsi
       mov       r9,rdi
       call      qword ptr [0D9C0]
       lea       rcx,[rbp+50]
       call      qword ptr [0D420]
       mov       rcx,0CAC14CD7BD2
       cmp       [rbp+8],rcx
       je        short 000000000000F5CE
       call      0000000000009600
       nop
       lea       rsp,[rbp+70]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r14
       pop       rbp
       ret
       test      [rsp],esp
       sub       rsp,50
       lea       rcx,[rsp+30]
       mov       [rbp+30],rcx
       mov       dword ptr [rbp+38],21
       mov       rbx,[rbp+30]
       mov       r14d,[rbp+38]
       mov       rcx,rsi
       mov       rdx,rdi
       mov       [rbp+20],rbx
       mov       [rbp+28],r14d
       lea       r8,[rbp+20]
       lea       r9,[rbp+48]
       call      qword ptr [0DA68]
       mov       ecx,[rbp+48]
       cmp       ecx,r14d
       ja        short 000000000000F659
       mov       [rbp+30],rbx
       mov       [rbp+38],ecx
       lea       rcx,[rbp+30]
       call      qword ptr [1B10]
       mov       rcx,0CAC14CD7BD2
       cmp       [rbp+8],rcx
       je        short 000000000000F643
       call      0000000000009600
       nop
       lea       rsp,[rbp+70]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r14
       pop       rbp
       ret
       xor       ecx,ecx
       xor       r8d,r8d
       jmp       near ptr 000000000000F582
       call      qword ptr [7498]
       int       3
; Total bytes of code 496

Compare Jit Disasm

; System.Tests.Perf_DateTime.ToString(System.String)
       mov       rcx,[rcx+8]
       mov       r9,0
       xor       r8d,r8d
       jmp       qword ptr [1978]
; Total bytes of code 23
; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
       push      rbp
       push      r14
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,0A0
       lea       rbp,[rsp+30]
       vxorps    xmm4,xmm4,xmm4
       mov       rax,0FFFFFFFFFFA0
       vmovdqa   xmmword ptr [rbp+rax+70],xmm4
       vmovdqa   xmmword ptr [rbp+rax+80],xmm4
       vmovdqa   xmmword ptr [rbp+rax+90],xmm4
       add       rax,30
       jne       short 000000000000F470
       mov       rax,0A6BCB321D21C
       mov       [rbp+8],rax
       mov       rsi,rcx
       mov       rax,r8
       mov       rdi,r9
       test      rdx,rdx
       je        short 000000000000F51A
       mov       ebx,[rdx+8]
       cmp       ebx,1
       jne       short 000000000000F51A
       movzx     ecx,word ptr [rdx+0C]
       or        ecx,20
       cmp       ecx,6F
       je        near ptr 000000000000F5BA
       cmp       ecx,72
       jne       short 000000000000F51A
       mov       ecx,1D
       call      0
       mov       rbx,rax
       lea       rcx,[rbx+0C]
       mov       edx,[rbx+8]
       mov       [rbp+20],rcx
       mov       [rbp+28],edx
       mov       rcx,rsi
       mov       rdx,rdi
       lea       r8,[rbp+20]
       lea       r9,[rbp+40]
       call      qword ptr [1A80]
       mov       rax,rbx
       mov       rcx,0A6BCB321D21C
       cmp       [rbp+8],rcx
       je        short 000000000000F50E
       call      00000000000081F0
       nop
       lea       rsp,[rbp+70]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r14
       pop       rbp
       ret
       test      [rsp],esp
       sub       rsp,200
       lea       rcx,[rsp+30]
       mov       [rbp+30],rcx
       mov       dword ptr [rbp+38],100
       mov       rcx,[rbp+30]
       mov       r8d,[rbp+38]
       xor       r9d,r9d
       mov       [rbp+50],r9
       mov       [rbp+60],rcx
       mov       [rbp+68],r8d
       mov       [rbp+58],r9d
       test      rdx,rdx
       je        near ptr 000000000000F62F
       lea       rcx,[rdx+0C]
       mov       ebx,[rdx+8]
       mov       r8d,ebx
       mov       [rbp+10],rcx
       mov       [rbp+18],r8d
       mov       rcx,rax
       call      qword ptr [71B0]
       mov       r8,rax
       lea       rdx,[rbp+50]
       mov       [rsp+20],rdx
       lea       rdx,[rbp+10]
       mov       rcx,rsi
       mov       r9,rdi
       call      qword ptr [19C0]
       lea       rcx,[rbp+50]
       call      qword ptr [1420]
       mov       rcx,0A6BCB321D21C
       cmp       [rbp+8],rcx
       je        short 000000000000F5AE
       call      00000000000081F0
       nop
       lea       rsp,[rbp+70]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r14
       pop       rbp
       ret
       test      [rsp],esp
       sub       rsp,50
       lea       rcx,[rsp+30]
       mov       [rbp+30],rcx
       mov       dword ptr [rbp+38],21
       mov       rbx,[rbp+30]
       mov       r14d,[rbp+38]
       mov       rcx,rsi
       mov       rdx,rdi
       mov       [rbp+20],rbx
       mov       [rbp+28],r14d
       lea       r8,[rbp+20]
       lea       r9,[rbp+48]
       call      qword ptr [1A68]
       mov       ecx,[rbp+48]
       cmp       ecx,r14d
       ja        short 000000000000F639
       mov       [rbp+30],rbx
       mov       [rbp+38],ecx
       lea       rcx,[rbp+30]
       call      qword ptr [3510]
       mov       rcx,0A6BCB321D21C
       cmp       [rbp+8],rcx
       je        short 000000000000F623
       call      00000000000081F0
       nop
       lea       rsp,[rbp+70]
       pop       rbx
       pop       rsi
       pop       rdi
       pop       r14
       pop       rbp
       ret
       xor       ecx,ecx
       xor       r8d,r8d
       jmp       near ptr 000000000000F562
       call      qword ptr [0B498]
       int       3
; Total bytes of code 496

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 112.53012021499879 < 115.20828231927916.
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 35.822206253166755 (T) = (0 -110.83759334745154) / Math.Sqrt((0.7339766979906134 / (299)) + (2.909533244628924 / (34))) is greater than 1.9671567996108528 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (34) - 2, .975) and 0.08750066824400388 = (121.46594467544192 - 110.83759334745154) / 121.46594467544192 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()
       jmp       qword ptr [1018]
; Total bytes of code 6
; System.DateTime.get_Now()
       push      rdi
       push      rsi
       sub       rsp,38
       lea       rcx,[rsp+28]
       mov       rax,7FF879AA2570
       call      rax
       mov       rsi,[rsp+28]
       mov       rax,230FC000228
       mov       rdi,[rax]
       sub       rsi,[rdi+8]
       cmp       dword ptr [6CDC],0
       jne       near ptr 000000000000FD31
       mov       eax,0B2D05E00
       cmp       rsi,rax
       jae       short 000000000000FCAA
       add       rsi,[rdi+10]
       jmp       short 000000000000FCB3
       call      qword ptr [19A8]
       mov       rsi,rax
       mov       rcx,rsi
       lea       rdx,[rsp+30]
       call      qword ptr [0F138]
       mov       rdx,0FFFFFFFFFFFF
       and       rdx,rsi
       add       rax,rdx
       mov       rdx,2875F4373FFF
       cmp       rax,rdx
       ja        short 000000000000FD0F
       cmp       byte ptr [rsp+30],0
       jne       short 000000000000FCFB
       mov       rdx,0
       or        rax,rdx
       add       rsp,38
       pop       rsi
       pop       rdi
       ret
       mov       rdx,0
       or        rax,rdx
       add       rsp,38
       pop       rsi
       pop       rdi
       ret
       test      rax,rax
       jl        short 000000000000FD20
       mov       rax,2875F4373FFF
       jmp       short 000000000000FD2A
       mov       rax,0
       add       rsp,38
       pop       rsi
       pop       rdi
       ret
       call      000000000000EAE0
       jmp       near ptr 000000000000FC9A
; Total bytes of code 219

Compare Jit Disasm

; System.Tests.Perf_DateTime.GetNow()
       jmp       qword ptr [0B018]
; Total bytes of code 6
; System.DateTime.get_Now()
       push      rdi
       push      rsi
       sub       rsp,38
       lea       rcx,[rsp+28]
       mov       rax,7FFC1A672570
       call      rax
       mov       rsi,[rsp+28]
       mov       rax,18C1C400228
       mov       rdi,[rax]
       sub       rsi,[rdi+8]
       cmp       dword ptr [5D3C],0
       jne       near ptr 000000000000FB11
       mov       eax,0B2D05E00
       cmp       rsi,rax
       jae       short 000000000000FA8A
       add       rsi,[rdi+10]
       jmp       short 000000000000FA93
       call      qword ptr [0B9A8]
       mov       rsi,rax
       mov       rcx,rsi
       lea       rdx,[rsp+30]
       call      qword ptr [3138]
       mov       rdx,0FFFFFFFFFFFF
       and       rdx,rsi
       add       rax,rdx
       mov       rdx,2875F4373FFF
       cmp       rax,rdx
       ja        short 000000000000FAEF
       cmp       byte ptr [rsp+30],0
       jne       short 000000000000FADB
       mov       rdx,0
       or        rax,rdx
       add       rsp,38
       pop       rsi
       pop       rdi
       ret
       mov       rdx,0
       or        rax,rdx
       add       rsp,38
       pop       rsi
       pop       rdi
       ret
       test      rax,rax
       jl        short 000000000000FB00
       mov       rax,2875F4373FFF
       jmp       short 000000000000FB0A
       mov       rax,0
       add       rsp,38
       pop       rsi
       pop       rdi
       ret
       call      000000000000DDD0
       jmp       near ptr 000000000000FA7A
; Total bytes of code 219

Docs

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

Run Information

Architecture x64
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 38.08 ns 35.03 ns 0.92 0.01 False 385.5241305006507 353.3741583754443 0.9166071081375485

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 35.03289230039662 < 35.83354198578986.
IsChangePoint: Marked as a change because one of 7/2/2022 7:35:06 PM, 7/6/2022 3:55:24 AM, 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 22.111866122853318 (T) = (0 -34.70474971846614) / Math.Sqrt((8.903844626868414 / (299)) + (0.04413634963430493 / (34))) is greater than 1.9671567996108528 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (34) - 2, .975) and 0.1009777256143543 = (38.602769594537484 - 34.70474971846614) / 38.602769594537484 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      rdi
       push      rsi
       sub       rsp,48
       vxorps    xmm4,xmm4,xmm4
       vmovdqa   xmmword ptr [rsp+30],xmm4
       xor       eax,eax
       mov       [rsp+40],rax
       mov       rcx,[rcx+8]
       test      rcx,rcx
       je        short 000000000000F93B
       lea       rsi,[rcx+10]
       mov       edi,[rcx+8]
       mov       rcx,rdx
       mov       [rsp+30],rsi
       mov       [rsp+38],edi
       mov       byte ptr [rsp+28],0
       mov       byte ptr [rsp+29],0
       lea       rdx,[rsp+30]
       movsx     r9,word ptr [rsp+28]
       lea       r8,[rsp+40]
       call      qword ptr [0D9F0]
       nop
       add       rsp,48
       pop       rsi
       pop       rdi
       ret
       xor       esi,esi
       xor       edi,edi
       jmp       short 000000000000F907
; Total bytes of code 97
; System.Buffers.Text.Utf8Formatter.TryFormat(System.DateTimeOffset, System.Span`1<Byte>, Int32 ByRef, System.Buffers.StandardFormat)
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,38
       vzeroupper
       xor       eax,eax
       mov       [rsp+28],rax
       mov       [rsp+78],r9
       mov       rsi,rcx
       mov       rdi,rdx
       mov       rbx,r8
       mov       rcx,21C47400750
       mov       rcx,[rcx]
       mov       rbp,[rcx+8]
       movzx     ecx,byte ptr [rsp+78]
       mov       eax,ecx
       test      ecx,ecx
       jne       short 000000000000FA10
       cmp       byte ptr [rsp+79],0
       jne       short 000000000000FA10
       mov       eax,47
       movsx     rcx,word ptr [rsi]
       movsxd    rcx,ecx
       imul      rcx,3C
       mov       rdx,0D6BF94D5E5
       cmp       rcx,rdx
       jg        near ptr 000000000000FB3A
       mov       rdx,0FF29406B2A1B
       cmp       rcx,rdx
       jl        near ptr 000000000000FB3A
       imul      rbp,rcx,989680
       cmp       eax,4F
       ja        short 000000000000FA39
       cmp       eax,47
       je        near ptr 000000000000FAD1
       cmp       eax,4F
       jne       near ptr 000000000000FB41
       mov       rcx,rsi
       call      qword ptr [0B318]
       mov       rcx,rax
       movsx     rbp,word ptr [rsi]
       jmp       short 000000000000FA83
       cmp       eax,52
       je        near ptr 000000000000FB02
       cmp       eax,6C
       jne       near ptr 000000000000FB41
       mov       rcx,[rsi+8]
       mov       rdx,0FFFFFFFFFFFF
       and       rcx,rdx
       mov       rdx,0
       or        rcx,rdx
       vmovdqu   xmm0,xmmword ptr [rdi]
       vmovdqu   xmmword ptr [rsp+28],xmm0
       lea       rdx,[rsp+28]
       mov       r8,rbx
       call      qword ptr [0DA38]
       jmp       short 000000000000FAF8
       movsxd    rdx,ebp
       imul      rdx,3C
       mov       r8,0D6BF94D5E5
       cmp       rdx,r8
       jg        near ptr 000000000000FB3A
       mov       r8,0FF29406B2A1B
       cmp       rdx,r8
       jl        near ptr 000000000000FB3A
       imul      rdx,989680
       vmovdqu   xmm0,xmmword ptr [rdi]
       vmovdqu   xmmword ptr [rsp+28],xmm0
       lea       r8,[rsp+28]
       mov       r9,rbx
       call      qword ptr [0DA50]
       jmp       short 000000000000FAF8
       mov       rcx,rsi
       call      qword ptr [0B318]
       mov       rcx,rax
       mov       rdx,rbp
       vmovdqu   xmm0,xmmword ptr [rdi]
       vmovdqu   xmmword ptr [rsp+28],xmm0
       lea       r8,[rsp+28]
       mov       r9,rbx
       call      qword ptr [0DA20]
       nop
       add       rsp,38
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       ret
       mov       rcx,[rsi+8]
       mov       rdx,0FFFFFFFFFFFF
       and       rcx,rdx
       mov       rdx,0
       or        rcx,rdx
       vmovdqu   xmm0,xmmword ptr [rdi]
       vmovdqu   xmmword ptr [rsp+28],xmm0
       lea       rdx,[rsp+28]
       mov       r8,rbx
       call      qword ptr [0DA68]
       jmp       short 000000000000FAF8
       call      qword ptr [7678]
       int       3
       xor       eax,eax
       mov       [rbx],eax
       call      qword ptr [7B28]
       int       3
; Total bytes of code 444

Compare Jit Disasm

; System.Buffers.Text.Tests.Utf8FormatterTests.FormatterDateTimeOffsetNow(System.DateTimeOffset)
       push      rdi
       push      rsi
       sub       rsp,48
       vxorps    xmm4,xmm4,xmm4
       vmovdqa   xmmword ptr [rsp+30],xmm4
       xor       eax,eax
       mov       [rsp+40],rax
       mov       rcx,[rcx+8]
       test      rcx,rcx
       je        short 000000000000F91B
       lea       rsi,[rcx+10]
       mov       edi,[rcx+8]
       mov       rcx,rdx
       mov       [rsp+30],rsi
       mov       [rsp+38],edi
       mov       byte ptr [rsp+28],0
       mov       byte ptr [rsp+29],0
       lea       rdx,[rsp+30]
       movsx     r9,word ptr [rsp+28]
       lea       r8,[rsp+40]
       call      qword ptr [19F0]
       nop
       add       rsp,48
       pop       rsi
       pop       rdi
       ret
       xor       esi,esi
       xor       edi,edi
       jmp       short 000000000000F8E7
; Total bytes of code 97
; System.Buffers.Text.Utf8Formatter.TryFormat(System.DateTimeOffset, System.Span`1<Byte>, Int32 ByRef, System.Buffers.StandardFormat)
       push      rdi
       push      rsi
       push      rbp
       push      rbx
       sub       rsp,38
       vzeroupper
       xor       eax,eax
       mov       [rsp+28],rax
       mov       [rsp+78],r9
       mov       rsi,rcx
       mov       rdi,rdx
       mov       rbx,r8
       mov       rcx,14287400750
       mov       rcx,[rcx]
       mov       rbp,[rcx+8]
       movzx     ecx,byte ptr [rsp+78]
       mov       eax,ecx
       test      ecx,ecx
       jne       short 000000000000F9F0
       cmp       byte ptr [rsp+79],0
       jne       short 000000000000F9F0
       mov       eax,47
       movsx     rcx,word ptr [rsi]
       movsxd    rcx,ecx
       imul      rcx,3C
       mov       rdx,0D6BF94D5E5
       cmp       rcx,rdx
       jg        near ptr 000000000000FB1A
       mov       rdx,0FF29406B2A1B
       cmp       rcx,rdx
       jl        near ptr 000000000000FB1A
       imul      rbp,rcx,989680
       cmp       eax,4F
       ja        short 000000000000FA19
       cmp       eax,47
       je        near ptr 000000000000FAB1
       cmp       eax,4F
       jne       near ptr 000000000000FB21
       mov       rcx,rsi
       call      qword ptr [0D318]
       mov       rcx,rax
       movsx     rbp,word ptr [rsi]
       jmp       short 000000000000FA63
       cmp       eax,52
       je        near ptr 000000000000FAE2
       cmp       eax,6C
       jne       near ptr 000000000000FB21
       mov       rcx,[rsi+8]
       mov       rdx,0FFFFFFFFFFFF
       and       rcx,rdx
       mov       rdx,0
       or        rcx,rdx
       vmovdqu   xmm0,xmmword ptr [rdi]
       vmovdqu   xmmword ptr [rsp+28],xmm0
       lea       rdx,[rsp+28]
       mov       r8,rbx
       call      qword ptr [1A38]
       jmp       short 000000000000FAD8
       movsxd    rdx,ebp
       imul      rdx,3C
       mov       r8,0D6BF94D5E5
       cmp       rdx,r8
       jg        near ptr 000000000000FB1A
       mov       r8,0FF29406B2A1B
       cmp       rdx,r8
       jl        near ptr 000000000000FB1A
       imul      rdx,989680
       vmovdqu   xmm0,xmmword ptr [rdi]
       vmovdqu   xmmword ptr [rsp+28],xmm0
       lea       r8,[rsp+28]
       mov       r9,rbx
       call      qword ptr [1A50]
       jmp       short 000000000000FAD8
       mov       rcx,rsi
       call      qword ptr [0D318]
       mov       rcx,rax
       mov       rdx,rbp
       vmovdqu   xmm0,xmmword ptr [rdi]
       vmovdqu   xmmword ptr [rsp+28],xmm0
       lea       r8,[rsp+28]
       mov       r9,rbx
       call      qword ptr [1A20]
       nop
       add       rsp,38
       pop       rbx
       pop       rbp
       pop       rsi
       pop       rdi
       ret
       mov       rcx,[rsi+8]
       mov       rdx,0FFFFFFFFFFFF
       and       rcx,rdx
       mov       rdx,0
       or        rcx,rdx
       vmovdqu   xmm0,xmmword ptr [rdi]
       vmovdqu   xmmword ptr [rsp+28],xmm0
       lea       rdx,[rsp+28]
       mov       r8,rbx
       call      qword ptr [1A68]
       jmp       short 000000000000FAD8
       call      qword ptr [0B678]
       int       3
       xor       eax,eax
       mov       [rbx],eax
       call      qword ptr [0BB28]
       int       3
; Total bytes of code 444

Docs

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

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

No branches or pull requests

2 participants