Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

[Perf] Windows/x64: 4 Improvements on 11/24/2022 9:42:44 PM #10132

Closed
performanceautofiler bot opened this issue Nov 29, 2022 · 0 comments
Closed

[Perf] Windows/x64: 4 Improvements on 11/24/2022 9:42:44 PM #10132

performanceautofiler bot opened this issue Nov 29, 2022 · 0 comments

Comments

@performanceautofiler
Copy link

performanceautofiler bot commented Nov 29, 2022

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline ac03fbd184b182a6632a50bbe70bc733e487264c
Compare 4832236b4820ca83bbc9ce96003c2029b85c6ce2
Diff Diff

Improvements in System.Tests.Perf_String

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
ToLowerInvariant - Duration of single invocation 57.84 ns 31.15 ns 0.54 0.08 False 671.5961104115448 334.8087028476301 0.4985268640738017 Trace Trace
ToUpperInvariant - Duration of single invocation 56.83 ns 31.46 ns 0.55 0.08 False 670.0444597263647 336.51851760579285 0.5022331171027391 Trace Trace
ToUpper - Duration of single invocation 68.68 ns 43.67 ns 0.64 0.23 False 742.9409157342405 407.8843008172567 0.5490131074745682 Trace Trace
ToLower - Duration of single invocation 68.56 ns 46.90 ns 0.68 0.26 False Trace Trace

graph
graph
graph
graph
Test Report

Repro

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

Payloads

Baseline
Compare

Histogram

