The Wayback Machine - https://web.archive.org/web/20250119184939/https://github.com/DrewScoggins/performance-2/issues/4275
Skip to content

[Perf] Changes at 3/10/2021 12:58:37 AM #4275

Open
@performanceautofiler

Description

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline e0bbfa0f555cf5b9d8b8749e1a91a78924c9d927
Compare 11ff8a576aaccbf291ce8e3e9ba0bd0b04913d37

Improvemnts in System.MathBenchmarks.Single

Benchmark Baseline Test Test/Base Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
Tan 31.72 μs 29.54 μs 0.93 Trace Trace

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.MathBenchmarks.Single*'

.

Payloads

Baseline
Compare

Histogram

System.MathBenchmarks.Single.Tan

[28146.225 ; 29200.483) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[29200.483 ; 30252.952) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[30252.952 ; 31103.532) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[31103.532 ; 32231.402) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[32231.402 ; 32952.326) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@
[32952.326 ; 34170.369) | @@@@@@@@
[34170.369 ; 35848.130) | @

Baseline Jit Disasm

; System.MathBenchmarks.Single.Tan()
       jmp       near ptr System.MathBenchmarks.Single.TanTest()
; Total bytes of code 5
; System.MathBenchmarks.Single.TanTest()
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,50
       vzeroupper
       vmovaps   [rsp+40],xmm6
       vmovaps   [rsp+30],xmm7
       vmovaps   [rsp+20],xmm8
       vxorps    xmm6,xmm6,xmm6
       vmovss    xmm7,dword ptr [7FFAC7FF5DD0]
       xor       esi,esi
       vmovss    xmm8,dword ptr [7FFAC7FF5DD4]
       nop       dword ptr [rax+rax]
M01_L00:
       vaddss    xmm7,xmm7,xmm8
       vmovaps   xmm0,xmm7
       call      System.MathF.Tan(Single)
       vaddss    xmm6,xmm0,xmm6
       inc       esi
       cmp       esi,1388
       jl        short M01_L00
       vmovss    xmm0,dword ptr [7FFAC7FF5DD8]
       vsubss    xmm0,xmm0,xmm6
       vandps    xmm0,xmm0,[7FFAC7FF5DE0]
       vucomiss  xmm0,dword ptr [7FFAC7FF5DF0]
       ja        short M01_L01
       vmovaps   xmm6,[rsp+40]
       vmovaps   xmm7,[rsp+30]
       vmovaps   xmm8,[rsp+20]
       add       rsp,50
       pop       rbx
       pop       rsi
       pop       rdi
       ret
M01_L01:
       mov       rcx,offset MT_System.Single
       call      CORINFO_HELP_NEWSFAST
       mov       rsi,rax
       vmovss    xmm0,dword ptr [7FFAC7FF5DD8]
       vmovss    dword ptr [rsi+8],xmm0
       mov       rcx,offset MT_System.Single
       call      CORINFO_HELP_NEWSFAST
       mov       rdi,rax
       vmovss    dword ptr [rdi+8],xmm6
       mov       rcx,offset MT_System.Exception
       call      CORINFO_HELP_NEWSFAST
       mov       rbx,rax
       mov       ecx,5C7F
       mov       rdx,7FFAC7F46130
       call      CORINFO_HELP_STRCNS
       mov       rcx,rax
       mov       rdx,rsi
       mov       r8,rdi
       call      System.String.Format(System.String, System.Object, System.Object)
       mov       rsi,rax
       mov       rcx,rbx
       call      System.Exception..ctor()
       lea       rcx,[rbx+10]
       mov       rdx,rsi
       call      CORINFO_HELP_ASSIGN_REF
       mov       rcx,rbx
       call      CORINFO_HELP_THROW
       int       3
; Total bytes of code 286

Compare Jit Disasm

; System.MathBenchmarks.Single.Tan()
       jmp       near ptr System.MathBenchmarks.Single.TanTest()
