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] Changes at 12/15/2020 2:16:09 AM #3722

Open
performanceautofiler bot opened this issue Jan 5, 2021 · 0 comments
Open

[Perf] Changes at 12/15/2020 2:16:09 AM #3722

performanceautofiler bot opened this issue Jan 5, 2021 · 0 comments

Comments

@performanceautofiler
Copy link

Run Information

Architecture x86
OS Windows 10.0.18362
Baseline f513349a68a2f0e05189ca2fe2972b1da306995e
Compare 35fbaefa57f94268090dd28d432b6109e64a8c48

Improvemnts in System.Globalization.Tests.StringSearch

Benchmark Baseline Test Test/Base Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
IsSuffix_SecondHalf 120.98 ns 103.89 ns 0.86 1338.524978997554 1285.2419053974832 0.960192693871148 Trace Trace
IsSuffix_DifferentLastChar 228.60 ns 193.67 ns 0.85 2562.1415389513163 2448.8766943389146 0.9557929010203078 Trace Trace
IsPrefix_FirstHalf 120.68 ns 103.97 ns 0.86 1332.5504557939573 1275.8991041053432 0.957486524099487 Trace Trace

Related Issue on x64 ubuntu

[Perf 19%] System.Globalization.Tests.StringSearch (8)

Related Issue on x64 ubuntu

[Perf 21%] System.Globalization.Tests.StringSearch (7)

Related Issue on x64 ubuntu

[Perf 21%] System.Globalization.Tests.StringSearch (9)

Related Issue on x64 Windows

[Perf 23%] System.Globalization.Tests.StringSearch (16)

graph
graph
graph
Historical Data in Reporting System

Repro

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

.

Payloads

Baseline
Compare

Histogram

System.Globalization.Tests.StringSearch.IsSuffix_SecondHalf(Options: (en-US, OrdinalIgnoreCase, False))

[103.094 ; 105.677) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[105.677 ; 108.259) | 
[108.259 ; 110.842) | 
[110.842 ; 113.424) | 
[113.424 ; 116.006) | 
[116.006 ; 118.589) | 
[118.589 ; 122.558) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Baseline Jit Disasm

; System.Globalization.Tests.StringSearch.IsSuffix_SecondHalf()
       push      ebp
       mov       ebp,esp
       push      esi
       mov       esi,ecx
       mov       ecx,[esi+18]
       mov       eax,[ecx]
       mov       eax,[eax+2C]
       call      dword ptr [eax+18]
       mov       ecx,eax
       mov       edx,[esi+4]
       mov       eax,[esi+14]
       push      eax
       mov       eax,[esi+1C]
       push      eax
       cmp       [ecx],ecx
       call      System.Globalization.CompareInfo.IsSuffix(System.String, System.String, System.Globalization.CompareOptions)
       pop       esi
       pop       ebp
       ret
; Total bytes of code 40
; System.Globalization.CompareInfo.IsSuffix(System.String, System.String, System.Globalization.CompareOptions)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       mov       eax,[ebp+0C]
       test      edx,edx
       je        short M01_L00
       test      eax,eax
       je        short M01_L01
       lea       esi,[edx+8]
       mov       edx,[edx+4]
       lea       edi,[eax+8]
       mov       eax,[eax+4]
       push      edx
       push      esi
       push      eax
       push      edi
       mov       edx,[ebp+8]
       call      System.Globalization.CompareInfo.IsSuffix(System.ReadOnlySpan`1<Char>, System.ReadOnlySpan`1<Char>, System.Globalization.CompareOptions)
       pop       esi
       pop       edi
       pop       ebp
       ret       8
M01_L00:
       mov       ecx,26
       call      System.ThrowHelper.ThrowArgumentNullException(System.ExceptionArgument)
       int       3
M01_L01:
       mov       ecx,59
       call      System.ThrowHelper.ThrowArgumentNullException(System.ExceptionArgument)
       int       3
; Total bytes of code 68

Compare Jit Disasm

; System.Globalization.Tests.StringSearch.IsSuffix_SecondHalf()
       push      ebp
       mov       ebp,esp
       push      esi
       mov       esi,ecx
       mov       ecx,[esi+18]
       mov       eax,[ecx]
       mov       eax,[eax+2C]
       call      dword ptr [eax+18]
       mov       ecx,eax
       mov       edx,[esi+4]
       mov       eax,[esi+14]
       push      eax
       mov       eax,[esi+1C]
       push      eax
       cmp       [ecx],ecx
       call      System.Globalization.CompareInfo.IsSuffix(System.String, System.String, System.Globalization.CompareOptions)
       pop       esi
       pop       ebp
       ret
