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: 16 Regressions on 1/31/2023 8:24:06 AM #12615

Open performanceautofiler[bot] opened 1 year ago

performanceautofiler[bot] commented 1 year ago

Run Information

Architecture x86
OS Windows 10.0.18362
Baseline b5e79f56d1ed06dbf6765b29c021726ff4195e91
Compare 7c4b59ccf2cfc74c54e6c8922ab80cda20c3a55e
Diff Diff

Regressions in PerfLabTests.LowLevelPerf

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[ClassVirtualMethod - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/PerfLabTests.LowLevelPerf.ClassVirtualMethod.html>) 155.95 μs 187.89 μs 1.20 0.02 False Trace Trace
[GenericClassGenericStaticField - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/PerfLabTests.LowLevelPerf.GenericClassGenericStaticField.html>) 31.20 μs 62.37 μs 2.00 0.02 False Trace Trace

graph graph Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'PerfLabTests.LowLevelPerf*'
### Payloads [Baseline]() [Compare]() ### Histogram #### PerfLabTests.LowLevelPerf.ClassVirtualMethod ```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 187.89332837301586 > 163.72515168031225. IsChangePoint: Marked as a change because one of 12/6/2022 2:12:43 AM, 12/12/2022 5:25:39 PM, 12/20/2022 1:34:12 PM, 1/5/2023 11:35:29 PM, 1/11/2023 2:37:52 AM, 1/20/2023 8:02:54 AM, 1/30/2023 9:42:46 PM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsRegressionStdDev: Marked as regression because -387.90095210293276 (T) = (0 -187229.72609576682) / Math.Sqrt((80692.82753304555 / (19)) + (88566.8538172033 / (40))) is less than -2.0024654592901125 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (19) + (40) - 2, .025) and -0.1998081371125001 = (156049.72187166556 - 187229.72609576682) / 156049.72187166556 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 ; PerfLabTests.LowLevelPerf.ClassVirtualMethod() push ebp mov ebp,esp push edi push esi push ebx mov esi,ds:[7564180] xor eax,eax xor edi,edi cmp dword ptr ds:[0B006178],0 jle short M00_L01 mov ecx,[esi] mov ebx,[ecx+28] M00_L00: mov ecx,esi call dword ptr [ebx+14] inc edi cmp edi,ds:[0B006178] jl short M00_L00 M00_L01: pop ebx pop esi pop edi pop ebp ret ; Total bytes of code 49 ``` ### Compare Jit Disasm ```assembly ; PerfLabTests.LowLevelPerf.ClassVirtualMethod() push ebp mov ebp,esp push edi push esi push ebx mov esi,ds:[78D4180] xor eax,eax xor edi,edi cmp dword ptr ds:[0B396558],0 jle short M00_L01 mov ecx,[esi] mov ebx,[ecx+28] M00_L00: mov ecx,esi call dword ptr [ebx+14] inc edi cmp edi,ds:[0B396558] jl short M00_L00 M00_L01: pop ebx pop esi pop edi pop ebp ret ; Total bytes of code 49 ``` #### PerfLabTests.LowLevelPerf.GenericClassGenericStaticField ```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 62.37096996628868 > 32.75871387033625. IsChangePoint: Marked as a change because one of 12/6/2022 2:12:43 AM, 12/20/2022 1:34:12 PM, 1/3/2023 6:29:42 AM, 1/5/2023 11:35:29 PM, 1/13/2023 4:37:08 PM, 1/18/2023 6:24:13 PM, 1/30/2023 9:42:46 PM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsRegressionStdDev: Marked as regression because -1089.957452757464 (T) = (0 -62450.55208093908) / Math.Sqrt((8639.659236642465 / (19)) + (14631.460583390626 / (40))) is less than -2.0024654592901125 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (19) + (40) - 2, .025) and -0.9997420982403374 = (31229.30308657907 - 62450.55208093908) / 31229.30308657907 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 ; PerfLabTests.LowLevelPerf.GenericClassGenericStaticField() push ebp mov ebp,esp push esi xor esi,esi mov ecx,0B315BA0 mov edx,82 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov eax,ds:[0B316178] test eax,eax jle short M00_L01 M00_L00: mov dword ptr ds:[0BBDB698],1 inc esi cmp esi,eax jl short M00_L00 M00_L01: pop esi pop ebp ret ; Total bytes of code 48 ``` ### Compare Jit Disasm ```assembly ; PerfLabTests.LowLevelPerf.GenericClassGenericStaticField() push ebp mov ebp,esp push esi xor esi,esi mov ecx,0B325F80 mov edx,82 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov eax,ds:[0B326558] test eax,eax jle short M00_L01 M00_L00: mov dword ptr ds:[0BBEBADC],1 inc esi cmp esi,eax jl short M00_L00 M00_L01: pop esi pop ebp ret ; Total bytes of code 48 ``` ### 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 b5e79f56d1ed06dbf6765b29c021726ff4195e91
Compare 7c4b59ccf2cfc74c54e6c8922ab80cda20c3a55e
Diff Diff