; Total bytes of code 5
; System.MathBenchmarks.Single.TanTest()
       push      rdi
       push      rsi
       push      rbx
       sub       rsp,50
       vzeroupper
       vmovaps   [rsp+40],xmm6
       vmovaps   [rsp+30],xmm7
       vmovaps   [rsp+20],xmm8
       vxorps    xmm6,xmm6,xmm6
       vmovss    xmm7,dword ptr [7FFAE3F85DD0]
       xor       esi,esi
       vmovss    xmm8,dword ptr [7FFAE3F85DD4]
       nop       dword ptr [rax+rax]
M01_L00:
       vaddss    xmm7,xmm7,xmm8
       vmovaps   xmm0,xmm7
       call      System.MathF.Tan(Single)
       vaddss    xmm6,xmm0,xmm6
       inc       esi
       cmp       esi,1388
       jl        short M01_L00
       vmovss    xmm0,dword ptr [7FFAE3F85DD8]
       vsubss    xmm0,xmm0,xmm6
       vandps    xmm0,xmm0,[7FFAE3F85DE0]
       vucomiss  xmm0,dword ptr [7FFAE3F85DF0]
       ja        short M01_L01
       vmovaps   xmm6,[rsp+40]
       vmovaps   xmm7,[rsp+30]
       vmovaps   xmm8,[rsp+20]
       add       rsp,50
       pop       rbx
       pop       rsi
       pop       rdi
       ret
M01_L01:
       mov       rcx,offset MT_System.Single
       call      CORINFO_HELP_NEWSFAST
       mov       rsi,rax
       vmovss    xmm0,dword ptr [7FFAE3F85DD8]
       vmovss    dword ptr [rsi+8],xmm0
       mov       rcx,offset MT_System.Single
       call      CORINFO_HELP_NEWSFAST
       mov       rdi,rax
       vmovss    dword ptr [rdi+8],xmm6
       mov       rcx,offset MT_System.Exception
       call      CORINFO_HELP_NEWSFAST
       mov       rbx,rax
       mov       ecx,5CEF
       mov       rdx,7FFAE3EC6AA0
       call      CORINFO_HELP_STRCNS
       mov       rcx,rax
       mov       rdx,rsi
       mov       r8,rdi
       call      System.String.Format(System.String, System.Object, System.Object)
       mov       rsi,rax
       mov       rcx,rbx
       call      System.Exception..ctor()
       lea       rcx,[rbx+10]
       mov       rdx,rsi
       call      CORINFO_HELP_ASSIGN_REF
       mov       rcx,rbx
       call      CORINFO_HELP_THROW
       int       3
; Total bytes of code 286

Docs

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

### Run Information
Architecture x64
OS Windows 10.0.18362
Baseline e0bbfa0f555cf5b9d8b8749e1a91a78924c9d927
Compare 11ff8a576aaccbf291ce8e3e9ba0bd0b04913d37

Improvemnts in System.Collections.Tests.Add_Remove_SteadyState<Int32>

Benchmark Baseline Test Test/Base Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
ConcurrentBag 51.35 ns 46.30 ns 0.90

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.Collections.Tests.Add_Remove_SteadyState&lt;Int32&gt;*'

.

Payloads

Baseline
Compare

Histogram

System.Collections.Tests.Add_Remove_SteadyState.ConcurrentBag(Count: 512)

[44.557 ; 45.524) | @@
[45.524 ; 46.899) | @@@
[46.899 ; 47.866) | 
[47.866 ; 48.833) | 
[48.833 ; 50.445) | @@@@
[50.445 ; 52.616) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[52.616 ; 54.679) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[54.679 ; 56.059) | @@@@@@@@@@@@@@@@@@@@@@
[56.059 ; 57.791) | @@@@@@@
[57.791 ; 60.070) | @@@@@@@
[60.070 ; 61.622) | @
[61.622 ; 62.867) | @
[62.867 ; 64.801) | 
[64.801 ; 66.208) | 
[66.208 ; 67.546) | @
[67.546 ; 69.479) | 
[69.479 ; 71.412) | 
[71.412 ; 74.407) | @@