; Total bytes of code 40
; System.Globalization.CompareInfo.IsSuffix(System.String, System.String, System.Globalization.CompareOptions)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       mov       eax,[ebp+0C]
       test      edx,edx
       je        short M01_L00
       test      eax,eax
       je        short M01_L01
       lea       esi,[edx+8]
       mov       edx,[edx+4]
       lea       edi,[eax+8]
       mov       eax,[eax+4]
       push      edx
       push      esi
       push      eax
       push      edi
       mov       edx,[ebp+8]
       call      System.Globalization.CompareInfo.IsSuffix(System.ReadOnlySpan`1<Char>, System.ReadOnlySpan`1<Char>, System.Globalization.CompareOptions)
       pop       esi
       pop       edi
       pop       ebp
       ret       8
M01_L00:
       mov       ecx,26
       call      System.ThrowHelper.ThrowArgumentNullException(System.ExceptionArgument)
       int       3
M01_L01:
       mov       ecx,59
       call      System.ThrowHelper.ThrowArgumentNullException(System.ExceptionArgument)
       int       3
; Total bytes of code 68

System.Globalization.Tests.StringSearch.IsSuffix_DifferentLastChar(Options: (en-US, OrdinalIgnoreCase, False))

[192.009 ; 197.131) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[197.131 ; 203.516) | @
[203.516 ; 208.638) | 
[208.638 ; 213.760) | 
[213.760 ; 218.881) | 
[218.881 ; 224.003) | 
[224.003 ; 231.386) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Baseline Jit Disasm

; System.Globalization.Tests.StringSearch.IsSuffix_DifferentLastChar()
       push      ebp
       mov       ebp,esp
       push      esi
       mov       esi,ecx
       mov       ecx,[esi+18]
       mov       eax,[ecx]
       mov       eax,[eax+2C]
       call      dword ptr [eax+18]
       mov       ecx,eax
       mov       edx,[esi+4]
       mov       eax,[esi+0C]
       push      eax
       mov       eax,[esi+1C]
       push      eax
       cmp       [ecx],ecx
       call      System.Globalization.CompareInfo.IsSuffix(System.String, System.String, System.Globalization.CompareOptions)
       pop       esi
       pop       ebp
       ret
; Total bytes of code 40
; System.Globalization.CompareInfo.IsSuffix(System.String, System.String, System.Globalization.CompareOptions)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       mov       eax,[ebp+0C]
       test      edx,edx
       je        short M01_L00
       test      eax,eax
       je        short M01_L01
       lea       esi,[edx+8]
       mov       edx,[edx+4]
       lea       edi,[eax+8]
       mov       eax,[eax+4]
       push      edx
       push      esi
       push      eax
       push      edi
       mov       edx,[ebp+8]
       call      System.Globalization.CompareInfo.IsSuffix(System.ReadOnlySpan`1<Char>, System.ReadOnlySpan`1<Char>, System.Globalization.CompareOptions)
       pop       esi
       pop       edi
       pop       ebp
       ret       8
M01_L00:
       mov       ecx,26
       call      System.ThrowHelper.ThrowArgumentNullException(System.ExceptionArgument)
       int       3
M01_L01:
       mov       ecx,59
       call      System.ThrowHelper.ThrowArgumentNullException(System.ExceptionArgument)
       int       3
; Total bytes of code 68

Compare Jit Disasm

; System.Globalization.Tests.StringSearch.IsSuffix_DifferentLastChar()
       push      ebp
       mov       ebp,esp
       push      esi
       mov       esi,ecx
       mov       ecx,[esi+18]
       mov       eax,[ecx]
       mov       eax,[eax+2C]
       call      dword ptr [eax+18]
       mov       ecx,eax
       mov       edx,[esi+4]
       mov       eax,[esi+0C]
       push      eax
       mov       eax,[esi+1C]
       push      eax
       cmp       [ecx],ecx
       call      System.Globalization.CompareInfo.IsSuffix(System.String, System.String, System.Globalization.CompareOptions)
       pop       esi
       pop       ebp
       ret
; Total bytes of code 40
; System.Globalization.CompareInfo.IsSuffix(System.String, System.String, System.Globalization.CompareOptions)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       mov       eax,[ebp+0C]
       test      edx,edx
       je        short M01_L00
       test      eax,eax
       je        short M01_L01
       lea       esi,[edx+8]
       mov       edx,[edx+4]
       lea       edi,[eax+8]
       mov       eax,[eax+4]
       push      edx
       push      esi
       push      eax
       push      edi
       mov       edx,[ebp+8]
       call      System.Globalization.CompareInfo.IsSuffix(System.ReadOnlySpan`1<Char>, System.ReadOnlySpan`1<Char>, System.Globalization.CompareOptions)
       pop       esi
       pop       edi
       pop       ebp
       ret       8
