DrewScoggins / performance-2

This repo contains benchmarks used for testing the performance of all .NET Runtimes
MIT License
0 stars 0 forks source link

[Perf] Changes at 3/21/2021 5:03:52 PM #4713

Open performanceautofiler[bot] opened 3 years ago

performanceautofiler[bot] commented 3 years ago

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 3961d91812c997af18ff1ebbdac53bcc4d84fb02
Compare c07e1cf4a874d4f673f4ce0e15f384917e3e2b32

Regressions in Microsoft.Extensions.Primitives.StringSegmentBenchmark

Benchmark Baseline Test Test/Base Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[TrimEnd](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/Microsoft.Extensions.Primitives.StringSegmentBenchmark.TrimEnd.html>) 13.04 ns 14.98 ns 1.15 Trace Trace
[GetSegmentHashCode](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/Microsoft.Extensions.Primitives.StringSegmentBenchmark.GetSegmentHashCode.html>) 13.43 ns 15.23 ns 1.13 Trace Trace

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 'Microsoft.Extensions.Primitives.StringSegmentBenchmark*'
### Payloads [Baseline]() [Compare]() ### Histogram #### Microsoft.Extensions.Primitives.StringSegmentBenchmark.TrimEnd ```log ``` ### Baseline Jit Disasm ```assembly ; Microsoft.Extensions.Primitives.StringSegmentBenchmark.TrimEnd() cmp [rcx],ecx add rcx,48 jmp near ptr Microsoft.Extensions.Primitives.StringSegment.TrimEnd() ; Total bytes of code 11 ``` ```assembly ; Microsoft.Extensions.Primitives.StringSegment.TrimEnd() push r15 push r14 push rdi push rsi push rbp push rbx sub rsp,28 mov rsi,rcx mov rdi,rdx mov rcx,[rsi] mov eax,[rsi+8] mov edx,[rsi+0C] test rcx,rcx jne short M01_L00 or eax,edx jne near ptr M01_L06 xor ebx,ebx xor ebp,ebp jmp short M01_L01 M01_L00: mov r8d,eax mov r9d,edx add r8,r9 mov r9d,[rcx+8] cmp r8,r9 ja near ptr M01_L06 add rcx,0C movsxd rax,eax lea rbx,[rcx+rax*2] mov ebp,edx M01_L01: lea r14d,[rbp+0FFFF] test r14d,r14d jl short M01_L05 M01_L02: cmp r14d,ebp jae short M01_L07 movsxd rcx,r14d movzx ecx,word ptr [rbx+rcx*2] cmp ecx,100 jae short M01_L03 cmp ecx,100 jae short M01_L07 movsxd rcx,ecx mov rax,7FFAC36708C0 test byte ptr [rcx+rax],80 setne r15b movzx r15d,r15b test r15d,r15d je short M01_L05 jmp short M01_L04 M01_L03: call System.Globalization.CharUnicodeInfo.GetIsWhiteSpace(Char) movzx r15d,al test r15d,r15d je short M01_L05 M01_L04: dec r14d test r14d,r14d jge short M01_L02 M01_L05: lea r9d,[r14+1] mov rcx,rsi mov rdx,rdi xor r8d,r8d call Microsoft.Extensions.Primitives.StringSegment.Subsegment(Int32, Int32) mov rax,rdi add rsp,28 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret M01_L06: mov ecx,21 call System.ThrowHelper.ThrowArgumentOutOfRangeException(System.ExceptionArgument) int 3 M01_L07: call CORINFO_HELP_RNGCHKFAIL int 3 ; Total bytes of code 223 ``` ### Compare Jit Disasm ```assembly ; Microsoft.Extensions.Primitives.StringSegmentBenchmark.TrimEnd() cmp [rcx],ecx add rcx,48 jmp near ptr Microsoft.Extensions.Primitives.StringSegment.TrimEnd() ; Total bytes of code 11 ``` ```assembly ; Microsoft.Extensions.Primitives.StringSegment.TrimEnd() push r15 push r14 push rdi push rsi push rbp push rbx sub rsp,28 mov rsi,rcx mov rdi,rdx mov rcx,[rsi] mov eax,[rsi+8] mov edx,[rsi+0C] test rcx,rcx jne short M01_L00 or eax,edx jne near ptr M01_L06 xor ebx,ebx xor ebp,ebp jmp short M01_L01 M01_L00: mov r8d,eax mov r9d,edx add r8,r9 mov r9d,[rcx+8] cmp r8,r9 ja near ptr M01_L06 add rcx,0C movsxd rax,eax lea rbx,[rcx+rax*2] mov ebp,edx M01_L01: lea r14d,[rbp+0FFFF] test r14d,r14d jl short M01_L05 M01_L02: cmp r14d,ebp jae short M01_L07 movsxd rcx,r14d movzx ecx,word ptr [rbx+rcx*2] cmp ecx,100 jae short M01_L03 cmp ecx,100 jae short M01_L07 movsxd rcx,ecx mov rax,7FFA5DB30B50 test byte ptr [rcx+rax],80 setne r15b movzx r15d,r15b test r15d,r15d je short M01_L05 jmp short M01_L04 M01_L03: call System.Globalization.CharUnicodeInfo.GetIsWhiteSpace(Char) movzx r15d,al test r15d,r15d je short M01_L05 M01_L04: dec r14d test r14d,r14d jge short M01_L02 M01_L05: lea r9d,[r14+1] mov rcx,rsi mov rdx,rdi xor r8d,r8d call Microsoft.Extensions.Primitives.StringSegment.Subsegment(Int32, Int32) mov rax,rdi add rsp,28 pop rbx pop rbp pop rsi pop rdi pop r14 pop r15 ret M01_L06: mov ecx,21 call System.ThrowHelper.ThrowArgumentOutOfRangeException(System.ExceptionArgument) int 3 M01_L07: call CORINFO_HELP_RNGCHKFAIL int 3 ; Total bytes of code 223 ``` #### Microsoft.Extensions.Primitives.StringSegmentBenchmark.GetSegmentHashCode ```log ``` ### Baseline Jit Disasm ```assembly ; Microsoft.Extensions.Primitives.StringSegmentBenchmark.GetSegmentHashCode() push rdi push rsi sub rsp,28 add rcx,18 mov rdx,[rcx] mov esi,[rcx+8] mov edi,[rcx+0C] test rdx,rdx je short M00_L01 mov ecx,esi mov r8d,edi add rcx,r8 mov r8d,[rdx+8] cmp rcx,r8 ja short M00_L02 add rdx,0C movsxd rcx,esi lea rcx,[rdx+rcx*2] mov edx,edi M00_L00: add edx,edx mov r8d,0B01B7655 mov r9d,1E7BB2D5 call System.Marvin.ComputeHash32(Byte ByRef, UInt32, UInt32, UInt32) nop add rsp,28 pop rsi pop rdi ret M00_L01: or esi,edi jne short M00_L02 xor ecx,ecx xor edx,edx jmp short M00_L00 M00_L02: mov ecx,21 call System.ThrowHelper.ThrowArgumentOutOfRangeException(System.ExceptionArgument) int 3 ; Total bytes of code 102 ``` ```assembly ; System.Marvin.ComputeHash32(Byte ByRef, UInt32, UInt32, UInt32) cmp edx,8 jb near ptr M01_L04 mov eax,edx shr eax,3 M01_L00: add r8d,[rcx] mov r10d,[rcx+4] xor r9d,r8d rol r8d,14 add r8d,r9d rol r9d,9 xor r9d,r8d rol r8d,1B add r8d,r9d rol r9d,13 add r8d,r10d xor r9d,r8d rol r8d,14 add r8d,r9d rol r9d,9 xor r9d,r8d rol r8d,1B add r8d,r9d rol r9d,13 add rcx,8 dec eax jne short M01_L00 test dl,4 je short M01_L02 M01_L01: add r8d,[rcx] xor r9d,r8d rol r8d,14 add r8d,r9d rol r9d,9 xor r9d,r8d rol r8d,1B add r8d,r9d rol r9d,13 M01_L02: mov eax,edx and rax,7 mov r10d,[rcx+rax+0FFFC] not edx shl edx,3 shr r10d,8 or r10d,80000000 mov ecx,edx shr r10d,cl M01_L03: add r8d,r10d mov eax,r9d xor eax,r8d mov edx,r8d rol edx,14 add edx,eax rol eax,9 xor eax,edx rol edx,1B add edx,eax rol eax,13 xor eax,edx mov r8d,edx rol r8d,14 add r8d,eax rol eax,9 xor eax,r8d rol r8d,1B add r8d,eax rol eax,13 xor eax,r8d ret M01_L04: cmp edx,4 jae near ptr M01_L01 mov r10d,80 test dl,1 jne short M01_L06 M01_L05: test dl,2 je short M01_L03 shl r10d,10 movzx edx,word ptr [rcx] or r10d,edx jmp short M01_L03 M01_L06: mov r10d,edx and r10,2 movzx r10d,byte ptr [rcx+r10] or r10d,8000 jmp short M01_L05 ; Total bytes of code 276 ``` ### Compare Jit Disasm ```assembly ; Microsoft.Extensions.Primitives.StringSegmentBenchmark.GetSegmentHashCode() push rdi push rsi sub rsp,28 add rcx,18 mov rdx,[rcx] mov esi,[rcx+8] mov edi,[rcx+0C] test rdx,rdx je short M00_L01 mov ecx,esi mov r8d,edi add rcx,r8 mov r8d,[rdx+8] cmp rcx,r8 ja short M00_L02 add rdx,0C movsxd rcx,esi lea rcx,[rdx+rcx*2] mov edx,edi M00_L00: add edx,edx mov r8d,684B9E2E mov r9d,0E01CA80B call System.Marvin.ComputeHash32(Byte ByRef, UInt32, UInt32, UInt32) nop add rsp,28 pop rsi pop rdi ret M00_L01: or esi,edi jne short M00_L02 xor ecx,ecx xor edx,edx jmp short M00_L00 M00_L02: mov ecx,21 call System.ThrowHelper.ThrowArgumentOutOfRangeException(System.ExceptionArgument) int 3 ; Total bytes of code 102 ``` ```assembly ; System.Marvin.ComputeHash32(Byte ByRef, UInt32, UInt32, UInt32) cmp edx,8 jb near ptr M01_L04 mov eax,edx shr eax,3 M01_L00: add r8d,[rcx] mov r10d,[rcx+4] xor r9d,r8d rol r8d,14 add r8d,r9d rol r9d,9 xor r9d,r8d rol r8d,1B add r8d,r9d rol r9d,13 add r8d,r10d xor r9d,r8d rol r8d,14 add r8d,r9d rol r9d,9 xor r9d,r8d rol r8d,1B add r8d,r9d rol r9d,13 add rcx,8 dec eax jne short M01_L00 test dl,4 je short M01_L02 M01_L01: add r8d,[rcx] xor r9d,r8d rol r8d,14 add r8d,r9d rol r9d,9 xor r9d,r8d rol r8d,1B add r8d,r9d rol r9d,13 M01_L02: mov eax,edx and rax,7 mov r10d,[rcx+rax+0FFFC] not edx shl edx,3 shr r10d,8 or r10d,80000000 mov ecx,edx shr r10d,cl M01_L03: add r8d,r10d mov eax,r9d xor eax,r8d mov edx,r8d rol edx,14 add edx,eax rol eax,9 xor eax,edx rol edx,1B add edx,eax rol eax,13 xor eax,edx mov r8d,edx rol r8d,14 add r8d,eax rol eax,9 xor eax,r8d rol r8d,1B add r8d,eax rol eax,13 xor eax,r8d ret M01_L04: cmp edx,4 jae near ptr M01_L01 mov r10d,80 test dl,1 jne short M01_L06 M01_L05: test dl,2 je short M01_L03 shl r10d,10 movzx edx,word ptr [rcx] or r10d,edx jmp short M01_L03 M01_L06: mov r10d,edx and r10,2 movzx r10d,byte ptr [rcx+r10] or r10d,8000 jmp short M01_L05 ; Total bytes of code 276 ``` ### Docs [Profiling workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/profiling-workflow-dotnet-runtime.md) [Benchmarking workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/benchmarking-workflow-dotnet-runtime.md)

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 3961d91812c997af18ff1ebbdac53bcc4d84fb02
Compare c07e1cf4a874d4f673f4ce0e15f384917e3e2b32