Docs

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

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline e0bbfa0f555cf5b9d8b8749e1a91a78924c9d927
Compare 11ff8a576aaccbf291ce8e3e9ba0bd0b04913d37

Improvemnts in System.Tests.Perf_Decimal

Benchmark Baseline Test Test/Base Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
TryParse 100.99 ns 93.22 ns 0.92 Trace Trace

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.Tests.Perf_Decimal*'

.

Payloads

Baseline
Compare

Histogram

System.Tests.Perf_Decimal.TryParse(value: "123456.789")

[90.037 ;  92.437) | @@@@@@@@@@@@@@@@@@@@@
[92.437 ;  94.750) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[94.750 ;  98.184) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[98.184 ; 103.544) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Baseline Jit Disasm

; System.Tests.Perf_Decimal.TryParse(System.String)
       sub       rsp,48
       vzeroupper
       xor       eax,eax
       mov       [rsp+28],rax
       vxorps    xmm4,xmm4,xmm4
       vmovdqa   xmmword ptr [rsp+30],xmm4
       mov       [rsp+40],rax
       test      rdx,rdx
       jne       short M00_L00
       vxorps    xmm0,xmm0,xmm0
       vmovdqu   xmmword ptr [rsp+38],xmm0
       xor       eax,eax
       jmp       short M00_L01
