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/x86: 11 Regressions on 11/16/2022 11:33:39 PM #9937

Open performanceautofiler[bot] opened 1 year ago

performanceautofiler[bot] commented 1 year ago

Run Information

Architecture x86
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
[ReadCoseKey - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Formats.Cbor.Tests.Perf_CborReader.ReadCoseKey(publicKey%3a%20ECDSA_P256).html>) 627.52 ns 689.35 ns 1.10 0.01 False
[SkipValue - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Formats.Cbor.Tests.Perf_CborReader.SkipValue(encoding%3a%20(Byte%20String%2c%20Strict)).html>) 58.55 ns 65.10 ns 1.11 0.02 False
[SkipValue - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Formats.Cbor.Tests.Perf_CborReader.SkipValue(encoding%3a%20(Integer%2c%20Strict)).html>) 56.38 ns 60.37 ns 1.07 0.01 False
[SkipValue - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Formats.Cbor.Tests.Perf_CborReader.SkipValue(encoding%3a%20(Text%20String%2c%20Strict)).html>) 73.69 ns 82.50 ns 1.12 0.03 False
[SkipValue - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Formats.Cbor.Tests.Perf_CborReader.SkipValue(encoding%3a%20(Array%2c%20Strict)).html>) 272.41 ns 299.76 ns 1.10 0.03 False
[ReadCoseKey - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Formats.Cbor.Tests.Perf_CborReader.ReadCoseKey(publicKey%3a%20ECDSA_P384).html>) 646.18 ns 692.24 ns 1.07 0.01 False
[ReadCoseKey - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Formats.Cbor.Tests.Perf_CborReader.ReadCoseKey(publicKey%3a%20ECDSA_P521).html>) 641.85 ns 694.55 ns 1.08 0.01 False

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.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 689.3469879429172 > 659.315898414378. 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 -74.54451817474154 (T) = (0 -690.360533976867) / Math.Sqrt((5.999404440936287 / (28)) + (11.638682787261933 / (24))) is less than -2.0085591120996775 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (28) + (24) - 2, .025) and -0.09925235987662365 = (628.0273385579547 - 690.360533976867) / 628.0273385579547 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 ebp mov ebp,esp push edi push esi push ebx sub esp,48 vxorps xmm4,xmm4,xmm4 vmovdqu xmmword ptr [ebp-54],xmm4 vmovdqu xmmword ptr [ebp-44],xmm4 vmovdqu xmmword ptr [ebp-34],xmm4 vmovdqu xmmword ptr [ebp-24],xmm4 xor eax,eax mov [ebp-14],eax mov [ebp-10],eax mov esi,[edx+8] test esi,esi je short M00_L01 mov edi,esi mov ebx,[edi+4] M00_L00: mov ecx,offset MT_System.Formats.Cbor.CborReader call CORINFO_HELP_NEWSFAST mov esi,eax mov byte ptr [esi+2D],1 mov ecx,3 call dword ptr ds:[0AD8BB88]; System.Formats.Cbor.CborConformanceModeHelpers.Validate(System.Formats.Cbor.CborConformanceMode) lea ecx,[esi+30] mov edx,ecx call CORINFO_HELP_CHECKED_ASSIGN_REF_EDI xor edx,edx mov [ecx+4],edx mov [ecx+8],ebx mov dword ptr [esi+28],3 mov byte ptr [esi+2E],0 lea ecx,[esi+40] mov byte ptr [ecx],1 mov dword ptr [ecx+4],1 lea ecx,[ebp-54] mov edx,esi call dword ptr ds:[0AD8B7E0]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.ReadECParametersAsCosePublicKey(System.Formats.Cbor.CborReader) lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret M00_L01: xor edi,edi xor ebx,ebx jmp short M00_L00 ; Total bytes of code 147 ``` ```assembly ; System.Formats.Cbor.CborConformanceModeHelpers.Validate(System.Formats.Cbor.CborConformanceMode) push ebp mov ebp,esp push esi test ecx,ecx jl short M01_L00 cmp ecx,3 jg short M01_L00 pop esi pop ebp ret M01_L00: mov ecx,offset MT_System.ArgumentOutOfRangeException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,0DFA mov edx,0AD690C4 call CORINFO_HELP_STRCNS mov edx,eax mov ecx,esi call dword ptr ds:[8243540] mov ecx,esi call CORINFO_HELP_THROW int 3 ; Total bytes of code 61 ``` ```assembly ; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.ReadECParametersAsCosePublicKey(System.Formats.Cbor.CborReader) push ebp mov ebp,esp push edi push esi push ebx sub esp,144 vxorps xmm4,xmm4,xmm4 vmovdqu xmmword ptr [ebp-148],xmm4 mov eax,0FFFFFEE0 M02_L00: vmovdqu xmmword ptr [ebp+eax-18],xmm4 vmovdqu xmmword ptr [ebp+eax-8],xmm4 vmovdqu xmmword ptr [ebp+eax+8],xmm4 add eax,30 jne short M02_L00 mov [ebp-18],eax mov [ebp-14],eax mov ebx,ecx mov [ebp-34],edx xor edx,edx mov [ebp-30],edx mov [ebp-2C],edx lea edx,[ebp-28] mov ecx,[ebp-34] cmp [ecx],ecx call dword ptr ds:[0AD8B4B0]; System.Formats.Cbor.CborReader.ReadStartMap() lea edx,[ebp-34] mov ecx,1 call dword ptr ds:[0AD8B8D0]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__ReadCoseKeyLabel|1_4(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) mov ecx,[ebp-34] cmp [ecx],ecx call dword ptr ds:[0AD8B3D8]; System.Formats.Cbor.CborReader.ReadInt32() mov esi,eax mov byte ptr [ebp-14C],0 xor ecx,ecx xor edi,edi lea edx,[ebp-34] mov ecx,3 call dword ptr ds:[0AD8B8B8]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__TryReadCoseKeyLabel|1_3(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) test eax,eax je short M02_L01 mov ecx,[ebp-34] cmp [ecx],ecx call dword ptr ds:[0AD8B3D8]; System.Formats.Cbor.CborReader.ReadInt32() mov ecx,eax call dword ptr ds:[0AD8B8A0]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__MapCoseKeyAlgToHashAlgorithmName|1_2(CoseKeyAlgorithm) mov edi,eax mov [ebp-150],edi mov byte ptr [ebp-14C],1 mov edi,[ebp-150] M02_L01: lea edx,[ebp-34] mov ecx,4 call dword ptr ds:[0AD8B8B8]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__TryReadCoseKeyLabel|1_3(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) test eax,eax je short M02_L02 mov ecx,[ebp-34] cmp [ecx],cl push 0 xor edx,edx call dword ptr ds:[0AD8B060] M02_L02: lea edx,[ebp-34] mov ecx,0FFFFFFFF call dword ptr ds:[0AD8B8D0]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__ReadCoseKeyLabel|1_4(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) mov ecx,[ebp-34] cmp [ecx],ecx call dword ptr ds:[0AD8B3D8]; System.Formats.Cbor.CborReader.ReadInt32() mov [ebp-78],eax mov ecx,esi mov edx,eax call dword ptr ds:[0AD8B870]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__IsValidKtyCrvCombination|1_0(CoseKeyType, CoseCrvId) test eax,eax je near ptr M02_L05 lea ecx,[ebp-68] mov edx,[ebp-78] call dword ptr ds:[0AD8B888]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__MapCoseCrvToECCurve|1_1(CoseCrvId) lea edx,[ebp-34] mov ecx,0FFFFFFFE call dword ptr ds:[0AD8B8D0]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__ReadCoseKeyLabel|1_4(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) mov ecx,[ebp-34] cmp [ecx],ecx call dword ptr ds:[0AD8B570]; System.Formats.Cbor.CborReader.ReadByteString() mov [ebp-70],eax lea edx,[ebp-34] mov ecx,0FFFFFFFD call dword ptr ds:[0AD8B8D0]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__ReadCoseKeyLabel|1_4(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) mov ecx,[ebp-34] cmp [ecx],ecx call dword ptr ds:[0AD8B570]; System.Formats.Cbor.CborReader.ReadByteString() mov [ebp-6C],eax lea edx,[ebp-34] mov ecx,0FFFFFFFC call dword ptr ds:[0AD8B8B8]; 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 [ebp-28] mov eax,[ebp-24] test eax,eax setg al movzx eax,al movzx ecx,cl test ecx,eax jne short M02_L03 mov [ebp-150],edi mov ecx,[ebp-34] cmp [ecx],ecx call dword ptr ds:[0AD8B4C8]; System.Formats.Cbor.CborReader.ReadEndMap() lea edi,[ebp-148] lea esi,[ebp-74] mov ecx,10 rep movsd lea edi,[ebp-108] lea esi,[ebp-148] mov ecx,10 rep movsd movzx ecx,byte ptr [ebp-14C] mov [ebp-0C8],cl mov edi,[ebp-150] mov [ebp-0C4],edi lea edi,[ebp-0C0] lea esi,[ebp-108] mov ecx,12 rep movsd jmp near ptr M02_L06 M02_L03: mov ecx,offset MT_System.Formats.Cbor.CborContentException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,0B2BE mov edx,0A20ABE4 call CORINFO_HELP_STRCNS mov edx,eax mov ecx,esi call dword ptr ds:[0AD8BE10] mov ecx,esi call CORINFO_HELP_THROW M02_L04: mov ecx,offset MT_System.Formats.Cbor.CborContentException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,0B27E mov edx,0A20ABE4 call CORINFO_HELP_STRCNS mov edx,eax mov ecx,esi call dword ptr ds:[0AD8BE10] mov ecx,esi call CORINFO_HELP_THROW M02_L05: mov ecx,offset MT_System.Formats.Cbor.CborContentException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,0B22C mov edx,0A20ABE4 call CORINFO_HELP_STRCNS mov edx,eax mov ecx,esi call dword ptr ds:[0AD8BE10] mov ecx,esi call CORINFO_HELP_THROW int 3 mov esi,eax mov ecx,offset MT_System.Formats.Cbor.CborContentException call CORINFO_HELP_NEWSFAST mov edi,eax mov ecx,0B31A mov edx,0A20ABE4 call CORINFO_HELP_STRCNS mov edx,eax push esi mov ecx,edi call dword ptr ds:[0AD8BE28] mov ecx,edi call CORINFO_HELP_THROW int 3 M02_L06: mov edi,ebx lea esi,[ebp-0C0] 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 movsd call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF movsd call CORINFO_HELP_ASSIGN_BYREF movsd call CORINFO_HELP_ASSIGN_BYREF lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret ; Total bytes of code 748 ``` #### 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 65.10497895820333 > 60.96229341466002. 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 -31.097308881259995 (T) = (0 -64.91616664228381) / Math.Sqrt((0.5145324192308375 / (28)) + (0.8767613174965164 / (24))) is less than -2.0085591120996775 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (28) + (24) - 2, .025) and -0.12644355938170573 = (57.629311385930144 - 64.91616664228381) / 57.629311385930144 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 ebp mov ebp,esp push edi push esi push ebx push eax mov esi,edx mov edi,[esi+8] test edi,edi je short M00_L01 mov ebx,edi mov edi,[ebx+4] M00_L00: mov ecx,offset MT_System.Formats.Cbor.CborReader call CORINFO_HELP_NEWSFAST mov [ebp-10],eax mov esi,[esi+0C] mov byte ptr [eax+2D],1 mov ecx,esi call dword ptr ds:[0B4157C8]; System.Formats.Cbor.CborConformanceModeHelpers.Validate(System.Formats.Cbor.CborConformanceMode) mov eax,[ebp-10] lea ecx,[eax+30] mov edx,ecx call CORINFO_HELP_CHECKED_ASSIGN_REF_EBX xor edx,edx mov [ecx+4],edx mov [ecx+8],edi mov [eax+28],esi mov byte ptr [eax+2E],0 lea ecx,[eax+40] mov byte ptr [ecx],1 mov dword ptr [ecx+4],1 push 0 mov ecx,eax call dword ptr ds:[0B415060]; System.Formats.Cbor.CborReader.SkipToAncestor(Int32, Boolean) pop ecx pop ebx pop esi pop edi pop ebp ret M00_L01: xor ebx,ebx xor edi,edi jmp short M00_L00 ; Total bytes of code 112 ``` ```assembly ; System.Formats.Cbor.CborConformanceModeHelpers.Validate(System.Formats.Cbor.CborConformanceMode) push ebp mov ebp,esp push esi test ecx,ecx jl short M01_L00 cmp ecx,3 jg short M01_L00 pop esi pop ebp ret M01_L00: mov ecx,offset MT_System.ArgumentOutOfRangeException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,0DFA mov edx,0AE662D8 call CORINFO_HELP_STRCNS mov edx,eax mov ecx,esi call dword ptr ds:[8943540] mov ecx,esi call CORINFO_HELP_THROW int 3 ; Total bytes of code 61 ``` ```assembly ; System.Formats.Cbor.CborReader.SkipToAncestor(Int32, Boolean) push ebp mov ebp,esp push edi push esi push ebx sub esp,78 vzeroupper vxorps xmm4,xmm4,xmm4 vmovdqu xmmword ptr [ebp-48],xmm4 vmovdqu xmmword ptr [ebp-38],xmm4 vmovdqu xmmword ptr [ebp-28],xmm4 xor eax,eax mov [ebp-18],eax mov [ebp-14],eax mov [ebp-84],ecx mov [ebp-24],edx cmp dword ptr [ecx+4],0 je short M02_L00 mov edx,[ecx+4] mov edx,[edx+8] mov [ebp-70],edx jmp short M02_L01 M02_L00: xor edx,edx mov [ebp-70],edx M02_L01: xor eax,eax vxorps ymm0,ymm0,ymm0 vmovdqu ymmword ptr [ebp-6C],ymm0 mov [ebp-4C],eax mov eax,[ecx+18] mov esi,[ecx+20] mov edi,[ecx+1C] lea ebx,[ecx+48] movzx edx,byte ptr [ebx] mov ebx,[ebx+4] mov [ebp-80],ebx mov ebx,[ecx+50] mov [ebp-7C],ebx mov ebx,[ecx+54] mov [ebp-78],ebx mov ebx,[ecx+58] mov [ebp-74],ebx mov ebx,[ebp-70] mov [ebp-6C],ebx mov [ebp-68],eax mov [ebp-64],esi mov [ebp-60],edi mov [ebp-5C],dl mov ebx,[ebp-80] mov [ebp-58],ebx mov edx,[ebp-7C] mov [ebp-54],edx mov edx,[ebp-78] mov [ebp-50],edx mov edx,[ebp-74] mov [ebp-4C],edx vmovdqu ymm0,ymmword ptr [ebp-6C] vmovdqu ymmword ptr [ebp-48],ymm0 mov edx,[ebp-4C] mov [ebp-28],edx cmp byte ptr [ebp+8],0 sete dl mov [ecx+2D],dl M02_L02: lea edx,[ebp-24] call dword ptr ds:[0B415078]; System.Formats.Cbor.CborReader.SkipNextNode(Int32 ByRef) cmp dword ptr [ebp-24],0 mov ecx,[ebp-84] jg short M02_L02 jmp short M02_L03 lea edx,[ebp-48] mov ecx,[ebp-84] call dword ptr ds:[0B4153C0] call CORINFO_HELP_RETHROW int 3 M02_L03: mov byte ptr [ecx+2D],1 jmp short M02_L04 mov ecx,[ebp-84] mov byte ptr [ecx+2D],1 pop eax jmp eax M02_L04: lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret 4 ; Total bytes of code 264 ``` #### 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 60.36761120503008 > 58.948191250349616. 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 -32.90105027291419 (T) = (0 -60.799051069521376) / Math.Sqrt((0.1502540560680308 / (28)) + (0.3931772659795279 / (24))) is less than -2.0085591120996775 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (28) + (24) - 2, .025) and -0.08672586520576339 = (55.94699916156825 - 60.799051069521376) / 55.94699916156825 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 ebp mov ebp,esp push edi push esi push ebx push eax mov esi,edx mov edi,[esi+8] test edi,edi je short M00_L01 mov ebx,edi mov edi,[ebx+4] M00_L00: mov ecx,offset MT_System.Formats.Cbor.CborReader call CORINFO_HELP_NEWSFAST mov [ebp-10],eax mov esi,[esi+0C] mov byte ptr [eax+2D],1 mov ecx,esi call dword ptr ds:[0B5057C8]; System.Formats.Cbor.CborConformanceModeHelpers.Validate(System.Formats.Cbor.CborConformanceMode) mov eax,[ebp-10] lea ecx,[eax+30] mov edx,ecx call CORINFO_HELP_CHECKED_ASSIGN_REF_EBX xor edx,edx mov [ecx+4],edx mov [ecx+8],edi mov [eax+28],esi mov byte ptr [eax+2E],0 lea ecx,[eax+40] mov byte ptr [ecx],1 mov dword ptr [ecx+4],1 push 0 mov ecx,eax call dword ptr ds:[0B505060]; System.Formats.Cbor.CborReader.SkipToAncestor(Int32, Boolean) pop ecx pop ebx pop esi pop edi pop ebp ret M00_L01: xor ebx,ebx xor edi,edi jmp short M00_L00 ; Total bytes of code 112 ``` ```assembly ; System.Formats.Cbor.CborConformanceModeHelpers.Validate(System.Formats.Cbor.CborConformanceMode) push ebp mov ebp,esp push esi test ecx,ecx jl short M01_L00 cmp ecx,3 jg short M01_L00 pop esi pop ebp ret M01_L00: mov ecx,offset MT_System.ArgumentOutOfRangeException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,0DFA mov edx,0AF562D8 call CORINFO_HELP_STRCNS mov edx,eax mov ecx,esi call dword ptr ds:[8A33540] mov ecx,esi call CORINFO_HELP_THROW int 3 ; Total bytes of code 61 ``` ```assembly ; System.Formats.Cbor.CborReader.SkipToAncestor(Int32, Boolean) push ebp mov ebp,esp push edi push esi push ebx sub esp,78 vzeroupper vxorps xmm4,xmm4,xmm4 vmovdqu xmmword ptr [ebp-48],xmm4 vmovdqu xmmword ptr [ebp-38],xmm4 vmovdqu xmmword ptr [ebp-28],xmm4 xor eax,eax mov [ebp-18],eax mov [ebp-14],eax mov [ebp-84],ecx mov [ebp-24],edx cmp dword ptr [ecx+4],0 je short M02_L00 mov edx,[ecx+4] mov edx,[edx+8] mov [ebp-70],edx jmp short M02_L01 M02_L00: xor edx,edx mov [ebp-70],edx M02_L01: xor eax,eax vxorps ymm0,ymm0,ymm0 vmovdqu ymmword ptr [ebp-6C],ymm0 mov [ebp-4C],eax mov eax,[ecx+18] mov esi,[ecx+20] mov edi,[ecx+1C] lea ebx,[ecx+48] movzx edx,byte ptr [ebx] mov ebx,[ebx+4] mov [ebp-80],ebx mov ebx,[ecx+50] mov [ebp-7C],ebx mov ebx,[ecx+54] mov [ebp-78],ebx mov ebx,[ecx+58] mov [ebp-74],ebx mov ebx,[ebp-70] mov [ebp-6C],ebx mov [ebp-68],eax mov [ebp-64],esi mov [ebp-60],edi mov [ebp-5C],dl mov ebx,[ebp-80] mov [ebp-58],ebx mov edx,[ebp-7C] mov [ebp-54],edx mov edx,[ebp-78] mov [ebp-50],edx mov edx,[ebp-74] mov [ebp-4C],edx vmovdqu ymm0,ymmword ptr [ebp-6C] vmovdqu ymmword ptr [ebp-48],ymm0 mov edx,[ebp-4C] mov [ebp-28],edx cmp byte ptr [ebp+8],0 sete dl mov [ecx+2D],dl M02_L02: lea edx,[ebp-24] call dword ptr ds:[0B505078]; System.Formats.Cbor.CborReader.SkipNextNode(Int32 ByRef) cmp dword ptr [ebp-24],0 mov ecx,[ebp-84] jg short M02_L02 jmp short M02_L03 lea edx,[ebp-48] mov ecx,[ebp-84] call dword ptr ds:[0B5053C0] call CORINFO_HELP_RETHROW int 3 M02_L03: mov byte ptr [ecx+2D],1 jmp short M02_L04 mov ecx,[ebp-84] mov byte ptr [ecx+2D],1 pop eax jmp eax M02_L04: lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret 4 ; Total bytes of code 264 ``` #### 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 82.4951410062708 > 79.78248531113341. IsChangePoint: Marked as a change because one of 10/25/2022 12:27:43 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 -17.18714551198605 (T) = (0 -81.34413522441132) / Math.Sqrt((2.370738742289908 / (28)) + (1.396627932883913 / (24))) is less than -2.0085591120996775 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (28) + (24) - 2, .025) and -0.0867925897493378 = (74.847892773333 - 81.34413522441132) / 74.847892773333 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 ebp mov ebp,esp push edi push esi push ebx push eax mov esi,edx mov edi,[esi+8] test edi,edi je short M00_L01 mov ebx,edi mov edi,[ebx+4] M00_L00: mov ecx,offset MT_System.Formats.Cbor.CborReader call CORINFO_HELP_NEWSFAST mov [ebp-10],eax mov esi,[esi+0C] mov byte ptr [eax+2D],1 mov ecx,esi call dword ptr ds:[0B7757C8]; System.Formats.Cbor.CborConformanceModeHelpers.Validate(System.Formats.Cbor.CborConformanceMode) mov eax,[ebp-10] lea ecx,[eax+30] mov edx,ecx call CORINFO_HELP_CHECKED_ASSIGN_REF_EBX xor edx,edx mov [ecx+4],edx mov [ecx+8],edi mov [eax+28],esi mov byte ptr [eax+2E],0 lea ecx,[eax+40] mov byte ptr [ecx],1 mov dword ptr [ecx+4],1 push 0 mov ecx,eax call dword ptr ds:[0B775060]; System.Formats.Cbor.CborReader.SkipToAncestor(Int32, Boolean) pop ecx pop ebx pop esi pop edi pop ebp ret M00_L01: xor ebx,ebx xor edi,edi jmp short M00_L00 ; Total bytes of code 112 ``` ```assembly ; System.Formats.Cbor.CborConformanceModeHelpers.Validate(System.Formats.Cbor.CborConformanceMode) push ebp mov ebp,esp push esi test ecx,ecx jl short M01_L00 cmp ecx,3 jg short M01_L00 pop esi pop ebp ret M01_L00: mov ecx,offset MT_System.ArgumentOutOfRangeException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,0DFA mov edx,0B1C62D8 call CORINFO_HELP_STRCNS mov edx,eax mov ecx,esi call dword ptr ds:[8CA3540] mov ecx,esi call CORINFO_HELP_THROW int 3 ; Total bytes of code 61 ``` ```assembly ; System.Formats.Cbor.CborReader.SkipToAncestor(Int32, Boolean) push ebp mov ebp,esp push edi push esi push ebx sub esp,78 vzeroupper vxorps xmm4,xmm4,xmm4 vmovdqu xmmword ptr [ebp-48],xmm4 vmovdqu xmmword ptr [ebp-38],xmm4 vmovdqu xmmword ptr [ebp-28],xmm4 xor eax,eax mov [ebp-18],eax mov [ebp-14],eax mov [ebp-84],ecx mov [ebp-24],edx cmp dword ptr [ecx+4],0 je short M02_L00 mov edx,[ecx+4] mov edx,[edx+8] mov [ebp-70],edx jmp short M02_L01 M02_L00: xor edx,edx mov [ebp-70],edx M02_L01: xor eax,eax vxorps ymm0,ymm0,ymm0 vmovdqu ymmword ptr [ebp-6C],ymm0 mov [ebp-4C],eax mov eax,[ecx+18] mov esi,[ecx+20] mov edi,[ecx+1C] lea ebx,[ecx+48] movzx edx,byte ptr [ebx] mov ebx,[ebx+4] mov [ebp-80],ebx mov ebx,[ecx+50] mov [ebp-7C],ebx mov ebx,[ecx+54] mov [ebp-78],ebx mov ebx,[ecx+58] mov [ebp-74],ebx mov ebx,[ebp-70] mov [ebp-6C],ebx mov [ebp-68],eax mov [ebp-64],esi mov [ebp-60],edi mov [ebp-5C],dl mov ebx,[ebp-80] mov [ebp-58],ebx mov edx,[ebp-7C] mov [ebp-54],edx mov edx,[ebp-78] mov [ebp-50],edx mov edx,[ebp-74] mov [ebp-4C],edx vmovdqu ymm0,ymmword ptr [ebp-6C] vmovdqu ymmword ptr [ebp-48],ymm0 mov edx,[ebp-4C] mov [ebp-28],edx cmp byte ptr [ebp+8],0 sete dl mov [ecx+2D],dl M02_L02: lea edx,[ebp-24] call dword ptr ds:[0B775078]; System.Formats.Cbor.CborReader.SkipNextNode(Int32 ByRef) cmp dword ptr [ebp-24],0 mov ecx,[ebp-84] jg short M02_L02 jmp short M02_L03 lea edx,[ebp-48] mov ecx,[ebp-84] call dword ptr ds:[0B7753C0] call CORINFO_HELP_RETHROW int 3 M02_L03: mov byte ptr [ecx+2D],1 jmp short M02_L04 mov ecx,[ebp-84] mov byte ptr [ecx+2D],1 pop eax jmp eax M02_L04: lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret 4 ; Total bytes of code 264 ``` #### 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 299.75701830722625 > 285.98217849911276. 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 -35.63190582237734 (T) = (0 -302.6232934025) / Math.Sqrt((4.175647423366228 / (28)) + (15.125230183887577 / (24))) is less than -2.0085591120996775 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (28) + (24) - 2, .025) and -0.11600258420044729 = (271.1671977169412 - 302.6232934025) / 271.1671977169412 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 ebp mov ebp,esp push edi push esi push ebx push eax mov esi,edx mov edi,[esi+8] test edi,edi je short M00_L01 mov ebx,edi mov edi,[ebx+4] M00_L00: mov ecx,offset MT_System.Formats.Cbor.CborReader call CORINFO_HELP_NEWSFAST mov [ebp-10],eax mov esi,[esi+0C] mov byte ptr [eax+2D],1 mov ecx,esi call dword ptr ds:[0B4C57C8]; System.Formats.Cbor.CborConformanceModeHelpers.Validate(System.Formats.Cbor.CborConformanceMode) mov eax,[ebp-10] lea ecx,[eax+30] mov edx,ecx call CORINFO_HELP_CHECKED_ASSIGN_REF_EBX xor edx,edx mov [ecx+4],edx mov [ecx+8],edi mov [eax+28],esi mov byte ptr [eax+2E],0 lea ecx,[eax+40] mov byte ptr [ecx],1 mov dword ptr [ecx+4],1 push 0 mov ecx,eax call dword ptr ds:[0B4C5060]; System.Formats.Cbor.CborReader.SkipToAncestor(Int32, Boolean) pop ecx pop ebx pop esi pop edi pop ebp ret M00_L01: xor ebx,ebx xor edi,edi jmp short M00_L00 ; Total bytes of code 112 ``` ```assembly ; System.Formats.Cbor.CborConformanceModeHelpers.Validate(System.Formats.Cbor.CborConformanceMode) push ebp mov ebp,esp push esi test ecx,ecx jl short M01_L00 cmp ecx,3 jg short M01_L00 pop esi pop ebp ret M01_L00: mov ecx,offset MT_System.ArgumentOutOfRangeException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,0DFA mov edx,0AF162D8 call CORINFO_HELP_STRCNS mov edx,eax mov ecx,esi call dword ptr ds:[89F3540] mov ecx,esi call CORINFO_HELP_THROW int 3 ; Total bytes of code 61 ``` ```assembly ; System.Formats.Cbor.CborReader.SkipToAncestor(Int32, Boolean) push ebp mov ebp,esp push edi push esi push ebx sub esp,78 vzeroupper vxorps xmm4,xmm4,xmm4 vmovdqu xmmword ptr [ebp-48],xmm4 vmovdqu xmmword ptr [ebp-38],xmm4 vmovdqu xmmword ptr [ebp-28],xmm4 xor eax,eax mov [ebp-18],eax mov [ebp-14],eax mov [ebp-84],ecx mov [ebp-24],edx cmp dword ptr [ecx+4],0 je short M02_L00 mov edx,[ecx+4] mov edx,[edx+8] mov [ebp-70],edx jmp short M02_L01 M02_L00: xor edx,edx mov [ebp-70],edx M02_L01: xor eax,eax vxorps ymm0,ymm0,ymm0 vmovdqu ymmword ptr [ebp-6C],ymm0 mov [ebp-4C],eax mov eax,[ecx+18] mov esi,[ecx+20] mov edi,[ecx+1C] lea ebx,[ecx+48] movzx edx,byte ptr [ebx] mov ebx,[ebx+4] mov [ebp-80],ebx mov ebx,[ecx+50] mov [ebp-7C],ebx mov ebx,[ecx+54] mov [ebp-78],ebx mov ebx,[ecx+58] mov [ebp-74],ebx mov ebx,[ebp-70] mov [ebp-6C],ebx mov [ebp-68],eax mov [ebp-64],esi mov [ebp-60],edi mov [ebp-5C],dl mov ebx,[ebp-80] mov [ebp-58],ebx mov edx,[ebp-7C] mov [ebp-54],edx mov edx,[ebp-78] mov [ebp-50],edx mov edx,[ebp-74] mov [ebp-4C],edx vmovdqu ymm0,ymmword ptr [ebp-6C] vmovdqu ymmword ptr [ebp-48],ymm0 mov edx,[ebp-4C] mov [ebp-28],edx cmp byte ptr [ebp+8],0 sete dl mov [ecx+2D],dl M02_L02: lea edx,[ebp-24] call dword ptr ds:[0B4C5078]; System.Formats.Cbor.CborReader.SkipNextNode(Int32 ByRef) cmp dword ptr [ebp-24],0 mov ecx,[ebp-84] jg short M02_L02 jmp short M02_L03 lea edx,[ebp-48] mov ecx,[ebp-84] call dword ptr ds:[0B4C53C0] call CORINFO_HELP_RETHROW int 3 M02_L03: mov byte ptr [ecx+2D],1 jmp short M02_L04 mov ecx,[ebp-84] mov byte ptr [ecx+2D],1 pop eax jmp eax M02_L04: lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret 4 ; Total bytes of code 264 ``` #### 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 692.2417603861348 > 672.5415963032748. 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 -42.48602712719966 (T) = (0 -695.2462313044622) / Math.Sqrt((41.27763108058005 / (28)) + (6.835111139458317 / (24))) is less than -2.0085591120996775 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (28) + (24) - 2, .025) and -0.08819562758329567 = (638.8982033023697 - 695.2462313044622) / 638.8982033023697 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 ebp mov ebp,esp push edi push esi push ebx sub esp,48 vxorps xmm4,xmm4,xmm4 vmovdqu xmmword ptr [ebp-54],xmm4 vmovdqu xmmword ptr [ebp-44],xmm4 vmovdqu xmmword ptr [ebp-34],xmm4 vmovdqu xmmword ptr [ebp-24],xmm4 xor eax,eax mov [ebp-14],eax mov [ebp-10],eax mov esi,[edx+8] test esi,esi je short M00_L01 mov edi,esi mov ebx,[edi+4] M00_L00: mov ecx,offset MT_System.Formats.Cbor.CborReader call CORINFO_HELP_NEWSFAST mov esi,eax mov byte ptr [esi+2D],1 mov ecx,3 call dword ptr ds:[0BB5BB88]; System.Formats.Cbor.CborConformanceModeHelpers.Validate(System.Formats.Cbor.CborConformanceMode) lea ecx,[esi+30] mov edx,ecx call CORINFO_HELP_CHECKED_ASSIGN_REF_EDI xor edx,edx mov [ecx+4],edx mov [ecx+8],ebx mov dword ptr [esi+28],3 mov byte ptr [esi+2E],0 lea ecx,[esi+40] mov byte ptr [ecx],1 mov dword ptr [ecx+4],1 lea ecx,[ebp-54] mov edx,esi call dword ptr ds:[0BB5B7E0]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.ReadECParametersAsCosePublicKey(System.Formats.Cbor.CborReader) lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret M00_L01: xor edi,edi xor ebx,ebx jmp short M00_L00 ; Total bytes of code 147 ``` ```assembly ; System.Formats.Cbor.CborConformanceModeHelpers.Validate(System.Formats.Cbor.CborConformanceMode) push ebp mov ebp,esp push esi test ecx,ecx jl short M01_L00 cmp ecx,3 jg short M01_L00 pop esi pop ebp ret M01_L00: mov ecx,offset MT_System.ArgumentOutOfRangeException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,0DFA mov edx,0BB390C4 call CORINFO_HELP_STRCNS mov edx,eax mov ecx,esi call dword ptr ds:[9013540] mov ecx,esi call CORINFO_HELP_THROW int 3 ; Total bytes of code 61 ``` ```assembly ; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.ReadECParametersAsCosePublicKey(System.Formats.Cbor.CborReader) push ebp mov ebp,esp push edi push esi push ebx sub esp,144 vxorps xmm4,xmm4,xmm4 vmovdqu xmmword ptr [ebp-148],xmm4 mov eax,0FFFFFEE0 M02_L00: vmovdqu xmmword ptr [ebp+eax-18],xmm4 vmovdqu xmmword ptr [ebp+eax-8],xmm4 vmovdqu xmmword ptr [ebp+eax+8],xmm4 add eax,30 jne short M02_L00 mov [ebp-18],eax mov [ebp-14],eax mov ebx,ecx mov [ebp-34],edx xor edx,edx mov [ebp-30],edx mov [ebp-2C],edx lea edx,[ebp-28] mov ecx,[ebp-34] cmp [ecx],ecx call dword ptr ds:[0BB5B4B0]; System.Formats.Cbor.CborReader.ReadStartMap() lea edx,[ebp-34] mov ecx,1 call dword ptr ds:[0BB5B8D0]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__ReadCoseKeyLabel|1_4(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) mov ecx,[ebp-34] cmp [ecx],ecx call dword ptr ds:[0BB5B3D8]; System.Formats.Cbor.CborReader.ReadInt32() mov esi,eax mov byte ptr [ebp-14C],0 xor ecx,ecx xor edi,edi lea edx,[ebp-34] mov ecx,3 call dword ptr ds:[0BB5B8B8]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__TryReadCoseKeyLabel|1_3(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) test eax,eax je short M02_L01 mov ecx,[ebp-34] cmp [ecx],ecx call dword ptr ds:[0BB5B3D8]; System.Formats.Cbor.CborReader.ReadInt32() mov ecx,eax call dword ptr ds:[0BB5B8A0]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__MapCoseKeyAlgToHashAlgorithmName|1_2(CoseKeyAlgorithm) mov edi,eax mov [ebp-150],edi mov byte ptr [ebp-14C],1 mov edi,[ebp-150] M02_L01: lea edx,[ebp-34] mov ecx,4 call dword ptr ds:[0BB5B8B8]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__TryReadCoseKeyLabel|1_3(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) test eax,eax je short M02_L02 mov ecx,[ebp-34] cmp [ecx],cl push 0 xor edx,edx call dword ptr ds:[0BB5B060] M02_L02: lea edx,[ebp-34] mov ecx,0FFFFFFFF call dword ptr ds:[0BB5B8D0]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__ReadCoseKeyLabel|1_4(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) mov ecx,[ebp-34] cmp [ecx],ecx call dword ptr ds:[0BB5B3D8]; System.Formats.Cbor.CborReader.ReadInt32() mov [ebp-78],eax mov ecx,esi mov edx,eax call dword ptr ds:[0BB5B870]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__IsValidKtyCrvCombination|1_0(CoseKeyType, CoseCrvId) test eax,eax je near ptr M02_L05 lea ecx,[ebp-68] mov edx,[ebp-78] call dword ptr ds:[0BB5B888]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__MapCoseCrvToECCurve|1_1(CoseCrvId) lea edx,[ebp-34] mov ecx,0FFFFFFFE call dword ptr ds:[0BB5B8D0]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__ReadCoseKeyLabel|1_4(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) mov ecx,[ebp-34] cmp [ecx],ecx call dword ptr ds:[0BB5B570]; System.Formats.Cbor.CborReader.ReadByteString() mov [ebp-70],eax lea edx,[ebp-34] mov ecx,0FFFFFFFD call dword ptr ds:[0BB5B8D0]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__ReadCoseKeyLabel|1_4(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) mov ecx,[ebp-34] cmp [ecx],ecx call dword ptr ds:[0BB5B570]; System.Formats.Cbor.CborReader.ReadByteString() mov [ebp-6C],eax lea edx,[ebp-34] mov ecx,0FFFFFFFC call dword ptr ds:[0BB5B8B8]; 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 [ebp-28] mov eax,[ebp-24] test eax,eax setg al movzx eax,al movzx ecx,cl test ecx,eax jne short M02_L03 mov [ebp-150],edi mov ecx,[ebp-34] cmp [ecx],ecx call dword ptr ds:[0BB5B4C8]; System.Formats.Cbor.CborReader.ReadEndMap() lea edi,[ebp-148] lea esi,[ebp-74] mov ecx,10 rep movsd lea edi,[ebp-108] lea esi,[ebp-148] mov ecx,10 rep movsd movzx ecx,byte ptr [ebp-14C] mov [ebp-0C8],cl mov edi,[ebp-150] mov [ebp-0C4],edi lea edi,[ebp-0C0] lea esi,[ebp-108] mov ecx,12 rep movsd jmp near ptr M02_L06 M02_L03: mov ecx,offset MT_System.Formats.Cbor.CborContentException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,0B2BE mov edx,0AFDABE4 call CORINFO_HELP_STRCNS mov edx,eax mov ecx,esi call dword ptr ds:[0BB5BE10] mov ecx,esi call CORINFO_HELP_THROW M02_L04: mov ecx,offset MT_System.Formats.Cbor.CborContentException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,0B27E mov edx,0AFDABE4 call CORINFO_HELP_STRCNS mov edx,eax mov ecx,esi call dword ptr ds:[0BB5BE10] mov ecx,esi call CORINFO_HELP_THROW M02_L05: mov ecx,offset MT_System.Formats.Cbor.CborContentException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,0B22C mov edx,0AFDABE4 call CORINFO_HELP_STRCNS mov edx,eax mov ecx,esi call dword ptr ds:[0BB5BE10] mov ecx,esi call CORINFO_HELP_THROW int 3 mov esi,eax mov ecx,offset MT_System.Formats.Cbor.CborContentException call CORINFO_HELP_NEWSFAST mov edi,eax mov ecx,0B31A mov edx,0AFDABE4 call CORINFO_HELP_STRCNS mov edx,eax push esi mov ecx,edi call dword ptr ds:[0BB5BE28] mov ecx,edi call CORINFO_HELP_THROW int 3 M02_L06: mov edi,ebx lea esi,[ebp-0C0] 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 movsd call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF movsd call CORINFO_HELP_ASSIGN_BYREF movsd call CORINFO_HELP_ASSIGN_BYREF lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret ; Total bytes of code 748 ``` #### 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 694.5518496380049 > 672.5255033299406. 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 -50.31436136570672 (T) = (0 -697.6686815557445) / Math.Sqrt((11.600214227857755 / (28)) + (22.41292165975962 / (24))) is less than -2.0085591120996775 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (28) + (24) - 2, .025) and -0.09138898257944299 = (639.2484189338613 - 697.6686815557445) / 639.2484189338613 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 ebp mov ebp,esp push edi push esi push ebx sub esp,48 vxorps xmm4,xmm4,xmm4 vmovdqu xmmword ptr [ebp-54],xmm4 vmovdqu xmmword ptr [ebp-44],xmm4 vmovdqu xmmword ptr [ebp-34],xmm4 vmovdqu xmmword ptr [ebp-24],xmm4 xor eax,eax mov [ebp-14],eax mov [ebp-10],eax mov esi,[edx+8] test esi,esi je short M00_L01 mov edi,esi mov ebx,[edi+4] M00_L00: mov ecx,offset MT_System.Formats.Cbor.CborReader call CORINFO_HELP_NEWSFAST mov esi,eax mov byte ptr [esi+2D],1 mov ecx,3 call dword ptr ds:[0AE2BB88]; System.Formats.Cbor.CborConformanceModeHelpers.Validate(System.Formats.Cbor.CborConformanceMode) lea ecx,[esi+30] mov edx,ecx call CORINFO_HELP_CHECKED_ASSIGN_REF_EDI xor edx,edx mov [ecx+4],edx mov [ecx+8],ebx mov dword ptr [esi+28],3 mov byte ptr [esi+2E],0 lea ecx,[esi+40] mov byte ptr [ecx],1 mov dword ptr [ecx+4],1 lea ecx,[ebp-54] mov edx,esi call dword ptr ds:[0AE2B7E0]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.ReadECParametersAsCosePublicKey(System.Formats.Cbor.CborReader) lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret M00_L01: xor edi,edi xor ebx,ebx jmp short M00_L00 ; Total bytes of code 147 ``` ```assembly ; System.Formats.Cbor.CborConformanceModeHelpers.Validate(System.Formats.Cbor.CborConformanceMode) push ebp mov ebp,esp push esi test ecx,ecx jl short M01_L00 cmp ecx,3 jg short M01_L00 pop esi pop ebp ret M01_L00: mov ecx,offset MT_System.ArgumentOutOfRangeException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,0DFA mov edx,0AE090C4 call CORINFO_HELP_STRCNS mov edx,eax mov ecx,esi call dword ptr ds:[82E3540] mov ecx,esi call CORINFO_HELP_THROW int 3 ; Total bytes of code 61 ``` ```assembly ; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.ReadECParametersAsCosePublicKey(System.Formats.Cbor.CborReader) push ebp mov ebp,esp push edi push esi push ebx sub esp,144 vxorps xmm4,xmm4,xmm4 vmovdqu xmmword ptr [ebp-148],xmm4 mov eax,0FFFFFEE0 M02_L00: vmovdqu xmmword ptr [ebp+eax-18],xmm4 vmovdqu xmmword ptr [ebp+eax-8],xmm4 vmovdqu xmmword ptr [ebp+eax+8],xmm4 add eax,30 jne short M02_L00 mov [ebp-18],eax mov [ebp-14],eax mov ebx,ecx mov [ebp-34],edx xor edx,edx mov [ebp-30],edx mov [ebp-2C],edx lea edx,[ebp-28] mov ecx,[ebp-34] cmp [ecx],ecx call dword ptr ds:[0AE2B4B0]; System.Formats.Cbor.CborReader.ReadStartMap() lea edx,[ebp-34] mov ecx,1 call dword ptr ds:[0AE2B8D0]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__ReadCoseKeyLabel|1_4(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) mov ecx,[ebp-34] cmp [ecx],ecx call dword ptr ds:[0AE2B3D8]; System.Formats.Cbor.CborReader.ReadInt32() mov esi,eax mov byte ptr [ebp-14C],0 xor ecx,ecx xor edi,edi lea edx,[ebp-34] mov ecx,3 call dword ptr ds:[0AE2B8B8]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__TryReadCoseKeyLabel|1_3(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) test eax,eax je short M02_L01 mov ecx,[ebp-34] cmp [ecx],ecx call dword ptr ds:[0AE2B3D8]; System.Formats.Cbor.CborReader.ReadInt32() mov ecx,eax call dword ptr ds:[0AE2B8A0]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__MapCoseKeyAlgToHashAlgorithmName|1_2(CoseKeyAlgorithm) mov edi,eax mov [ebp-150],edi mov byte ptr [ebp-14C],1 mov edi,[ebp-150] M02_L01: lea edx,[ebp-34] mov ecx,4 call dword ptr ds:[0AE2B8B8]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__TryReadCoseKeyLabel|1_3(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) test eax,eax je short M02_L02 mov ecx,[ebp-34] cmp [ecx],cl push 0 xor edx,edx call dword ptr ds:[0AE2B060] M02_L02: lea edx,[ebp-34] mov ecx,0FFFFFFFF call dword ptr ds:[0AE2B8D0]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__ReadCoseKeyLabel|1_4(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) mov ecx,[ebp-34] cmp [ecx],ecx call dword ptr ds:[0AE2B3D8]; System.Formats.Cbor.CborReader.ReadInt32() mov [ebp-78],eax mov ecx,esi mov edx,eax call dword ptr ds:[0AE2B870]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__IsValidKtyCrvCombination|1_0(CoseKeyType, CoseCrvId) test eax,eax je near ptr M02_L05 lea ecx,[ebp-68] mov edx,[ebp-78] call dword ptr ds:[0AE2B888]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__MapCoseCrvToECCurve|1_1(CoseCrvId) lea edx,[ebp-34] mov ecx,0FFFFFFFE call dword ptr ds:[0AE2B8D0]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__ReadCoseKeyLabel|1_4(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) mov ecx,[ebp-34] cmp [ecx],ecx call dword ptr ds:[0AE2B570]; System.Formats.Cbor.CborReader.ReadByteString() mov [ebp-70],eax lea edx,[ebp-34] mov ecx,0FFFFFFFD call dword ptr ds:[0AE2B8D0]; System.Formats.Cbor.Tests.ECDsaCosePublicKeyHelper.g__ReadCoseKeyLabel|1_4(CoseKeyLabel, <>c__DisplayClass1_0 ByRef) mov ecx,[ebp-34] cmp [ecx],ecx call dword ptr ds:[0AE2B570]; System.Formats.Cbor.CborReader.ReadByteString() mov [ebp-6C],eax lea edx,[ebp-34] mov ecx,0FFFFFFFC call dword ptr ds:[0AE2B8B8]; 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 [ebp-28] mov eax,[ebp-24] test eax,eax setg al movzx eax,al movzx ecx,cl test ecx,eax jne short M02_L03 mov [ebp-150],edi mov ecx,[ebp-34] cmp [ecx],ecx call dword ptr ds:[0AE2B4C8]; System.Formats.Cbor.CborReader.ReadEndMap() lea edi,[ebp-148] lea esi,[ebp-74] mov ecx,10 rep movsd lea edi,[ebp-108] lea esi,[ebp-148] mov ecx,10 rep movsd movzx ecx,byte ptr [ebp-14C] mov [ebp-0C8],cl mov edi,[ebp-150] mov [ebp-0C4],edi lea edi,[ebp-0C0] lea esi,[ebp-108] mov ecx,12 rep movsd jmp near ptr M02_L06 M02_L03: mov ecx,offset MT_System.Formats.Cbor.CborContentException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,0B2BE mov edx,0A2AABE4 call CORINFO_HELP_STRCNS mov edx,eax mov ecx,esi call dword ptr ds:[0AE2BE10] mov ecx,esi call CORINFO_HELP_THROW M02_L04: mov ecx,offset MT_System.Formats.Cbor.CborContentException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,0B27E mov edx,0A2AABE4 call CORINFO_HELP_STRCNS mov edx,eax mov ecx,esi call dword ptr ds:[0AE2BE10] mov ecx,esi call CORINFO_HELP_THROW M02_L05: mov ecx,offset MT_System.Formats.Cbor.CborContentException call CORINFO_HELP_NEWSFAST mov esi,eax mov ecx,0B22C mov edx,0A2AABE4 call CORINFO_HELP_STRCNS mov edx,eax mov ecx,esi call dword ptr ds:[0AE2BE10] mov ecx,esi call CORINFO_HELP_THROW int 3 mov esi,eax mov ecx,offset MT_System.Formats.Cbor.CborContentException call CORINFO_HELP_NEWSFAST mov edi,eax mov ecx,0B31A mov edx,0A2AABE4 call CORINFO_HELP_STRCNS mov edx,eax push esi mov ecx,edi call dword ptr ds:[0AE2BE28] mov ecx,edi call CORINFO_HELP_THROW int 3 M02_L06: mov edi,ebx lea esi,[ebp-0C0] 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 movsd call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF movsd call CORINFO_HELP_ASSIGN_BYREF movsd call CORINFO_HELP_ASSIGN_BYREF lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret ; Total bytes of code 748 ``` ### 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 x86
OS Windows 10.0.18362
Baseline 992672775c035a59c33c8ad4880b51df0b0151b3
Compare 86a7ca6601d0f864b6995eabd998908954e12e51
Diff Diff