Regressions in System.Collections.CopyTo<Int32>

Benchmark Baseline Test Test/Base Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[Memory](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.Collections.CopyTo(Int32).Memory(Size%3a%202048).html>) 152.19 ns 174.09 ns 1.14
[Array](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.Collections.CopyTo(Int32).Array(Size%3a%202048).html>) 157.88 ns 191.82 ns 1.21

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.Collections.CopyTo&lt;Int32&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Collections.CopyTo<Int32>.Memory(Size: 2048) ```log ``` #### System.Collections.CopyTo<Int32>.Array(Size: 2048) ```log ``` ### Docs [Profiling workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/profiling-workflow-dotnet-runtime.md) [Benchmarking workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/benchmarking-workflow-dotnet-runtime.md)

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 3961d91812c997af18ff1ebbdac53bcc4d84fb02
Compare c07e1cf4a874d4f673f4ce0e15f384917e3e2b32

Regressions in System.Memory.Span<Byte>

Benchmark Baseline Test Test/Base Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[IndexOfAnyFourValues](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.Memory.Span(Byte).IndexOfAnyFourValues(Size%3a%20512).html>) 42.01 ns 53.11 ns 1.26
[IndexOfAnyThreeValues](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.Memory.Span(Byte).IndexOfAnyThreeValues(Size%3a%20512).html>) 12.58 ns 15.80 ns 1.26
[LastIndexOfAnyValues](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.Memory.Span(Byte).LastIndexOfAnyValues(Size%3a%20512).html>) 13.78 ns 18.50 ns 1.34

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.Memory.Span&lt;Byte&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Memory.Span<Byte>.IndexOfAnyFourValues(Size: 512) ```log ``` #### System.Memory.Span<Byte>.IndexOfAnyThreeValues(Size: 512) ```log ``` #### System.Memory.Span<Byte>.LastIndexOfAnyValues(Size: 512) ```log ``` ### Docs [Profiling workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/profiling-workflow-dotnet-runtime.md) [Benchmarking workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/benchmarking-workflow-dotnet-runtime.md)

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 3961d91812c997af18ff1ebbdac53bcc4d84fb02
Compare c07e1cf4a874d4f673f4ce0e15f384917e3e2b32

