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 |
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
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 286Compare 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 286Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
| 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 |
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<Int32>*'.
Payloads
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 |
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
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 243Compare 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 243Docs
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 |
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<Int32>*'.
Payloads
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 |
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<String>*'.
Payloads
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 |
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
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 224Compare 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 211Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.


_1.png)

_1.png)
_1.png)