Regressions in System.Tests.Perf_UInt16

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[Parse - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Tests.Perf_UInt16.Parse(value%3a%20%2265535%22).html>) 13.06 ns 14.35 ns 1.10 0.20 False
[TryParse - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Tests.Perf_UInt16.TryParse(value%3a%20%2212345%22).html>) 13.21 ns 14.82 ns 1.12 0.24 False

graph graph Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Tests.Perf_UInt16*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Tests.Perf_UInt16.Parse(value: "65535") ```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 14.351636564364838 > 13.971801295089325. 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 -4.040935505655281 (T) = (0 -15.193106446560074) / Math.Sqrt((1.1840594823338777 / (28)) + (1.0178579772607184 / (24))) is less than -2.0085591120996775 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (28) + (24) - 2, .025) and -0.08390014203208336 = (14.017072105993284 - 15.193106446560074) / 14.017072105993284 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.Tests.Perf_UInt16.Parse(System.String) push ebp mov ebp,esp push edi push esi push eax test edx,edx je short M00_L00 lea esi,[edx+8] mov edi,[edx+4] call dword ptr ds:[0A4518B8]; System.Globalization.NumberFormatInfo.get_CurrentInfo() mov edx,eax push edi push esi lea ecx,[ebp-0C] push ecx mov ecx,7 call dword ptr ds:[83ED090]; System.Number.TryParseUInt32IntegerStyle(System.ReadOnlySpan`1, System.Globalization.NumberStyles, System.Globalization.NumberFormatInfo, UInt32 ByRef) mov ecx,eax test ecx,ecx jne short M00_L01 cmp dword ptr [ebp-0C],0FFFF ja short M00_L02 movzx eax,word ptr [ebp-0C] pop ecx pop esi pop edi pop ebp ret M00_L00: mov ecx,11 call dword ptr ds:[8449D20] int 3 M00_L01: push edi push esi mov edx,8 call dword ptr ds:[83ED318] int 3 M00_L02: mov ecx,8 call dword ptr ds:[83ED330] int 3 ; Total bytes of code 103 ``` ```assembly ; System.Globalization.NumberFormatInfo.get_CurrentInfo() push ebp mov ebp,esp mov ecx,0E24D58 mov edx,24C call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov ecx,[eax+4] test ecx,ecx jne short M01_L00 mov ecx,ds:[6C412A0] test ecx,ecx jne short M01_L00 mov ecx,ds:[6C41290] test ecx,ecx je short M01_L03 M01_L00: cmp byte ptr [ecx+31],0 jne short M01_L01 mov eax,[ecx+0C] test eax,eax je short M01_L01 pop ebp ret M01_L01: mov edx,7DC4908 mov eax,[ecx] mov eax,[eax+30] call dword ptr [eax] mov edx,eax mov eax,edx test eax,eax je short M01_L02 mov ecx,offset MT_System.Globalization.NumberFormatInfo cmp [eax],ecx jne short M01_L04 M01_L02: pop ebp ret M01_L03: call dword ptr ds:[83E7030] mov ecx,eax jmp short M01_L00 M01_L04: call dword ptr ds:[494B8B8] int 3 ; Total bytes of code 108 ``` ```assembly ; System.Number.TryParseUInt32IntegerStyle(System.ReadOnlySpan`1, System.Globalization.NumberStyles, System.Globalization.NumberFormatInfo, UInt32 ByRef) push ebp mov ebp,esp push edi push esi push ebx sub esp,20 mov esi,ecx mov edi,edx cmp dword ptr [ebp+10],0 je near ptr M02_L09 xor ebx,ebx mov eax,[ebp+0C] movzx eax,word ptr [eax] test esi,1 je short M02_L00 cmp eax,20 je near ptr M02_L16 lea ecx,[eax-9] cmp ecx,4 jbe near ptr M02_L16 M02_L00: xor edx,edx mov [ebp-18],edx test esi,4 je short M02_L01 cmp byte ptr [edi+71],0 je near ptr M02_L19 cmp eax,2B je near ptr M02_L17 cmp eax,2D je near ptr M02_L18 M02_L01: xor edi,edi lea ecx,[eax-30] cmp ecx,9 ja short M02_L09 cmp eax,30 jne short M02_L05 M02_L02: inc ebx cmp ebx,[ebp+10] jb near ptr M02_L25 M02_L03: mov esi,[ebp+8] mov [esi],edi xor eax,eax M02_L04: lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret 0C M02_L05: lea edi,[eax-30] inc ebx xor ecx,ecx M02_L06: cmp ebx,[ebp+10] jb short M02_L08 M02_L07: cmp dword ptr [ebp-18],0 jne short M02_L10 jmp short M02_L03 M02_L08: mov eax,[ebp+0C] movzx eax,word ptr [eax+ebx*2] lea edx,[eax-30] cmp edx,9 ja short M02_L11 inc ebx lea edx,[edi+edi*4] lea edi,[eax+edx*2-30] inc ecx cmp ecx,8 jge near ptr M02_L26 jmp short M02_L06 M02_L09: xor eax,eax mov esi,[ebp+8] mov [esi],eax mov eax,1 jmp short M02_L04 M02_L10: xor edx,edx mov esi,[ebp+8] mov [esi],edx mov eax,2 jmp short M02_L04 M02_L11: mov ecx,eax call dword ptr ds:[83ED2E8]; System.Number.IsWhite(Int32) test eax,eax je short M02_L15 test esi,2 je short M02_L09 mov esi,[ebp-18] jmp short M02_L13 M02_L12: cmp ebx,[ebp+10] jae near ptr M02_L32 mov ecx,[ebp+0C] movzx ecx,word ptr [ecx+ebx*2] call dword ptr ds:[83ED2E8]; System.Number.IsWhite(Int32) test eax,eax je short M02_L14 M02_L13: inc ebx cmp ebx,[ebp+10] jl short M02_L12 M02_L14: cmp ebx,[ebp+10] mov [ebp-18],esi jae near ptr M02_L07 M02_L15: push dword ptr [ebp+10] push dword ptr [ebp+0C] mov ecx,ebx call dword ptr ds:[83ED288] test eax,eax jne near ptr M02_L07 jmp short M02_L09 M02_L16: inc ebx cmp ebx,[ebp+10] jae short M02_L09 mov ecx,[ebp+0C] movzx eax,word ptr [ecx+ebx*2] mov [ebp-14],eax mov ecx,eax call dword ptr ds:[83ED2E8]; System.Number.IsWhite(Int32) test eax,eax jne short M02_L16 mov eax,[ebp-14] jmp near ptr M02_L00 M02_L17: inc ebx cmp ebx,[ebp+10] jae near ptr M02_L09 mov edx,[ebp-18] jmp near ptr M02_L23 M02_L18: mov edx,1 inc ebx cmp ebx,[ebp+10] jae near ptr M02_L09 jmp near ptr M02_L23 M02_L19: cmp byte ptr [edi+72],0 je short M02_L20 mov [ebp-14],eax cmp eax,2D mov eax,[ebp-14] jne short M02_L20 mov edx,1 inc ebx cmp ebx,[ebp+10] mov [ebp-18],edx jae near ptr M02_L09 mov edx,[ebp-18] jmp near ptr M02_L23 M02_L20: cmp ebx,[ebp+10] jbe short M02_L21 call dword ptr ds:[8449A08] int 3 M02_L21: mov ecx,[ebp+0C] lea ecx,[ecx+ebx*2] mov edx,[ebp+10] sub edx,ebx mov [ebp+0C],ecx mov [ebp+10],edx xor ebx,ebx mov edx,[edi+10] mov [ebp-24],edx mov edi,[edi+14] mov [ebp-28],edi test edx,edx je short M02_L22 xor ecx,ecx cmp dword ptr [edx+4],0 sete cl test ecx,ecx jne short M02_L22 mov ecx,[ebp+0C] mov edi,[ebp+10] mov [ebp-20],edi lea edi,[edx+8] mov edx,[edx+4] cmp edx,[ebp-20] jg short M02_L22 mov [ebp-14],eax add edx,edx push edx mov edx,edi call dword ptr ds:[499F120] test eax,eax mov eax,[ebp-14] je short M02_L22 mov ebx,[ebp-24] mov ebx,[ebx+4] cmp ebx,[ebp+10] mov [ebp-10],ebx jae near ptr M02_L09 mov edx,[ebp-18] mov ebx,[ebp-10] jmp short M02_L23 M02_L22: mov edi,[ebp-28] test edi,edi je near ptr M02_L01 xor ecx,ecx cmp dword ptr [edi+4],0 sete cl test ecx,ecx mov [ebp-28],edi jne near ptr M02_L01 mov [ebp-10],ebx mov ecx,[ebp+0C] mov edi,[ebp+10] mov ebx,[ebp-28] add ebx,8 mov edx,[ebp-28] mov edx,[edx+4] cmp edx,edi mov [ebp-1C],edx mov [ebp-2C],ebx jg short M02_L24 mov [ebp-14],eax mov edi,[ebp-28] mov ebx,[ebp-1C] add ebx,ebx push ebx mov edx,[ebp-2C] call dword ptr ds:[499F120] test eax,eax mov eax,[ebp-14] mov ebx,[ebp-10] je near ptr M02_L01 mov ebx,1 mov ecx,[edi+4] mov edi,ecx cmp edi,[ebp+10] mov edx,ebx jae near ptr M02_L09 mov ebx,edi M02_L23: cmp ebx,[ebp+10] jae near ptr M02_L32 mov ecx,[ebp+0C] movzx eax,word ptr [ecx+ebx*2] mov edi,eax mov [ebp-18],edx mov eax,edi jmp near ptr M02_L01 M02_L24: mov ebx,[ebp-10] jmp near ptr M02_L01 M02_L25: mov ecx,[ebp+0C] movzx ecx,word ptr [ecx+ebx*2] mov eax,ecx cmp eax,30 je near ptr M02_L02 lea ecx,[eax-30] cmp ecx,9 jbe near ptr M02_L05 xor edx,edx mov [ebp-18],edx jmp near ptr M02_L11 M02_L26: cmp ebx,[ebp+10] jae near ptr M02_L07 mov eax,[ebp+0C] movzx eax,word ptr [eax+ebx*2] lea ecx,[eax-30] cmp ecx,9 ja near ptr M02_L11 inc ebx mov edx,[ebp-18] cmp edi,19999999 ja short M02_L28 cmp edi,19999999 jne short M02_L27 xor ecx,ecx cmp eax,35 setg cl jmp short M02_L29 M02_L27: xor ecx,ecx jmp short M02_L29 M02_L28: mov ecx,1 M02_L29: or ecx,edx movzx edx,cl lea ecx,[edi+edi*4] lea edi,[eax+ecx*2-30] cmp ebx,[ebp+10] mov [ebp-18],edx jae near ptr M02_L07 jmp short M02_L31 M02_L30: mov edx,1 inc ebx cmp ebx,[ebp+10] mov [ebp-18],edx jae near ptr M02_L10 M02_L31: cmp ebx,[ebp+10] jae short M02_L32 mov eax,[ebp+0C] movzx eax,word ptr [eax+ebx*2] lea ecx,[eax-30] cmp ecx,9 jbe short M02_L30 jmp near ptr M02_L11 M02_L32: call CORINFO_HELP_RNGCHKFAIL int 3 ; Total bytes of code 900 ``` #### System.Tests.Perf_UInt16.TryParse(value: "12345") ```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 14.816847945157832 > 14.0286357245261. IsChangePoint: Marked as a change because one of 9/14/2022 12:15:21 PM, 10/1/2022 4:32:12 PM, 10/20/2022 5:12:08 PM, 11/16/2022 11:33:39 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 -4.77773633399925 (T) = (0 -15.35707236701298) / Math.Sqrt((0.6870814786378343 / (29)) + (1.4389053674912342 / (23))) is less than -2.0085591120996775 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (29) + (23) - 2, .025) and -0.10055764070754838 = (13.953901003440329 - 15.35707236701298) / 13.953901003440329 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.Tests.Perf_UInt16.TryParse(System.String) push ebp mov ebp,esp push edi push esi push eax xor eax,eax mov [ebp-0C],eax test edx,edx je short M00_L02 lea esi,[edx+8] mov edi,[edx+4] call dword ptr ds:[0B1C18B8]; System.Globalization.NumberFormatInfo.get_CurrentInfo() mov edx,eax push edi push esi lea ecx,[ebp-0C] push ecx mov ecx,7 call dword ptr ds:[90ED090]; System.Number.TryParseUInt32IntegerStyle(System.ReadOnlySpan`1, System.Globalization.NumberStyles, System.Globalization.NumberFormatInfo, UInt32 ByRef) test eax,eax jne short M00_L01 cmp dword ptr [ebp-0C],0FFFF ja short M00_L01 mov eax,1 M00_L00: pop ecx pop esi pop edi pop ebp ret M00_L01: xor eax,eax jmp short M00_L00 M00_L02: xor eax,eax jmp short M00_L00 ; Total bytes of code 77 ``` ```assembly ; System.Globalization.NumberFormatInfo.get_CurrentInfo() push ebp mov ebp,esp mov ecx,36C4D58 mov edx,24C call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov ecx,[eax+4] test ecx,ecx jne short M01_L00 mov ecx,ds:[77812A0] test ecx,ecx jne short M01_L00 mov ecx,ds:[7781290] test ecx,ecx je short M01_L03 M01_L00: cmp byte ptr [ecx+31],0 jne short M01_L01 mov eax,[ecx+0C] test eax,eax je short M01_L01 pop ebp ret M01_L01: mov edx,8AB4908 mov eax,[ecx] mov eax,[eax+30] call dword ptr [eax] mov edx,eax mov eax,edx test eax,eax je short M01_L02 mov ecx,offset MT_System.Globalization.NumberFormatInfo cmp [eax],ecx jne short M01_L04 M01_L02: pop ebp ret M01_L03: call dword ptr ds:[90E7030] mov ecx,eax jmp short M01_L00 M01_L04: call dword ptr ds:[8A4B8B8] int 3 ; Total bytes of code 108 ``` ```assembly ; System.Number.TryParseUInt32IntegerStyle(System.ReadOnlySpan`1, System.Globalization.NumberStyles, System.Globalization.NumberFormatInfo, UInt32 ByRef) push ebp mov ebp,esp push edi push esi push ebx sub esp,20 mov esi,ecx mov edi,edx cmp dword ptr [ebp+10],0 je near ptr M02_L09 xor ebx,ebx mov eax,[ebp+0C] movzx eax,word ptr [eax] test esi,1 je short M02_L00 cmp eax,20 je near ptr M02_L16 lea ecx,[eax-9] cmp ecx,4 jbe near ptr M02_L16 M02_L00: xor edx,edx mov [ebp-18],edx test esi,4 je short M02_L01 cmp byte ptr [edi+71],0 je near ptr M02_L19 cmp eax,2B je near ptr M02_L17 cmp eax,2D je near ptr M02_L18 M02_L01: xor edi,edi lea ecx,[eax-30] cmp ecx,9 ja short M02_L09 cmp eax,30 jne short M02_L05 M02_L02: inc ebx cmp ebx,[ebp+10] jb near ptr M02_L25 M02_L03: mov esi,[ebp+8] mov [esi],edi xor eax,eax M02_L04: lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret 0C M02_L05: lea edi,[eax-30] inc ebx xor ecx,ecx M02_L06: cmp ebx,[ebp+10] jb short M02_L08 M02_L07: cmp dword ptr [ebp-18],0 jne short M02_L10 jmp short M02_L03 M02_L08: mov eax,[ebp+0C] movzx eax,word ptr [eax+ebx*2] lea edx,[eax-30] cmp edx,9 ja short M02_L11 inc ebx lea edx,[edi+edi*4] lea edi,[eax+edx*2-30] inc ecx cmp ecx,8 jge near ptr M02_L26 jmp short M02_L06 M02_L09: xor eax,eax mov esi,[ebp+8] mov [esi],eax mov eax,1 jmp short M02_L04 M02_L10: xor edx,edx mov esi,[ebp+8] mov [esi],edx mov eax,2 jmp short M02_L04 M02_L11: mov ecx,eax call dword ptr ds:[90ED2E8]; System.Number.IsWhite(Int32) test eax,eax je short M02_L15 test esi,2 je short M02_L09 mov esi,[ebp-18] jmp short M02_L13 M02_L12: cmp ebx,[ebp+10] jae near ptr M02_L32 mov ecx,[ebp+0C] movzx ecx,word ptr [ecx+ebx*2] call dword ptr ds:[90ED2E8]; System.Number.IsWhite(Int32) test eax,eax je short M02_L14 M02_L13: inc ebx cmp ebx,[ebp+10] jl short M02_L12 M02_L14: cmp ebx,[ebp+10] mov [ebp-18],esi jae near ptr M02_L07 M02_L15: push dword ptr [ebp+10] push dword ptr [ebp+0C] mov ecx,ebx call dword ptr ds:[90ED288] test eax,eax jne near ptr M02_L07 jmp short M02_L09 M02_L16: inc ebx cmp ebx,[ebp+10] jae short M02_L09 mov ecx,[ebp+0C] movzx eax,word ptr [ecx+ebx*2] mov [ebp-14],eax mov ecx,eax call dword ptr ds:[90ED2E8]; System.Number.IsWhite(Int32) test eax,eax jne short M02_L16 mov eax,[ebp-14] jmp near ptr M02_L00 M02_L17: inc ebx cmp ebx,[ebp+10] jae near ptr M02_L09 mov edx,[ebp-18] jmp near ptr M02_L23 M02_L18: mov edx,1 inc ebx cmp ebx,[ebp+10] jae near ptr M02_L09 jmp near ptr M02_L23 M02_L19: cmp byte ptr [edi+72],0 je short M02_L20 mov [ebp-14],eax cmp eax,2D mov eax,[ebp-14] jne short M02_L20 mov edx,1 inc ebx cmp ebx,[ebp+10] mov [ebp-18],edx jae near ptr M02_L09 mov edx,[ebp-18] jmp near ptr M02_L23 M02_L20: cmp ebx,[ebp+10] jbe short M02_L21 call dword ptr ds:[9149A08] int 3 M02_L21: mov ecx,[ebp+0C] lea ecx,[ecx+ebx*2] mov edx,[ebp+10] sub edx,ebx mov [ebp+0C],ecx mov [ebp+10],edx xor ebx,ebx mov edx,[edi+10] mov [ebp-24],edx mov edi,[edi+14] mov [ebp-28],edi test edx,edx je short M02_L22 xor ecx,ecx cmp dword ptr [edx+4],0 sete cl test ecx,ecx jne short M02_L22 mov ecx,[ebp+0C] mov edi,[ebp+10] mov [ebp-20],edi lea edi,[edx+8] mov edx,[edx+4] cmp edx,[ebp-20] jg short M02_L22 mov [ebp-14],eax add edx,edx push edx mov edx,edi call dword ptr ds:[8A9F120] test eax,eax mov eax,[ebp-14] je short M02_L22 mov ebx,[ebp-24] mov ebx,[ebx+4] cmp ebx,[ebp+10] mov [ebp-10],ebx jae near ptr M02_L09 mov edx,[ebp-18] mov ebx,[ebp-10] jmp short M02_L23 M02_L22: mov edi,[ebp-28] test edi,edi je near ptr M02_L01 xor ecx,ecx cmp dword ptr [edi+4],0 sete cl test ecx,ecx mov [ebp-28],edi jne near ptr M02_L01 mov [ebp-10],ebx mov ecx,[ebp+0C] mov edi,[ebp+10] mov ebx,[ebp-28] add ebx,8 mov edx,[ebp-28] mov edx,[edx+4] cmp edx,edi mov [ebp-1C],edx mov [ebp-2C],ebx jg short M02_L24 mov [ebp-14],eax mov edi,[ebp-28] mov ebx,[ebp-1C] add ebx,ebx push ebx mov edx,[ebp-2C] call dword ptr ds:[8A9F120] test eax,eax mov eax,[ebp-14] mov ebx,[ebp-10] je near ptr M02_L01 mov ebx,1 mov ecx,[edi+4] mov edi,ecx cmp edi,[ebp+10] mov edx,ebx jae near ptr M02_L09 mov ebx,edi M02_L23: cmp ebx,[ebp+10] jae near ptr M02_L32 mov ecx,[ebp+0C] movzx eax,word ptr [ecx+ebx*2] mov edi,eax mov [ebp-18],edx mov eax,edi jmp near ptr M02_L01 M02_L24: mov ebx,[ebp-10] jmp near ptr M02_L01 M02_L25: mov ecx,[ebp+0C] movzx ecx,word ptr [ecx+ebx*2] mov eax,ecx cmp eax,30 je near ptr M02_L02 lea ecx,[eax-30] cmp ecx,9 jbe near ptr M02_L05 xor edx,edx mov [ebp-18],edx jmp near ptr M02_L11 M02_L26: cmp ebx,[ebp+10] jae near ptr M02_L07 mov eax,[ebp+0C] movzx eax,word ptr [eax+ebx*2] lea ecx,[eax-30] cmp ecx,9 ja near ptr M02_L11 inc ebx mov edx,[ebp-18] cmp edi,19999999 ja short M02_L28 cmp edi,19999999 jne short M02_L27 xor ecx,ecx cmp eax,35 setg cl jmp short M02_L29 M02_L27: xor ecx,ecx jmp short M02_L29 M02_L28: mov ecx,1 M02_L29: or ecx,edx movzx edx,cl lea ecx,[edi+edi*4] lea edi,[eax+ecx*2-30] cmp ebx,[ebp+10] mov [ebp-18],edx jae near ptr M02_L07 jmp short M02_L31 M02_L30: mov edx,1 inc ebx cmp ebx,[ebp+10] mov [ebp-18],edx jae near ptr M02_L10 M02_L31: cmp ebx,[ebp+10] jae short M02_L32 mov eax,[ebp+0C] movzx eax,word ptr [eax+ebx*2] lea ecx,[eax-30] cmp ecx,9 jbe short M02_L30 jmp near ptr M02_L11 M02_L32: call CORINFO_HELP_RNGCHKFAIL int 3 ; Total bytes of code 900 ``` ### 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 x86
OS Windows 10.0.18362
Baseline 992672775c035a59c33c8ad4880b51df0b0151b3
Compare 86a7ca6601d0f864b6995eabd998908954e12e51
Diff Diff

Regressions in System.Collections.ContainsKeyTrue<Int32, Int32>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[SortedDictionary - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Collections.ContainsKeyTrue(Int32%2c%20Int32).SortedDictionary(Size%3a%20512).html>) 47.90 μs 52.26 μs 1.09 0.01 False
[Dictionary - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Collections.ContainsKeyTrue(Int32%2c%20Int32).Dictionary(Size%3a%20512).html>) 4.54 μs 6.56 μs 1.44 0.03 False

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.ContainsKeyTrue&lt;Int32, Int32&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Collections.ContainsKeyTrue<Int32, Int32>.SortedDictionary(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 52.25986064659978 > 50.57390678269057. IsChangePoint: Marked as a change because one of 10/10/2022 3:36:43 PM, 10/26/2022 7:11:30 AM, 11/10/2022 9:13:35 AM, 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 -34.498017717110336 (T) = (0 -52229.97267702112) / Math.Sqrt((225601.02944563108 / (28)) + (123801.30577191699 / (24))) is less than -2.0085591120996775 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (28) + (24) - 2, .025) and -0.08216988777089013 = (48264.115706090415 - 52229.97267702112) / 48264.115706090415 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.ContainsKeyTrue<Int32, Int32>.Dictionary(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 6.5589359518754415 > 4.61193639138615. IsChangePoint: Marked as a change because one of 10/11/2022 5:13:36 PM, 10/26/2022 7:11:30 AM, 11/18/2022 7:31:41 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 -129.03116948171058 (T) = (0 -6508.757808477748) / Math.Sqrt((3851.589275384854 / (35)) + (2383.550590685862 / (17))) is less than -2.0085591120996775 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (35) + (17) - 2, .025) and -0.45689364221475537 = (4467.558660344758 - 6508.757808477748) / 4467.558660344758 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)