Regressions in System.Memory.Span<Int32>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[IndexOfAnyFourValues - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Memory.Span(Int32).IndexOfAnyFourValues(Size%3a%20512).html>) 504.05 ns 533.08 ns 1.06 0.04 False
[IndexOfAnyFiveValues - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Memory.Span(Int32).IndexOfAnyFiveValues(Size%3a%2033).html>) 40.27 ns 52.68 ns 1.31 0.07 False
[IndexOfAnyFiveValues - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Memory.Span(Int32).IndexOfAnyFiveValues(Size%3a%20512).html>) 599.14 ns 805.56 ns 1.34 0.04 False

graph graph graph Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Memory.Span&lt;Int32&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Memory.Span<Int32>.IndexOfAnyFourValues(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 533.0815731199406 > 528.2893823871124. IsChangePoint: Marked as a change because one of 12/7/2022 8:33:47 PM, 12/21/2022 9:23:17 AM, 1/3/2023 6:29:42 AM, 1/13/2023 4:37:08 PM, 1/22/2023 11:22:03 PM, 1/30/2023 9:42:46 PM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsRegressionStdDev: Marked as regression because -47.04656536886206 (T) = (0 -536.2416092053636) / Math.Sqrt((8.490801100631423 / (19)) + (3.756375716442493 / (40))) is less than -2.0024654592901125 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (19) + (40) - 2, .025) and -0.06896804794926448 = (501.644188742688 - 536.2416092053636) / 501.644188742688 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.Memory.Span<Int32>.IndexOfAnyFiveValues(Size: 33) ```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.67811923212363 > 42.82132750452052. IsChangePoint: Marked as a change because one of 12/7/2022 8:33:47 PM, 12/21/2022 9:23:17 AM, 1/3/2023 6:29:42 AM, 1/13/2023 4:37:08 PM, 1/22/2023 11:22:03 PM, 1/30/2023 9:42:46 PM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsRegressionStdDev: Marked as regression because -153.62241307557727 (T) = (0 -52.87391134570672) / Math.Sqrt((0.08992548195340605 / (19)) + (0.06376991755912363 / (40))) is less than -2.0024654592901125 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (19) + (40) - 2, .025) and -0.3005753370614263 = (40.65424726965239 - 52.87391134570672) / 40.65424726965239 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.Memory.Span<Int32>.IndexOfAnyFiveValues(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 805.5552755376343 > 630.256615449655. IsChangePoint: Marked as a change because one of 12/7/2022 8:33:47 PM, 12/21/2022 9:23:17 AM, 1/3/2023 6:29:42 AM, 1/13/2023 4:37:08 PM, 1/22/2023 11:22:03 PM, 1/30/2023 9:42:46 PM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsRegressionStdDev: Marked as regression because -120.74805786291684 (T) = (0 -789.7871269239992) / Math.Sqrt((3.5924913458068755 / (19)) + (92.0963174993544 / (40))) is less than -2.0024654592901125 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (19) + (40) - 2, .025) and -0.31808460876276146 = (599.1930424446302 - 789.7871269239992) / 599.1930424446302 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 b5e79f56d1ed06dbf6765b29c021726ff4195e91
Compare 7c4b59ccf2cfc74c54e6c8922ab80cda20c3a55e
Diff Diff

Regressions in System.Numerics.Tests.Perf_BitOperations

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[Log2_ulong - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_BitOperations.Log2_ulong.html>) 1.16 μs 1.43 μs 1.24 0.08 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.Numerics.Tests.Perf_BitOperations*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Numerics.Tests.Perf_BitOperations.Log2_ulong ```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 1.4302065475104868 > 1.2153063133085618. IsChangePoint: Marked as a change because one of 12/12/2022 5:25:39 PM, 12/14/2022 5:20:21 PM, 1/5/2023 11:35:29 PM, 1/15/2023 2:31:53 AM, 1/30/2023 9:42:46 PM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsRegressionStdDev: Marked as regression because -40.675828223551484 (T) = (0 -1485.9368983884358) / Math.Sqrt((3.273347687168065 / (19)) + (2593.005921857361 / (40))) is less than -2.0024654592901125 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (19) + (40) - 2, .025) and -0.2831876415187345 = (1158.0043715428358 - 1485.9368983884358) / 1158.0043715428358 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.Numerics.Tests.Perf_BitOperations.Log2_ulong() push ebp mov ebp,esp push edi push esi push ebx xor esi,esi mov ecx,0B265BA0 mov edx,1B2 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov eax,ds:[7754508] xor edx,edx mov ecx,[eax+4] test ecx,ecx jle short M00_L03 M00_L00: lea edi,[eax+edx*8+8] mov ebx,[edi] mov edi,[edi+4] or ebx,1 or edi,0 jne short M00_L01 or ebx,1 lzcnt ebx,ebx xor ebx,1F jmp short M00_L02 M00_L01: or edi,1 xor ebx,ebx lzcnt ebx,edi xor ebx,1F add ebx,20 M00_L02: add esi,ebx inc edx cmp ecx,edx jg short M00_L00 M00_L03: mov eax,esi pop ebx pop esi pop edi pop ebp ret ; Total bytes of code 95 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_BitOperations.Log2_ulong() push ebp mov ebp,esp push edi push esi push ebx xor esi,esi mov ecx,0A6F5F80 mov edx,1B2 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov eax,ds:[6C54508] xor edx,edx mov ecx,[eax+4] test ecx,ecx jle short M00_L03 M00_L00: lea edi,[eax+edx*8+8] mov ebx,[edi] mov edi,[edi+4] or ebx,1 or edi,0 jne short M00_L01 or ebx,1 lzcnt ebx,ebx xor ebx,1F jmp short M00_L02 M00_L01: or edi,1 xor ebx,ebx lzcnt ebx,edi xor ebx,1F add ebx,20 M00_L02: add esi,ebx inc edx cmp ecx,edx jg short M00_L00 M00_L03: mov eax,esi pop ebx pop esi pop edi pop ebp ret ; Total bytes of code 95 ``` ### 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 b5e79f56d1ed06dbf6765b29c021726ff4195e91
Compare 7c4b59ccf2cfc74c54e6c8922ab80cda20c3a55e
Diff Diff

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

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[BitwiseAndBenchmark - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Numerics.Tests.Perf_VectorOf(Int32).BitwiseAndBenchmark.html>) 0.00 ns 1.01 ns 3774.35 0.52 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;Int32&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Numerics.Tests.Perf_VectorOf<Int32>.BitwiseAndBenchmark ```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 1.0067338452766579 > 0.0003208780545380983. IsChangePoint: Marked as a change because one of 1/3/2023 6:29:42 AM, 1/5/2023 11:35:29 PM, 1/18/2023 6:24:13 PM, 1/22/2023 11:22:03 PM, 1/30/2023 9:42:46 PM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsRegressionStdDev: Marked as regression because -12.542092918712688 (T) = (0 -0.3856876811349601) / Math.Sqrt((0.005558254464895928 / (19)) + (0.02134790874896771 / (40))) is less than -2.0024654592901125 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (19) + (40) - 2, .025) and -14.32122536339744 = (0.025173422620384647 - 0.3856876811349601) / 0.025173422620384647 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 b5e79f56d1ed06dbf6765b29c021726ff4195e91
Compare 7c4b59ccf2cfc74c54e6c8922ab80cda20c3a55e
Diff Diff

Regressions in System.Collections.ContainsTrue<String>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[LinkedList - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Collections.ContainsTrue(String).LinkedList(Size%3a%20512).html>) 771.00 μs 813.75 μs 1.06 0.15 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.ContainsTrue&lt;String&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Collections.ContainsTrue<String>.LinkedList(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 813.7504111842104 > 809.1560312500001. IsChangePoint: Marked as a change because one of 12/1/2022 7:29:59 PM, 12/14/2022 12:26:48 AM, 1/12/2023 10:41:19 PM, 1/20/2023 8:02:54 AM, 1/30/2023 9:42:46 PM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsRegressionStdDev: Marked as regression because -31.694767227471765 (T) = (0 -814741.6003824666) / Math.Sqrt((2095078.543134592 / (19)) + (71493019.9143266 / (40))) is less than -2.0024654592901125 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (19) + (40) - 2, .025) and -0.05662249993323995 = (771081.0629472153 - 814741.6003824666) / 771081.0629472153 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 b5e79f56d1ed06dbf6765b29c021726ff4195e91
Compare 7c4b59ccf2cfc74c54e6c8922ab80cda20c3a55e
Diff Diff

Regressions in System.Collections.TryAddGiventSize<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.TryAddGiventSize(Int32).Dictionary(Count%3a%20512).html>) 7.85 μs 8.56 μs 1.09 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.TryAddGiventSize&lt;Int32&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Collections.TryAddGiventSize<Int32>.Dictionary(Count: 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 8.559377392017495 > 8.235018019921887. IsChangePoint: Marked as a change because one of 12/20/2022 1:34:12 PM, 12/21/2022 9:23:17 AM, 1/3/2023 6:29:42 AM, 1/11/2023 2:37:52 AM, 1/20/2023 8:02:54 AM, 1/30/2023 9:42:46 PM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsRegressionStdDev: Marked as regression because -108.11593669007533 (T) = (0 -8503.599983760207) / Math.Sqrt((357.3737951288743 / (19)) + (658.4153220039187 / (40))) is less than -2.0024654592901125 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (19) + (40) - 2, .025) and -0.08167385659368046 = (7861.519377512787 - 8503.599983760207) / 7861.519377512787 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 b5e79f56d1ed06dbf6765b29c021726ff4195e91
Compare 7c4b59ccf2cfc74c54e6c8922ab80cda20c3a55e
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
[ConcurrentBag - 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).ConcurrentBag(Size%3a%20512).html>) 2.12 μs 2.28 μs 1.07 0.03 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>.ConcurrentBag(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.275253967095015 > 2.2256239562641382. IsChangePoint: Marked as a change because one of 12/14/2022 12:26:48 AM, 12/21/2022 9:23:17 AM, 1/5/2023 11:35:29 PM, 1/13/2023 4:37:08 PM, 1/20/2023 8:02:54 AM, 1/30/2023 9:42:46 PM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsRegressionStdDev: Marked as regression because -85.1460373401621 (T) = (0 -2268.590101270863) / Math.Sqrt((48.7070994799904 / (19)) + (25.38336835695999 / (40))) is less than -2.0024654592901125 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (19) + (40) - 2, .025) and -0.07194986295040691 = (2116.321088961059 - 2268.590101270863) / 2116.321088961059 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 b5e79f56d1ed06dbf6765b29c021726ff4195e91
Compare 7c4b59ccf2cfc74c54e6c8922ab80cda20c3a55e
Diff Diff

Regressions in System.Collections.IterateForNonGeneric<Int32>

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.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Collections.IterateForNonGeneric(Int32).ArrayList(Size%3a%20512).html>) 1.60 μs 1.77 μ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.IterateForNonGeneric&lt;Int32&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Collections.IterateForNonGeneric<Int32>.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 1.7669188725450709 > 1.6819525419133872. IsChangePoint: Marked as a change because one of 12/6/2022 2:12:43 AM, 12/14/2022 12:26:48 AM, 12/20/2022 1:34:12 PM, 1/3/2023 6:29:42 AM, 1/13/2023 4:37:08 PM, 1/30/2023 9:42:46 PM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsRegressionStdDev: Marked as regression because -26.366360256265743 (T) = (0 -1761.2262012227025) / Math.Sqrt((687.0584391596698 / (19)) + (230.20108308201407 / (40))) is less than -2.0024654592901125 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (19) + (40) - 2, .025) and -0.10732476881296582 = (1590.5236212775303 - 1761.2262012227025) / 1590.5236212775303 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 b5e79f56d1ed06dbf6765b29c021726ff4195e91
Compare 7c4b59ccf2cfc74c54e6c8922ab80cda20c3a55e
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.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Text.Json.Tests.Perf_Get.GetBoolean.html>) 148.06 ns 167.78 ns 1.13 0.02 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.78014085837506 > 155.48599795544052. IsChangePoint: Marked as a change because one of 12/12/2022 5:25:39 PM, 12/14/2022 5:20:21 PM, 1/5/2023 11:35:29 PM, 1/18/2023 8:37:25 PM, 1/30/2023 9:42:46 PM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsRegressionStdDev: Marked as regression because -226.9268252525918 (T) = (0 -167.10178079612837) / Math.Sqrt((0.04249295579879628 / (19)) + (0.19009734036756123 / (40))) is less than -2.0024654592901125 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (19) + (40) - 2, .025) and -0.12806932263377016 = (148.13077303262352 - 167.10178079612837) / 148.13077303262352 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,0B1D5BA0 mov edx,233 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov ecx,ds:[76C45D0] 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:[0BABB6D8]; 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:[0BABB8E8]; 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:[0BABD1B0] 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:[0BABF270] int 3 M00_L10: xor ecx,ecx push 0 push 0 push ecx lea ecx,[ebp-8C] mov edx,20 call dword ptr ds:[0BABF378] 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:[76C1F54] 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:[0BABB948] 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:[0BABBAC8] 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:[0BABB888] 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:[0BABB9D8] 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:[0BABB8B8] jmp short M02_L14 M02_L12: mov ecx,esi call dword ptr ds:[0BABB960]; 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:[0BABB930]; 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:[0BABF378] int 3 M02_L18: xor edi,edi push 0 push 0 push edi mov ecx,esi mov edx,16 call dword ptr ds:[0BABF378] int 3 M02_L19: xor edi,edi push 0 push 0 push edi mov ecx,esi mov edx,19 call dword ptr ds:[0BABF378] int 3 M02_L20: xor edi,edi push 0 push 0 push edi mov ecx,esi mov edx,16 call dword ptr ds:[0BABF378] int 3 M02_L21: xor ecx,ecx push edx push 0 push ecx mov ecx,esi mov edx,0C call dword ptr ds:[0BABF378] 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,0B095F80 mov edx,233 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov ecx,ds:[75245D0] 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:[0B97B6D8]; 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:[0B97B8E8]; 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:[0B97D1B0] 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:[0B97F270] int 3 M00_L10: xor ecx,ecx push 0 push 0 push ecx lea ecx,[ebp-8C] mov edx,20 call dword ptr ds:[0B97F378] 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:[7521F54] 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:[0B97B948] 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:[0B97BAC8] 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:[0B97B888] 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:[0B97B9D8] 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:[0B97B8B8] jmp short M02_L14 M02_L12: mov ecx,esi call dword ptr ds:[0B97B960]; 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:[0B97B930]; 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:[0B97F378] int 3 M02_L18: xor edi,edi push 0 push 0 push edi mov ecx,esi mov edx,16 call dword ptr ds:[0B97F378] int 3 M02_L19: xor edi,edi push 0 push 0 push edi mov ecx,esi mov edx,19 call dword ptr ds:[0B97F378] int 3 M02_L20: xor edi,edi push 0 push 0 push edi mov ecx,esi mov edx,16 call dword ptr ds:[0B97F378] int 3 M02_L21: xor ecx,ecx push edx push 0 push ecx mov ecx,esi mov edx,0C call dword ptr ds:[0B97F378] 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 b5e79f56d1ed06dbf6765b29c021726ff4195e91
Compare 7c4b59ccf2cfc74c54e6c8922ab80cda20c3a55e
Diff Diff

Regressions in System.Collections.CtorFromCollection<Int32>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[ImmutableStack - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Collections.CtorFromCollection(Int32).ImmutableStack(Size%3a%20512).html>) 3.91 μs 4.35 μs 1.11 0.03 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.CtorFromCollection&lt;Int32&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Collections.CtorFromCollection<Int32>.ImmutableStack(Size: 512) ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsRegressionWindowed: Marked as regression because 4.349388455827766 > 4.110979922143453. IsChangePoint: Marked as a change because one of 11/22/2022 2:20:42 AM, 12/12/2022 5:25:39 PM, 12/14/2022 12:26:48 AM, 1/18/2023 8:37:25 PM, 1/20/2023 8:02:54 AM, 1/30/2023 9:42:46 PM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsRegressionStdDev: Marked as regression because -51.40181813879028 (T) = (0 -4389.254238523975) / Math.Sqrt((1236.6538888929288 / (19)) + (450.0323831965539 / (40))) is less than -2.0024654592901125 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (19) + (40) - 2, .025) and -0.11398189009845598 = (3940.1486483196272 - 4389.254238523975) / 3940.1486483196272 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 b5e79f56d1ed06dbf6765b29c021726ff4195e91
Compare 7c4b59ccf2cfc74c54e6c8922ab80cda20c3a55e
Diff Diff

Regressions in System.Collections.IterateFor<Int32>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[IList - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Collections.IterateFor(Int32).IList(Size%3a%20512).html>) 1.93 μs 2.09 μs 1.08 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.IterateFor&lt;Int32&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Collections.IterateFor<Int32>.IList(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.0861987942408846 > 2.0234062214966118. IsChangePoint: Marked as a change because one of 11/22/2022 2:20:42 AM, 12/6/2022 2:12:43 AM, 12/14/2022 12:26:48 AM, 1/30/2023 9:42:46 PM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsRegressionStdDev: Marked as regression because -154.1372033455017 (T) = (0 -2087.9726181417436) / Math.Sqrt((12.46359930891745 / (19)) + (16.2800650537328 / (40))) is less than -2.0024654592901125 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (19) + (40) - 2, .025) and -0.08238067827542934 = (1929.0557010575396 - 2087.9726181417436) / 1929.0557010575396 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 b5e79f56d1ed06dbf6765b29c021726ff4195e91
Compare 7c4b59ccf2cfc74c54e6c8922ab80cda20c3a55e
Diff Diff

Regressions in System.Collections.AddGivenSize<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.AddGivenSize(Int32).Dictionary(Size%3a%20512).html>) 7.88 μs 8.53 μs 1.08 0.01 False
[HashSet - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Collections.AddGivenSize(Int32).HashSet(Size%3a%20512).html>) 6.05 μs 6.68 μs 1.10 0.02 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.AddGivenSize&lt;Int32&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Collections.AddGivenSize<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 8.52661898274296 > 8.252279765040505. IsChangePoint: Marked as a change because one of 12/20/2022 1:34:12 PM, 12/21/2022 9:23:17 AM, 1/3/2023 6:29:42 AM, 1/11/2023 2:37:52 AM, 1/20/2023 8:02:54 AM, 1/30/2023 9:42:46 PM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsRegressionStdDev: Marked as regression because -96.50594480038856 (T) = (0 -8504.944677476387) / Math.Sqrt((552.8261341998915 / (19)) + (637.2133645166293 / (40))) is less than -2.0024654592901125 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (19) + (40) - 2, .025) and -0.0824158112602474 = (7857.372914364724 - 8504.944677476387) / 7857.372914364724 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.AddGivenSize<Int32>.HashSet(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.679339585982761 > 6.352431969513517. IsChangePoint: Marked as a change because one of 1/11/2023 2:37:52 AM, 1/18/2023 8:37:25 PM, 1/20/2023 8:02:54 AM, 1/30/2023 9:42:46 PM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsRegressionStdDev: Marked as regression because -125.76794504541166 (T) = (0 -6623.2893375490985) / Math.Sqrt((259.25814869093625 / (19)) + (267.1527659808987 / (40))) is less than -2.0024654592901125 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (19) + (40) - 2, .025) and -0.09361964071915017 = (6056.300646899235 - 6623.2893375490985) / 6056.300646899235 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)