M00_L00:
       lea       rax,[rdx+0C]
       mov       edx,[rdx+8]
       lea       rcx,[rsp+28]
       mov       [rcx],rax
       mov       [rcx+8],edx
       call      System.Globalization.NumberFormatInfo.get_CurrentInfo()
       mov       r8,rax
       lea       rcx,[rsp+28]
       lea       r9,[rsp+38]
       mov       edx,6F
       call      System.Number.TryParseDecimal(System.ReadOnlySpan`1<Char>, System.Globalization.NumberStyles, System.Globalization.NumberFormatInfo, System.Decimal ByRef)
       test      eax,eax
       sete      al
       movzx     eax,al
M00_L01:
       add       rsp,48
       ret
; Total bytes of code 107
; System.Globalization.NumberFormatInfo.get_CurrentInfo()
       push      rsi
       sub       rsp,20
       call      System.Globalization.CultureInfo.get_CurrentCulture()
       mov       rsi,rax
       cmp       byte ptr [rsi+61],0
       jne       short M01_L00
       mov       rax,[rsi+18]
       test      rax,rax
       je        short M01_L00
       add       rsp,20
       pop       rsi
       ret
M01_L00:
       mov       rcx,offset MT_System.Globalization.NumberFormatInfo
       call      CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
       mov       rdx,rax
       mov       rcx,rsi
       mov       rax,[rsi]
       mov       rax,[rax+50]
       call      qword ptr [rax]
       mov       r8,rax
       test      r8,r8
       je        short M01_L01
       mov       rcx,offset MT_System.Globalization.NumberFormatInfo
       cmp       [r8],rcx
       je        short M01_L01
       mov       rdx,rax
       call      CORINFO_HELP_CHKCASTCLASS_SPECIAL
       mov       r8,rax
M01_L01:
       mov       rax,r8
       add       rsp,20
       pop       rsi
       ret
; Total bytes of code 107
; System.Number.TryParseDecimal(System.ReadOnlySpan`1<Char>, System.Globalization.NumberStyles, System.Globalization.NumberFormatInfo, System.Decimal ByRef)
       push      rsi
       sub       rsp,70
       vzeroupper
       xor       eax,eax
       mov       [rsp+48],rax
       vxorps    xmm4,xmm4,xmm4
       vmovdqa   xmmword ptr [rsp+50],xmm4
       mov       [rsp+60],rax
       mov       rax,0C3F44C9C1F5A
       mov       [rsp+68],rax
       mov       rsi,r9
       mov       r9,r8
       lea       r8,[rsp+28]
       mov       byte ptr [rsp+52],2
       lea       rax,[rsp+58]
       mov       [rax],r8
       mov       dword ptr [rax+8],1F
       lea       r8,[rsp+58]
       cmp       dword ptr [r8+8],0
       jbe       near ptr M02_L05
       mov       r8,[r8]
       mov       byte ptr [r8],0
       vxorps    xmm0,xmm0,xmm0
       vmovdqu   xmmword ptr [rsi],xmm0
       lea       r8,[rsp+48]
       call      System.Number.TryStringToNumber(System.ReadOnlySpan`1<Char>, System.Globalization.NumberStyles, NumberBuffer ByRef, System.Globalization.NumberFormatInfo)
       test      eax,eax
       jne       short M02_L01
       mov       eax,1
       mov       rcx,0C3F44C9C1F5A
       cmp       [rsp+68],rcx
       je        short M02_L00
       call      CORINFO_HELP_FAIL_FAST
M02_L00:
       nop
       add       rsp,70
       pop       rsi
       ret
M02_L01:
       lea       rcx,[rsp+48]
       mov       rdx,rsi
       call      System.Number.TryNumberToDecimal(NumberBuffer ByRef, System.Decimal ByRef)
       test      eax,eax
       jne       short M02_L03
       mov       eax,2
       mov       rcx,0C3F44C9C1F5A
       cmp       [rsp+68],rcx
       je        short M02_L02
       call      CORINFO_HELP_FAIL_FAST
M02_L02:
       nop
       add       rsp,70
       pop       rsi
       ret
M02_L03:
       xor       eax,eax
       mov       rcx,0C3F44C9C1F5A
       cmp       [rsp+68],rcx
       je        short M02_L04
       call      CORINFO_HELP_FAIL_FAST
M02_L04:
       nop
       add       rsp,70
       pop       rsi
       ret
M02_L05:
       call      CORINFO_HELP_RNGCHKFAIL
       int       3
; Total bytes of code 243

Compare Jit Disasm

; System.Tests.Perf_Decimal.TryParse(System.String)
       sub       rsp,48
       vzeroupper
       xor       eax,eax
       mov       [rsp+28],rax
       vxorps    xmm4,xmm4,xmm4
       vmovdqa   xmmword ptr [rsp+30],xmm4
       mov       [rsp+40],rax
       test      rdx,rdx
       jne       short M00_L00
       vxorps    xmm0,xmm0,xmm0
       vmovdqu   xmmword ptr [rsp+38],xmm0
       xor       eax,eax
       jmp       short M00_L01
M00_L00:
       lea       rax,[rdx+0C]
       mov       edx,[rdx+8]
       lea       rcx,[rsp+28]
       mov       [rcx],rax
       mov       [rcx+8],edx
       call      System.Globalization.NumberFormatInfo.get_CurrentInfo()
       mov       r8,rax
       lea       rcx,[rsp+28]
       lea       r9,[rsp+38]
       mov       edx,6F
       call      System.Number.TryParseDecimal(System.ReadOnlySpan`1<Char>, System.Globalization.NumberStyles, System.Globalization.NumberFormatInfo, System.Decimal ByRef)
       test      eax,eax
       sete      al
       movzx     eax,al
M00_L01:
       add       rsp,48
       ret
; Total bytes of code 107
; System.Globalization.NumberFormatInfo.get_CurrentInfo()
       push      rsi
       sub       rsp,20
       call      System.Globalization.CultureInfo.get_CurrentCulture()
       mov       rsi,rax
       cmp       byte ptr [rsi+61],0
       jne       short M01_L00
       mov       rax,[rsi+18]
       test      rax,rax
       je        short M01_L00
       add       rsp,20
       pop       rsi
       ret
