dotnet / perf-autofiling-issues

A landing place for auto-filed performance issues before they receive triage
MIT License
9 stars 4 forks source link

[Perf] Windows/x64: 14 Regressions on 11/16/2022 11:33:39 PM #9898

Open performanceautofiler[bot] opened 1 year ago

performanceautofiler[bot] commented 1 year ago

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 992672775c035a59c33c8ad4880b51df0b0151b3
Compare 86a7ca6601d0f864b6995eabd998908954e12e51
Diff Diff

Regressions in System.Collections.IterateForEach<String>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[SortedSet - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.Collections.IterateForEach(String).SortedSet(Size%3a%20512).html>) 8.80 μs 9.59 μs 1.09 0.07 False
[ImmutableStack - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.Collections.IterateForEach(String).ImmutableStack(Size%3a%20512).html>) 1.83 μs 2.12 μs 1.15 0.10 False
[ImmutableQueue - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.Collections.IterateForEach(String).ImmutableQueue(Size%3a%20512).html>) 4.04 μs 4.82 μs 1.19 0.15 False

graph graph graph Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.IterateForEach&lt;String&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Collections.IterateForEach<String>.SortedSet(Size: 512) ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsRegressionWindowed: Marked as regression because 9.594584860517205 > 9.195376055193552. IsChangePoint: Marked as a change because one of 10/7/2022 9:25:17 PM, 11/16/2022 6:51:59 PM, 11/22/2022 2:20:42 AM falls between 11/13/2022 1:28:42 PM and 11/22/2022 2:20:42 AM. IsRegressionStdDev: Marked as regression because -8.206700899835486 (T) = (0 -9312.165818585985) / Math.Sqrt((21858.01966456294 / (29)) + (54476.05836213626 / (24))) is less than -2.007583770314729 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (29) + (24) - 2, .025) and -0.05092720931004958 = (8860.904671694218 - 9312.165818585985) / 8860.904671694218 is less than -0.05. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```#### System.Collections.IterateForEach<String>.ImmutableStack(Size: 512) ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsRegressionWindowed: Marked as regression because 2.118049666936718 > 1.9264401505568867. IsChangePoint: Marked as a change because one of 9/13/2022 12:23:36 PM, 9/23/2022 1:16:35 AM, 9/29/2022 7:42:19 AM, 11/18/2022 8:48:12 PM, 11/22/2022 2:20:42 AM falls between 11/13/2022 1:28:42 PM and 11/22/2022 2:20:42 AM. IsRegressionStdDev: Marked as regression because -44.63983150469182 (T) = (0 -2107.458442953039) / Math.Sqrt((1240.5256880367476 / (39)) + (28.91388307939171 / (14))) is less than -2.007583770314729 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (39) + (14) - 2, .025) and -0.1406156697871072 = (1847.6499129162328 - 2107.458442953039) / 1847.6499129162328 is less than -0.05. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```#### System.Collections.IterateForEach<String>.ImmutableQueue(Size: 512) ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsRegressionWindowed: Marked as regression because 4.822976374305126 > 4.255578984993624. IsChangePoint: Marked as a change because one of 9/13/2022 12:23:36 PM, 11/2/2022 9:35:40 AM, 11/16/2022 11:42:33 AM, 11/22/2022 2:20:42 AM falls between 11/13/2022 1:28:42 PM and 11/22/2022 2:20:42 AM. IsRegressionStdDev: Marked as regression because -7.837950741931232 (T) = (0 -4685.398528145016) / Math.Sqrt((7609.221794425457 / (28)) + (123699.23950422787 / (25))) is less than -2.007583770314729 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (28) + (25) - 2, .025) and -0.13747429444140227 = (4119.124758283834 - 4685.398528145016) / 4119.124758283834 is less than -0.05. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ``` ### 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 992672775c035a59c33c8ad4880b51df0b0151b3
Compare 86a7ca6601d0f864b6995eabd998908954e12e51
Diff Diff

Regressions in System.Collections.CtorFromCollectionNonGeneric<String>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[Hashtable - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.Collections.CtorFromCollectionNonGeneric(String).Hashtable(Size%3a%20512).html>) 34.86 μs 38.74 μs 1.11 0.19 False