M01_L00:
       mov       ecx,26
       call      System.ThrowHelper.ThrowArgumentNullException(System.ExceptionArgument)
       int       3
M01_L01:
       mov       ecx,59
       call      System.ThrowHelper.ThrowArgumentNullException(System.ExceptionArgument)
       int       3
; Total bytes of code 68

System.Globalization.Tests.StringSearch.IsPrefix_FirstHalf(Options: (en-US, OrdinalIgnoreCase, False))

[102.075 ; 104.659) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[104.659 ; 107.242) | 
[107.242 ; 109.826) | 
[109.826 ; 112.409) | 
[112.409 ; 114.993) | 
[114.993 ; 117.576) | 
[117.576 ; 121.982) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Baseline Jit Disasm

; System.Globalization.Tests.StringSearch.IsPrefix_FirstHalf()
       push      ebp
       mov       ebp,esp
       push      esi
       mov       esi,ecx
       mov       ecx,[esi+18]
       mov       eax,[ecx]
       mov       eax,[eax+2C]
       call      dword ptr [eax+18]
       mov       ecx,eax
       mov       edx,[esi+4]
       mov       eax,[esi+10]
       push      eax
       mov       eax,[esi+1C]
       push      eax
       cmp       [ecx],ecx
       call      System.Globalization.CompareInfo.IsPrefix(System.String, System.String, System.Globalization.CompareOptions)
       pop       esi
       pop       ebp
       ret
; Total bytes of code 40
; System.Globalization.CompareInfo.IsPrefix(System.String, System.String, System.Globalization.CompareOptions)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       mov       eax,[ebp+0C]
       test      edx,edx
       je        short M01_L00
       test      eax,eax
       je        short M01_L01
       lea       esi,[edx+8]
       mov       edx,[edx+4]
       lea       edi,[eax+8]
       mov       eax,[eax+4]
       push      edx
       push      esi
       push      eax
       push      edi
       mov       edx,[ebp+8]
       call      System.Globalization.CompareInfo.IsPrefix(System.ReadOnlySpan`1<Char>, System.ReadOnlySpan`1<Char>, System.Globalization.CompareOptions)
       pop       esi
       pop       edi
       pop       ebp
       ret       8
M01_L00:
       mov       ecx,26
       call      System.ThrowHelper.ThrowArgumentNullException(System.ExceptionArgument)
       int       3
M01_L01:
       mov       ecx,58
       call      System.ThrowHelper.ThrowArgumentNullException(System.ExceptionArgument)
       int       3
; Total bytes of code 68

Compare Jit Disasm

; System.Globalization.Tests.StringSearch.IsPrefix_FirstHalf()
       push      ebp
       mov       ebp,esp
       push      esi
       mov       esi,ecx
       mov       ecx,[esi+18]
       mov       eax,[ecx]
       mov       eax,[eax+2C]
       call      dword ptr [eax+18]
       mov       ecx,eax
       mov       edx,[esi+4]
       mov       eax,[esi+10]
       push      eax
       mov       eax,[esi+1C]
       push      eax
       cmp       [ecx],ecx
       call      System.Globalization.CompareInfo.IsPrefix(System.String, System.String, System.Globalization.CompareOptions)
       pop       esi
       pop       ebp
       ret
; Total bytes of code 40
; System.Globalization.CompareInfo.IsPrefix(System.String, System.String, System.Globalization.CompareOptions)
       push      ebp
       mov       ebp,esp
       push      edi
       push      esi
       mov       eax,[ebp+0C]
       test      edx,edx
       je        short M01_L00
       test      eax,eax
       je        short M01_L01
       lea       esi,[edx+8]
       mov       edx,[edx+4]
       lea       edi,[eax+8]
       mov       eax,[eax+4]
       push      edx
       push      esi
       push      eax
       push      edi
       mov       edx,[ebp+8]
       call      System.Globalization.CompareInfo.IsPrefix(System.ReadOnlySpan`1<Char>, System.ReadOnlySpan`1<Char>, System.Globalization.CompareOptions)
       pop       esi
       pop       edi
       pop       ebp
       ret       8
M01_L00:
       mov       ecx,26
       call      System.ThrowHelper.ThrowArgumentNullException(System.ExceptionArgument)
       int       3
M01_L01:
       mov       ecx,58
       call      System.ThrowHelper.ThrowArgumentNullException(System.ExceptionArgument)
       int       3
; Total bytes of code 68

Docs

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

DrewScoggins pushed a commit that referenced this issue Jan 22, 2024
…0108.1 (#3722)

Microsoft.Extensions.Logging , Microsoft.NET.ILLink , Microsoft.NET.ILLink.Tasks , System.Threading.Channels
 From Version 9.0.0-alpha.1.24057.2 -> To Version 9.0.0-alpha.1.24058.1

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
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

0 participants