Regressions in System.Numerics.Tests.Perf_VectorConvert

Benchmark Baseline Test Test/Base Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[Convert_int_float](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.Numerics.Tests.Perf_VectorConvert.Convert_int_float.html>) 594.49 ns 658.28 ns 1.11 Trace Trace
[Narrow_ushort](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.Numerics.Tests.Perf_VectorConvert.Narrow_ushort.html>) 1.22 μs 1.44 μs 1.18 Trace Trace
[Narrow_int](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.Numerics.Tests.Perf_VectorConvert.Narrow_int.html>) 1.39 μs 1.60 μs 1.15 Trace Trace

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.Numerics.Tests.Perf_VectorConvert*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Numerics.Tests.Perf_VectorConvert.Convert_int_float ```log ``` ### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_VectorConvert.Convert_int_float() mov rcx,rdx mov rdx,2194CED9458 mov rdx,[rdx] jmp near ptr System.Numerics.Tests.Perf_VectorConvert.Convert[[System.Int32, System.Private.CoreLib],[System.Single, System.Private.CoreLib]](Int32[]) ; Total bytes of code 21 ``` ```assembly ; System.Numerics.Tests.Perf_VectorConvert.Convert[[System.Int32, System.Private.CoreLib],[System.Single, System.Private.CoreLib]](Int32[]) sub rsp,28 vzeroupper vxorps ymm0,ymm0,ymm0 cmp dword ptr [rdx+8],0 jbe short M01_L01 add rdx,10 mov eax,3E8 nop dword ptr [rax+rax] M01_L00: vmovupd ymm1,[rdx] vcvtdq2ps ymm1,ymm1 vxorps ymm0,ymm0,ymm1 add rdx,20 dec eax test eax,eax jge short M01_L00 vmovupd [rcx],ymm0 mov rax,rcx vzeroupper add rsp,28 ret M01_L01: call CORINFO_HELP_RNGCHKFAIL int 3 ; Total bytes of code 75 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_VectorConvert.Convert_int_float() mov rcx,rdx mov rdx,192A22F9458 mov rdx,[rdx] jmp near ptr 00007FFD31692140 ; Total bytes of code 21 ``` #### System.Numerics.Tests.Perf_VectorConvert.Narrow_ushort ```log ``` ### Baseline Jit Disasm ```assembly ; BenchmarkDotNet.Autogenerated.Runnable_0.__ForDisassemblyDiagnoser__() push rbp sub rsp,50 vzeroupper lea rbp,[rsp+50] vxorps xmm4,xmm4,xmm4 vmovdqa xmmword ptr [rbp+0FFD0],xmm4 vmovdqa xmmword ptr [rbp+0FFE0],xmm4 mov [rbp+10],rcx mov [rbp+18],rdx mov rcx,[rbp+10] cmp dword ptr [rcx+38],0B jne short M00_L00 mov rcx,[rbp+10] mov rdx,[rbp+18] call 00007FF9157B1188 mov rax,[rbp+18] vzeroupper lea rsp,[rbp] pop rbp ret M00_L00: vxorps ymm0,ymm0,ymm0 vmovupd [rbp+0FFD0],ymm0 mov rax,[rbp+18] vmovupd ymm0,[rbp+0FFD0] vmovupd [rax],ymm0 mov rax,[rbp+18] vzeroupper lea rsp,[rbp] pop rbp ret ; Total bytes of code 106 ``` ### Compare Jit Disasm ```assembly ; BenchmarkDotNet.Autogenerated.Runnable_0.__ForDisassemblyDiagnoser__() push rbp sub rsp,50 vzeroupper lea rbp,[rsp+50] vxorps xmm4,xmm4,xmm4 vmovdqa xmmword ptr [rbp+0FFD0],xmm4 vmovdqa xmmword ptr [rbp+0FFE0],xmm4 mov [rbp+10],rcx mov [rbp+18],rdx mov rcx,[rbp+10] cmp dword ptr [rcx+38],0B jne short M00_L00 mov rcx,[rbp+10] mov rdx,[rbp+18] call 00007FFC28491190 mov rax,[rbp+18] vzeroupper lea rsp,[rbp] pop rbp ret M00_L00: vxorps ymm0,ymm0,ymm0 vmovupd [rbp+0FFD0],ymm0 mov rax,[rbp+18] vmovupd ymm0,[rbp+0FFD0] vmovupd [rax],ymm0 mov rax,[rbp+18] vzeroupper lea rsp,[rbp] pop rbp ret ; Total bytes of code 106 ``` #### System.Numerics.Tests.Perf_VectorConvert.Narrow_int ```log ``` ### Baseline Jit Disasm ```assembly ; BenchmarkDotNet.Autogenerated.Runnable_0.__ForDisassemblyDiagnoser__() push rbp sub rsp,50 vzeroupper lea rbp,[rsp+50] vxorps xmm4,xmm4,xmm4 vmovdqa xmmword ptr [rbp+0FFD0],xmm4 vmovdqa xmmword ptr [rbp+0FFE0],xmm4 mov [rbp+10],rcx mov [rbp+18],rdx mov rcx,[rbp+10] cmp dword ptr [rcx+38],0B jne short M00_L00 mov rcx,[rbp+10] mov rdx,[rbp+18] call 00007FFD67FD1190 mov rax,[rbp+18] vzeroupper lea rsp,[rbp] pop rbp ret M00_L00: vxorps ymm0,ymm0,ymm0 vmovupd [rbp+0FFD0],ymm0 mov rax,[rbp+18] vmovupd ymm0,[rbp+0FFD0] vmovupd [rax],ymm0 mov rax,[rbp+18] vzeroupper lea rsp,[rbp] pop rbp ret ; Total bytes of code 106 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_VectorConvert.Narrow_int() mov rcx,rdx mov rdx,15034799458 mov rdx,[rdx] jmp near ptr 00007FFE8B092140 ; Total bytes of code 21 ``` ### Docs [Profiling workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/profiling-workflow-dotnet-runtime.md) [Benchmarking workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/benchmarking-workflow-dotnet-runtime.md)

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 3961d91812c997af18ff1ebbdac53bcc4d84fb02
Compare c07e1cf4a874d4f673f4ce0e15f384917e3e2b32