M01_L00:
       mov       rcx,offset MT_System.Globalization.NumberFormatInfo
       call      CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
       mov       rdx,rax
       mov       rcx,rsi
       mov       rax,[rsi]
       mov       rax,[rax+50]
       call      qword ptr [rax]
       mov       rdx,rax
       mov       rax,rdx
       test      rax,rax
       je        short M01_L01
       mov       rcx,offset MT_System.Globalization.NumberFormatInfo
       cmp       [rax],rcx
       jne       short M01_L02
M01_L01:
       add       rsp,20
       pop       rsi
       ret
M01_L02:
       call      CORINFO_HELP_CHKCASTCLASS_SPECIAL
       int       3
; Total bytes of code 102
; System.Number.TryParseDecimal(System.ReadOnlySpan`1<Char>, System.Globalization.NumberStyles, System.Globalization.NumberFormatInfo, System.Decimal ByRef)
       push      rsi
       sub       rsp,70
       vzeroupper
       xor       eax,eax
       mov       [rsp+48],rax
       vxorps    xmm4,xmm4,xmm4
       vmovdqa   xmmword ptr [rsp+50],xmm4
       mov       [rsp+60],rax
       mov       rax,1A113E75E1A8
       mov       [rsp+68],rax
       mov       rsi,r9
       mov       r9,r8
       lea       r8,[rsp+28]
       mov       byte ptr [rsp+52],2
       lea       rax,[rsp+58]
       mov       [rax],r8
       mov       dword ptr [rax+8],1F
       lea       r8,[rsp+58]
       cmp       dword ptr [r8+8],0
       jbe       near ptr M02_L05
       mov       r8,[r8]
       mov       byte ptr [r8],0
       vxorps    xmm0,xmm0,xmm0
       vmovdqu   xmmword ptr [rsi],xmm0
       lea       r8,[rsp+48]
       call      System.Number.TryStringToNumber(System.ReadOnlySpan`1<Char>, System.Globalization.NumberStyles, NumberBuffer ByRef, System.Globalization.NumberFormatInfo)
       test      eax,eax
       jne       short M02_L01
       mov       eax,1
       mov       rcx,1A113E75E1A8
       cmp       [rsp+68],rcx
       je        short M02_L00
       call      CORINFO_HELP_FAIL_FAST
M02_L00:
       nop
       add       rsp,70
       pop       rsi
       ret
M02_L01:
       lea       rcx,[rsp+48]
       mov       rdx,rsi
       call      System.Number.TryNumberToDecimal(NumberBuffer ByRef, System.Decimal ByRef)
       test      eax,eax
       jne       short M02_L03
       mov       eax,2
       mov       rcx,1A113E75E1A8
       cmp       [rsp+68],rcx
       je        short M02_L02
       call      CORINFO_HELP_FAIL_FAST
M02_L02:
       nop
       add       rsp,70
       pop       rsi
       ret
M02_L03:
       xor       eax,eax
       mov       rcx,1A113E75E1A8
       cmp       [rsp+68],rcx
       je        short M02_L04
       call      CORINFO_HELP_FAIL_FAST
M02_L04:
       nop
       add       rsp,70
       pop       rsi
       ret
M02_L05:
       call      CORINFO_HELP_RNGCHKFAIL
       int       3
; Total bytes of code 243

Docs

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

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline e0bbfa0f555cf5b9d8b8749e1a91a78924c9d927
Compare 11ff8a576aaccbf291ce8e3e9ba0bd0b04913d37

Improvemnts in System.Collections.CreateAddAndClear<Int32>

Benchmark Baseline Test Test/Base Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
ConcurrentBag 14.98 μs 12.73 μs 0.85

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.Collections.CreateAddAndClear&lt;Int32&gt;*'

.

Payloads

Baseline
Compare

Histogram

System.Collections.CreateAddAndClear.ConcurrentBag(Size: 512)

