KEMBAR78
[Perf] Windows/x64: 4 Improvements on 11/24/2022 9:42:44 PM · Issue #10132 · dotnet/perf-autofiling-issues · GitHub
Skip to content

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

@performanceautofiler

Description

@performanceautofiler

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions