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: 12 Regressions on 1/6/2023 5:32:27 AM #11521

Open performanceautofiler[bot] opened 1 year ago

performanceautofiler[bot] commented 1 year ago

Run Information

Architecture x86
OS Windows 10.0.18362
Baseline 5a10aa6a3fa43d9d0e30e48ae22f2767a358af41
Compare 75f9609c5bb962d86afae1952536813a95b4a6d7
Diff Diff

Regressions in System.Collections.ContainsFalse<Int32>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[Stack - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Collections.ContainsFalse(Int32).Stack(Size%3a%20512).html>) 24.58 μs 27.58 μs 1.12 0.12 False
[List - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Collections.ContainsFalse(Int32).List(Size%3a%20512).html>) 27.04 μs 33.45 μs 1.24 0.14 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.ContainsFalse&lt;Int32&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Collections.ContainsFalse<Int32>.Stack(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 27.58365457294029 > 25.817229133858273. IsChangePoint: Marked as a change because one of 11/1/2022 2:33:16 AM, 11/4/2022 2:24:58 AM, 12/14/2022 12:26:48 AM, 1/5/2023 11:35:29 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsRegressionStdDev: Marked as regression because -8.938233282872933 (T) = (0 -27456.6169168476) / Math.Sqrt((1309746.6662846948 / (30)) + (480643.1915014437 / (18))) is less than -2.0128955989180297 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (30) + (18) - 2, .025) and -0.09451273103284724 = (25085.698994965463 - 27456.6169168476) / 25085.698994965463 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.ContainsFalse<Int32>.List(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 33.448338188559326 > 28.360119169102735. IsChangePoint: Marked as a change because one of 11/22/2022 2:20:42 AM, 1/5/2023 11:35:29 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsRegressionStdDev: Marked as regression because -38.414870557702564 (T) = (0 -33442.612963578205) / Math.Sqrt((509919.7074044322 / (30)) + (91334.78131541192 / (18))) is less than -2.0128955989180297 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (30) + (18) - 2, .025) and -0.20576845591875 = (27735.51820784381 - 33442.612963578205) / 27735.51820784381 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 x86
OS Windows 10.0.18362
Baseline 5a10aa6a3fa43d9d0e30e48ae22f2767a358af41
Compare 75f9609c5bb962d86afae1952536813a95b4a6d7
Diff Diff

Regressions in System.Collections.IterateForEachNonGeneric<Int32>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[Stack - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Collections.IterateForEachNonGeneric(Int32).Stack(Size%3a%20512).html>) 3.40 μs 3.88 μs 1.14 0.02 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.IterateForEachNonGeneric&lt;Int32&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Collections.IterateForEachNonGeneric<Int32>.Stack(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 3.877110041407868 > 3.5680078223354204. IsChangePoint: Marked as a change because one of 10/25/2022 12:27:43 PM, 12/5/2022 3:49:45 AM, 12/21/2022 9:23:17 AM, 1/5/2023 11:35:29 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsRegressionStdDev: Marked as regression because -175.36941525422245 (T) = (0 -3854.3142340027416) / Math.Sqrt((68.88333884890739 / (30)) + (79.68880008507882 / (18))) is less than -2.0128955989180297 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (30) + (18) - 2, .025) and -0.13375712976618379 = (3399.5942630125924 - 3854.3142340027416) / 3399.5942630125924 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 x86
OS Windows 10.0.18362
Baseline 5a10aa6a3fa43d9d0e30e48ae22f2767a358af41
Compare 75f9609c5bb962d86afae1952536813a95b4a6d7
Diff Diff

Regressions in System.Collections.IndexerSet<String>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[Span - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Collections.IndexerSet(String).Span(Size%3a%20512).html>) 256.80 ns 332.83 ns 1.30 0.10 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.IndexerSet&lt;String&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Collections.IndexerSet<String>.Span(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 332.83326126905195 > 270.2310912743785. IsChangePoint: Marked as a change because one of 10/25/2022 12:27:43 PM, 11/7/2022 4:10:19 PM, 11/18/2022 7:31:41 AM, 12/6/2022 2:12:43 AM, 1/5/2023 11:35:29 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsRegressionStdDev: Marked as regression because -22.077779889151074 (T) = (0 -333.29144715734714) / Math.Sqrt((308.16252865392676 / (30)) + (0.21119570636345214 / (18))) is less than -2.0128955989180297 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (30) + (18) - 2, .025) and -0.26972253727835926 = (262.49155809406585 - 333.29144715734714) / 262.49155809406585 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 x86
OS Windows 10.0.18362
Baseline 5a10aa6a3fa43d9d0e30e48ae22f2767a358af41
Compare 75f9609c5bb962d86afae1952536813a95b4a6d7
Diff Diff

Regressions in System.Numerics.Tests.Perf_VectorOf<Int16>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[DivideBenchmark - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_VectorOf(Int16).DivideBenchmark.html>) 38.06 ns 43.32 ns 1.14 0.05 False

graph Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Numerics.Tests.Perf_VectorOf&lt;Int16&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Numerics.Tests.Perf_VectorOf<Int16>.DivideBenchmark ```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 43.32411259413338 > 40.27796389810104. IsChangePoint: Marked as a change because one of 12/1/2022 8:17:56 AM, 12/14/2022 5:20:21 PM, 12/21/2022 9:23:17 AM, 1/5/2023 11:35:29 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsRegressionStdDev: Marked as regression because -10.934939116850952 (T) = (0 -48.24681432420122) / Math.Sqrt((0.10004734381597999 / (30)) + (14.24266299725658 / (18))) is less than -2.0128955989180297 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (30) + (18) - 2, .025) and -0.25318322758572875 = (38.4994095533414 - 48.24681432420122) / 38.4994095533414 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 x86
OS Windows 10.0.18362
Baseline 5a10aa6a3fa43d9d0e30e48ae22f2767a358af41
Compare 75f9609c5bb962d86afae1952536813a95b4a6d7
Diff Diff

Regressions in System.Collections.IterateForEachNonGeneric<String>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[ArrayList - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Collections.IterateForEachNonGeneric(String).ArrayList(Size%3a%20512).html>) 3.04 μs 3.25 μs 1.07 0.05 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.IterateForEachNonGeneric&lt;String&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Collections.IterateForEachNonGeneric<String>.ArrayList(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 3.251075932874714 > 3.1922832944454327. IsChangePoint: Marked as a change because one of 11/7/2022 4:10:19 PM, 11/18/2022 7:31:41 AM, 12/6/2022 2:12:43 AM, 12/14/2022 12:26:48 AM, 1/5/2023 11:35:29 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsRegressionStdDev: Marked as regression because -20.783891595634408 (T) = (0 -3247.208979234737) / Math.Sqrt((3937.39814983529 / (30)) + (28.62139393206892 / (18))) is less than -2.0128955989180297 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (30) + (18) - 2, .025) and -0.07964462398008011 = (3007.6646584539926 - 3247.208979234737) / 3007.6646584539926 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 x86
OS Windows 10.0.18362
Baseline 5a10aa6a3fa43d9d0e30e48ae22f2767a358af41
Compare 75f9609c5bb962d86afae1952536813a95b4a6d7
Diff Diff

Regressions in System.Text.Json.Tests.Perf_Get

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[GetBoolean - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Text.Json.Tests.Perf_Get.GetBoolean.html>) 148.04 ns 167.19 ns 1.13 0.03 False Trace Trace

graph Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Text.Json.Tests.Perf_Get*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Text.Json.Tests.Perf_Get.GetBoolean ```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 167.1895606332745 > 155.31955651970918. IsChangePoint: Marked as a change because one of 11/13/2022 1:28:42 PM, 11/18/2022 7:31:41 AM, 12/12/2022 5:25:39 PM, 12/14/2022 5:20:21 PM, 1/5/2023 11:35:29 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsRegressionStdDev: Marked as regression because -136.53807930834944 (T) = (0 -166.6392877712799) / Math.Sqrt((0.39211558021427684 / (30)) + (0.09441756986421422 / (18))) is less than -2.0128955989180297 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (30) + (18) - 2, .025) and -0.12471977683580102 = (148.16071629867653 - 166.6392877712799) / 148.16071629867653 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. ```### Baseline Jit Disasm ```assembly ; System.Text.Json.Tests.Perf_Get.GetBoolean() push ebp mov ebp,esp push ebx sub esp,0B8 vzeroupper vxorps xmm4,xmm4,xmm4 vmovdqu xmmword ptr [ebp-0BC],xmm4 vmovdqu xmmword ptr [ebp-0AC],xmm4 mov eax,0FFFFFF70 M00_L00: vmovdqu xmmword ptr [ebp+eax-0C],xmm4 vmovdqu xmmword ptr [ebp+eax+4],xmm4 vmovdqu xmmword ptr [ebp+eax+14],xmm4 add eax,30 jne short M00_L00 mov [ebp-0C],eax mov [ebp-8],eax xor ebx,ebx mov ecx,0AF24B68 mov edx,233 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov ecx,ds:[75445C4] test ecx,ecx je near ptr M00_L02 lea edx,[ecx+8] mov eax,[ecx+4] M00_L01: xor ecx,ecx mov [ebp-0A4],ecx mov [ebp-0A0],ecx vxorps xmm0,xmm0,xmm0 vmovdqu xmmword ptr [ebp-9C],xmm0 push eax push edx push dword ptr [ebp-90] push dword ptr [ebp-94] push dword ptr [ebp-98] push dword ptr [ebp-9C] push dword ptr [ebp-0A0] push dword ptr [ebp-0A4] push dword ptr [ebp-0A8] push dword ptr [ebp-0AC] push dword ptr [ebp-0B0] push dword ptr [ebp-0B4] push dword ptr [ebp-0B8] push dword ptr [ebp-0BC] lea ecx,[ebp-8C] mov edx,1 call dword ptr ds:[0B819BB8]; System.Text.Json.Utf8JsonReader..ctor(System.ReadOnlySpan`1, Boolean, System.Text.Json.JsonReaderState) cmp byte ptr [ebp-61],0 jne short M00_L03 lea ecx,[ebp-8C] call dword ptr ds:[0B819DC8]; System.Text.Json.Utf8JsonReader.ReadSingleSegment() jmp short M00_L04 M00_L02: xor edx,edx xor eax,eax jmp near ptr M00_L01 M00_L03: lea ecx,[ebp-8C] call dword ptr ds:[0B81B1B0] M00_L04: movzx eax,al test eax,eax jne short M00_L05 cmp byte ptr [ebp-68],0 je short M00_L05 cmp byte ptr [ebp-64],0 je short M00_L10 M00_L05: xor eax,eax M00_L06: movzx ecx,byte ptr [ebp-64] cmp ecx,9 jne short M00_L07 mov edx,1 jmp short M00_L08 M00_L07: cmp ecx,0A jne short M00_L09 xor edx,edx M00_L08: xor edx,ebx movzx ebx,dl inc eax cmp eax,64 jl short M00_L06 mov eax,ebx lea esp,[ebp-4] pop ebx pop ebp ret M00_L09: movzx ecx,byte ptr [ebp-64] call dword ptr ds:[0B81D270] int 3 M00_L10: xor ecx,ecx push 0 push 0 push ecx lea ecx,[ebp-8C] mov edx,20 call dword ptr ds:[0B81D378] int 3 ; Total bytes of code 361 ``` ```assembly ; System.Text.Json.Utf8JsonReader..ctor(System.ReadOnlySpan`1, Boolean, System.Text.Json.JsonReaderState) push ebp mov ebp,esp push edi push esi sub esp,10 vzeroupper xor eax,eax mov [ebp-18],eax mov [ebp-14],eax mov eax,ecx lea edi,[eax+30] lea esi,[ebp+38] call CORINFO_HELP_ASSIGN_BYREF movsd mov [eax+24],dl mov byte ptr [eax+25],0 mov ecx,eax mov edx,[ebp+8] mov [ecx],edx mov edx,[ebp+0C] mov [ecx+4],edx lea ecx,[eax+8] mov edx,[ebp+10] mov [ecx],edx mov edx,[ebp+14] mov [ecx+4],edx movzx ecx,byte ptr [ebp+18] mov [eax+26],cl movzx ecx,byte ptr [ebp+19] mov [eax+27],cl movzx ecx,byte ptr [ebp+1A] mov [eax+2E],cl movzx ecx,byte ptr [ebp+1B] mov [eax+2C],cl movzx ecx,byte ptr [ebp+1C] mov [eax+28],cl movzx ecx,byte ptr [ebp+1D] mov [eax+29],cl mov ecx,[ebp+20] mov [eax+38],ecx mov ecx,[ebp+24] mov [eax+3C],ecx cmp dword ptr [eax+38],0 jne short M01_L00 mov dword ptr [eax+38],40 M01_L00: lea edi,[eax+40] lea esi,[ebp+28] movsd movsd call CORINFO_HELP_ASSIGN_BYREF movsd xor ecx,ecx mov [eax+20],ecx lea ecx,[eax+18] xor edx,edx mov [ecx],edx mov [ecx+4],edx lea ecx,[eax+10] mov [ecx],edx mov [ecx+4],edx movzx ecx,byte ptr [eax+24] mov [eax+2A],cl mov byte ptr [eax+2B],0 mov [eax+70],edx mov [eax+74],edx mov [eax+58],edx mov [eax+5C],edx mov [eax+50],edx mov [eax+54],edx vxorps xmm0,xmm0,xmm0 vmovq qword ptr [eax+60],xmm0 vmovq qword ptr [eax+68],xmm0 mov byte ptr [eax+2D],0 mov esi,ds:[7542000] add esi,4 lea edi,[ebp-18] mov ecx,4 rep movsd lea edi,[eax+78] lea esi,[ebp-18] call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF movsd movsd lea esp,[ebp-8] pop esi pop edi pop ebp ret 38 ; Total bytes of code 264 ``` ```assembly ; System.Text.Json.Utf8JsonReader.ReadSingleSegment() push ebp mov ebp,esp push edi push esi push ebx sub esp,0C mov esi,ecx xor ebx,ebx xor ecx,ecx mov [esi+70],ecx mov [esi+74],ecx mov byte ptr [esi+2E],0 mov ecx,[esi+20] mov eax,ecx sar eax,1F cmp ecx,[esi+34] sbb eax,0 jl short M02_L02 cmp byte ptr [esi+27],0 je near ptr M02_L15 cmp byte ptr [esi+24],0 je near ptr M02_L15 cmp byte ptr [esi+2B],0 je short M02_L00 movzx ecx,byte ptr [esi+2A] test ecx,ecx je near ptr M02_L15 M02_L00: cmp dword ptr [esi+4C],0 jne near ptr M02_L17 cmp byte ptr [esi+3C],2 jne short M02_L01 movzx ecx,byte ptr [esi+28] cmp ecx,6 je near ptr M02_L15 M02_L01: movzx ecx,byte ptr [esi+28] cmp ecx,4 je near ptr M02_L15 cmp ecx,2 jne near ptr M02_L18 jmp near ptr M02_L15 M02_L02: mov ecx,[esi+20] lea eax,[esi+30] cmp ecx,[eax+4] jae near ptr M02_L22 mov eax,[eax] movzx edx,byte ptr [eax+ecx] cmp edx,20 jg near ptr M02_L06 mov ecx,esi call dword ptr ds:[0B819E28] mov ecx,[esi+20] mov edx,ecx mov eax,edx sar eax,1F cmp edx,[esi+34] sbb eax,0 jl short M02_L05 cmp byte ptr [esi+27],0 je near ptr M02_L15 cmp byte ptr [esi+24],0 je near ptr M02_L15 cmp byte ptr [esi+2B],0 je short M02_L03 movzx ecx,byte ptr [esi+2A] test ecx,ecx je near ptr M02_L15 M02_L03: cmp dword ptr [esi+4C],0 jne near ptr M02_L19 cmp byte ptr [esi+3C],2 jne short M02_L04 movzx ecx,byte ptr [esi+28] cmp ecx,6 je near ptr M02_L15 M02_L04: movzx ecx,byte ptr [esi+28] cmp ecx,4 je near ptr M02_L15 cmp ecx,2 jne near ptr M02_L20 jmp near ptr M02_L15 M02_L05: lea edx,[esi+30] cmp ecx,[edx+4] jae near ptr M02_L22 mov edx,[edx] movzx edx,byte ptr [edx+ecx] M02_L06: mov ecx,[esi+20] mov eax,ecx sar eax,1F lea ebx,[esi+18] mov [ebx],ecx mov [ebx+4],eax movzx ebx,byte ptr [esi+28] test ebx,ebx je near ptr M02_L16 cmp edx,2F jne short M02_L08 M02_L07: mov ecx,esi call dword ptr ds:[0B819FA8] mov ebx,eax jmp near ptr M02_L15 M02_L08: cmp ebx,1 jne short M02_L11 cmp edx,7D jne short M02_L09 mov ecx,esi call dword ptr ds:[0B819D68] jmp near ptr M02_L14 M02_L09: cmp edx,22 jne near ptr M02_L21 mov ebx,[esi+20] lea ecx,[esi+8] mov edi,[ecx] mov eax,[ecx+4] mov [ebp-10],eax mov ecx,esi mov edx,[ecx] mov ecx,[ecx+4] mov [ebp-14],edx mov [ebp-18],ecx mov ecx,esi call dword ptr ds:[0B819EB8] test eax,eax jne short M02_L10 mov [esi+20],ebx mov byte ptr [esi+28],1 lea ecx,[esi+8] mov [ecx],edi mov edi,[ebp-10] mov [ecx+4],edi mov edi,[ebp-14] mov [esi],edi mov edi,[ebp-18] mov [esi+4],edi mov ebx,eax jmp short M02_L15 M02_L10: mov ebx,eax jmp short M02_L15 M02_L11: cmp ebx,3 jne short M02_L13 cmp edx,5D jne short M02_L12 mov ecx,esi call dword ptr ds:[0B819D98] jmp short M02_L14 M02_L12: mov ecx,esi call dword ptr ds:[0B819E40]; System.Text.Json.Utf8JsonReader.ConsumeValue(Byte) mov ebx,eax jmp short M02_L15 M02_L13: cmp ebx,5 jne near ptr M02_L07 jmp short M02_L12 M02_L14: mov ebx,1 M02_L15: mov eax,ebx lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret M02_L16: mov ecx,esi call dword ptr ds:[0B819E10]; System.Text.Json.Utf8JsonReader.ReadFirstToken(Byte) mov ebx,eax jmp short M02_L15 M02_L17: xor edi,edi push 0 push 0 push edi mov ecx,esi mov edx,19 call dword ptr ds:[0B81D378] int 3 M02_L18: xor edi,edi push 0 push 0 push edi mov ecx,esi mov edx,16 call dword ptr ds:[0B81D378] int 3 M02_L19: xor edi,edi push 0 push 0 push edi mov ecx,esi mov edx,19 call dword ptr ds:[0B81D378] int 3 M02_L20: xor edi,edi push 0 push 0 push edi mov ecx,esi mov edx,16 call dword ptr ds:[0B81D378] int 3 M02_L21: xor ecx,ecx push edx push 0 push ecx mov ecx,esi mov edx,0C call dword ptr ds:[0B81D378] int 3 M02_L22: call CORINFO_HELP_RNGCHKFAIL int 3 ; Total bytes of code 639 ``` ### Compare Jit Disasm ```assembly ; System.Text.Json.Tests.Perf_Get.GetBoolean() push ebp mov ebp,esp push ebx sub esp,0B8 vzeroupper vxorps xmm4,xmm4,xmm4 vmovdqu xmmword ptr [ebp-0BC],xmm4 vmovdqu xmmword ptr [ebp-0AC],xmm4 mov eax,0FFFFFF70 M00_L00: vmovdqu xmmword ptr [ebp+eax-0C],xmm4 vmovdqu xmmword ptr [ebp+eax+4],xmm4 vmovdqu xmmword ptr [ebp+eax+14],xmm4 add eax,30 jne short M00_L00 mov [ebp-0C],eax mov [ebp-8],eax xor ebx,ebx mov ecx,0AAF46D0 mov edx,233 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov ecx,ds:[6D545D0] test ecx,ecx je near ptr M00_L02 lea edx,[ecx+8] mov eax,[ecx+4] M00_L01: xor ecx,ecx mov [ebp-0A4],ecx mov [ebp-0A0],ecx vxorps xmm0,xmm0,xmm0 vmovdqu xmmword ptr [ebp-9C],xmm0 push eax push edx push dword ptr [ebp-90] push dword ptr [ebp-94] push dword ptr [ebp-98] push dword ptr [ebp-9C] push dword ptr [ebp-0A0] push dword ptr [ebp-0A4] push dword ptr [ebp-0A8] push dword ptr [ebp-0AC] push dword ptr [ebp-0B0] push dword ptr [ebp-0B4] push dword ptr [ebp-0B8] push dword ptr [ebp-0BC] lea ecx,[ebp-8C] mov edx,1 call dword ptr ds:[0B0D71F8]; System.Text.Json.Utf8JsonReader..ctor(System.ReadOnlySpan`1, Boolean, System.Text.Json.JsonReaderState) cmp byte ptr [ebp-61],0 jne short M00_L03 lea ecx,[ebp-8C] call dword ptr ds:[0B0D7408]; System.Text.Json.Utf8JsonReader.ReadSingleSegment() jmp short M00_L04 M00_L02: xor edx,edx xor eax,eax jmp near ptr M00_L01 M00_L03: lea ecx,[ebp-8C] call dword ptr ds:[0B0D77B0] M00_L04: movzx eax,al test eax,eax jne short M00_L05 cmp byte ptr [ebp-68],0 je short M00_L05 cmp byte ptr [ebp-64],0 je short M00_L10 M00_L05: xor eax,eax M00_L06: movzx ecx,byte ptr [ebp-64] cmp ecx,9 jne short M00_L07 mov edx,1 jmp short M00_L08 M00_L07: cmp ecx,0A jne short M00_L09 xor edx,edx M00_L08: xor edx,ebx movzx ebx,dl inc eax cmp eax,64 jl short M00_L06 mov eax,ebx lea esp,[ebp-4] pop ebx pop ebp ret M00_L09: movzx ecx,byte ptr [ebp-64] call dword ptr ds:[0B0D97E0] int 3 M00_L10: xor ecx,ecx push 0 push 0 push ecx lea ecx,[ebp-8C] mov edx,20 call dword ptr ds:[0B0D98E8] int 3 ; Total bytes of code 361 ``` ```assembly ; System.Text.Json.Utf8JsonReader..ctor(System.ReadOnlySpan`1, Boolean, System.Text.Json.JsonReaderState) push ebp mov ebp,esp push edi push esi sub esp,10 vzeroupper xor eax,eax mov [ebp-18],eax mov [ebp-14],eax mov eax,ecx lea edi,[eax+30] lea esi,[ebp+38] call CORINFO_HELP_ASSIGN_BYREF movsd mov [eax+24],dl mov byte ptr [eax+25],0 mov ecx,eax mov edx,[ebp+8] mov [ecx],edx mov edx,[ebp+0C] mov [ecx+4],edx lea ecx,[eax+8] mov edx,[ebp+10] mov [ecx],edx mov edx,[ebp+14] mov [ecx+4],edx movzx ecx,byte ptr [ebp+18] mov [eax+26],cl movzx ecx,byte ptr [ebp+19] mov [eax+27],cl movzx ecx,byte ptr [ebp+1A] mov [eax+2E],cl movzx ecx,byte ptr [ebp+1B] mov [eax+2C],cl movzx ecx,byte ptr [ebp+1C] mov [eax+28],cl movzx ecx,byte ptr [ebp+1D] mov [eax+29],cl mov ecx,[ebp+20] mov [eax+38],ecx mov ecx,[ebp+24] mov [eax+3C],ecx cmp dword ptr [eax+38],0 jne short M01_L00 mov dword ptr [eax+38],40 M01_L00: lea edi,[eax+40] lea esi,[ebp+28] movsd movsd call CORINFO_HELP_ASSIGN_BYREF movsd xor ecx,ecx mov [eax+20],ecx lea ecx,[eax+18] xor edx,edx mov [ecx],edx mov [ecx+4],edx lea ecx,[eax+10] mov [ecx],edx mov [ecx+4],edx movzx ecx,byte ptr [eax+24] mov [eax+2A],cl mov byte ptr [eax+2B],0 mov [eax+70],edx mov [eax+74],edx mov [eax+58],edx mov [eax+5C],edx mov [eax+50],edx mov [eax+54],edx vxorps xmm0,xmm0,xmm0 vmovq qword ptr [eax+60],xmm0 vmovq qword ptr [eax+68],xmm0 mov byte ptr [eax+2D],0 mov esi,ds:[6D51FF8] add esi,4 lea edi,[ebp-18] mov ecx,4 rep movsd lea edi,[eax+78] lea esi,[ebp-18] call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF movsd movsd lea esp,[ebp-8] pop esi pop edi pop ebp ret 38 ; Total bytes of code 264 ``` ```assembly ; System.Text.Json.Utf8JsonReader.ReadSingleSegment() push ebp mov ebp,esp push edi push esi push ebx sub esp,0C mov esi,ecx xor ebx,ebx xor ecx,ecx mov [esi+70],ecx mov [esi+74],ecx mov byte ptr [esi+2E],0 mov ecx,[esi+20] mov eax,ecx sar eax,1F cmp ecx,[esi+34] sbb eax,0 jl short M02_L02 cmp byte ptr [esi+27],0 je near ptr M02_L15 cmp byte ptr [esi+24],0 je near ptr M02_L15 cmp byte ptr [esi+2B],0 je short M02_L00 movzx ecx,byte ptr [esi+2A] test ecx,ecx je near ptr M02_L15 M02_L00: cmp dword ptr [esi+4C],0 jne near ptr M02_L17 cmp byte ptr [esi+3C],2 jne short M02_L01 movzx ecx,byte ptr [esi+28] cmp ecx,6 je near ptr M02_L15 M02_L01: movzx ecx,byte ptr [esi+28] cmp ecx,4 je near ptr M02_L15 cmp ecx,2 jne near ptr M02_L18 jmp near ptr M02_L15 M02_L02: mov ecx,[esi+20] lea eax,[esi+30] cmp ecx,[eax+4] jae near ptr M02_L22 mov eax,[eax] movzx edx,byte ptr [eax+ecx] cmp edx,20 jg near ptr M02_L06 mov ecx,esi call dword ptr ds:[0B0D7468] mov ecx,[esi+20] mov edx,ecx mov eax,edx sar eax,1F cmp edx,[esi+34] sbb eax,0 jl short M02_L05 cmp byte ptr [esi+27],0 je near ptr M02_L15 cmp byte ptr [esi+24],0 je near ptr M02_L15 cmp byte ptr [esi+2B],0 je short M02_L03 movzx ecx,byte ptr [esi+2A] test ecx,ecx je near ptr M02_L15 M02_L03: cmp dword ptr [esi+4C],0 jne near ptr M02_L19 cmp byte ptr [esi+3C],2 jne short M02_L04 movzx ecx,byte ptr [esi+28] cmp ecx,6 je near ptr M02_L15 M02_L04: movzx ecx,byte ptr [esi+28] cmp ecx,4 je near ptr M02_L15 cmp ecx,2 jne near ptr M02_L20 jmp near ptr M02_L15 M02_L05: lea edx,[esi+30] cmp ecx,[edx+4] jae near ptr M02_L22 mov edx,[edx] movzx edx,byte ptr [edx+ecx] M02_L06: mov ecx,[esi+20] mov eax,ecx sar eax,1F lea ebx,[esi+18] mov [ebx],ecx mov [ebx+4],eax movzx ebx,byte ptr [esi+28] test ebx,ebx je near ptr M02_L16 cmp edx,2F jne short M02_L08 M02_L07: mov ecx,esi call dword ptr ds:[0B0D75E8] mov ebx,eax jmp near ptr M02_L15 M02_L08: cmp ebx,1 jne short M02_L11 cmp edx,7D jne short M02_L09 mov ecx,esi call dword ptr ds:[0B0D73A8] jmp near ptr M02_L14 M02_L09: cmp edx,22 jne near ptr M02_L21 mov ebx,[esi+20] lea ecx,[esi+8] mov edi,[ecx] mov eax,[ecx+4] mov [ebp-10],eax mov ecx,esi mov edx,[ecx] mov ecx,[ecx+4] mov [ebp-14],edx mov [ebp-18],ecx mov ecx,esi call dword ptr ds:[0B0D74F8] test eax,eax jne short M02_L10 mov [esi+20],ebx mov byte ptr [esi+28],1 lea ecx,[esi+8] mov [ecx],edi mov edi,[ebp-10] mov [ecx+4],edi mov edi,[ebp-14] mov [esi],edi mov edi,[ebp-18] mov [esi+4],edi mov ebx,eax jmp short M02_L15 M02_L10: mov ebx,eax jmp short M02_L15 M02_L11: cmp ebx,3 jne short M02_L13 cmp edx,5D jne short M02_L12 mov ecx,esi call dword ptr ds:[0B0D73D8] jmp short M02_L14 M02_L12: mov ecx,esi call dword ptr ds:[0B0D7480]; System.Text.Json.Utf8JsonReader.ConsumeValue(Byte) mov ebx,eax jmp short M02_L15 M02_L13: cmp ebx,5 jne near ptr M02_L07 jmp short M02_L12 M02_L14: mov ebx,1 M02_L15: mov eax,ebx lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret M02_L16: mov ecx,esi call dword ptr ds:[0B0D7450]; System.Text.Json.Utf8JsonReader.ReadFirstToken(Byte) mov ebx,eax jmp short M02_L15 M02_L17: xor edi,edi push 0 push 0 push edi mov ecx,esi mov edx,19 call dword ptr ds:[0B0D98E8] int 3 M02_L18: xor edi,edi push 0 push 0 push edi mov ecx,esi mov edx,16 call dword ptr ds:[0B0D98E8] int 3 M02_L19: xor edi,edi push 0 push 0 push edi mov ecx,esi mov edx,19 call dword ptr ds:[0B0D98E8] int 3 M02_L20: xor edi,edi push 0 push 0 push edi mov ecx,esi mov edx,16 call dword ptr ds:[0B0D98E8] int 3 M02_L21: xor ecx,ecx push edx push 0 push ecx mov ecx,esi mov edx,0C call dword ptr ds:[0B0D98E8] int 3 M02_L22: call CORINFO_HELP_RNGCHKFAIL int 3 ; Total bytes of code 639 ``` ### 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 5a10aa6a3fa43d9d0e30e48ae22f2767a358af41
Compare 75f9609c5bb962d86afae1952536813a95b4a6d7
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
[Stack - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Collections.CtorFromCollectionNonGeneric(String).Stack(Size%3a%20512).html>) 6.74 μs 7.25 μs 1.08 0.01 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>.Stack(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 7.250333991635687 > 7.080931883343571. IsChangePoint: Marked as a change because one of 11/7/2022 4:10:19 PM, 11/18/2022 6:07:58 AM, 12/14/2022 12:26:48 AM, 12/23/2022 9:40:21 PM, 1/5/2023 11:35:29 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsRegressionStdDev: Marked as regression because -53.50892860414923 (T) = (0 -7320.296527979449) / Math.Sqrt((2645.3692469306156 / (30)) + (546.9031538804066 / (18))) is less than -2.0128955989180297 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (30) + (18) - 2, .025) and -0.086475084871126 = (6737.657061733503 - 7320.296527979449) / 6737.657061733503 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)
performanceautofiler[bot] commented 1 year ago

Run Information

Architecture x86
OS Windows 10.0.18362
Baseline 5a10aa6a3fa43d9d0e30e48ae22f2767a358af41
Compare 75f9609c5bb962d86afae1952536813a95b4a6d7
Diff Diff

Regressions in System.Net.Http.Tests.SocketsHttpHandlerPerfTest

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[Get - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Net.Http.Tests.SocketsHttpHandlerPerfTest.Get(ssl%3a%20True%2c%20chunkedResponse%3a%20True%2c%20responseLength%3a%201).html>) 57.48 μs 77.11 μs 1.34 0.34 False Trace Trace

graph Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Net.Http.Tests.SocketsHttpHandlerPerfTest*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Net.Http.Tests.SocketsHttpHandlerPerfTest.Get(ssl: True, chunkedResponse: True, responseLength: 1) ```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 77.11331896551725 > 58.83967853658105. IsChangePoint: Marked as a change because one of 1/5/2023 11:35:29 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsRegressionStdDev: Marked as regression because -12.537765144000156 (T) = (0 -71111.17111769153) / Math.Sqrt((3111767.654455044 / (30)) + (25402524.79053435 / (18))) is less than -2.0128955989180297 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (30) + (18) - 2, .025) and -0.2771600568902773 = (55679.13804855298 - 71111.17111769153) / 55679.13804855298 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. ```### Baseline Jit Disasm ```assembly ; System.Net.Http.Tests.SocketsHttpHandlerPerfTest.Get() push ebp mov ebp,esp sub esp,20 vxorps xmm4,xmm4,xmm4 vmovdqu xmmword ptr [ebp-20],xmm4 vmovdqu xmmword ptr [ebp-10],xmm4 mov [ebp-20],ecx mov dword ptr [ebp-14],0FFFFFFFF lea ecx,[ebp-20] call dword ptr ds:[0BD85EA0]; System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[[System.Net.Http.Tests.SocketsHttpHandlerPerfTest+d__10, MicroBenchmarks]](d__10 ByRef) mov eax,[ebp-10] test eax,eax je short M00_L01 M00_L00: mov esp,ebp pop ebp ret M00_L01: lea ecx,[ebp-10] call dword ptr ds:[0B561EB8] jmp short M00_L00 ; Total bytes of code 61 ``` ```assembly ; System.Threading.Tasks.Task.GetAwaiter() mov eax,ecx ret ; Total bytes of code 3 ``` ```assembly ; System.Runtime.CompilerServices.TaskAwaiter.GetResult() mov ecx,[ecx] mov eax,[ecx+1C] and eax,11000000 cmp eax,1000000 jne short M02_L01 M02_L00: ret M02_L01: call dword ptr ds:[0B563168]; System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task) jmp short M02_L00 ; Total bytes of code 26 ``` ```assembly ; System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[[System.Net.Http.Tests.SocketsHttpHandlerPerfTest+d__10, MicroBenchmarks]](d__10 ByRef) push ebp mov ebp,esp push edi push esi push ebx sub esp,20 xor eax,eax mov [ebp-18],eax mov esi,ecx mov ebx,esi cmp [ebx],bl mov ecx,0AD4D68 mov edx,2F5 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov eax,[eax+0C] test eax,eax je short M03_L04 M03_L00: mov edi,eax mov [ebp-24],edi mov ecx,[eax+4] mov [ebp-28],ecx mov eax,[eax+8] mov [ebp-2C],eax mov ecx,esi call dword ptr ds:[0BD85BE8]; System.Net.Http.Tests.SocketsHttpHandlerPerfTest+d__10.MoveNext() mov eax,[ebp-2C] cmp eax,[edi+8] je short M03_L01 lea edx,[edi+8] call CORINFO_HELP_ASSIGN_REF_EAX M03_L01: mov ecx,[edi+4] mov edx,[ebp-28] cmp edx,ecx je short M03_L09 lea edx,[edi+4] mov eax,[ebp-28] call CORINFO_HELP_ASSIGN_REF_EAX test ecx,ecx je short M03_L02 cmp dword ptr [ecx+8],0 jne short M03_L03 M03_L02: test eax,eax je short M03_L09 cmp dword ptr [eax+8],0 je short M03_L09 M03_L03: mov edx,eax call dword ptr ds:[0B1BBA20] jmp short M03_L09 M03_L04: call dword ptr ds:[4A57210] jmp short M03_L00 mov eax,[ebp-2C] mov edi,[ebp-24] cmp eax,[edi+8] je short M03_L05 lea edx,[edi+8] call CORINFO_HELP_ASSIGN_REF_EAX M03_L05: mov ecx,[edi+4] mov edx,[ebp-28] cmp edx,ecx je short M03_L08 lea edx,[edi+4] mov eax,[ebp-28] call CORINFO_HELP_ASSIGN_REF_EAX test ecx,ecx je short M03_L06 cmp dword ptr [ecx+8],0 jne short M03_L07 M03_L06: test eax,eax je short M03_L08 cmp dword ptr [eax+8],0 je short M03_L08 M03_L07: mov edx,eax call dword ptr ds:[0B1BBA20] M03_L08: pop eax jmp eax M03_L09: lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret ; Total bytes of code 221 ``` ```assembly ; System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task) push ebp mov ebp,esp push esi mov esi,ecx test dword ptr [esi+1C],1600000 jne short M04_L00 push 0 mov ecx,esi mov edx,0FFFFFFFF call dword ptr ds:[0A49F4E0]; System.Threading.Tasks.Task.InternalWaitCore(Int32, System.Threading.CancellationToken) M04_L00: mov ecx,esi call dword ptr ds:[0A49DB28]; System.Threading.Tasks.Task.NotifyDebuggerOfWaitCompletionIfNecessary() mov ecx,[esi+1C] and ecx,1600000 cmp ecx,1000000 je short M04_L01 mov ecx,esi call dword ptr ds:[0B563180]; System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task) M04_L01: pop esi pop ebp ret ; Total bytes of code 66 ``` ### Compare Jit Disasm ```assembly ; System.Net.Http.Tests.SocketsHttpHandlerPerfTest.Get() push ebp mov ebp,esp sub esp,20 vxorps xmm4,xmm4,xmm4 vmovdqu xmmword ptr [ebp-20],xmm4 vmovdqu xmmword ptr [ebp-10],xmm4 mov [ebp-20],ecx mov dword ptr [ebp-14],0FFFFFFFF lea ecx,[ebp-20] call dword ptr ds:[0BEC1B70]; System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[[System.Net.Http.Tests.SocketsHttpHandlerPerfTest+d__10, MicroBenchmarks]](d__10 ByRef) mov eax,[ebp-10] test eax,eax je short M00_L01 M00_L00: mov esp,ebp pop ebp ret M00_L01: lea ecx,[ebp-10] call dword ptr ds:[0B68D7E0] jmp short M00_L00 ; Total bytes of code 61 ``` ```assembly ; System.Threading.Tasks.Task.GetAwaiter() mov eax,ecx ret ; Total bytes of code 3 ``` ```assembly ; System.Runtime.CompilerServices.TaskAwaiter.GetResult() mov ecx,[ecx] mov eax,[ecx+1C] and eax,11000000 cmp eax,1000000 jne short M02_L01 M02_L00: ret M02_L01: call dword ptr ds:[0B68DA68]; System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task) jmp short M02_L00 ; Total bytes of code 26 ``` ```assembly ; System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[[System.Net.Http.Tests.SocketsHttpHandlerPerfTest+d__10, MicroBenchmarks]](d__10 ByRef) push ebp mov ebp,esp push edi push esi push ebx sub esp,20 xor eax,eax mov [ebp-18],eax mov esi,ecx mov ebx,esi cmp [ebx],bl mov ecx,4A24DB8 mov edx,2FD call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov eax,[eax+0C] test eax,eax je short M03_L04 M03_L00: mov edi,eax mov [ebp-24],edi mov ecx,[eax+4] mov [ebp-28],ecx mov eax,[eax+8] mov [ebp-2C],eax mov ecx,esi call dword ptr ds:[0BEC18B8]; System.Net.Http.Tests.SocketsHttpHandlerPerfTest+d__10.MoveNext() mov eax,[ebp-2C] cmp eax,[edi+8] je short M03_L01 lea edx,[edi+8] call CORINFO_HELP_ASSIGN_REF_EAX M03_L01: mov ecx,[edi+4] mov edx,[ebp-28] cmp edx,ecx je short M03_L09 lea edx,[edi+4] mov eax,[ebp-28] call CORINFO_HELP_ASSIGN_REF_EAX test ecx,ecx je short M03_L02 cmp dword ptr [ecx+8],0 jne short M03_L03 M03_L02: test eax,eax je short M03_L09 cmp dword ptr [eax+8],0 je short M03_L09 M03_L03: mov edx,eax call dword ptr ds:[0B6871C8] jmp short M03_L09 M03_L04: call dword ptr ds:[7F17210] jmp short M03_L00 mov eax,[ebp-2C] mov edi,[ebp-24] cmp eax,[edi+8] je short M03_L05 lea edx,[edi+8] call CORINFO_HELP_ASSIGN_REF_EAX M03_L05: mov ecx,[edi+4] mov edx,[ebp-28] cmp edx,ecx je short M03_L08 lea edx,[edi+4] mov eax,[ebp-28] call CORINFO_HELP_ASSIGN_REF_EAX test ecx,ecx je short M03_L06 cmp dword ptr [ecx+8],0 jne short M03_L07 M03_L06: test eax,eax je short M03_L08 cmp dword ptr [eax+8],0 je short M03_L08 M03_L07: mov edx,eax call dword ptr ds:[0B6871C8] M03_L08: pop eax jmp eax M03_L09: lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret ; Total bytes of code 221 ``` ```assembly ; System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task) push ebp mov ebp,esp push esi mov esi,ecx test dword ptr [esi+1C],1600000 jne short M04_L00 push 0 mov ecx,esi mov edx,0FFFFFFFF call dword ptr ds:[0A6254E0]; System.Threading.Tasks.Task.InternalWaitCore(Int32, System.Threading.CancellationToken) M04_L00: mov ecx,esi call dword ptr ds:[0A623B28]; System.Threading.Tasks.Task.NotifyDebuggerOfWaitCompletionIfNecessary() mov ecx,[esi+1C] and ecx,1600000 cmp ecx,1000000 je short M04_L01 mov ecx,esi call dword ptr ds:[0B68DA80]; System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task) M04_L01: pop esi pop ebp ret ; Total bytes of code 66 ``` ### 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 5a10aa6a3fa43d9d0e30e48ae22f2767a358af41
Compare 75f9609c5bb962d86afae1952536813a95b4a6d7
Diff Diff

Regressions in System.Collections.AddGivenSize<String>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[Stack - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Collections.AddGivenSize(String).Stack(Size%3a%20512).html>) 2.41 μs 2.57 μs 1.07 0.04 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.AddGivenSize&lt;String&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Collections.AddGivenSize<String>.Stack(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.5707405877302345 > 2.528331809015305. IsChangePoint: Marked as a change because one of 10/26/2022 7:11:30 AM, 11/2/2022 4:14:20 AM, 11/18/2022 7:31:41 AM, 12/23/2022 9:40:21 PM, 1/5/2023 11:35:29 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsRegressionStdDev: Marked as regression because -77.52663155973717 (T) = (0 -2556.2051162805237) / Math.Sqrt((32.42793761770166 / (30)) + (46.749967650536576 / (18))) is less than -2.0128955989180297 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (30) + (18) - 2, .025) and -0.06175835498814868 = (2407.5206041670904 - 2556.2051162805237) / 2407.5206041670904 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 x86
OS Windows 10.0.18362
Baseline 5a10aa6a3fa43d9d0e30e48ae22f2767a358af41
Compare 75f9609c5bb962d86afae1952536813a95b4a6d7
Diff Diff

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

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[Dictionary - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Collections.TryGetValueFalse(Int32%2c%20Int32).Dictionary(Size%3a%20512).html>) 6.43 μs 7.07 μs 1.10 0.06 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.TryGetValueFalse&lt;Int32, Int32&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Collections.TryGetValueFalse<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 7.066224385245902 > 6.756781195293147. IsChangePoint: Marked as a change because one of 10/25/2022 12:27:43 PM, 11/2/2022 4:14:20 AM, 12/6/2022 2:12:43 AM, 12/10/2022 11:25:25 PM, 1/5/2023 11:35:29 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsRegressionStdDev: Marked as regression because -12.609919455610783 (T) = (0 -7181.000885585743) / Math.Sqrt((97785.92702496333 / (30)) + (46743.54336379825 / (18))) is less than -2.0128955989180297 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (30) + (18) - 2, .025) and -0.15524457352023655 = (6216.000533725903 - 7181.000885585743) / 6216.000533725903 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 x86
OS Windows 10.0.18362
Baseline 5a10aa6a3fa43d9d0e30e48ae22f2767a358af41
Compare 75f9609c5bb962d86afae1952536813a95b4a6d7
Diff Diff

Regressions in System.Collections.IterateForEach<Int32>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[IEnumerable - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Collections.IterateForEach(Int32).IEnumerable(Size%3a%20512).html>) 2.26 μs 2.42 μs 1.07 0.04 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.IterateForEach&lt;Int32&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Collections.IterateForEach<Int32>.IEnumerable(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.415760827532869 > 2.373167819149059. IsChangePoint: Marked as a change because one of 10/25/2022 2:34:53 PM, 11/2/2022 4:14:20 AM, 11/22/2022 2:20:42 AM, 12/14/2022 5:20:21 PM, 1/5/2023 11:35:29 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsRegressionStdDev: Marked as regression because -109.26156489842923 (T) = (0 -2418.648451653144) / Math.Sqrt((20.702482432314675 / (30)) + (23.700126296201915 / (18))) is less than -2.0128955989180297 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (30) + (18) - 2, .025) and -0.06836968111416962 = (2263.8684852333236 - 2418.648451653144) / 2263.8684852333236 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)