[12647.359 ; 13129.268) | @@@@
[13129.268 ; 13647.153) | @
[13647.153 ; 13987.684) | 
[13987.684 ; 14328.215) | 
[14328.215 ; 14673.560) | 
[14673.560 ; 15140.155) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[15140.155 ; 15627.681) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[15627.681 ; 16169.091) | @@@@@@@@@@
[16169.091 ; 16498.822) | @@@@@
[16498.822 ; 16847.605) | @@@
[16847.605 ; 17307.315) | @@@
[17307.315 ; 17789.077) | 
[17789.077 ; 18148.453) | @
[18148.453 ; 18686.397) | @

Docs

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

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline e0bbfa0f555cf5b9d8b8749e1a91a78924c9d927
Compare 11ff8a576aaccbf291ce8e3e9ba0bd0b04913d37

Improvemnts in System.Collections.Tests.Add_Remove_SteadyState<String>

Benchmark Baseline Test Test/Base Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
ConcurrentBag 56.27 ns 46.30 ns 0.82

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.Collections.Tests.Add_Remove_SteadyState&lt;String&gt;*'

.

Payloads

Baseline
Compare

Histogram

System.Collections.Tests.Add_Remove_SteadyState.ConcurrentBag(Count: 512)

[45.858 ; 47.673) | @@@
[47.673 ; 49.105) | 
[49.105 ; 51.109) | @
[51.109 ; 52.360) | @
[52.360 ; 54.050) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[54.050 ; 55.817) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[55.817 ; 57.922) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[57.922 ; 59.428) | @@@@@@@@@@@@@@@
[59.428 ; 60.957) | @@@@@@
[60.957 ; 63.050) | @@@
[63.050 ; 64.832) | 
[64.832 ; 66.614) | 
[66.614 ; 68.395) | 
[68.395 ; 69.759) | 
[69.759 ; 71.168) | @
[71.168 ; 72.950) | 
[72.950 ; 74.731) | 
[74.731 ; 76.513) | 
[76.513 ; 78.294) | 
[78.294 ; 80.607) | @

Docs

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

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline e0bbfa0f555cf5b9d8b8749e1a91a78924c9d927
Compare 11ff8a576aaccbf291ce8e3e9ba0bd0b04913d37

Improvemnts in System.Threading.Tasks.Tests.Perf_AsyncMethods

Benchmark Baseline Test Test/Base Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
EmptyAsyncMethodInvocation 15.90 ns 14.12 ns 0.89 Trace Trace

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.Threading.Tasks.Tests.Perf_AsyncMethods*'

.

Payloads

Baseline
Compare

Histogram

System.Threading.Tasks.Tests.Perf_AsyncMethods.EmptyAsyncMethodInvocation

[13.818 ; 14.227) | @@@@@
[14.227 ; 14.571) | 
[14.571 ; 14.916) | 
[14.916 ; 15.286) | 
[15.286 ; 15.889) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[15.889 ; 16.381) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[16.381 ; 16.974) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[16.974 ; 17.491) | @@@@@@@@
[17.491 ; 17.986) | @@

Baseline Jit Disasm

; System.Threading.Tasks.Tests.Perf_AsyncMethods.EmptyAsyncMethodInvocation()
       sub       rsp,38
       vxorps    xmm4,xmm4,xmm4
       vmovdqa   xmmword ptr [rsp+20],xmm4
       xor       eax,eax
       mov       [rsp+30],rax
       xor       ecx,ecx
       mov       [rsp+28],rcx
       mov       dword ptr [rsp+20],0FFFFFFFF
       lea       rcx,[rsp+20]
       call      System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[[System.Threading.Tasks.Tests.Perf_AsyncMethods+<EmptyAsyncMethodInvocation>d__0, MicroBenchmarks]](<EmptyAsyncMethodInvocation>d__0 ByRef)
       mov       rax,[rsp+28]
       test      rax,rax
       jne       short M00_L00
       lea       rcx,[rsp+28]
       call      System.Runtime.CompilerServices.AsyncTaskMethodBuilder.InitializeTaskAsPromise()
M00_L00:
       nop
       add       rsp,38
       ret