System.Tests.Perf_String.ToLowerInvariant(s: "This is a much longer piece of text that might benefit more from vectorization.")


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 31.145270445281216 < 54.28757540842618.
IsChangePoint: Marked as a change because one of 11/24/2022 8:21:24 PM, 11/29/2022 1:43:29 AM falls between 11/20/2022 12:28:28 PM and 11/29/2022 1:43:29 AM.
IsImprovementStdDev: Marked as improvement because 145.93693040162847 (T) = (0 -31.741749461142206) / Math.Sqrt((1.4139568914801037 / (299)) + (0.33466492342849113 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.4305326546950886 = (55.73936718732597 - 31.741749461142206) / 55.73936718732597 is greater than 0.05.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Tests.Perf_String.ToLowerInvariant(System.String)
       cmp       [rdx],dl
       mov       rcx,29AED800718
       mov       rcx,[rcx]
       jmp       qword ptr [7FFE2B817A80]; System.Globalization.TextInfo.ToLower(System.String)
; Total bytes of code 21
; System.Globalization.TextInfo.ToLower(System.String)
       sub       rsp,28
       test      rdx,rdx
       je        short M01_L00
       add       rsp,28
       jmp       qword ptr [7FFE2BB75FD8]; System.Globalization.TextInfo.ChangeCaseCommon[[System.Globalization.TextInfo+ToLowerConversion, System.Private.CoreLib]](System.String)
M01_L00:
       mov       ecx,15FB
       mov       rdx,7FFE2B494000
       call      CORINFO_HELP_STRCNS
       mov       rcx,rax
       call      qword ptr [7FFE2B7853F0]
       int       3
; Total bytes of code 49

Compare Jit Disasm

; System.Tests.Perf_String.ToLowerInvariant(System.String)
       cmp       [rdx],dl
       mov       rcx,242DB800720
       mov       rcx,[rcx]
       jmp       qword ptr [7FF9C37A7A80]; System.Globalization.TextInfo.ToLower(System.String)
; Total bytes of code 21
; System.Globalization.TextInfo.ToLower(System.String)
       sub       rsp,28
       test      rdx,rdx
       je        short M01_L00
       add       rsp,28
       jmp       qword ptr [7FF9C3B05FD8]; System.Globalization.TextInfo.ChangeCaseCommon[[System.Globalization.TextInfo+ToLowerConversion, System.Private.CoreLib]](System.String)
M01_L00:
       mov       ecx,15FB
       mov       rdx,7FF9C3424000
       call      CORINFO_HELP_STRCNS
       mov       rcx,rax
       call      qword ptr [7FF9C3715408]
       int       3
; Total bytes of code 49

System.Tests.Perf_String.ToUpperInvariant(s: "This is a much longer piece of text that might benefit more from vectorization.")


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 31.461620725919477 < 52.60331462044485.
IsChangePoint: Marked as a change because one of 11/24/2022 8:21:24 PM, 11/29/2022 1:43:29 AM falls between 11/20/2022 12:28:28 PM and 11/29/2022 1:43:29 AM.
IsImprovementStdDev: Marked as improvement because 133.30990123610707 (T) = (0 -31.995081802416028) / Math.Sqrt((1.51116257814792 / (299)) + (0.39309208294129305 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.4241865103598834 = (55.565009118513274 - 31.995081802416028) / 55.565009118513274 is greater than 0.05.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Tests.Perf_String.ToUpperInvariant(System.String)
       cmp       [rdx],dl
       mov       rcx,22684800718
       mov       rcx,[rcx]
       jmp       qword ptr [7FF946497B88]; System.Globalization.TextInfo.ToUpper(System.String)
; Total bytes of code 21
; System.Globalization.TextInfo.ToUpper(System.String)
       sub       rsp,28
       test      rdx,rdx
       je        short M01_L00
       add       rsp,28
       jmp       qword ptr [7FF9467BD9C0]; System.Globalization.TextInfo.ChangeCaseCommon[[System.Globalization.TextInfo+ToUpperConversion, System.Private.CoreLib]](System.String)
M01_L00:
       mov       ecx,15FB
       mov       rdx,7FF946114000
       call      CORINFO_HELP_STRCNS
       mov       rcx,rax
       call      qword ptr [7FF9464053F0]
       int       3
; Total bytes of code 49

Compare Jit Disasm

; System.Tests.Perf_String.ToUpperInvariant(System.String)
       cmp       [rdx],dl
       mov       rcx,260BCC00720
       mov       rcx,[rcx]
       jmp       qword ptr [7FFC6CF67BB8]; System.Globalization.TextInfo.ToUpper(System.String)
; Total bytes of code 21
; System.Globalization.TextInfo.ToUpper(System.String)
       sub       rsp,28
       test      rdx,rdx
       je        short M01_L00
       add       rsp,28
       jmp       qword ptr [7FFC6D28D9C0]; System.Globalization.TextInfo.ChangeCaseCommon[[System.Globalization.TextInfo+ToUpperConversion, System.Private.CoreLib]](System.String)
M01_L00:
       mov       ecx,15FB
       mov       rdx,7FFC6CBE4000
       call      CORINFO_HELP_STRCNS
       mov       rcx,rax
       call      qword ptr [7FFC6CED5408]
       int       3
; Total bytes of code 49

System.Tests.Perf_String.ToUpper(s: "This is a much longer piece of text that might benefit more from vectorization.")


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 43.6718757082977 < 65.15926227787355.
IsChangePoint: Marked as a change because one of 11/24/2022 8:21:24 PM, 11/29/2022 1:43:29 AM falls between 11/20/2022 12:28:28 PM and 11/29/2022 1:43:29 AM.
IsImprovementStdDev: Marked as improvement because 39.696695689018114 (T) = (0 -43.519346125741855) / Math.Sqrt((6.184091964407545 / (299)) + (4.820991092231217 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.3478983658509452 = (66.73706037024648 - 43.519346125741855) / 66.73706037024648 is greater than 0.05.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Tests.Perf_String.ToUpper(System.String)
       push      rsi
       sub       rsp,20
       mov       rsi,rdx
       cmp       [rsi],sil
       call      qword ptr [7FF8A1295A08]; System.Globalization.CultureInfo.get_CurrentCulture()
       mov       rcx,rax
       mov       rax,[rax]
       mov       rax,[rax+48]
       call      qword ptr [rax+38]
       mov       rcx,rax
       mov       rdx,rsi
       cmp       [rcx],ecx
       add       rsp,20
       pop       rsi
       jmp       qword ptr [7FF8A1347B88]; System.Globalization.TextInfo.ToUpper(System.String)
; Total bytes of code 49
; System.Globalization.CultureInfo.get_CurrentCulture()
       sub       rsp,28
       mov       rcx,7FF8A10E4CD0
       mov       edx,254
       call      CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE
       mov       rax,[rax+8]
       test      rax,rax
       jne       short M01_L00
       mov       rax,158A5800548
       mov       rax,[rax]
       test      rax,rax
       jne       short M01_L00
       mov       rax,158A5800528
       mov       rax,[rax]
       test      rax,rax
       je        short M01_L01
M01_L00:
       add       rsp,28
       ret
M01_L01:
       add       rsp,28
       jmp       qword ptr [7FF8A12958B8]
; Total bytes of code 84
; System.Globalization.TextInfo.ToUpper(System.String)
       sub       rsp,28
       test      rdx,rdx
       je        short M02_L00
       add       rsp,28
       jmp       qword ptr [7FF8A166D9C0]; System.Globalization.TextInfo.ChangeCaseCommon[[System.Globalization.TextInfo+ToUpperConversion, System.Private.CoreLib]](System.String)
M02_L00:
       mov       ecx,15FB
       mov       rdx,7FF8A0FC4000
       call      CORINFO_HELP_STRCNS
       mov       rcx,rax
       call      qword ptr [7FF8A12B53F0]
       int       3
; Total bytes of code 49

Compare Jit Disasm

; System.Tests.Perf_String.ToUpper(System.String)
       push      rsi
       sub       rsp,20
       mov       rsi,rdx
       cmp       [rsi],sil
       call      qword ptr [7FFC11885A08]; System.Globalization.CultureInfo.get_CurrentCulture()
       mov       rcx,rax
       mov       rax,[rax]
       mov       rax,[rax+48]
       call      qword ptr [rax+38]
       mov       rcx,rax
       mov       rdx,rsi
       cmp       [rcx],ecx
       add       rsp,20
       pop       rsi
       jmp       qword ptr [7FFC11937BB8]; System.Globalization.TextInfo.ToUpper(System.String)
; Total bytes of code 49
; System.Globalization.CultureInfo.get_CurrentCulture()
       sub       rsp,28
       mov       rcx,7FFC116D4D58
       mov       edx,24D
       call      CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE
       mov       rax,[rax+8]
       test      rax,rax
       jne       short M01_L00
       mov       rax,2154FC00550
       mov       rax,[rax]
       test      rax,rax
       jne       short M01_L00
       mov       rax,2154FC00530
       mov       rax,[rax]
       test      rax,rax
       je        short M01_L01
M01_L00:
       add       rsp,28
       ret
M01_L01:
       add       rsp,28
       jmp       qword ptr [7FFC118858B8]
; Total bytes of code 84
; System.Globalization.TextInfo.ToUpper(System.String)
       sub       rsp,28
       test      rdx,rdx
       je        short M02_L00
       add       rsp,28
       jmp       qword ptr [7FFC11C5D9C0]; System.Globalization.TextInfo.ChangeCaseCommon[[System.Globalization.TextInfo+ToUpperConversion, System.Private.CoreLib]](System.String)
M02_L00:
       mov       ecx,15FB
       mov       rdx,7FFC115B4000
       call      CORINFO_HELP_STRCNS
       mov       rcx,rax
       call      qword ptr [7FFC118A5408]
       int       3
; Total bytes of code 49

System.Tests.Perf_String.ToLower(s: "This is a much longer piece of text that might benefit more from vectorization.")


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 46.89561687707146 < 65.36819866319416.
IsChangePoint: Marked as a change because one of 11/24/2022 8:21:24 PM, 11/29/2022 1:43:29 AM falls between 11/20/2022 12:28:28 PM and 11/29/2022 1:43:29 AM.
IsImprovementStdDev: Marked as improvement because 30.609923400575422 (T) = (0 -43.48979750250063) / Math.Sqrt((6.105007857571039 / (299)) + (8.541176375317116 / (15))) is greater than 1.9675964973877862 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (15) - 2, .975) and 0.3508824151519219 = (66.99833515168002 - 43.48979750250063) / 66.99833515168002 is greater than 0.05.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; System.Tests.Perf_String.ToLower(System.String)
       push      rdi
       push      rsi
       sub       rsp,28
       mov       rsi,rdx
       cmp       [rsi],sil
       call      qword ptr [7FFE8A775A08]; System.Globalization.CultureInfo.get_CurrentCulture()
       mov       rdi,[rax]
       mov       rcx,offset MT_System.Globalization.CultureInfo
       cmp       rdi,rcx
       jne       short M00_L01
       mov       rcx,rax
       call      qword ptr [7FFE8A785738]; System.Globalization.CultureInfo.get_TextInfo()
M00_L00:
       mov       rcx,rax
       mov       rdx,rsi
       cmp       [rcx],ecx
       add       rsp,28
       pop       rsi
       pop       rdi
       jmp       qword ptr [7FFE8A827A80]; System.Globalization.TextInfo.ToLower(System.String)
M00_L01:
       mov       rcx,rax
       mov       rax,[rdi+48]
       call      qword ptr [rax+38]
       jmp       short M00_L00
; Total bytes of code 77
; System.Globalization.CultureInfo.get_CurrentCulture()
       sub       rsp,28
       mov       rcx,7FFE8A5C4CD0
       mov       edx,254
       call      CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE
       mov       rax,[rax+8]
       test      rax,rax
       jne       short M01_L00
       mov       rax,28509800548
       mov       rax,[rax]
       test      rax,rax
       jne       short M01_L00
       mov       rax,28509800528
       mov       rax,[rax]
       test      rax,rax
       je        short M01_L01
M01_L00:
       add       rsp,28
       ret
M01_L01:
       add       rsp,28
       jmp       qword ptr [7FFE8A7758B8]
; Total bytes of code 84
; System.Globalization.CultureInfo.get_TextInfo()
       push      rdi
       push      rsi
       sub       rsp,28
       mov       rsi,rcx
       cmp       qword ptr [rsi+10],0
       je        short M02_L01
M02_L00:
       mov       rax,[rsi+10]
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
M02_L01:
       mov       rcx,offset MT_System.Globalization.TextInfo
       call      CORINFO_HELP_NEWSFAST
       mov       rdi,rax
       mov       rdx,[rsi+30]
       mov       rcx,rdi
       call      qword ptr [7FFE8A8278D0]
       movzx     edx,byte ptr [rsi+60]
       mov       [rdi+30],dl
       lea       rcx,[rsi+10]
       mov       rdx,rdi
       call      CORINFO_HELP_ASSIGN_REF
       jmp       short M02_L00
; Total bytes of code 79
; System.Globalization.TextInfo.ToLower(System.String)
       sub       rsp,28
       test      rdx,rdx
       je        short M03_L00
       add       rsp,28
       jmp       qword ptr [7FFE8AB85FD8]; System.Globalization.TextInfo.ChangeCaseCommon[[System.Globalization.TextInfo+ToLowerConversion, System.Private.CoreLib]](System.String)
M03_L00:
       mov       ecx,15FB
       mov       rdx,7FFE8A4A4000
       call      CORINFO_HELP_STRCNS
       mov       rcx,rax
       call      qword ptr [7FFE8A7953F0]
       int       3
; Total bytes of code 49

Compare Jit Disasm

; System.Tests.Perf_String.ToLower(System.String)
       push      rdi
       push      rsi
       sub       rsp,28
       mov       rsi,rdx
       cmp       [rsi],sil
       call      qword ptr [7FFD473C5A08]; System.Globalization.CultureInfo.get_CurrentCulture()
       mov       rdi,[rax]
       mov       rcx,offset MT_System.Globalization.CultureInfo
       cmp       rdi,rcx
       jne       short M00_L01
       mov       rcx,rax
       call      qword ptr [7FFD473D5910]; System.Globalization.CultureInfo.get_TextInfo()
M00_L00:
       mov       rcx,rax
       mov       rdx,rsi
       cmp       [rcx],ecx
       add       rsp,28
       pop       rsi
       pop       rdi
       jmp       qword ptr [7FFD47477A80]; System.Globalization.TextInfo.ToLower(System.String)
M00_L01:
       mov       rcx,rax
       mov       rax,[rdi+48]
       call      qword ptr [rax+38]
       jmp       short M00_L00
; Total bytes of code 77
; System.Globalization.CultureInfo.get_CurrentCulture()
       sub       rsp,28
       mov       rcx,7FFD47214D58
       mov       edx,24D
       call      CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE
       mov       rax,[rax+8]
       test      rax,rax
       jne       short M01_L00
       mov       rax,23990400550
       mov       rax,[rax]
       test      rax,rax
       jne       short M01_L00
       mov       rax,23990400530
       mov       rax,[rax]
       test      rax,rax
       je        short M01_L01
M01_L00:
       add       rsp,28
       ret
M01_L01:
       add       rsp,28
       jmp       qword ptr [7FFD473C58B8]
; Total bytes of code 84
; System.Globalization.CultureInfo.get_TextInfo()
       push      rdi
       push      rsi
       sub       rsp,28
       mov       rsi,rcx
       cmp       qword ptr [rsi+10],0
       je        short M02_L01
M02_L00:
       mov       rax,[rsi+10]
       add       rsp,28
       pop       rsi
       pop       rdi
       ret
M02_L01:
       mov       rcx,offset MT_System.Globalization.TextInfo
       call      CORINFO_HELP_NEWSFAST
       mov       rdi,rax
       mov       rdx,[rsi+30]
       mov       rcx,rdi
       call      qword ptr [7FFD474778D0]
       movzx     edx,byte ptr [rsi+60]
       mov       [rdi+30],dl
       lea       rcx,[rsi+10]
       mov       rdx,rdi
       call      CORINFO_HELP_ASSIGN_REF
       jmp       short M02_L00
; Total bytes of code 79
; System.Globalization.TextInfo.ToLower(System.String)
       sub       rsp,28
       test      rdx,rdx
       je        short M03_L00
       add       rsp,28
       jmp       qword ptr [7FFD477D5FD8]; System.Globalization.TextInfo.ChangeCaseCommon[[System.Globalization.TextInfo+ToLowerConversion, System.Private.CoreLib]](System.String)
M03_L00:
       mov       ecx,15FB
       mov       rdx,7FFD470F4000
       call      CORINFO_HELP_STRCNS
       mov       rcx,rax
       call      qword ptr [7FFD473E5408]
       int       3
; Total bytes of code 49

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