graph Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.CtorFromCollectionNonGeneric&lt;String&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Collections.CtorFromCollectionNonGeneric<String>.Hashtable(Size: 512) ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsRegressionWindowed: Marked as regression because 38.740357439734 > 36.98141333462546. IsChangePoint: Marked as a change because one of 11/16/2022 6:51:59 PM, 11/22/2022 2:20:42 AM falls between 11/13/2022 1:28:42 PM and 11/22/2022 2:20:42 AM. IsRegressionStdDev: Marked as regression because -7.798582728306852 (T) = (0 -37867.785192600706) / Math.Sqrt((1739656.1168017536 / (29)) + (650087.8855589991 / (24))) is less than -2.007583770314729 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (29) + (24) - 2, .025) and -0.06470251185803332 = (35566.54067295933 - 37867.785192600706) / 35566.54067295933 is less than -0.05. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ``` ### 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 992672775c035a59c33c8ad4880b51df0b0151b3
Compare 86a7ca6601d0f864b6995eabd998908954e12e51
Diff Diff

Regressions in System.IO.Tests.BinaryWriterTests

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[WriteNonAsciiChar - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.IO.Tests.BinaryWriterTests.WriteNonAsciiChar.html>) 5.82 ns 7.21 ns 1.24 0.28 False

graph Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.IO.Tests.BinaryWriterTests*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.IO.Tests.BinaryWriterTests.WriteNonAsciiChar ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsRegressionWindowed: Marked as regression because 7.21225610980233 > 6.106560392867951. IsChangePoint: Marked as a change because one of 9/5/2022 7:07:01 AM, 9/5/2022 6:07:07 PM, 11/16/2022 6:51:59 PM, 11/22/2022 2:20:42 AM falls between 11/13/2022 1:28:42 PM and 11/22/2022 2:20:42 AM. IsRegressionStdDev: Marked as regression because -3.630486242982184 (T) = (0 -6.549187928061464) / Math.Sqrt((0.34815287271289624 / (29)) + (0.09743786099217928 / (24))) is less than -2.007583770314729 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (29) + (24) - 2, .025) and -0.07557176500731759 = (6.089029241128236 - 6.549187928061464) / 6.089029241128236 is less than -0.05. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Compare Jit Disasm ```assembly ; System.IO.Tests.BinaryWriterTests.WriteNonAsciiChar() mov rcx,[rcx+8] mov edx,0E0 mov rax,[rcx] mov rax,[rax+50] jmp qword ptr [rax] ; Total bytes of code 19 ``` ### 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 1 year ago

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 992672775c035a59c33c8ad4880b51df0b0151b3
Compare 86a7ca6601d0f864b6995eabd998908954e12e51
Diff Diff

Regressions in System.Formats.Cbor.Tests.Perf_CborReader

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[SkipValue - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.Formats.Cbor.Tests.Perf_CborReader.SkipValue(encoding%3a%20(Integer%2c%20Strict)).html>) 51.09 ns 55.79 ns 1.09 0.02 False
[ReadCoseKey - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.Formats.Cbor.Tests.Perf_CborReader.ReadCoseKey(publicKey%3a%20ECDSA_P256).html>) 626.41 ns 691.12 ns 1.10 0.00 False
[SkipValue - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.Formats.Cbor.Tests.Perf_CborReader.SkipValue(encoding%3a%20(Array%2c%20Strict)).html>) 242.17 ns 286.02 ns 1.18 0.00 False
[SkipValue - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.Formats.Cbor.Tests.Perf_CborReader.SkipValue(encoding%3a%20(Byte%20String%2c%20Strict)).html>) 56.00 ns 63.02 ns 1.13 0.04 False
[SkipValue - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.Formats.Cbor.Tests.Perf_CborReader.SkipValue(encoding%3a%20(Map%2c%20Lax)).html>) 636.60 ns 676.70 ns 1.06 0.00 False
[ReadCoseKey - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.Formats.Cbor.Tests.Perf_CborReader.ReadCoseKey(publicKey%3a%20ECDSA_P521).html>) 633.96 ns 712.34 ns 1.12 0.00 False
[ReadCoseKey - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.Formats.Cbor.Tests.Perf_CborReader.ReadCoseKey(publicKey%3a%20ECDSA_P384).html>) 633.26 ns 703.81 ns 1.11 0.00 False
[SkipValue - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.Formats.Cbor.Tests.Perf_CborReader.SkipValue(encoding%3a%20(Map%2c%20Canonical)).html>) 740.84 ns 806.91 ns 1.09 0.00 False
[SkipValue - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.Formats.Cbor.Tests.Perf_CborReader.SkipValue(encoding%3a%20(Text%20String%2c%20Strict)).html>) 67.30 ns 76.08 ns 1.13 0.01 False

graph graph graph graph graph graph graph graph graph Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Formats.Cbor.Tests.Perf_CborReader*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Formats.Cbor.Tests.Perf_CborReader.SkipValue(encoding: (Integer, Strict)) ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsRegressionWindowed: Marked as regression because 55.794840238634215 > 53.65630255194427. IsChangePoint: Marked as a change because one of 11/16/2022 6:51:59 PM, 11/22/2022 2:20:42 AM falls between 11/13/2022 1:28:42 PM and 11/22/2022 2:20:42 AM. IsRegressionStdDev: Marked as regression because -30.38171117754977 (T) = (0 -55.541902656672484) / Math.Sqrt((0.4165757082058618 / (29)) + (0.17349929793844215 / (24))) is less than -2.007583770314729 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (29) + (24) - 2, .025) and -0.08740745872493488 = (51.077360386877835 - 55.541902656672484) / 51.077360386877835 is less than -0.05. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Compare Jit Disasm ```assembly ; System.Formats.Cbor.Tests.Perf_CborReader.SkipValue(CborEncoding) push r14 push rdi push rsi push rbp push rbx sub rsp,20 mov rsi,rdx mov rdi,[rsi+10] test rdi,rdi je short M00_L01 mov rbx,rdi mov ebp,[rbx+8] M00_L00: mov rcx,offset MT_System.Formats.Cbor.CborReader call CORINFO_HELP_NEWSFAST mov rdi,rax mov esi,[rsi+18] mov byte ptr [rdi+45],1 mov ecx,esi call qword ptr [7FF8BA9F97C8]; System.Formats.Cbor.CborConformanceModeHelpers.Validate(System.Formats.Cbor.CborConformanceMode) lea r14,[rdi+48] mov rcx,r14 mov rdx,rbx call CORINFO_HELP_CHECKED_ASSIGN_REF xor ecx,ecx mov [r14+8],ecx mov [r14+0C],ebp mov [rdi+40],esi mov byte ptr [rdi+46],0 lea rcx,[rdi+5C] mov byte ptr [rcx],1 mov dword ptr [rcx+4],1 mov rcx,rdi xor edx,edx xor r8d,r8d call qword ptr [7FF8BA9F9060]; System.Formats.Cbor.CborReader.SkipToAncestor(Int32, Boolean) nop add rsp,20 pop rbx pop rbp pop rsi pop rdi pop r14 ret M00_L01: xor ebx,ebx xor ebp,ebp jmp short M00_L00 ; Total bytes of code 139 ``` ```assembly ; System.Formats.Cbor.CborConformanceModeHelpers.Validate(System.Formats.Cbor.CborConformanceMode) push rsi sub rsp,20 test ecx,ecx jl short M01_L00 cmp ecx,3 jg short M01_L00 add rsp,20 pop rsi ret M01_L00: mov rcx,offset MT_System.ArgumentOutOfRangeException call CORINFO_HELP_NEWSFAST mov rsi,rax mov ecx,0DFA mov rdx,7FF8BA8B1070 call CORINFO_HELP_STRCNS mov rdx,rax mov rcx,rsi call qword ptr [7FF8BA6137F8] mov rcx,rsi call CORINFO_HELP_THROW int 3 ; Total bytes of code 79 ``` ```assembly ; System.Formats.Cbor.CborReader.SkipToAncestor(Int32, Boolean) push rbp push rsi sub rsp,78 vzeroupper lea rbp,[rsp+80] vxorps xmm4,xmm4,xmm4 vmovdqa xmmword ptr [rbp-30],xmm4 vmovdqa xmmword ptr [rbp-20],xmm4 xor eax,eax mov [rbp-10],rax mov [rbp-60],rsp mov [rbp+10],rcx mov [rbp+18],edx mov rdx,[rcx+8] test rdx,rdx je short M02_L00 mov edx,[rdx+10] jmp short M02_L01 M02_L00: xor edx,edx M02_L01: xor eax,eax vxorps ymm0,ymm0,ymm0 vmovdqu ymmword ptr [rbp-58],ymm0 mov [rbp-38],rax mov eax,[rcx+30] mov r9d,[rcx+38] mov r10d,[rcx+34] lea r11,[rcx+64] movzx esi,byte ptr [r11] mov r11d,[r11+4] vmovupd xmm0,[rcx+70] mov [rbp-58],edx mov [rbp-54],eax mov [rbp-50],r9d mov [rbp-4C],r10d mov [rbp-48],sil mov [rbp-44],r11d vmovupd [rbp-40],xmm0 vmovdqu ymm0,ymmword ptr [rbp-58] vmovdqu ymmword ptr [rbp-30],ymm0 mov rdx,[rbp-38] mov [rbp-10],rdx test r8b,r8b sete dl mov [rcx+45],dl M02_L02: lea rdx,[rbp+18] call qword ptr [7FF8BA9F9078]; System.Formats.Cbor.CborReader.SkipNextNode(Int32 ByRef) cmp dword ptr [rbp+18],0 mov rcx,[rbp+10] jg short M02_L02 mov byte ptr [rcx+45],1 add rsp,78 pop rsi pop rbp ret push rbp push rsi sub rsp,28 vzeroupper mov rbp,[rcx+20] mov [rsp+20],rbp lea rbp,[rbp+80] lea rdx,[rbp-30] mov rcx,[rbp+10] call qword ptr [7FF8BA9F93C0] call CORINFO_HELP_RETHROW int 3 push rbp push rsi sub rsp,28 vzeroupper mov rbp,[rcx+20] mov [rsp+20],rbp lea rbp,[rbp+80] mov rcx,[rbp+10] mov byte ptr [rcx+45],1 add rsp,28 pop rsi pop rbp ret ; Total bytes of code 277 ``` #### System.Formats.Cbor.Tests.Perf_CborReader.ReadCoseKey(publicKey: ECDSA_P256) ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsRegressionWindowed: Marked as regression because 691.1223894149696 > 659.0457634670671. IsChangePoint: Marked as a change because one of 11/16/2022 6:51:59 PM, 11/22/2022 2:20:42 AM falls between 11/13/2022 1:28:42 PM and 11/22/2022 2:20:42 AM. IsRegressionStdDev: Marked as regression because -52.11736959347289 (T) = (0 -694.205904173352) / Math.Sqrt((30.62949554968701 / (29)) + (12.911515059024621 / (24))) is less than -2.007583770314729 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (29) + (24) - 2, .025) and -0.10471573501297135 = (628.4022958767766 - 694.205904173352) / 628.4022958767766 is less than -0.05. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Compare Jit Disasm ```assembly ; System.Formats.Cbor.Tests.Perf_CborReader.ReadCoseKey(System.Formats.Cbor.Tests.ECDsaCosePublicKey) push rdi push rsi push rbp push rbx sub rsp,0B8 xor eax,eax mov [rsp+28],rax vxorps xmm4,xmm4,xmm4 vmovdqa xmmword ptr [rsp+30],xmm4 vmovdqa xmmword ptr [rsp+40],xmm4 mov rax,0FFFFFFFFFFFFFFA0 M00_L00: vmovdqa xmmword ptr [rsp+rax+0B0],xmm4 vmovdqa xmmword ptr [rsp+rax+0C0],xmm4 vmovdqa xmmword ptr [rsp+rax+0D0],xmm4 add rax,30 jne short M00_L00 mov [rsp+0B0],rax mov rsi,[rdx+10] test rsi,rsi je short M00_L02 mov rdi,rsi mov ebx,[rdi+8] M00_L01: mov rcx,offset MT_System.Formats.Cbor.CborReader call CORINFO_HELP_NEWSFAST mov rsi,rax mov byte ptr [rsi+45],1 mov ecx,3 call qword ptr [7FFEDD30FB88]; System.Formats.Cbor.CborConformanceModeHelpers.Validate(System.Formats.Cbor.CborConformanceMode) lea rbp,[rsi+48] mov rcx,rbp mov rdx,rdi call CORINFO_HELP_CHECKED_ASSIGN_REF xor ecx,ecx mov [rbp+8],ecx mov [rbp+0C],ebx mov dword ptr [rsi+40],3 mov byte ptr [rsi+46],0 lea rcx,[rsi+5C] mov byte ptr [rcx],1 mov dword ptr [rcx+4],1 lea rcx,[rsp+28] mov rdx,rsi call qword ptr [7FFEDD30F7E0]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.ReadECParametersAsCosePublicKey(System.Formats.Cbor.CborReader) nop add rsp,0B8 pop rbx pop rbp pop rsi pop rdi ret M00_L02: xor edi,edi xor ebx,ebx jmp short M00_L01 ; Total bytes of code 214 ``` ```assembly ; System.Formats.Cbor.CborConformanceModeHelpers.Validate(System.Formats.Cbor.CborConformanceMode) push rsi sub rsp,20 test ecx,ecx jl short M01_L00 cmp ecx,3 jg short M01_L00 add rsp,20 pop rsi ret M01_L00: mov rcx,offset MT_System.ArgumentOutOfRangeException call CORINFO_HELP_NEWSFAST mov rsi,rax mov ecx,0DFA mov rdx,7FFEDD335058 call CORINFO_HELP_STRCNS mov rdx,rax mov rcx,rsi call qword ptr [7FFEDCF237F8] mov rcx,rsi call CORINFO_HELP_THROW int 3 ; Total bytes of code 79 ``` ```assembly ; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.ReadECParametersAsCosePublicKey(System.Formats.Cbor.CborReader) push rbp push r15 push r14 push rdi push rsi push rbx sub rsp,268 lea rbp,[rsp+290] vxorps xmm4,xmm4,xmm4 vmovdqa xmmword ptr [rbp-260],xmm4 vmovdqa xmmword ptr [rbp-250],xmm4 mov rax,0FFFFFFFFFFFFFDF0 M02_L00: vmovdqa xmmword ptr [rbp+rax-30],xmm4 vmovdqa xmmword ptr [rbp+rax-20],xmm4 vmovdqa xmmword ptr [rbp+rax-10],xmm4 add rax,30 jne short M02_L00 mov [rbp-30],rax mov [rbp-270],rsp mov rbx,rcx mov [rbp-40],rdx xor ecx,ecx mov [rbp-38],rcx mov rcx,[rbp-40] cmp [rcx],ecx call qword ptr [7FFEDD30F4B0]; System.Formats.Cbor.CborReader.ReadStartMap() mov [rbp-30],rax lea rdx,[rbp-40] mov ecx,1 call qword ptr [7FFEDD30F8D0]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__ReadCoseKeyLabel|1_4(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) mov rcx,[rbp-40] cmp [rcx],ecx call qword ptr [7FFEDD30F3D8]; System.Formats.Cbor.CborReader.ReadInt32() mov esi,eax xor r14d,r14d xor r15d,r15d lea rdx,[rbp-40] mov ecx,3 call qword ptr [7FFEDD30F8B8]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__TryReadCoseKeyLabel|1_3(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) test eax,eax je short M02_L01 mov rcx,[rbp-40] cmp [rcx],ecx call qword ptr [7FFEDD30F3D8]; System.Formats.Cbor.CborReader.ReadInt32() mov ecx,eax call qword ptr [7FFEDD30F8A0]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__MapCoseKeyAlgToHashAlgorithmName|1_2(CoseKeyAlgorithm) mov r15,rax mov r14d,1 M02_L01: lea rdx,[rbp-40] mov ecx,4 call qword ptr [7FFEDD30F8B8]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__TryReadCoseKeyLabel|1_3(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) test eax,eax je short M02_L02 mov rcx,[rbp-40] cmp [rcx],cl xor edx,edx xor r8d,r8d call qword ptr [7FFEDD30F060] M02_L02: lea rdx,[rbp-40] mov ecx,0FFFFFFFF call qword ptr [7FFEDD30F8D0]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__ReadCoseKeyLabel|1_4(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) mov rcx,[rbp-40] cmp [rcx],ecx call qword ptr [7FFEDD30F3D8]; System.Formats.Cbor.CborReader.ReadInt32() mov edi,eax mov ecx,esi mov edx,edi call qword ptr [7FFEDD30F870]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__IsValidKtyCrvCombination|1_0(CoseKeyType, CoseCrvId) test eax,eax je near ptr M02_L05 lea rcx,[rbp-0A8] mov edx,edi call qword ptr [7FFEDD30F888]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__MapCoseCrvToECCurve|1_1(CoseCrvId) lea rdx,[rbp-40] mov ecx,0FFFFFFFE call qword ptr [7FFEDD30F8D0]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__ReadCoseKeyLabel|1_4(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) mov rcx,[rbp-40] cmp [rcx],ecx call qword ptr [7FFEDD30F570]; System.Formats.Cbor.CborReader.ReadByteString() mov [rbp-0B8],rax lea rdx,[rbp-40] mov ecx,0FFFFFFFD call qword ptr [7FFEDD30F8D0]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__ReadCoseKeyLabel|1_4(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) mov rcx,[rbp-40] cmp [rcx],ecx call qword ptr [7FFEDD30F570]; System.Formats.Cbor.CborReader.ReadByteString() mov [rbp-0B0],rax lea rdx,[rbp-40] mov ecx,0FFFFFFFC call qword ptr [7FFEDD30F8B8]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__TryReadCoseKeyLabel|1_3(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) test eax,eax jne near ptr M02_L04 movzx ecx,byte ptr [rbp-30] mov eax,[rbp-2C] test eax,eax setg al movzx eax,al movzx ecx,cl test ecx,eax jne short M02_L03 mov rcx,[rbp-40] cmp [rcx],ecx call qword ptr [7FFEDD30F4C8]; System.Formats.Cbor.CborReader.ReadEndMap() lea rdi,[rbp-260] lea rsi,[rbp-0C0] mov ecx,10 rep movsq lea rdi,[rbp-1E0] lea rsi,[rbp-260] mov ecx,10 rep movsq mov [rbp-160],r14b mov [rbp-158],r15 lea rdi,[rbp-150] lea rsi,[rbp-1E0] mov ecx,12 rep movsq jmp near ptr M02_L06 M02_L03: mov rcx,offset MT_System.Formats.Cbor.CborContentException call CORINFO_HELP_NEWSFAST mov rsi,rax mov ecx,0B2BE mov rdx,7FFEDD145740 call CORINFO_HELP_STRCNS mov rdx,rax mov rcx,rsi call qword ptr [7FFEDD30FE10] mov rcx,rsi call CORINFO_HELP_THROW M02_L04: mov rcx,offset MT_System.Formats.Cbor.CborContentException call CORINFO_HELP_NEWSFAST mov rsi,rax mov ecx,0B27E mov rdx,7FFEDD145740 call CORINFO_HELP_STRCNS mov rdx,rax mov rcx,rsi call qword ptr [7FFEDD30FE10] mov rcx,rsi call CORINFO_HELP_THROW M02_L05: mov rcx,offset MT_System.Formats.Cbor.CborContentException call CORINFO_HELP_NEWSFAST mov rsi,rax mov ecx,0B22C mov rdx,7FFEDD145740 call CORINFO_HELP_STRCNS mov rdx,rax mov rcx,rsi call qword ptr [7FFEDD30FE10] mov rcx,rsi call CORINFO_HELP_THROW int 3 M02_L06: mov rdi,rbx lea rsi,[rbp-150] call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF movsq call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF movsq call CORINFO_HELP_ASSIGN_BYREF movsq call CORINFO_HELP_ASSIGN_BYREF mov rax,rbx add rsp,268 pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret push rbp push r15 push r14 push rdi push rsi push rbx sub rsp,28 mov rbp,[rcx+20] mov [rsp+20],rbp lea rbp,[rbp+290] mov rsi,rdx mov rcx,offset MT_System.Formats.Cbor.CborContentException call CORINFO_HELP_NEWSFAST mov rdi,rax mov ecx,0B31A mov rdx,7FFEDD145740 call CORINFO_HELP_STRCNS mov rdx,rax mov rcx,rdi mov r8,rsi call qword ptr [7FFEDD30FE28] mov rcx,rdi call CORINFO_HELP_THROW int 3 ; Total bytes of code 886 ``` #### System.Formats.Cbor.Tests.Perf_CborReader.SkipValue(encoding: (Array, Strict)) ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsRegressionWindowed: Marked as regression because 286.0202441562302 > 252.95322517088985. IsChangePoint: Marked as a change because one of 11/16/2022 6:51:59 PM, 11/22/2022 2:20:42 AM falls between 11/13/2022 1:28:42 PM and 11/22/2022 2:20:42 AM. IsRegressionStdDev: Marked as regression because -85.61883411211458 (T) = (0 -288.71740004880115) / Math.Sqrt((3.185167054274629 / (29)) + (4.348850069998135 / (24))) is less than -2.007583770314729 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (29) + (24) - 2, .025) and -0.19044972184192008 = (242.5280083245212 - 288.71740004880115) / 242.5280083245212 is less than -0.05. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Compare Jit Disasm ```assembly ; System.Formats.Cbor.Tests.Perf_CborReader.SkipValue(CborEncoding) push r14 push rdi push rsi push rbp push rbx sub rsp,20 mov rsi,rdx mov rdi,[rsi+10] test rdi,rdi je short M00_L01 mov rbx,rdi mov ebp,[rbx+8] M00_L00: mov rcx,offset MT_System.Formats.Cbor.CborReader call CORINFO_HELP_NEWSFAST mov rdi,rax mov esi,[rsi+18] mov byte ptr [rdi+45],1 mov ecx,esi call qword ptr [7FF8BAA797C8]; System.Formats.Cbor.CborConformanceModeHelpers.Validate(System.Formats.Cbor.CborConformanceMode) lea r14,[rdi+48] mov rcx,r14 mov rdx,rbx call CORINFO_HELP_CHECKED_ASSIGN_REF xor ecx,ecx mov [r14+8],ecx mov [r14+0C],ebp mov [rdi+40],esi mov byte ptr [rdi+46],0 lea rcx,[rdi+5C] mov byte ptr [rcx],1 mov dword ptr [rcx+4],1 mov rcx,rdi xor edx,edx xor r8d,r8d call qword ptr [7FF8BAA79060]; System.Formats.Cbor.CborReader.SkipToAncestor(Int32, Boolean) nop add rsp,20 pop rbx pop rbp pop rsi pop rdi pop r14 ret M00_L01: xor ebx,ebx xor ebp,ebp jmp short M00_L00 ; Total bytes of code 139 ``` ```assembly ; System.Formats.Cbor.CborConformanceModeHelpers.Validate(System.Formats.Cbor.CborConformanceMode) push rsi sub rsp,20 test ecx,ecx jl short M01_L00 cmp ecx,3 jg short M01_L00 add rsp,20 pop rsi ret M01_L00: mov rcx,offset MT_System.ArgumentOutOfRangeException call CORINFO_HELP_NEWSFAST mov rsi,rax mov ecx,0DFA mov rdx,7FF8BA931070 call CORINFO_HELP_STRCNS mov rdx,rax mov rcx,rsi call qword ptr [7FF8BA6937F8] mov rcx,rsi call CORINFO_HELP_THROW int 3 ; Total bytes of code 79 ``` ```assembly ; System.Formats.Cbor.CborReader.SkipToAncestor(Int32, Boolean) push rbp push rsi sub rsp,78 vzeroupper lea rbp,[rsp+80] vxorps xmm4,xmm4,xmm4 vmovdqa xmmword ptr [rbp-30],xmm4 vmovdqa xmmword ptr [rbp-20],xmm4 xor eax,eax mov [rbp-10],rax mov [rbp-60],rsp mov [rbp+10],rcx mov [rbp+18],edx mov rdx,[rcx+8] test rdx,rdx je short M02_L00 mov edx,[rdx+10] jmp short M02_L01 M02_L00: xor edx,edx M02_L01: xor eax,eax vxorps ymm0,ymm0,ymm0 vmovdqu ymmword ptr [rbp-58],ymm0 mov [rbp-38],rax mov eax,[rcx+30] mov r9d,[rcx+38] mov r10d,[rcx+34] lea r11,[rcx+64] movzx esi,byte ptr [r11] mov r11d,[r11+4] vmovupd xmm0,[rcx+70] mov [rbp-58],edx mov [rbp-54],eax mov [rbp-50],r9d mov [rbp-4C],r10d mov [rbp-48],sil mov [rbp-44],r11d vmovupd [rbp-40],xmm0 vmovdqu ymm0,ymmword ptr [rbp-58] vmovdqu ymmword ptr [rbp-30],ymm0 mov rdx,[rbp-38] mov [rbp-10],rdx test r8b,r8b sete dl mov [rcx+45],dl M02_L02: lea rdx,[rbp+18] call qword ptr [7FF8BAA79078]; System.Formats.Cbor.CborReader.SkipNextNode(Int32 ByRef) cmp dword ptr [rbp+18],0 mov rcx,[rbp+10] jg short M02_L02 mov byte ptr [rcx+45],1 add rsp,78 pop rsi pop rbp ret push rbp push rsi sub rsp,28 vzeroupper mov rbp,[rcx+20] mov [rsp+20],rbp lea rbp,[rbp+80] lea rdx,[rbp-30] mov rcx,[rbp+10] call qword ptr [7FF8BAA793C0] call CORINFO_HELP_RETHROW int 3 push rbp push rsi sub rsp,28 vzeroupper mov rbp,[rcx+20] mov [rsp+20],rbp lea rbp,[rbp+80] mov rcx,[rbp+10] mov byte ptr [rcx+45],1 add rsp,28 pop rsi pop rbp ret ; Total bytes of code 277 ``` #### System.Formats.Cbor.Tests.Perf_CborReader.SkipValue(encoding: (Byte String, Strict)) ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsRegressionWindowed: Marked as regression because 63.020267295597485 > 59.13753923988226. IsChangePoint: Marked as a change because one of 11/16/2022 6:51:59 PM, 11/22/2022 2:20:42 AM falls between 11/13/2022 1:28:42 PM and 11/22/2022 2:20:42 AM. IsRegressionStdDev: Marked as regression because -51.615858756942956 (T) = (0 -63.478006182781115) / Math.Sqrt((0.39748211599305 / (29)) + (0.15290573926856146 / (24))) is less than -2.007583770314729 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (29) + (24) - 2, .025) and -0.13021945687689043 = (56.164319059051095 - 63.478006182781115) / 56.164319059051095 is less than -0.05. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Compare Jit Disasm ```assembly ; System.Formats.Cbor.Tests.Perf_CborReader.SkipValue(CborEncoding) push r14 push rdi push rsi push rbp push rbx sub rsp,20 mov rsi,rdx mov rdi,[rsi+10] test rdi,rdi je short M00_L01 mov rbx,rdi mov ebp,[rbx+8] M00_L00: mov rcx,offset MT_System.Formats.Cbor.CborReader call CORINFO_HELP_NEWSFAST mov rdi,rax mov esi,[rsi+18] mov byte ptr [rdi+45],1 mov ecx,esi call qword ptr [7FF8BA9E97C8]; System.Formats.Cbor.CborConformanceModeHelpers.Validate(System.Formats.Cbor.CborConformanceMode) lea r14,[rdi+48] mov rcx,r14 mov rdx,rbx call CORINFO_HELP_CHECKED_ASSIGN_REF xor ecx,ecx mov [r14+8],ecx mov [r14+0C],ebp mov [rdi+40],esi mov byte ptr [rdi+46],0 lea rcx,[rdi+5C] mov byte ptr [rcx],1 mov dword ptr [rcx+4],1 mov rcx,rdi xor edx,edx xor r8d,r8d call qword ptr [7FF8BA9E9060]; System.Formats.Cbor.CborReader.SkipToAncestor(Int32, Boolean) nop add rsp,20 pop rbx pop rbp pop rsi pop rdi pop r14 ret M00_L01: xor ebx,ebx xor ebp,ebp jmp short M00_L00 ; Total bytes of code 139 ``` ```assembly ; System.Formats.Cbor.CborConformanceModeHelpers.Validate(System.Formats.Cbor.CborConformanceMode) push rsi sub rsp,20 test ecx,ecx jl short M01_L00 cmp ecx,3 jg short M01_L00 add rsp,20 pop rsi ret M01_L00: mov rcx,offset MT_System.ArgumentOutOfRangeException call CORINFO_HELP_NEWSFAST mov rsi,rax mov ecx,0DFA mov rdx,7FF8BA8A1070 call CORINFO_HELP_STRCNS mov rdx,rax mov rcx,rsi call qword ptr [7FF8BA6037F8] mov rcx,rsi call CORINFO_HELP_THROW int 3 ; Total bytes of code 79 ``` ```assembly ; System.Formats.Cbor.CborReader.SkipToAncestor(Int32, Boolean) push rbp push rsi sub rsp,78 vzeroupper lea rbp,[rsp+80] vxorps xmm4,xmm4,xmm4 vmovdqa xmmword ptr [rbp-30],xmm4 vmovdqa xmmword ptr [rbp-20],xmm4 xor eax,eax mov [rbp-10],rax mov [rbp-60],rsp mov [rbp+10],rcx mov [rbp+18],edx mov rdx,[rcx+8] test rdx,rdx je short M02_L00 mov edx,[rdx+10] jmp short M02_L01 M02_L00: xor edx,edx M02_L01: xor eax,eax vxorps ymm0,ymm0,ymm0 vmovdqu ymmword ptr [rbp-58],ymm0 mov [rbp-38],rax mov eax,[rcx+30] mov r9d,[rcx+38] mov r10d,[rcx+34] lea r11,[rcx+64] movzx esi,byte ptr [r11] mov r11d,[r11+4] vmovupd xmm0,[rcx+70] mov [rbp-58],edx mov [rbp-54],eax mov [rbp-50],r9d mov [rbp-4C],r10d mov [rbp-48],sil mov [rbp-44],r11d vmovupd [rbp-40],xmm0 vmovdqu ymm0,ymmword ptr [rbp-58] vmovdqu ymmword ptr [rbp-30],ymm0 mov rdx,[rbp-38] mov [rbp-10],rdx test r8b,r8b sete dl mov [rcx+45],dl M02_L02: lea rdx,[rbp+18] call qword ptr [7FF8BA9E9078]; System.Formats.Cbor.CborReader.SkipNextNode(Int32 ByRef) cmp dword ptr [rbp+18],0 mov rcx,[rbp+10] jg short M02_L02 mov byte ptr [rcx+45],1 add rsp,78 pop rsi pop rbp ret push rbp push rsi sub rsp,28 vzeroupper mov rbp,[rcx+20] mov [rsp+20],rbp lea rbp,[rbp+80] lea rdx,[rbp-30] mov rcx,[rbp+10] call qword ptr [7FF8BA9E93C0] call CORINFO_HELP_RETHROW int 3 push rbp push rsi sub rsp,28 vzeroupper mov rbp,[rcx+20] mov [rsp+20],rbp lea rbp,[rbp+80] mov rcx,[rbp+10] mov byte ptr [rcx+45],1 add rsp,28 pop rsi pop rbp ret ; Total bytes of code 277 ``` #### System.Formats.Cbor.Tests.Perf_CborReader.SkipValue(encoding: (Map, Lax)) ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsRegressionWindowed: Marked as regression because 676.6998462605633 > 670.7638081693134. IsChangePoint: Marked as a change because one of 11/16/2022 6:51:59 PM, 11/22/2022 2:20:42 AM falls between 11/13/2022 1:28:42 PM and 11/22/2022 2:20:42 AM. IsRegressionStdDev: Marked as regression because -28.14795600940158 (T) = (0 -677.3618370260818) / Math.Sqrt((35.09900630328429 / (29)) + (17.27400384679003 / (24))) is less than -2.007583770314729 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (29) + (24) - 2, .025) and -0.06126844781524558 = (638.2568316437903 - 677.3618370260818) / 638.2568316437903 is less than -0.05. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Compare Jit Disasm ```assembly ; System.Formats.Cbor.Tests.Perf_CborReader.SkipValue(CborEncoding) push r14 push rdi push rsi push rbp push rbx sub rsp,20 mov rsi,rdx mov rdi,[rsi+10] test rdi,rdi je short M00_L01 mov rbx,rdi mov ebp,[rbx+8] M00_L00: mov rcx,offset MT_System.Formats.Cbor.CborReader call CORINFO_HELP_NEWSFAST mov rdi,rax mov esi,[rsi+18] mov byte ptr [rdi+45],1 mov ecx,esi call qword ptr [7FF8BAA097C8]; System.Formats.Cbor.CborConformanceModeHelpers.Validate(System.Formats.Cbor.CborConformanceMode) lea r14,[rdi+48] mov rcx,r14 mov rdx,rbx call CORINFO_HELP_CHECKED_ASSIGN_REF xor ecx,ecx mov [r14+8],ecx mov [r14+0C],ebp mov [rdi+40],esi mov byte ptr [rdi+46],0 lea rcx,[rdi+5C] mov byte ptr [rcx],1 mov dword ptr [rcx+4],1 mov rcx,rdi xor edx,edx xor r8d,r8d call qword ptr [7FF8BAA09060]; System.Formats.Cbor.CborReader.SkipToAncestor(Int32, Boolean) nop add rsp,20 pop rbx pop rbp pop rsi pop rdi pop r14 ret M00_L01: xor ebx,ebx xor ebp,ebp jmp short M00_L00 ; Total bytes of code 139 ``` ```assembly ; System.Formats.Cbor.CborConformanceModeHelpers.Validate(System.Formats.Cbor.CborConformanceMode) push rsi sub rsp,20 test ecx,ecx jl short M01_L00 cmp ecx,3 jg short M01_L00 add rsp,20 pop rsi ret M01_L00: mov rcx,offset MT_System.ArgumentOutOfRangeException call CORINFO_HELP_NEWSFAST mov rsi,rax mov ecx,0DFA mov rdx,7FF8BA8C1070 call CORINFO_HELP_STRCNS mov rdx,rax mov rcx,rsi call qword ptr [7FF8BA6237F8] mov rcx,rsi call CORINFO_HELP_THROW int 3 ; Total bytes of code 79 ``` ```assembly ; System.Formats.Cbor.CborReader.SkipToAncestor(Int32, Boolean) push rbp push rsi sub rsp,78 vzeroupper lea rbp,[rsp+80] vxorps xmm4,xmm4,xmm4 vmovdqa xmmword ptr [rbp-30],xmm4 vmovdqa xmmword ptr [rbp-20],xmm4 xor eax,eax mov [rbp-10],rax mov [rbp-60],rsp mov [rbp+10],rcx mov [rbp+18],edx mov rdx,[rcx+8] test rdx,rdx je short M02_L00 mov edx,[rdx+10] jmp short M02_L01 M02_L00: xor edx,edx M02_L01: xor eax,eax vxorps ymm0,ymm0,ymm0 vmovdqu ymmword ptr [rbp-58],ymm0 mov [rbp-38],rax mov eax,[rcx+30] mov r9d,[rcx+38] mov r10d,[rcx+34] lea r11,[rcx+64] movzx esi,byte ptr [r11] mov r11d,[r11+4] vmovupd xmm0,[rcx+70] mov [rbp-58],edx mov [rbp-54],eax mov [rbp-50],r9d mov [rbp-4C],r10d mov [rbp-48],sil mov [rbp-44],r11d vmovupd [rbp-40],xmm0 vmovdqu ymm0,ymmword ptr [rbp-58] vmovdqu ymmword ptr [rbp-30],ymm0 mov rdx,[rbp-38] mov [rbp-10],rdx test r8b,r8b sete dl mov [rcx+45],dl M02_L02: lea rdx,[rbp+18] call qword ptr [7FF8BAA09078]; System.Formats.Cbor.CborReader.SkipNextNode(Int32 ByRef) cmp dword ptr [rbp+18],0 mov rcx,[rbp+10] jg short M02_L02 mov byte ptr [rcx+45],1 add rsp,78 pop rsi pop rbp ret push rbp push rsi sub rsp,28 vzeroupper mov rbp,[rcx+20] mov [rsp+20],rbp lea rbp,[rbp+80] lea rdx,[rbp-30] mov rcx,[rbp+10] call qword ptr [7FF8BAA093C0] call CORINFO_HELP_RETHROW int 3 push rbp push rsi sub rsp,28 vzeroupper mov rbp,[rcx+20] mov [rsp+20],rbp lea rbp,[rbp+80] mov rcx,[rbp+10] mov byte ptr [rcx+45],1 add rsp,28 pop rsi pop rbp ret ; Total bytes of code 277 ``` #### System.Formats.Cbor.Tests.Perf_CborReader.ReadCoseKey(publicKey: ECDSA_P521) ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsRegressionWindowed: Marked as regression because 712.3443069269389 > 664.9745646893099. IsChangePoint: Marked as a change because one of 11/16/2022 6:51:59 PM, 11/22/2022 2:20:42 AM falls between 11/13/2022 1:28:42 PM and 11/22/2022 2:20:42 AM. IsRegressionStdDev: Marked as regression because -48.51712555785341 (T) = (0 -705.4131352156) / Math.Sqrt((50.00756165962576 / (29)) + (7.351264448665726 / (24))) is less than -2.007583770314729 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (29) + (24) - 2, .025) and -0.1086608955929336 = (636.2749313335628 - 705.4131352156) / 636.2749313335628 is less than -0.05. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Compare Jit Disasm ```assembly ; System.Formats.Cbor.Tests.Perf_CborReader.ReadCoseKey(System.Formats.Cbor.Tests.ECDsaCosePublicKey) push rdi push rsi push rbp push rbx sub rsp,0B8 xor eax,eax mov [rsp+28],rax vxorps xmm4,xmm4,xmm4 vmovdqa xmmword ptr [rsp+30],xmm4 vmovdqa xmmword ptr [rsp+40],xmm4 mov rax,0FFFFFFFFFFFFFFA0 M00_L00: vmovdqa xmmword ptr [rsp+rax+0B0],xmm4 vmovdqa xmmword ptr [rsp+rax+0C0],xmm4 vmovdqa xmmword ptr [rsp+rax+0D0],xmm4 add rax,30 jne short M00_L00 mov [rsp+0B0],rax mov rsi,[rdx+10] test rsi,rsi je short M00_L02 mov rdi,rsi mov ebx,[rdi+8] M00_L01: mov rcx,offset MT_System.Formats.Cbor.CborReader call CORINFO_HELP_NEWSFAST mov rsi,rax mov byte ptr [rsi+45],1 mov ecx,3 call qword ptr [7FFEDD29FB88]; System.Formats.Cbor.CborConformanceModeHelpers.Validate(System.Formats.Cbor.CborConformanceMode) lea rbp,[rsi+48] mov rcx,rbp mov rdx,rdi call CORINFO_HELP_CHECKED_ASSIGN_REF xor ecx,ecx mov [rbp+8],ecx mov [rbp+0C],ebx mov dword ptr [rsi+40],3 mov byte ptr [rsi+46],0 lea rcx,[rsi+5C] mov byte ptr [rcx],1 mov dword ptr [rcx+4],1 lea rcx,[rsp+28] mov rdx,rsi call qword ptr [7FFEDD29F7E0]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.ReadECParametersAsCosePublicKey(System.Formats.Cbor.CborReader) nop add rsp,0B8 pop rbx pop rbp pop rsi pop rdi ret M00_L02: xor edi,edi xor ebx,ebx jmp short M00_L01 ; Total bytes of code 214 ``` ```assembly ; System.Formats.Cbor.CborConformanceModeHelpers.Validate(System.Formats.Cbor.CborConformanceMode) push rsi sub rsp,20 test ecx,ecx jl short M01_L00 cmp ecx,3 jg short M01_L00 add rsp,20 pop rsi ret M01_L00: mov rcx,offset MT_System.ArgumentOutOfRangeException call CORINFO_HELP_NEWSFAST mov rsi,rax mov ecx,0DFA mov rdx,7FFEDD2C5058 call CORINFO_HELP_STRCNS mov rdx,rax mov rcx,rsi call qword ptr [7FFEDCEB37F8] mov rcx,rsi call CORINFO_HELP_THROW int 3 ; Total bytes of code 79 ``` ```assembly ; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.ReadECParametersAsCosePublicKey(System.Formats.Cbor.CborReader) push rbp push r15 push r14 push rdi push rsi push rbx sub rsp,268 lea rbp,[rsp+290] vxorps xmm4,xmm4,xmm4 vmovdqa xmmword ptr [rbp-260],xmm4 vmovdqa xmmword ptr [rbp-250],xmm4 mov rax,0FFFFFFFFFFFFFDF0 M02_L00: vmovdqa xmmword ptr [rbp+rax-30],xmm4 vmovdqa xmmword ptr [rbp+rax-20],xmm4 vmovdqa xmmword ptr [rbp+rax-10],xmm4 add rax,30 jne short M02_L00 mov [rbp-30],rax mov [rbp-270],rsp mov rbx,rcx mov [rbp-40],rdx xor ecx,ecx mov [rbp-38],rcx mov rcx,[rbp-40] cmp [rcx],ecx call qword ptr [7FFEDD29F4B0]; System.Formats.Cbor.CborReader.ReadStartMap() mov [rbp-30],rax lea rdx,[rbp-40] mov ecx,1 call qword ptr [7FFEDD29F8D0]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__ReadCoseKeyLabel|1_4(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) mov rcx,[rbp-40] cmp [rcx],ecx call qword ptr [7FFEDD29F3D8]; System.Formats.Cbor.CborReader.ReadInt32() mov esi,eax xor r14d,r14d xor r15d,r15d lea rdx,[rbp-40] mov ecx,3 call qword ptr [7FFEDD29F8B8]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__TryReadCoseKeyLabel|1_3(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) test eax,eax je short M02_L01 mov rcx,[rbp-40] cmp [rcx],ecx call qword ptr [7FFEDD29F3D8]; System.Formats.Cbor.CborReader.ReadInt32() mov ecx,eax call qword ptr [7FFEDD29F8A0]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__MapCoseKeyAlgToHashAlgorithmName|1_2(CoseKeyAlgorithm) mov r15,rax mov r14d,1 M02_L01: lea rdx,[rbp-40] mov ecx,4 call qword ptr [7FFEDD29F8B8]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__TryReadCoseKeyLabel|1_3(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) test eax,eax je short M02_L02 mov rcx,[rbp-40] cmp [rcx],cl xor edx,edx xor r8d,r8d call qword ptr [7FFEDD29F060] M02_L02: lea rdx,[rbp-40] mov ecx,0FFFFFFFF call qword ptr [7FFEDD29F8D0]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__ReadCoseKeyLabel|1_4(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) mov rcx,[rbp-40] cmp [rcx],ecx call qword ptr [7FFEDD29F3D8]; System.Formats.Cbor.CborReader.ReadInt32() mov edi,eax mov ecx,esi mov edx,edi call qword ptr [7FFEDD29F870]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__IsValidKtyCrvCombination|1_0(CoseKeyType, CoseCrvId) test eax,eax je near ptr M02_L05 lea rcx,[rbp-0A8] mov edx,edi call qword ptr [7FFEDD29F888]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__MapCoseCrvToECCurve|1_1(CoseCrvId) lea rdx,[rbp-40] mov ecx,0FFFFFFFE call qword ptr [7FFEDD29F8D0]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__ReadCoseKeyLabel|1_4(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) mov rcx,[rbp-40] cmp [rcx],ecx call qword ptr [7FFEDD29F570]; System.Formats.Cbor.CborReader.ReadByteString() mov [rbp-0B8],rax lea rdx,[rbp-40] mov ecx,0FFFFFFFD call qword ptr [7FFEDD29F8D0]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__ReadCoseKeyLabel|1_4(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) mov rcx,[rbp-40] cmp [rcx],ecx call qword ptr [7FFEDD29F570]; System.Formats.Cbor.CborReader.ReadByteString() mov [rbp-0B0],rax lea rdx,[rbp-40] mov ecx,0FFFFFFFC call qword ptr [7FFEDD29F8B8]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__TryReadCoseKeyLabel|1_3(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) test eax,eax jne near ptr M02_L04 movzx ecx,byte ptr [rbp-30] mov eax,[rbp-2C] test eax,eax setg al movzx eax,al movzx ecx,cl test ecx,eax jne short M02_L03 mov rcx,[rbp-40] cmp [rcx],ecx call qword ptr [7FFEDD29F4C8]; System.Formats.Cbor.CborReader.ReadEndMap() lea rdi,[rbp-260] lea rsi,[rbp-0C0] mov ecx,10 rep movsq lea rdi,[rbp-1E0] lea rsi,[rbp-260] mov ecx,10 rep movsq mov [rbp-160],r14b mov [rbp-158],r15 lea rdi,[rbp-150] lea rsi,[rbp-1E0] mov ecx,12 rep movsq jmp near ptr M02_L06 M02_L03: mov rcx,offset MT_System.Formats.Cbor.CborContentException call CORINFO_HELP_NEWSFAST mov rsi,rax mov ecx,0B2BE mov rdx,7FFEDD0D5740 call CORINFO_HELP_STRCNS mov rdx,rax mov rcx,rsi call qword ptr [7FFEDD29FE10] mov rcx,rsi call CORINFO_HELP_THROW M02_L04: mov rcx,offset MT_System.Formats.Cbor.CborContentException call CORINFO_HELP_NEWSFAST mov rsi,rax mov ecx,0B27E mov rdx,7FFEDD0D5740 call CORINFO_HELP_STRCNS mov rdx,rax mov rcx,rsi call qword ptr [7FFEDD29FE10] mov rcx,rsi call CORINFO_HELP_THROW M02_L05: mov rcx,offset MT_System.Formats.Cbor.CborContentException call CORINFO_HELP_NEWSFAST mov rsi,rax mov ecx,0B22C mov rdx,7FFEDD0D5740 call CORINFO_HELP_STRCNS mov rdx,rax mov rcx,rsi call qword ptr [7FFEDD29FE10] mov rcx,rsi call CORINFO_HELP_THROW int 3 M02_L06: mov rdi,rbx lea rsi,[rbp-150] call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF movsq call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF movsq call CORINFO_HELP_ASSIGN_BYREF movsq call CORINFO_HELP_ASSIGN_BYREF mov rax,rbx add rsp,268 pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret push rbp push r15 push r14 push rdi push rsi push rbx sub rsp,28 mov rbp,[rcx+20] mov [rsp+20],rbp lea rbp,[rbp+290] mov rsi,rdx mov rcx,offset MT_System.Formats.Cbor.CborContentException call CORINFO_HELP_NEWSFAST mov rdi,rax mov ecx,0B31A mov rdx,7FFEDD0D5740 call CORINFO_HELP_STRCNS mov rdx,rax mov rcx,rdi mov r8,rsi call qword ptr [7FFEDD29FE28] mov rcx,rdi call CORINFO_HELP_THROW int 3 ; Total bytes of code 886 ``` #### System.Formats.Cbor.Tests.Perf_CborReader.ReadCoseKey(publicKey: ECDSA_P384) ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsRegressionWindowed: Marked as regression because 703.8057003516642 > 666.1563826071718. IsChangePoint: Marked as a change because one of 11/16/2022 6:51:59 PM, 11/22/2022 2:20:42 AM falls between 11/13/2022 1:28:42 PM and 11/22/2022 2:20:42 AM. IsRegressionStdDev: Marked as regression because -49.8818525570207 (T) = (0 -701.7308170959417) / Math.Sqrt((42.04608864879375 / (29)) + (10.410808190413047 / (24))) is less than -2.007583770314729 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (29) + (24) - 2, .025) and -0.10810696532344868 = (633.2699270517728 - 701.7308170959417) / 633.2699270517728 is less than -0.05. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Compare Jit Disasm ```assembly ; System.Formats.Cbor.Tests.Perf_CborReader.ReadCoseKey(System.Formats.Cbor.Tests.ECDsaCosePublicKey) push rdi push rsi push rbp push rbx sub rsp,0B8 xor eax,eax mov [rsp+28],rax vxorps xmm4,xmm4,xmm4 vmovdqa xmmword ptr [rsp+30],xmm4 vmovdqa xmmword ptr [rsp+40],xmm4 mov rax,0FFFFFFFFFFFFFFA0 M00_L00: vmovdqa xmmword ptr [rsp+rax+0B0],xmm4 vmovdqa xmmword ptr [rsp+rax+0C0],xmm4 vmovdqa xmmword ptr [rsp+rax+0D0],xmm4 add rax,30 jne short M00_L00 mov [rsp+0B0],rax mov rsi,[rdx+10] test rsi,rsi je short M00_L02 mov rdi,rsi mov ebx,[rdi+8] M00_L01: mov rcx,offset MT_System.Formats.Cbor.CborReader call CORINFO_HELP_NEWSFAST mov rsi,rax mov byte ptr [rsi+45],1 mov ecx,3 call qword ptr [7FFEDD2AFB88]; System.Formats.Cbor.CborConformanceModeHelpers.Validate(System.Formats.Cbor.CborConformanceMode) lea rbp,[rsi+48] mov rcx,rbp mov rdx,rdi call CORINFO_HELP_CHECKED_ASSIGN_REF xor ecx,ecx mov [rbp+8],ecx mov [rbp+0C],ebx mov dword ptr [rsi+40],3 mov byte ptr [rsi+46],0 lea rcx,[rsi+5C] mov byte ptr [rcx],1 mov dword ptr [rcx+4],1 lea rcx,[rsp+28] mov rdx,rsi call qword ptr [7FFEDD2AF7E0]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.ReadECParametersAsCosePublicKey(System.Formats.Cbor.CborReader) nop add rsp,0B8 pop rbx pop rbp pop rsi pop rdi ret M00_L02: xor edi,edi xor ebx,ebx jmp short M00_L01 ; Total bytes of code 214 ``` ```assembly ; System.Formats.Cbor.CborConformanceModeHelpers.Validate(System.Formats.Cbor.CborConformanceMode) push rsi sub rsp,20 test ecx,ecx jl short M01_L00 cmp ecx,3 jg short M01_L00 add rsp,20 pop rsi ret M01_L00: mov rcx,offset MT_System.ArgumentOutOfRangeException call CORINFO_HELP_NEWSFAST mov rsi,rax mov ecx,0DFA mov rdx,7FFEDD2D5058 call CORINFO_HELP_STRCNS mov rdx,rax mov rcx,rsi call qword ptr [7FFEDCEC37F8] mov rcx,rsi call CORINFO_HELP_THROW int 3 ; Total bytes of code 79 ``` ```assembly ; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.ReadECParametersAsCosePublicKey(System.Formats.Cbor.CborReader) push rbp push r15 push r14 push rdi push rsi push rbx sub rsp,268 lea rbp,[rsp+290] vxorps xmm4,xmm4,xmm4 vmovdqa xmmword ptr [rbp-260],xmm4 vmovdqa xmmword ptr [rbp-250],xmm4 mov rax,0FFFFFFFFFFFFFDF0 M02_L00: vmovdqa xmmword ptr [rbp+rax-30],xmm4 vmovdqa xmmword ptr [rbp+rax-20],xmm4 vmovdqa xmmword ptr [rbp+rax-10],xmm4 add rax,30 jne short M02_L00 mov [rbp-30],rax mov [rbp-270],rsp mov rbx,rcx mov [rbp-40],rdx xor ecx,ecx mov [rbp-38],rcx mov rcx,[rbp-40] cmp [rcx],ecx call qword ptr [7FFEDD2AF4B0]; System.Formats.Cbor.CborReader.ReadStartMap() mov [rbp-30],rax lea rdx,[rbp-40] mov ecx,1 call qword ptr [7FFEDD2AF8D0]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__ReadCoseKeyLabel|1_4(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) mov rcx,[rbp-40] cmp [rcx],ecx call qword ptr [7FFEDD2AF3D8]; System.Formats.Cbor.CborReader.ReadInt32() mov esi,eax xor r14d,r14d xor r15d,r15d lea rdx,[rbp-40] mov ecx,3 call qword ptr [7FFEDD2AF8B8]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__TryReadCoseKeyLabel|1_3(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) test eax,eax je short M02_L01 mov rcx,[rbp-40] cmp [rcx],ecx call qword ptr [7FFEDD2AF3D8]; System.Formats.Cbor.CborReader.ReadInt32() mov ecx,eax call qword ptr [7FFEDD2AF8A0]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__MapCoseKeyAlgToHashAlgorithmName|1_2(CoseKeyAlgorithm) mov r15,rax mov r14d,1 M02_L01: lea rdx,[rbp-40] mov ecx,4 call qword ptr [7FFEDD2AF8B8]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__TryReadCoseKeyLabel|1_3(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) test eax,eax je short M02_L02 mov rcx,[rbp-40] cmp [rcx],cl xor edx,edx xor r8d,r8d call qword ptr [7FFEDD2AF060] M02_L02: lea rdx,[rbp-40] mov ecx,0FFFFFFFF call qword ptr [7FFEDD2AF8D0]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__ReadCoseKeyLabel|1_4(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) mov rcx,[rbp-40] cmp [rcx],ecx call qword ptr [7FFEDD2AF3D8]; System.Formats.Cbor.CborReader.ReadInt32() mov edi,eax mov ecx,esi mov edx,edi call qword ptr [7FFEDD2AF870]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__IsValidKtyCrvCombination|1_0(CoseKeyType, CoseCrvId) test eax,eax je near ptr M02_L05 lea rcx,[rbp-0A8] mov edx,edi call qword ptr [7FFEDD2AF888]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__MapCoseCrvToECCurve|1_1(CoseCrvId) lea rdx,[rbp-40] mov ecx,0FFFFFFFE call qword ptr [7FFEDD2AF8D0]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__ReadCoseKeyLabel|1_4(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) mov rcx,[rbp-40] cmp [rcx],ecx call qword ptr [7FFEDD2AF570]; System.Formats.Cbor.CborReader.ReadByteString() mov [rbp-0B8],rax lea rdx,[rbp-40] mov ecx,0FFFFFFFD call qword ptr [7FFEDD2AF8D0]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__ReadCoseKeyLabel|1_4(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) mov rcx,[rbp-40] cmp [rcx],ecx call qword ptr [7FFEDD2AF570]; System.Formats.Cbor.CborReader.ReadByteString() mov [rbp-0B0],rax lea rdx,[rbp-40] mov ecx,0FFFFFFFC call qword ptr [7FFEDD2AF8B8]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__TryReadCoseKeyLabel|1_3(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) test eax,eax jne near ptr M02_L04 movzx ecx,byte ptr [rbp-30] mov eax,[rbp-2C] test eax,eax setg al movzx eax,al movzx ecx,cl test ecx,eax jne short M02_L03 mov rcx,[rbp-40] cmp [rcx],ecx call qword ptr [7FFEDD2AF4C8]; System.Formats.Cbor.CborReader.ReadEndMap() lea rdi,[rbp-260] lea rsi,[rbp-0C0] mov ecx,10 rep movsq lea rdi,[rbp-1E0] lea rsi,[rbp-260] mov ecx,10 rep movsq mov [rbp-160],r14b mov [rbp-158],r15 lea rdi,[rbp-150] lea rsi,[rbp-1E0] mov ecx,12 rep movsq jmp near ptr M02_L06 M02_L03: mov rcx,offset MT_System.Formats.Cbor.CborContentException call CORINFO_HELP_NEWSFAST mov rsi,rax mov ecx,0B2BE mov rdx,7FFEDD0E5740 call CORINFO_HELP_STRCNS mov rdx,rax mov rcx,rsi call qword ptr [7FFEDD2AFE10] mov rcx,rsi call CORINFO_HELP_THROW M02_L04: mov rcx,offset MT_System.Formats.Cbor.CborContentException call CORINFO_HELP_NEWSFAST mov rsi,rax mov ecx,0B27E mov rdx,7FFEDD0E5740 call CORINFO_HELP_STRCNS mov rdx,rax mov rcx,rsi call qword ptr [7FFEDD2AFE10] mov rcx,rsi call CORINFO_HELP_THROW M02_L05: mov rcx,offset MT_System.Formats.Cbor.CborContentException call CORINFO_HELP_NEWSFAST mov rsi,rax mov ecx,0B22C mov rdx,7FFEDD0E5740 call CORINFO_HELP_STRCNS mov rdx,rax mov rcx,rsi call qword ptr [7FFEDD2AFE10] mov rcx,rsi call CORINFO_HELP_THROW int 3 M02_L06: mov rdi,rbx lea rsi,[rbp-150] call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF movsq call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF movsq call CORINFO_HELP_ASSIGN_BYREF movsq call CORINFO_HELP_ASSIGN_BYREF mov rax,rbx add rsp,268 pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret push rbp push r15 push r14 push rdi push rsi push rbx sub rsp,28 mov rbp,[rcx+20] mov [rsp+20],rbp lea rbp,[rbp+290] mov rsi,rdx mov rcx,offset MT_System.Formats.Cbor.CborContentException call CORINFO_HELP_NEWSFAST mov rdi,rax mov ecx,0B31A mov rdx,7FFEDD0E5740 call CORINFO_HELP_STRCNS mov rdx,rax mov rcx,rdi mov r8,rsi call qword ptr [7FFEDD2AFE28] mov rcx,rdi call CORINFO_HELP_THROW int 3 ; Total bytes of code 886 ``` #### System.Formats.Cbor.Tests.Perf_CborReader.SkipValue(encoding: (Map, Canonical)) ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsRegressionWindowed: Marked as regression because 806.912203921105 > 777.1592249016956. IsChangePoint: Marked as a change because one of 11/16/2022 6:51:59 PM, 11/22/2022 2:20:42 AM falls between 11/13/2022 1:28:42 PM and 11/22/2022 2:20:42 AM. IsRegressionStdDev: Marked as regression because -38.73496344429879 (T) = (0 -803.9814393529523) / Math.Sqrt((28.270507805059026 / (29)) + (37.62036234317232 / (24))) is less than -2.007583770314729 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (29) + (24) - 2, .025) and -0.08321265790549597 = (742.219391072787 - 803.9814393529523) / 742.219391072787 is less than -0.05. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Compare Jit Disasm ```assembly ; System.Formats.Cbor.Tests.Perf_CborReader.SkipValue(CborEncoding) push r14 push rdi push rsi push rbp push rbx sub rsp,20 mov rsi,rdx mov rdi,[rsi+10] test rdi,rdi je short M00_L01 mov rbx,rdi mov ebp,[rbx+8] M00_L00: mov rcx,offset MT_System.Formats.Cbor.CborReader call CORINFO_HELP_NEWSFAST mov rdi,rax mov esi,[rsi+18] mov byte ptr [rdi+45],1 mov ecx,esi call qword ptr [7FF8BA9E97C8]; System.Formats.Cbor.CborConformanceModeHelpers.Validate(System.Formats.Cbor.CborConformanceMode) lea r14,[rdi+48] mov rcx,r14 mov rdx,rbx call CORINFO_HELP_CHECKED_ASSIGN_REF xor ecx,ecx mov [r14+8],ecx mov [r14+0C],ebp mov [rdi+40],esi mov byte ptr [rdi+46],0 lea rcx,[rdi+5C] mov byte ptr [rcx],1 mov dword ptr [rcx+4],1 mov rcx,rdi xor edx,edx xor r8d,r8d call qword ptr [7FF8BA9E9060]; System.Formats.Cbor.CborReader.SkipToAncestor(Int32, Boolean) nop add rsp,20 pop rbx pop rbp pop rsi pop rdi pop r14 ret M00_L01: xor ebx,ebx xor ebp,ebp jmp short M00_L00 ; Total bytes of code 139 ``` ```assembly ; System.Formats.Cbor.CborConformanceModeHelpers.Validate(System.Formats.Cbor.CborConformanceMode) push rsi sub rsp,20 test ecx,ecx jl short M01_L00 cmp ecx,3 jg short M01_L00 add rsp,20 pop rsi ret M01_L00: mov rcx,offset MT_System.ArgumentOutOfRangeException call CORINFO_HELP_NEWSFAST mov rsi,rax mov ecx,0DFA mov rdx,7FF8BA8A1070 call CORINFO_HELP_STRCNS mov rdx,rax mov rcx,rsi call qword ptr [7FF8BA6037F8] mov rcx,rsi call CORINFO_HELP_THROW int 3 ; Total bytes of code 79 ``` ```assembly ; System.Formats.Cbor.CborReader.SkipToAncestor(Int32, Boolean) push rbp push rsi sub rsp,78 vzeroupper lea rbp,[rsp+80] vxorps xmm4,xmm4,xmm4 vmovdqa xmmword ptr [rbp-30],xmm4 vmovdqa xmmword ptr [rbp-20],xmm4 xor eax,eax mov [rbp-10],rax mov [rbp-60],rsp mov [rbp+10],rcx mov [rbp+18],edx mov rdx,[rcx+8] test rdx,rdx je short M02_L00 mov edx,[rdx+10] jmp short M02_L01 M02_L00: xor edx,edx M02_L01: xor eax,eax vxorps ymm0,ymm0,ymm0 vmovdqu ymmword ptr [rbp-58],ymm0 mov [rbp-38],rax mov eax,[rcx+30] mov r9d,[rcx+38] mov r10d,[rcx+34] lea r11,[rcx+64] movzx esi,byte ptr [r11] mov r11d,[r11+4] vmovupd xmm0,[rcx+70] mov [rbp-58],edx mov [rbp-54],eax mov [rbp-50],r9d mov [rbp-4C],r10d mov [rbp-48],sil mov [rbp-44],r11d vmovupd [rbp-40],xmm0 vmovdqu ymm0,ymmword ptr [rbp-58] vmovdqu ymmword ptr [rbp-30],ymm0 mov rdx,[rbp-38] mov [rbp-10],rdx test r8b,r8b sete dl mov [rcx+45],dl M02_L02: lea rdx,[rbp+18] call qword ptr [7FF8BA9E9078]; System.Formats.Cbor.CborReader.SkipNextNode(Int32 ByRef) cmp dword ptr [rbp+18],0 mov rcx,[rbp+10] jg short M02_L02 mov byte ptr [rcx+45],1 add rsp,78 pop rsi pop rbp ret push rbp push rsi sub rsp,28 vzeroupper mov rbp,[rcx+20] mov [rsp+20],rbp lea rbp,[rbp+80] lea rdx,[rbp-30] mov rcx,[rbp+10] call qword ptr [7FF8BA9E93C0] call CORINFO_HELP_RETHROW int 3 push rbp push rsi sub rsp,28 vzeroupper mov rbp,[rcx+20] mov [rsp+20],rbp lea rbp,[rbp+80] mov rcx,[rbp+10] mov byte ptr [rcx+45],1 add rsp,28 pop rsi pop rbp ret ; Total bytes of code 277 ``` #### System.Formats.Cbor.Tests.Perf_CborReader.SkipValue(encoding: (Text String, Strict)) ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsRegressionWindowed: Marked as regression because 76.08090483370748 > 71.21295554222509. IsChangePoint: Marked as a change because one of 11/16/2022 6:51:59 PM, 11/22/2022 2:20:42 AM falls between 11/13/2022 1:28:42 PM and 11/22/2022 2:20:42 AM. IsRegressionStdDev: Marked as regression because -67.12103752493084 (T) = (0 -75.16506090517119) / Math.Sqrt((0.17579881714876913 / (29)) + (0.15323080500736208 / (24))) is less than -2.007583770314729 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (29) + (24) - 2, .025) and -0.11064847262026335 = (67.6767336904001 - 75.16506090517119) / 67.6767336904001 is less than -0.05. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Compare Jit Disasm ```assembly ; System.Formats.Cbor.Tests.Perf_CborReader.SkipValue(CborEncoding) push r14 push rdi push rsi push rbp push rbx sub rsp,20 mov rsi,rdx mov rdi,[rsi+10] test rdi,rdi je short M00_L01 mov rbx,rdi mov ebp,[rbx+8] M00_L00: mov rcx,offset MT_System.Formats.Cbor.CborReader call CORINFO_HELP_NEWSFAST mov rdi,rax mov esi,[rsi+18] mov byte ptr [rdi+45],1 mov ecx,esi call qword ptr [7FF8BAA197C8]; System.Formats.Cbor.CborConformanceModeHelpers.Validate(System.Formats.Cbor.CborConformanceMode) lea r14,[rdi+48] mov rcx,r14 mov rdx,rbx call CORINFO_HELP_CHECKED_ASSIGN_REF xor ecx,ecx mov [r14+8],ecx mov [r14+0C],ebp mov [rdi+40],esi mov byte ptr [rdi+46],0 lea rcx,[rdi+5C] mov byte ptr [rcx],1 mov dword ptr [rcx+4],1 mov rcx,rdi xor edx,edx xor r8d,r8d call qword ptr [7FF8BAA19060]; System.Formats.Cbor.CborReader.SkipToAncestor(Int32, Boolean) nop add rsp,20 pop rbx pop rbp pop rsi pop rdi pop r14 ret M00_L01: xor ebx,ebx xor ebp,ebp jmp short M00_L00 ; Total bytes of code 139 ``` ```assembly ; System.Formats.Cbor.CborConformanceModeHelpers.Validate(System.Formats.Cbor.CborConformanceMode) push rsi sub rsp,20 test ecx,ecx jl short M01_L00 cmp ecx,3 jg short M01_L00 add rsp,20 pop rsi ret M01_L00: mov rcx,offset MT_System.ArgumentOutOfRangeException call CORINFO_HELP_NEWSFAST mov rsi,rax mov ecx,0DFA mov rdx,7FF8BA8D1070 call CORINFO_HELP_STRCNS mov rdx,rax mov rcx,rsi call qword ptr [7FF8BA6337F8] mov rcx,rsi call CORINFO_HELP_THROW int 3 ; Total bytes of code 79 ``` ```assembly ; System.Formats.Cbor.CborReader.SkipToAncestor(Int32, Boolean) push rbp push rsi sub rsp,78 vzeroupper lea rbp,[rsp+80] vxorps xmm4,xmm4,xmm4 vmovdqa xmmword ptr [rbp-30],xmm4 vmovdqa xmmword ptr [rbp-20],xmm4 xor eax,eax mov [rbp-10],rax mov [rbp-60],rsp mov [rbp+10],rcx mov [rbp+18],edx mov rdx,[rcx+8] test rdx,rdx je short M02_L00 mov edx,[rdx+10] jmp short M02_L01 M02_L00: xor edx,edx M02_L01: xor eax,eax vxorps ymm0,ymm0,ymm0 vmovdqu ymmword ptr [rbp-58],ymm0 mov [rbp-38],rax mov eax,[rcx+30] mov r9d,[rcx+38] mov r10d,[rcx+34] lea r11,[rcx+64] movzx esi,byte ptr [r11] mov r11d,[r11+4] vmovupd xmm0,[rcx+70] mov [rbp-58],edx mov [rbp-54],eax mov [rbp-50],r9d mov [rbp-4C],r10d mov [rbp-48],sil mov [rbp-44],r11d vmovupd [rbp-40],xmm0 vmovdqu ymm0,ymmword ptr [rbp-58] vmovdqu ymmword ptr [rbp-30],ymm0 mov rdx,[rbp-38] mov [rbp-10],rdx test r8b,r8b sete dl mov [rcx+45],dl M02_L02: lea rdx,[rbp+18] call qword ptr [7FF8BAA19078]; System.Formats.Cbor.CborReader.SkipNextNode(Int32 ByRef) cmp dword ptr [rbp+18],0 mov rcx,[rbp+10] jg short M02_L02 mov byte ptr [rcx+45],1 add rsp,78 pop rsi pop rbp ret push rbp push rsi sub rsp,28 vzeroupper mov rbp,[rcx+20] mov [rsp+20],rbp lea rbp,[rbp+80] lea rdx,[rbp-30] mov rcx,[rbp+10] call qword ptr [7FF8BAA193C0] call CORINFO_HELP_RETHROW int 3 push rbp push rsi sub rsp,28 vzeroupper mov rbp,[rcx+20] mov [rsp+20],rbp lea rbp,[rbp+80] mov rcx,[rbp+10] mov byte ptr [rcx+45],1 add rsp,28 pop rsi pop rbp ret ; Total bytes of code 277 ``` ### 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)