; Total bytes of code 72
; System.Threading.Tasks.Task.GetAwaiter()
       mov       rax,rcx
       ret
; Total bytes of code 4
; System.Runtime.CompilerServices.TaskAwaiter.GetResult()
       mov       rcx,[rcx]
       mov       eax,[rcx+34]
       and       eax,11000000
       cmp       eax,1000000
       je        short M02_L00
       jmp       near ptr System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task)
M02_L00:
       ret
; Total bytes of code 24
; System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[[System.Threading.Tasks.Tests.Perf_AsyncMethods+<EmptyAsyncMethodInvocation>d__0, MicroBenchmarks]](<EmptyAsyncMethodInvocation>d__0 ByRef)
       push      rbp
       push      rsi
       sub       rsp,48
       lea       rbp,[rsp+50]
       mov       [rbp+0FFD0],rsp
       mov       rsi,rcx
       cmp       [rsi],esi
       mov       rcx,7FF80A420020
       mov       edx,27E
       call      CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE
       mov       rax,[rax+18]
       test      rax,rax
       jne       short M03_L00
       call      System.Threading.Thread.InitializeCurrentThread()
M03_L00:
       mov       [rbp+0FFF0],rax
       mov       rcx,[rax+8]
       mov       [rbp+0FFE8],rcx
       mov       rcx,[rax+10]
       mov       [rbp+0FFE0],rcx
       mov       rcx,rsi
       call      System.Threading.Tasks.Tests.Perf_AsyncMethods+<EmptyAsyncMethodInvocation>d__0.MoveNext()
       nop
       mov       rdx,[rbp+0FFE0]
       mov       rsi,[rbp+0FFF0]
       mov       rcx,[rbp+0FFE0]
       mov       rax,[rbp+0FFF0]
       cmp       rcx,[rax+10]
       je        short M03_L01
       lea       rcx,[rsi+10]
       call      CORINFO_HELP_ASSIGN_REF
M03_L01:
       mov       rdx,[rbp+0FFE8]
       mov       r8,[rsi+8]
       cmp       [rbp+0FFE8],r8
       je        short M03_L02
       mov       rcx,rsi
       call      System.Threading.ExecutionContext.RestoreChangedContextToThread(System.Threading.Thread, System.Threading.ExecutionContext, System.Threading.ExecutionContext)
M03_L02:
       nop
       lea       rsp,[rbp+0FFF8]
       pop       rsi
       pop       rbp
       ret
       push      rbp
       push      rsi
       sub       rsp,28
       mov       rbp,[rcx+20]
       mov       [rsp+20],rbp
       lea       rbp,[rbp+50]
       mov       rdx,[rbp+0FFE0]
       mov       rsi,[rbp+0FFF0]
       mov       rcx,[rbp+0FFE0]
       mov       rax,[rbp+0FFF0]
       cmp       rcx,[rax+10]
       je        short M03_L03
       lea       rcx,[rsi+10]
       call      CORINFO_HELP_ASSIGN_REF
M03_L03:
       mov       rdx,[rbp+0FFE8]
       mov       r8,[rsi+8]
       cmp       [rbp+0FFE8],r8
       je        short M03_L04
       mov       rcx,rsi
       call      System.Threading.ExecutionContext.RestoreChangedContextToThread(System.Threading.Thread, System.Threading.ExecutionContext, System.Threading.ExecutionContext)
M03_L04:
       nop
       add       rsp,28
       pop       rsi
       pop       rbp
       ret
; Total bytes of code 224

Compare Jit Disasm