Regressions in PerfLabTests.BlockCopyPerf

Benchmark Baseline Test Test/Base Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[CallBlockCopy](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/PerfLabTests.BlockCopyPerf.CallBlockCopy(numElements%3a%201000).html>) 23.39 ns 25.83 ns 1.10 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 'PerfLabTests.BlockCopyPerf*'
### Payloads [Baseline]() [Compare]() ### Histogram #### PerfLabTests.BlockCopyPerf.CallBlockCopy(numElements: 1000) ```log ``` ### Baseline Jit Disasm ```assembly ; PerfLabTests.BlockCopyPerf.CallBlockCopy() sub rsp,28 mov r9d,[rcx+10] mov [rsp+20],r9d mov r8,[rcx+8] mov rcx,r8 xor edx,edx call System.Buffer.BlockCopy(System.Array, Int32, System.Array, Int32, Int32) nop add rsp,28 ret ; Total bytes of code 33 ``` ```assembly ; System.Buffer.BlockCopy(System.Array, Int32, System.Array, Int32, Int32) push r15 push r14 push r12 push rdi push rsi push rbp push rbx sub rsp,20 mov rsi,rcx mov ebx,edx mov rdi,r8 mov ebp,r9d mov r14d,[rsp+80] test rsi,rsi je near ptr M01_L08 test rdi,rdi je near ptr M01_L09 mov edx,[rsi+8] mov r15d,edx mov rdx,offset MT_System.Byte[] cmp [rsi],rdx jne near ptr M01_L02 M01_L00: mov r12,r15 cmp rsi,rdi je short M01_L01 mov edx,[rdi+8] mov r12d,edx mov rdx,offset MT_System.Byte[] cmp [rdi],rdx jne near ptr M01_L03 M01_L01: test ebx,ebx jl near ptr M01_L04 test ebp,ebp jl near ptr M01_L05 test r14d,r14d jl near ptr M01_L06 movsxd r8,r14d movsxd rdx,ebx movsxd rcx,ebp lea rax,[rdx+r8] cmp rax,r15 ja near ptr M01_L07 lea rax,[rcx+r8] cmp rax,r12 ja near ptr M01_L07 lea rax,[rdi+8] mov r9,[rdi] mov r9d,[r9+4] add r9,0FFFFFFFFFFFFFFF0 add rax,r9 add rcx,rax lea rax,[rsi+8] mov r9,[rsi] mov r9d,[r9+4] add r9,0FFFFFFFFFFFFFFF0 add r9,rax add rdx,r9 add rsp,20 pop rbx pop rbp pop rsi pop rdi pop r12 pop r14 pop r15 jmp near ptr System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr) M01_L02: mov rcx,rsi call System.Array.GetCorElementTypeOfElementType() movzx ecx,al mov eax,1 shl eax,cl test eax,3003FFC je near ptr M01_L10 mov rcx,[rsi] movzx ecx,word ptr [rcx] imul r15,rcx jmp near ptr M01_L00 M01_L03: mov rcx,rdi call System.Array.GetCorElementTypeOfElementType() movzx ecx,al mov eax,1 shl eax,cl test eax,3003FFC je near ptr M01_L11 mov rcx,[rdi] movzx ecx,word ptr [rcx] imul r12,rcx jmp near ptr M01_L01 M01_L04: mov rcx,offset MT_System.ArgumentOutOfRangeException call CORINFO_HELP_NEWSFAST mov rsi,rax mov ecx,1A1 mov rdx,7FFB465F4020 call CORINFO_HELP_STRCNS mov rdi,rax mov ecx,9F87 mov rdx,7FFB465F4020 call CORINFO_HELP_STRCNS mov rcx,rax xor edx,edx call System.SR.GetResourceString(System.String, System.String) mov r8,rax mov rdx,rdi mov rcx,rsi call System.ArgumentOutOfRangeException..ctor(System.String, System.String) mov rcx,rsi call CORINFO_HELP_THROW M01_L05: mov rcx,offset MT_System.ArgumentOutOfRangeException call CORINFO_HELP_NEWSFAST mov rsi,rax mov ecx,1B5 mov rdx,7FFB465F4020 call CORINFO_HELP_STRCNS mov rdi,rax mov ecx,9F87 mov rdx,7FFB465F4020 call CORINFO_HELP_STRCNS mov rcx,rax xor edx,edx call System.SR.GetResourceString(System.String, System.String) mov r8,rax mov rdx,rdi mov rcx,rsi call System.ArgumentOutOfRangeException..ctor(System.String, System.String) mov rcx,rsi call CORINFO_HELP_THROW M01_L06: mov rcx,offset MT_System.ArgumentOutOfRangeException call CORINFO_HELP_NEWSFAST mov rsi,rax mov ecx,1C9 mov rdx,7FFB465F4020 call CORINFO_HELP_STRCNS mov rdi,rax mov ecx,9F87 mov rdx,7FFB465F4020 call CORINFO_HELP_STRCNS mov rcx,rax xor edx,edx call System.SR.GetResourceString(System.String, System.String) mov r8,rax mov rdx,rdi mov rcx,rsi call System.ArgumentOutOfRangeException..ctor(System.String, System.String) mov rcx,rsi call CORINFO_HELP_THROW M01_L07: mov rcx,offset MT_System.ArgumentException call CORINFO_HELP_NEWSFAST mov rsi,rax mov ecx,7797 mov rdx,7FFB465F4020 call CORINFO_HELP_STRCNS mov rcx,rax xor edx,edx call System.SR.GetResourceString(System.String, System.String) mov rdx,rax mov rcx,rsi call System.ArgumentException..ctor(System.String) mov rcx,rsi call CORINFO_HELP_THROW M01_L08: mov rcx,offset MT_System.ArgumentNullException call CORINFO_HELP_NEWSFAST mov rsi,rax mov ecx,191 mov rdx,7FFB465F4020 call CORINFO_HELP_STRCNS mov rdx,rax mov rcx,rsi call System.ArgumentNullException..ctor(System.String) mov rcx,rsi call CORINFO_HELP_THROW M01_L09: mov rcx,offset MT_System.ArgumentNullException call CORINFO_HELP_NEWSFAST mov rsi,rax mov ecx,199 mov rdx,7FFB465F4020 call CORINFO_HELP_STRCNS mov rdx,rax mov rcx,rsi call System.ArgumentNullException..ctor(System.String) mov rcx,rsi call CORINFO_HELP_THROW M01_L10: mov rcx,offset MT_System.ArgumentException call CORINFO_HELP_NEWSFAST mov rsi,rax mov ecx,4AB3 mov rdx,7FFB465F4020 call CORINFO_HELP_STRCNS mov rcx,rax xor edx,edx call System.SR.GetResourceString(System.String, System.String) mov rdi,rax mov ecx,191 mov rdx,7FFB465F4020 call CORINFO_HELP_STRCNS mov r8,rax mov rdx,rdi mov rcx,rsi call System.ArgumentException..ctor(System.String, System.String) mov rcx,rsi call CORINFO_HELP_THROW M01_L11: mov rcx,offset MT_System.ArgumentException call CORINFO_HELP_NEWSFAST mov rsi,rax mov ecx,4AB3 mov rdx,7FFB465F4020 call CORINFO_HELP_STRCNS mov rcx,rax xor edx,edx call System.SR.GetResourceString(System.String, System.String) mov rdi,rax mov ecx,199 mov rdx,7FFB465F4020 call CORINFO_HELP_STRCNS mov r8,rax mov rdx,rdi mov rcx,rsi call System.ArgumentException..ctor(System.String, System.String) mov rcx,rsi call CORINFO_HELP_THROW int 3 ; Total bytes of code 965 ``` ### Compare Jit Disasm ```assembly ; PerfLabTests.BlockCopyPerf.CallBlockCopy() sub rsp,28 mov r9d,[rcx+10] mov [rsp+20],r9d mov r8,[rcx+8] mov rcx,r8 xor edx,edx call System.Buffer.BlockCopy(System.Array, Int32, System.Array, Int32, Int32) nop add rsp,28 ret ; Total bytes of code 33 ``` ```assembly ; System.Buffer.BlockCopy(System.Array, Int32, System.Array, Int32, Int32) push r15 push r14 push r12 push rdi push rsi push rbp push rbx sub rsp,20 mov rsi,rcx mov ebx,edx mov rdi,r8 mov ebp,r9d mov r14d,[rsp+80] test rsi,rsi je near ptr M01_L08 test rdi,rdi je near ptr M01_L09 mov edx,[rsi+8] mov r15d,edx mov rdx,offset MT_System.Byte[] cmp [rsi],rdx jne near ptr M01_L02 M01_L00: mov r12,r15 cmp rsi,rdi je short M01_L01 mov edx,[rdi+8] mov r12d,edx mov rdx,offset MT_System.Byte[] cmp [rdi],rdx jne near ptr M01_L03 M01_L01: test ebx,ebx jl near ptr M01_L04 test ebp,ebp jl near ptr M01_L05 test r14d,r14d jl near ptr M01_L06 movsxd r8,r14d movsxd rdx,ebx movsxd rcx,ebp lea rax,[rdx+r8] cmp rax,r15 ja near ptr M01_L07 lea rax,[rcx+r8] cmp rax,r12 ja near ptr M01_L07 lea rax,[rdi+8] mov r9,[rdi] mov r9d,[r9+4] add r9,0FFFFFFFFFFFFFFF0 add rax,r9 add rcx,rax lea rax,[rsi+8] mov r9,[rsi] mov r9d,[r9+4] add r9,0FFFFFFFFFFFFFFF0 add r9,rax add rdx,r9 add rsp,20 pop rbx pop rbp pop rsi pop rdi pop r12 pop r14 pop r15 jmp near ptr System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr) M01_L02: mov rcx,rsi call System.Array.GetCorElementTypeOfElementType() movzx ecx,al mov eax,1 shl eax,cl test eax,3003FFC je near ptr M01_L10 mov rcx,[rsi] movzx ecx,word ptr [rcx] imul r15,rcx jmp near ptr M01_L00 M01_L03: mov rcx,rdi call System.Array.GetCorElementTypeOfElementType() movzx ecx,al mov eax,1 shl eax,cl test eax,3003FFC je near ptr M01_L11 mov rcx,[rdi] movzx ecx,word ptr [rcx] imul r12,rcx jmp near ptr M01_L01 M01_L04: mov rcx,offset MT_System.ArgumentOutOfRangeException call CORINFO_HELP_NEWSFAST mov rsi,rax mov ecx,1A1 mov rdx,7FFEDA7F4020 call CORINFO_HELP_STRCNS mov rdi,rax mov ecx,9F8D mov rdx,7FFEDA7F4020 call CORINFO_HELP_STRCNS mov rcx,rax xor edx,edx call System.SR.GetResourceString(System.String, System.String) mov r8,rax mov rdx,rdi mov rcx,rsi call System.ArgumentOutOfRangeException..ctor(System.String, System.String) mov rcx,rsi call CORINFO_HELP_THROW M01_L05: mov rcx,offset MT_System.ArgumentOutOfRangeException call CORINFO_HELP_NEWSFAST mov rsi,rax mov ecx,1B5 mov rdx,7FFEDA7F4020 call CORINFO_HELP_STRCNS mov rdi,rax mov ecx,9F8D mov rdx,7FFEDA7F4020 call CORINFO_HELP_STRCNS mov rcx,rax xor edx,edx call System.SR.GetResourceString(System.String, System.String) mov r8,rax mov rdx,rdi mov rcx,rsi call System.ArgumentOutOfRangeException..ctor(System.String, System.String) mov rcx,rsi call CORINFO_HELP_THROW M01_L06: mov rcx,offset MT_System.ArgumentOutOfRangeException call CORINFO_HELP_NEWSFAST mov rsi,rax mov ecx,1C9 mov rdx,7FFEDA7F4020 call CORINFO_HELP_STRCNS mov rdi,rax mov ecx,9F8D mov rdx,7FFEDA7F4020 call CORINFO_HELP_STRCNS mov rcx,rax xor edx,edx call System.SR.GetResourceString(System.String, System.String) mov r8,rax mov rdx,rdi mov rcx,rsi call System.ArgumentOutOfRangeException..ctor(System.String, System.String) mov rcx,rsi call CORINFO_HELP_THROW M01_L07: mov rcx,offset MT_System.ArgumentException call CORINFO_HELP_NEWSFAST mov rsi,rax mov ecx,779D mov rdx,7FFEDA7F4020 call CORINFO_HELP_STRCNS mov rcx,rax xor edx,edx call System.SR.GetResourceString(System.String, System.String) mov rdx,rax mov rcx,rsi call System.ArgumentException..ctor(System.String) mov rcx,rsi call CORINFO_HELP_THROW M01_L08: mov rcx,offset MT_System.ArgumentNullException call CORINFO_HELP_NEWSFAST mov rsi,rax mov ecx,191 mov rdx,7FFEDA7F4020 call CORINFO_HELP_STRCNS mov rdx,rax mov rcx,rsi call System.ArgumentNullException..ctor(System.String) mov rcx,rsi call CORINFO_HELP_THROW M01_L09: mov rcx,offset MT_System.ArgumentNullException call CORINFO_HELP_NEWSFAST mov rsi,rax mov ecx,199 mov rdx,7FFEDA7F4020 call CORINFO_HELP_STRCNS mov rdx,rax mov rcx,rsi call System.ArgumentNullException..ctor(System.String) mov rcx,rsi call CORINFO_HELP_THROW M01_L10: mov rcx,offset MT_System.ArgumentException call CORINFO_HELP_NEWSFAST mov rsi,rax mov ecx,4AB9 mov rdx,7FFEDA7F4020 call CORINFO_HELP_STRCNS mov rcx,rax xor edx,edx call System.SR.GetResourceString(System.String, System.String) mov rdi,rax mov ecx,191 mov rdx,7FFEDA7F4020 call CORINFO_HELP_STRCNS mov r8,rax mov rdx,rdi mov rcx,rsi call System.ArgumentException..ctor(System.String, System.String) mov rcx,rsi call CORINFO_HELP_THROW M01_L11: mov rcx,offset MT_System.ArgumentException call CORINFO_HELP_NEWSFAST mov rsi,rax mov ecx,4AB9 mov rdx,7FFEDA7F4020 call CORINFO_HELP_STRCNS mov rcx,rax xor edx,edx call System.SR.GetResourceString(System.String, System.String) mov rdi,rax mov ecx,199 mov rdx,7FFEDA7F4020 call CORINFO_HELP_STRCNS mov r8,rax mov rdx,rdi mov rcx,rsi call System.ArgumentException..ctor(System.String, System.String) mov rcx,rsi call CORINFO_HELP_THROW int 3 ; Total bytes of code 965 ``` ### Docs [Profiling workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/profiling-workflow-dotnet-runtime.md) [Benchmarking workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/benchmarking-workflow-dotnet-runtime.md)

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 3961d91812c997af18ff1ebbdac53bcc4d84fb02
Compare c07e1cf4a874d4f673f4ce0e15f384917e3e2b32

Regressions in System.Buffers.Tests.ReadOnlySequenceTests<Byte>

Benchmark Baseline Test Test/Base Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[IterateGetPositionArray](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.Buffers.Tests.ReadOnlySequenceTests(Byte).IterateGetPositionArray.html>) 25.64 ns 27.10 ns 1.06
[IterateTryGetMemory](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.Buffers.Tests.ReadOnlySequenceTests(Byte).IterateTryGetMemory.html>) 31.42 ns 33.52 ns 1.07

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.Buffers.Tests.ReadOnlySequenceTests&lt;Byte&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Buffers.Tests.ReadOnlySequenceTests<Byte>.IterateGetPositionArray ```log ``` #### System.Buffers.Tests.ReadOnlySequenceTests<Byte>.IterateTryGetMemory ```log ``` ### Docs [Profiling workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/profiling-workflow-dotnet-runtime.md) [Benchmarking workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/benchmarking-workflow-dotnet-runtime.md)

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 3961d91812c997af18ff1ebbdac53bcc4d84fb02
Compare c07e1cf4a874d4f673f4ce0e15f384917e3e2b32

Regressions in System.Text.Tests.Perf_Encoding

Benchmark Baseline Test Test/Base Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[GetByteCount](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.Text.Tests.Perf_Encoding.GetByteCount(size%3a%2016%2c%20encName%3a%20%22utf-8%22).html>) 11.44 ns 12.56 ns 1.10 Trace Trace
[GetByteCount](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.Text.Tests.Perf_Encoding.GetByteCount(size%3a%20512%2c%20encName%3a%20%22utf-8%22).html>) 31.71 ns 34.13 ns 1.08 Trace Trace

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.Text.Tests.Perf_Encoding*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Text.Tests.Perf_Encoding.GetByteCount(size: 16, encName: "utf-8") ```log ``` ### Baseline Jit Disasm ```assembly ; System.Text.Tests.Perf_Encoding.GetByteCount() mov [rsp+8],rcx mov rax,[rcx+10] mov rcx,rax mov rdx,[rsp+8] mov rdx,[rdx+28] mov rax,[rax] mov rax,[rax+50] mov rax,[rax+10] jmp rax ; Total bytes of code 35 ``` ### Compare Jit Disasm ```assembly ; System.Text.Tests.Perf_Encoding.GetByteCount() mov [rsp+8],rcx mov rax,[rcx+10] mov rcx,rax mov rdx,[rsp+8] mov rdx,[rdx+28] mov rax,[rax] mov rax,[rax+50] mov rax,[rax+10] jmp rax ; Total bytes of code 35 ``` #### System.Text.Tests.Perf_Encoding.GetByteCount(size: 512, encName: "utf-8") ```log ``` ### Baseline Jit Disasm ```assembly ; System.Text.Tests.Perf_Encoding.GetByteCount() mov [rsp+8],rcx mov rax,[rcx+10] mov rcx,rax mov rdx,[rsp+8] mov rdx,[rdx+28] mov rax,[rax] mov rax,[rax+50] mov rax,[rax+10] jmp rax ; Total bytes of code 35 ``` ### Compare Jit Disasm ```assembly ; System.Text.Tests.Perf_Encoding.GetByteCount() mov [rsp+8],rcx mov rax,[rcx+10] mov rcx,rax mov rdx,[rsp+8] mov rdx,[rdx+28] mov rax,[rax] mov rax,[rax+50] mov rax,[rax+10] jmp rax ; Total bytes of code 35 ``` ### Docs [Profiling workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/profiling-workflow-dotnet-runtime.md) [Benchmarking workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/benchmarking-workflow-dotnet-runtime.md)
performanceautofiler[bot] commented 3 years ago

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 3961d91812c997af18ff1ebbdac53bcc4d84fb02
Compare c07e1cf4a874d4f673f4ce0e15f384917e3e2b32

Regressions in System.Text.Json.Tests.Utf8JsonReaderCommentsTests

Benchmark Baseline Test Test/Base Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[Utf8JsonReaderCommentParsing](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.Text.Json.Tests.Utf8JsonReaderCommentsTests.Utf8JsonReaderCommentParsing(CommentHandling%3a%20Skip%2c%20SegmentSize%3a%20100%2c%20TestCase%3a%20LongSingleLine).html>) 822.22 ns 1.11 μs 1.35

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.Text.Json.Tests.Utf8JsonReaderCommentsTests*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Text.Json.Tests.Utf8JsonReaderCommentsTests.Utf8JsonReaderCommentParsing(CommentHandling: Skip, SegmentSize: 100, TestCase: LongSingleLine) ```log ``` ### Baseline Jit Disasm ```assembly ; BenchmarkDotNet.Autogenerated.Runnable_15.__ForDisassemblyDiagnoser__() push rbp sub rsp,20 lea rbp,[rsp+20] mov [rbp+10],rcx mov rcx,[rbp+10] cmp dword ptr [rcx+68],0B jne short M00_L00 mov rcx,[rbp+10] call 00007FF8AE8F14B0 M00_L00: nop lea rsp,[rbp] pop rbp ret ; Total bytes of code 40 ``` ### Compare Jit Disasm ```assembly ; BenchmarkDotNet.Autogenerated.Runnable_15.__ForDisassemblyDiagnoser__() push rbp sub rsp,20 lea rbp,[rsp+20] mov [rbp+10],rcx mov rcx,[rbp+10] cmp dword ptr [rcx+68],0B jne short M00_L00 mov rcx,[rbp+10] call 00007FFC2FFA1308 M00_L00: nop lea rsp,[rbp] pop rbp ret ; Total bytes of code 40 ``` ### Docs [Profiling workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/profiling-workflow-dotnet-runtime.md) [Benchmarking workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/benchmarking-workflow-dotnet-runtime.md)