; System.Threading.Tasks.Tests.Perf_AsyncMethods.EmptyAsyncMethodInvocation()
       sub       rsp,38
       vxorps    xmm4,xmm4,xmm4
       vmovdqa   xmmword ptr [rsp+20],xmm4
       xor       eax,eax
       mov       [rsp+30],rax
       xor       ecx,ecx
       mov       [rsp+28],rcx
       mov       dword ptr [rsp+20],0FFFFFFFF
       lea       rcx,[rsp+20]
       call      System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[[System.Threading.Tasks.Tests.Perf_AsyncMethods+<EmptyAsyncMethodInvocation>d__0, MicroBenchmarks]](<EmptyAsyncMethodInvocation>d__0 ByRef)
       mov       rax,[rsp+28]
       test      rax,rax
       jne       short M00_L00
       lea       rcx,[rsp+28]
       call      System.Runtime.CompilerServices.AsyncTaskMethodBuilder.InitializeTaskAsPromise()
M00_L00:
       nop
       add       rsp,38
       ret
; Total bytes of code 72
; System.Threading.Tasks.Task.GetAwaiter()
       mov       rax,rcx
       ret
; Total bytes of code 4
; System.Runtime.CompilerServices.TaskAwaiter.GetResult()
       mov       rcx,[rcx]
       mov       eax,[rcx+34]
       and       eax,11000000
       cmp       eax,1000000
       je        short M02_L00
       jmp       near ptr System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task)
M02_L00:
       ret
; Total bytes of code 24
; System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[[System.Threading.Tasks.Tests.Perf_AsyncMethods+<EmptyAsyncMethodInvocation>d__0, MicroBenchmarks]](<EmptyAsyncMethodInvocation>d__0 ByRef)
       push      rbp
       push      rsi
       sub       rsp,48
       lea       rbp,[rsp+50]
       mov       [rbp+0FFD0],rsp
       mov       rsi,rcx
       cmp       [rsi],esi
       mov       rcx,7FF9D7B00020
       mov       edx,27F
       call      CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE
       mov       rax,[rax+18]
       test      rax,rax
       jne       short M03_L00
       call      System.Threading.Thread.InitializeCurrentThread()
M03_L00:
       mov       [rbp+0FFF0],rax
       mov       rdx,[rax+8]
       mov       [rbp+0FFE8],rdx
       mov       rax,[rax+10]
       mov       [rbp+0FFE0],rax
       mov       rcx,rsi
       call      System.Threading.Tasks.Tests.Perf_AsyncMethods+<EmptyAsyncMethodInvocation>d__0.MoveNext()
       nop
       mov       rax,[rbp+0FFE0]
       mov       rcx,[rbp+0FFF0]
       cmp       rax,[rcx+10]
       je        short M03_L01
       lea       rcx,[rcx+10]
       mov       rdx,rax
       call      CORINFO_HELP_ASSIGN_REF
       mov       rcx,[rbp+0FFF0]
M03_L01:
       mov       r8,[rcx+8]
       mov       rdx,[rbp+0FFE8]
       cmp       rdx,r8
       je        short M03_L02
       call      System.Threading.ExecutionContext.RestoreChangedContextToThread(System.Threading.Thread, System.Threading.ExecutionContext, System.Threading.ExecutionContext)
M03_L02:
       nop
       lea       rsp,[rbp+0FFF8]
       pop       rsi
       pop       rbp
       ret
       push      rbp
       push      rsi
       sub       rsp,28
       mov       rbp,[rcx+20]
       mov       [rsp+20],rbp
       lea       rbp,[rbp+50]
       mov       rdx,[rbp+0FFE0]
       mov       rcx,[rbp+0FFF0]
       cmp       rdx,[rcx+10]
       je        short M03_L03
       lea       rcx,[rcx+10]
       call      CORINFO_HELP_ASSIGN_REF
       mov       rcx,[rbp+0FFF0]
M03_L03:
       mov       r8,[rcx+8]
       mov       rdx,[rbp+0FFE8]
       cmp       rdx,r8
       je        short M03_L04
       call      System.Threading.ExecutionContext.RestoreChangedContextToThread(System.Threading.Thread, System.Threading.ExecutionContext, System.Threading.ExecutionContext)
M03_L04:
       nop
       add       rsp,28
       pop       rsi
       pop       rbp
       ret
; Total bytes of code 211

Docs

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

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions