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: 29 Regressions on 3/6/2023 11:36:59 AM #14026

Open performanceautofiler[bot] opened 1 year ago

performanceautofiler[bot] commented 1 year ago

Run Information

Architecture x86
OS Windows 10.0.18362
Baseline 6123cb00bbec8ae3500c970890f5b0efcf7950e8
Compare ffbcb8336ac67496b0565112f663f74fda6cac34
Diff Diff

Regressions in System.Linq.Tests.Perf_Enumerable

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[TakeLastHalf - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Linq.Tests.Perf_Enumerable.TakeLastHalf(input%3a%20List).html>) 731.09 ns 792.24 ns 1.08 0.09 False Trace Trace
[Zip - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Linq.Tests.Perf_Enumerable.Zip(input%3a%20IEnumerable).html>) 1.69 μs 1.81 μs 1.07 0.01 False Trace Trace
[Skip_One - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Linq.Tests.Perf_Enumerable.Skip_One(input%3a%20IEnumerable).html>) 1.02 μs 1.11 μs 1.09 0.02 False Trace Trace
[SkipHalfTakeHalf - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Linq.Tests.Perf_Enumerable.SkipHalfTakeHalf(input%3a%20IEnumerable).html>) 612.29 ns 726.52 ns 1.19 0.03 False
[Range - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Linq.Tests.Perf_Enumerable.Range.html>) 400.40 ns 430.49 ns 1.08 0.03 False
[ToArray - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Linq.Tests.Perf_Enumerable.ToArray(input%3a%20IEnumerable).html>) 760.18 ns 842.83 ns 1.11 0.03 False

graph graph graph graph graph graph Test Report

Repro

General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md

Payloads

Baseline Compare

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Linq.Tests.Perf_Enumerable*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Linq.Tests.Perf_Enumerable.TakeLastHalf(input: List) ```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 792.2360207439172 > 765.208855202714. IsChangePoint: Marked as a change because one of 1/13/2023 4:37:08 PM, 1/22/2023 11:22:03 PM, 1/27/2023 7:12:54 PM, 2/9/2023 4:10:34 PM, 3/6/2023 11:14:52 AM, 3/14/2023 10:43:28 AM falls between 3/5/2023 5:50:49 PM and 3/14/2023 10:43:28 AM. IsRegressionStdDev: Marked as regression because -26.360356621025275 (T) = (0 -790.685563870779) / Math.Sqrt((103.55121034321009 / (24)) + (62.584684831421626 / (36))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (36) - 2, .025) and -0.08935205692131105 = (725.831065216315 - 790.685563870779) / 725.831065216315 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.Linq.Tests.Perf_Enumerable.TakeLastHalf(System.Linq.Tests.LinqTestData) push ebp mov ebp,esp push edi push esi push ebx mov esi,ecx mov edi,[edx+4] test edi,edi je short M00_L00 mov ecx,offset MT_System.Linq.Enumerable+d__278`1[[System.Int32, System.Private.CoreLib]] call CORINFO_HELP_NEWSFAST mov ebx,eax mov dword ptr [ebx+14],0FFFFFFFE call CORINFO_HELP_GETCURRENTMANAGEDTHREADID mov [ebx+1C],eax lea edx,[ebx+8] call CORINFO_HELP_ASSIGN_REF_EDI mov byte ptr [ebx+35],1 mov dword ptr [ebx+24],32 mov byte ptr [ebx+37],1 xor edx,edx mov [ebx+2C],edx mov edx,[esi+4] mov ecx,ebx call dword ptr ds:[0B15DA80]; BenchmarkDotNet.Engines.ConsumerExtensions.Consume[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1, BenchmarkDotNet.Engines.Consumer) pop ebx pop esi pop edi pop ebp ret M00_L00: mov ecx,10 call dword ptr ds:[0A717E10] int 3 ; Total bytes of code 98 ``` ```assembly ; BenchmarkDotNet.Engines.ConsumerExtensions.Consume[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1, BenchmarkDotNet.Engines.Consumer) push ebp mov ebp,esp push esi sub esp,18 xor eax,eax mov [ebp-18],eax mov [ebp-14],eax mov [ebp-10],eax mov [ebp-0C],eax mov esi,edx call dword ptr ds:[2BC02AC] mov ecx,eax mov [ebp-1C],ecx call dword ptr ds:[2BC02B0] test eax,eax je short M01_L01 M01_L00: mov ecx,[ebp-1C] call dword ptr ds:[2BC02B4] mov [esi+24],eax mov ecx,[ebp-1C] call dword ptr ds:[2BC02B0] test eax,eax jne short M01_L00 M01_L01: mov ecx,[ebp-1C] call dword ptr ds:[2BC02B8] jmp short M01_L03 cmp dword ptr [ebp-1C],0 je short M01_L02 mov ecx,[ebp-1C] call dword ptr ds:[2BC02B8] M01_L02: pop eax jmp eax M01_L03: lea esp,[ebp-4] pop esi pop ebp ret ; Total bytes of code 104 ``` ### Compare Jit Disasm ```assembly ; System.Linq.Tests.Perf_Enumerable.TakeLastHalf(System.Linq.Tests.LinqTestData) push ebp mov ebp,esp push edi push esi push ebx mov esi,ecx mov edi,[edx+4] test edi,edi je short M00_L00 mov ecx,offset MT_System.Linq.Enumerable+d__278`1[[System.Int32, System.Private.CoreLib]] call CORINFO_HELP_NEWSFAST mov ebx,eax mov dword ptr [ebx+14],0FFFFFFFE call CORINFO_HELP_GETCURRENTMANAGEDTHREADID mov [ebx+1C],eax lea edx,[ebx+8] call CORINFO_HELP_ASSIGN_REF_EDI mov byte ptr [ebx+35],1 mov dword ptr [ebx+24],32 mov byte ptr [ebx+37],1 xor edx,edx mov [ebx+2C],edx mov edx,[esi+4] mov ecx,ebx call dword ptr ds:[0B85DA80]; BenchmarkDotNet.Engines.ConsumerExtensions.Consume[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1, BenchmarkDotNet.Engines.Consumer) pop ebx pop esi pop edi pop ebp ret M00_L00: mov ecx,10 call dword ptr ds:[0AE45E10] int 3 ; Total bytes of code 98 ``` ```assembly ; BenchmarkDotNet.Engines.ConsumerExtensions.Consume[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1, BenchmarkDotNet.Engines.Consumer) push ebp mov ebp,esp push esi sub esp,18 xor eax,eax mov [ebp-18],eax mov [ebp-14],eax mov [ebp-10],eax mov [ebp-0C],eax mov esi,edx call dword ptr ds:[37C02A8] mov ecx,eax mov [ebp-1C],ecx call dword ptr ds:[37C02AC] test eax,eax je short M01_L01 M01_L00: mov ecx,[ebp-1C] call dword ptr ds:[37C02B0] mov [esi+24],eax mov ecx,[ebp-1C] call dword ptr ds:[37C02AC] test eax,eax jne short M01_L00 M01_L01: mov ecx,[ebp-1C] call dword ptr ds:[37C02B4] jmp short M01_L03 cmp dword ptr [ebp-1C],0 je short M01_L02 mov ecx,[ebp-1C] call dword ptr ds:[37C02B4] M01_L02: pop eax jmp eax M01_L03: lea esp,[ebp-4] pop esi pop ebp ret ; Total bytes of code 104 ``` #### System.Linq.Tests.Perf_Enumerable.Zip(input: IEnumerable) ```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.8144533066015807 > 1.7731944998296225. IsChangePoint: Marked as a change because one of 1/3/2023 6:29:42 AM, 1/5/2023 11:35:29 PM, 2/13/2023 3:18:56 PM, 2/23/2023 8:54:44 PM, 3/6/2023 11:14:52 AM, 3/14/2023 10:43:28 AM falls between 3/5/2023 5:50:49 PM and 3/14/2023 10:43:28 AM. IsRegressionStdDev: Marked as regression because -163.6283299627419 (T) = (0 -1815.1821758656656) / Math.Sqrt((5.694047221648471 / (24)) + (12.452633302782363 / (36))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (36) - 2, .025) and -0.07392759302419352 = (1690.2277096299294 - 1815.1821758656656) / 1690.2277096299294 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.Linq.Tests.Perf_Enumerable.Zip(System.Linq.Tests.LinqTestData) push ebp mov ebp,esp push edi push esi push ebx sub esp,8 mov esi,ecx mov edi,[edx+4] mov ebx,edi mov eax,ds:[7824944] test eax,eax jne short M00_L00 mov ecx,offset MT_System.Func`3[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]] call CORINFO_HELP_NEWSFAST mov ecx,ds:[78248DC] test ecx,ecx je short M00_L01 lea edx,[eax+4] call CORINFO_HELP_ASSIGN_REF_ECX mov dword ptr [eax+0C],0BB4CC90 mov edx,7824944 call CORINFO_HELP_ASSIGN_REF_EAX M00_L00: test ebx,ebx je short M00_L02 mov [ebp-10],eax test eax,eax je short M00_L03 mov ecx,offset MT_System.Linq.Enumerable+d__313`3[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]] call CORINFO_HELP_NEWSFAST mov [ebp-14],eax mov dword ptr [eax+24],0FFFFFFFE call CORINFO_HELP_GETCURRENTMANAGEDTHREADID mov ecx,[ebp-14] mov [ecx+2C],eax lea edx,[ecx+8] call CORINFO_HELP_ASSIGN_REF_EBX lea edx,[ecx+10] call CORINFO_HELP_ASSIGN_REF_EDI lea edx,[ecx+18] mov edi,[ebp-10] call CORINFO_HELP_ASSIGN_REF_EDI mov edx,[esi+4] call dword ptr ds:[0BB4DD38]; BenchmarkDotNet.Engines.ConsumerExtensions.Consume[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1, BenchmarkDotNet.Engines.Consumer) lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret M00_L01: call dword ptr ds:[57EB630] int 3 M00_L02: mov ecx,4 call dword ptr ds:[0B107E10] int 3 M00_L03: mov ecx,0D call dword ptr ds:[0B107E10] int 3 ; Total bytes of code 187 ``` ```assembly ; BenchmarkDotNet.Engines.ConsumerExtensions.Consume[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1, BenchmarkDotNet.Engines.Consumer) push ebp mov ebp,esp push esi sub esp,18 xor eax,eax mov [ebp-18],eax mov [ebp-14],eax mov [ebp-10],eax mov [ebp-0C],eax mov esi,edx call dword ptr ds:[35302AC] mov ecx,eax mov [ebp-1C],ecx call dword ptr ds:[35302B0] test eax,eax je short M01_L01 M01_L00: mov ecx,[ebp-1C] call dword ptr ds:[35302B4] mov [esi+24],eax mov ecx,[ebp-1C] call dword ptr ds:[35302B0] test eax,eax jne short M01_L00 M01_L01: mov ecx,[ebp-1C] call dword ptr ds:[35302B8] jmp short M01_L03 cmp dword ptr [ebp-1C],0 je short M01_L02 mov ecx,[ebp-1C] call dword ptr ds:[35302B8] M01_L02: pop eax jmp eax M01_L03: lea esp,[ebp-4] pop esi pop ebp ret ; Total bytes of code 104 ``` ### Compare Jit Disasm ```assembly ; System.Linq.Tests.Perf_Enumerable.Zip(System.Linq.Tests.LinqTestData) push ebp mov ebp,esp push edi push esi push ebx sub esp,8 mov esi,ecx mov edi,[edx+4] mov ebx,edi mov eax,ds:[6A44944] test eax,eax jne short M00_L00 mov ecx,offset MT_System.Func`3[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]] call CORINFO_HELP_NEWSFAST mov ecx,ds:[6A448DC] test ecx,ecx je short M00_L01 lea edx,[eax+4] call CORINFO_HELP_ASSIGN_REF_ECX mov dword ptr [eax+0C],0AC9CC90 mov edx,6A44944 call CORINFO_HELP_ASSIGN_REF_EAX M00_L00: test ebx,ebx je short M00_L02 mov [ebp-10],eax test eax,eax je short M00_L03 mov ecx,offset MT_System.Linq.Enumerable+d__313`3[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]] call CORINFO_HELP_NEWSFAST mov [ebp-14],eax mov dword ptr [eax+24],0FFFFFFFE call CORINFO_HELP_GETCURRENTMANAGEDTHREADID mov ecx,[ebp-14] mov [ecx+2C],eax lea edx,[ecx+8] call CORINFO_HELP_ASSIGN_REF_EBX lea edx,[ecx+10] call CORINFO_HELP_ASSIGN_REF_EDI lea edx,[ecx+18] mov edi,[ebp-10] call CORINFO_HELP_ASSIGN_REF_EDI mov edx,[esi+4] call dword ptr ds:[0AC9DD38]; BenchmarkDotNet.Engines.ConsumerExtensions.Consume[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1, BenchmarkDotNet.Engines.Consumer) lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret M00_L01: call dword ptr ds:[482B630] int 3 M00_L02: mov ecx,4 call dword ptr ds:[0A285E10] int 3 M00_L03: mov ecx,0D call dword ptr ds:[0A285E10] int 3 ; Total bytes of code 187 ``` ```assembly ; BenchmarkDotNet.Engines.ConsumerExtensions.Consume[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1, BenchmarkDotNet.Engines.Consumer) push ebp mov ebp,esp push esi sub esp,18 xor eax,eax mov [ebp-18],eax mov [ebp-14],eax mov [ebp-10],eax mov [ebp-0C],eax mov esi,edx call dword ptr ds:[6C02A8] mov ecx,eax mov [ebp-1C],ecx call dword ptr ds:[6C02AC] test eax,eax je short M01_L01 M01_L00: mov ecx,[ebp-1C] call dword ptr ds:[6C02B0] mov [esi+24],eax mov ecx,[ebp-1C] call dword ptr ds:[6C02AC] test eax,eax jne short M01_L00 M01_L01: mov ecx,[ebp-1C] call dword ptr ds:[6C02B4] jmp short M01_L03 cmp dword ptr [ebp-1C],0 je short M01_L02 mov ecx,[ebp-1C] call dword ptr ds:[6C02B4] M01_L02: pop eax jmp eax M01_L03: lea esp,[ebp-4] pop esi pop ebp ret ; Total bytes of code 104 ``` #### System.Linq.Tests.Perf_Enumerable.Skip_One(input: IEnumerable) ```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.1105260516876885 > 1.0750489416391287. IsChangePoint: Marked as a change because one of 1/3/2023 6:29:42 AM, 1/5/2023 11:35:29 PM, 1/13/2023 4:37:08 PM, 2/9/2023 4:27:10 AM, 2/13/2023 6:54:14 PM, 2/24/2023 9:01:57 AM, 3/6/2023 11:14:52 AM, 3/14/2023 10:43:28 AM falls between 3/5/2023 5:50:49 PM and 3/14/2023 10:43:28 AM. IsRegressionStdDev: Marked as regression because -140.73641884192452 (T) = (0 -1110.756819656829) / Math.Sqrt((7.6241591402077775 / (24)) + (2.939837206119407 / (36))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (36) - 2, .025) and -0.08703631358952692 = (1021.8212637156289 - 1110.756819656829) / 1021.8212637156289 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.Linq.Tests.Perf_Enumerable.Skip_One(System.Linq.Tests.LinqTestData) push ebp mov ebp,esp push esi mov esi,ecx mov ecx,[edx+4] mov edx,1 call dword ptr ds:[0B43DA08]; System.Linq.Enumerable.Skip[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1, Int32) mov ecx,eax mov edx,[esi+4] call dword ptr ds:[0B43DA80]; BenchmarkDotNet.Engines.ConsumerExtensions.Consume[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1, BenchmarkDotNet.Engines.Consumer) pop esi pop ebp ret ; Total bytes of code 34 ``` ```assembly ; System.Linq.Enumerable.Skip[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1, Int32) push ebp mov ebp,esp push edi push esi mov esi,ecx mov edi,edx test esi,esi je short M01_L04 test edi,edi jg short M01_L02 mov edx,esi mov ecx,offset MT_System.Linq.Enumerable+Iterator`1[[System.Int32, System.Private.CoreLib]] call dword ptr ds:[82DB828]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfClass(Void*, System.Object) test eax,eax jne short M01_L00 mov edx,esi mov ecx,offset MT_System.Linq.IPartition`1[[System.Int32, System.Private.CoreLib]] call dword ptr ds:[82DB810]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(Void*, System.Object) test eax,eax je short M01_L01 M01_L00: mov eax,esi pop esi pop edi pop ebp ret M01_L01: xor edi,edi jmp short M01_L03 M01_L02: mov edx,esi mov ecx,offset MT_System.Linq.IPartition`1[[System.Int32, System.Private.CoreLib]] call dword ptr ds:[82DB810]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(Void*, System.Object) test eax,eax je short M01_L03 mov ecx,eax mov edx,edi call dword ptr ds:[3410320] pop esi pop edi pop ebp ret M01_L03: mov ecx,esi mov edx,edi call dword ptr ds:[0B43DA98]; System.Linq.Enumerable.SkipIterator[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1, Int32) pop esi pop edi pop ebp ret M01_L04: mov ecx,10 call dword ptr ds:[0A9F7E10] int 3 ; Total bytes of code 118 ``` ```assembly ; BenchmarkDotNet.Engines.ConsumerExtensions.Consume[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1, BenchmarkDotNet.Engines.Consumer) push ebp mov ebp,esp push esi sub esp,18 xor eax,eax mov [ebp-18],eax mov [ebp-14],eax mov [ebp-10],eax mov [ebp-0C],eax mov esi,edx call dword ptr ds:[34102B0] mov ecx,eax mov [ebp-1C],ecx call dword ptr ds:[34102B4] test eax,eax je short M02_L01 M02_L00: mov ecx,[ebp-1C] call dword ptr ds:[34102B8] mov [esi+24],eax mov ecx,[ebp-1C] call dword ptr ds:[34102B4] test eax,eax jne short M02_L00 M02_L01: mov ecx,[ebp-1C] call dword ptr ds:[34102BC] jmp short M02_L03 cmp dword ptr [ebp-1C],0 je short M02_L02 mov ecx,[ebp-1C] call dword ptr ds:[34102BC] M02_L02: pop eax jmp eax M02_L03: lea esp,[ebp-4] pop esi pop ebp ret ; Total bytes of code 104 ``` ### Compare Jit Disasm ```assembly ; System.Linq.Tests.Perf_Enumerable.Skip_One(System.Linq.Tests.LinqTestData) push ebp mov ebp,esp push esi mov esi,ecx mov ecx,[edx+4] mov edx,1 call dword ptr ds:[0B74DA08]; System.Linq.Enumerable.Skip[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1, Int32) mov ecx,eax mov edx,[esi+4] call dword ptr ds:[0B74DA80]; BenchmarkDotNet.Engines.ConsumerExtensions.Consume[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1, BenchmarkDotNet.Engines.Consumer) pop esi pop ebp ret ; Total bytes of code 34 ``` ```assembly ; System.Linq.Enumerable.Skip[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1, Int32) push ebp mov ebp,esp push edi push esi mov esi,ecx mov edi,edx test esi,esi je short M01_L04 test edi,edi jg short M01_L02 mov edx,esi mov ecx,offset MT_System.Linq.Enumerable+Iterator`1[[System.Int32, System.Private.CoreLib]] call dword ptr ds:[857B828]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfClass(Void*, System.Object) test eax,eax jne short M01_L00 mov edx,esi mov ecx,offset MT_System.Linq.IPartition`1[[System.Int32, System.Private.CoreLib]] call dword ptr ds:[857B810]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(Void*, System.Object) test eax,eax je short M01_L01 M01_L00: mov eax,esi pop esi pop edi pop ebp ret M01_L01: xor edi,edi jmp short M01_L03 M01_L02: mov edx,esi mov ecx,offset MT_System.Linq.IPartition`1[[System.Int32, System.Private.CoreLib]] call dword ptr ds:[857B810]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(Void*, System.Object) test eax,eax je short M01_L03 mov ecx,eax mov edx,edi call dword ptr ds:[36B031C] pop esi pop edi pop ebp ret M01_L03: mov ecx,esi mov edx,edi call dword ptr ds:[0B74DA98]; System.Linq.Enumerable.SkipIterator[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1, Int32) pop esi pop edi pop ebp ret M01_L04: mov ecx,10 call dword ptr ds:[0AD35E10] int 3 ; Total bytes of code 118 ``` ```assembly ; BenchmarkDotNet.Engines.ConsumerExtensions.Consume[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1, BenchmarkDotNet.Engines.Consumer) push ebp mov ebp,esp push esi sub esp,18 xor eax,eax mov [ebp-18],eax mov [ebp-14],eax mov [ebp-10],eax mov [ebp-0C],eax mov esi,edx call dword ptr ds:[36B02AC] mov ecx,eax mov [ebp-1C],ecx call dword ptr ds:[36B02B0] test eax,eax je short M02_L01 M02_L00: mov ecx,[ebp-1C] call dword ptr ds:[36B02B4] mov [esi+24],eax mov ecx,[ebp-1C] call dword ptr ds:[36B02B0] test eax,eax jne short M02_L00 M02_L01: mov ecx,[ebp-1C] call dword ptr ds:[36B02B8] jmp short M02_L03 cmp dword ptr [ebp-1C],0 je short M02_L02 mov ecx,[ebp-1C] call dword ptr ds:[36B02B8] M02_L02: pop eax jmp eax M02_L03: lea esp,[ebp-4] pop esi pop ebp ret ; Total bytes of code 104 ``` #### System.Linq.Tests.Perf_Enumerable.SkipHalfTakeHalf(input: IEnumerable) ```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 726.5246539119615 > 643.6951488611062. IsChangePoint: Marked as a change because one of 1/3/2023 6:29:42 AM, 1/5/2023 11:35:29 PM, 1/13/2023 4:37:08 PM, 2/23/2023 8:54:44 PM, 3/6/2023 11:14:52 AM, 3/14/2023 10:43:28 AM falls between 3/5/2023 5:50:49 PM and 3/14/2023 10:43:28 AM. IsRegressionStdDev: Marked as regression because -235.49587527198995 (T) = (0 -726.8108110751673) / Math.Sqrt((3.0905605794848316 / (24)) + (3.664106885492076 / (36))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (36) - 2, .025) and -0.18424208807658934 = (613.7349942152721 - 726.8108110751673) / 613.7349942152721 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.Linq.Tests.Perf_Enumerable.SkipHalfTakeHalf(System.Linq.Tests.LinqTestData) push ebp mov ebp,esp push esi mov esi,ecx mov ecx,[edx+4] mov edx,32 call dword ptr ds:[0B52DA08]; System.Linq.Enumerable.Skip[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1, Int32) test eax,eax je short M00_L00 mov ecx,eax mov edx,32 call dword ptr ds:[0B52DDE0]; System.Linq.Enumerable.TakeIterator[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1, Int32) mov ecx,eax mov edx,[esi+4] call dword ptr ds:[0B52DA98]; BenchmarkDotNet.Engines.ConsumerExtensions.Consume[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1, BenchmarkDotNet.Engines.Consumer) pop esi pop ebp ret M00_L00: mov ecx,10 call dword ptr ds:[0AAE7E10] int 3 ; Total bytes of code 63 ``` ```assembly ; System.Linq.Enumerable.Skip[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1, Int32) push ebp mov ebp,esp push edi push esi mov esi,ecx mov edi,edx test esi,esi je short M01_L04 test edi,edi jg short M01_L02 mov edx,esi mov ecx,offset MT_System.Linq.Enumerable+Iterator`1[[System.Int32, System.Private.CoreLib]] call dword ptr ds:[83CB828]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfClass(Void*, System.Object) test eax,eax jne short M01_L00 mov edx,esi mov ecx,offset MT_System.Linq.IPartition`1[[System.Int32, System.Private.CoreLib]] call dword ptr ds:[83CB810]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(Void*, System.Object) test eax,eax je short M01_L01 M01_L00: mov eax,esi pop esi pop edi pop ebp ret M01_L01: xor edi,edi jmp short M01_L03 M01_L02: mov edx,esi mov ecx,offset MT_System.Linq.IPartition`1[[System.Int32, System.Private.CoreLib]] call dword ptr ds:[83CB810]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(Void*, System.Object) test eax,eax je short M01_L03 mov ecx,eax mov edx,edi call dword ptr ds:[2F40324] pop esi pop edi pop ebp ret M01_L03: mov ecx,esi mov edx,edi call dword ptr ds:[0B52DAB0]; System.Linq.Enumerable.SkipIterator[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1, Int32) pop esi pop edi pop ebp ret M01_L04: mov ecx,10 call dword ptr ds:[0AAE7E10] int 3 ; Total bytes of code 118 ``` ```assembly ; System.Linq.Enumerable.TakeIterator[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1, Int32) push ebp mov ebp,esp push edi push esi push ebx mov esi,ecx mov edi,edx mov edx,esi mov ecx,offset MT_System.Linq.IPartition`1[[System.Int32, System.Private.CoreLib]] call dword ptr ds:[83CB810]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(Void*, System.Object) test eax,eax jne short M02_L01 mov edx,esi mov ecx,offset MT_System.Collections.Generic.IList`1[[System.Int32, System.Private.CoreLib]] call dword ptr ds:[83CB810]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(Void*, System.Object) mov ebx,eax test ebx,ebx jne short M02_L00 mov ecx,offset MT_System.Linq.Enumerable+EnumerablePartition`1[[System.Int32, System.Private.CoreLib]] call CORINFO_HELP_NEWSFAST mov ebx,eax call CORINFO_HELP_GETCURRENTMANAGEDTHREADID mov [ebx+4],eax lea edx,[ebx+10] call CORINFO_HELP_ASSIGN_REF_ESI xor eax,eax mov [ebx+18],eax dec edi mov [ebx+1C],edi mov eax,ebx pop ebx pop esi pop edi pop ebp ret M02_L00: mov ecx,offset MT_System.Linq.Enumerable+ListPartition`1[[System.Int32, System.Private.CoreLib]] call CORINFO_HELP_NEWSFAST mov esi,eax call CORINFO_HELP_GETCURRENTMANAGEDTHREADID mov [esi+4],eax lea edx,[esi+10] call CORINFO_HELP_ASSIGN_REF_EBX xor eax,eax mov [esi+14],eax lea eax,[edi-1] mov [esi+18],eax mov eax,esi pop ebx pop esi pop edi pop ebp ret M02_L01: mov ecx,eax mov edx,edi call dword ptr ds:[2F40328] pop ebx pop esi pop edi pop ebp ret ; Total bytes of code 151 ``` ```assembly ; BenchmarkDotNet.Engines.ConsumerExtensions.Consume[[System.Int32, System.Private.CoreLib]](System.Collections.Generic.IEnumerable`1, BenchmarkDotNet.Engines.Consumer) push ebp mov ebp,esp push esi sub esp,18 xor eax,eax mov [ebp-18],eax mov [ebp-14],eax mov [ebp-10],eax mov [ebp-0C],eax mov esi,edx call dword ptr ds:[2F402B4] mov ecx,eax mov [ebp-1C],ecx call dword ptr ds:[2F402B8] test eax,eax je short M03_L01 M03_L00: mov ecx,[ebp-1C] call dword ptr ds:[2F402BC] mov [esi+24],eax mov ecx,[ebp-1C] call dword ptr ds:[2F402B8] test eax,eax jne short M03_L00 M03_L01: mov ecx,[ebp-1C] call dword ptr ds:[2F402C0] jmp short M03_L03 cmp dword ptr [ebp-1C],0 je short M03_L02 mov ecx,[ebp-1C] call dword ptr ds:[2F402C0] M03_L02: pop eax jmp eax M03_L03: lea esp,[ebp-4] pop esi pop ebp ret ; Total bytes of code 104 ``` #### System.Linq.Tests.Perf_Enumerable.Range ```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 430.4869831369832 > 418.4412211969306. IsChangePoint: Marked as a change because one of 1/3/2023 6:29:42 AM, 1/13/2023 4:37:08 PM, 1/15/2023 2:31:53 AM, 1/18/2023 6:24:13 PM, 1/30/2023 9:42:46 PM, 2/9/2023 4:27:10 AM, 2/24/2023 9:01:57 AM, 3/6/2023 11:14:52 AM, 3/14/2023 10:43:28 AM falls between 3/5/2023 5:50:49 PM and 3/14/2023 10:43:28 AM. IsRegressionStdDev: Marked as regression because -93.06401288154977 (T) = (0 -429.8851499293411) / Math.Sqrt((2.3988096452665886 / (24)) + (0.32225044799674235 / (36))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (36) - 2, .025) and -0.07693736591438935 = (399.17377141458996 - 429.8851499293411) / 399.17377141458996 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.Linq.Tests.Perf_Enumerable.ToArray(input: IEnumerable) ```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 842.8339921855129 > 800.81239036007. IsChangePoint: Marked as a change because one of 1/13/2023 4:37:08 PM, 2/13/2023 6:54:14 PM, 3/6/2023 11:14:52 AM, 3/14/2023 10:43:28 AM falls between 3/5/2023 5:50:49 PM and 3/14/2023 10:43:28 AM. IsRegressionStdDev: Marked as regression because -53.11893559788591 (T) = (0 -849.1057543295445) / Math.Sqrt((24.36431107521769 / (24)) + (53.984385890926966 / (36))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (36) - 2, .025) and -0.1101307979370849 = (764.8700098289377 - 849.1057543295445) / 764.8700098289377 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 6123cb00bbec8ae3500c970890f5b0efcf7950e8
Compare ffbcb8336ac67496b0565112f663f74fda6cac34
Diff Diff

Regressions in Benchstone.BenchI.Fib

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[Test - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/Benchstone.BenchI.Fib.Test.html>) 134.77 μs 159.11 μs 1.18 0.02 False Trace Trace

graph Test Report

Repro

General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md

Payloads

Baseline Compare

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'Benchstone.BenchI.Fib*'
### Payloads [Baseline]() [Compare]() ### Histogram #### Benchstone.BenchI.Fib.Test ```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 159.10667839105338 > 141.60241029094828. IsChangePoint: Marked as a change because one of 1/5/2023 11:35:29 PM, 1/18/2023 6:24:13 PM, 2/24/2023 9:01:57 AM, 3/6/2023 11:14:52 AM, 3/14/2023 10:43:28 AM falls between 3/5/2023 5:50:49 PM and 3/14/2023 10:43:28 AM. IsRegressionStdDev: Marked as regression because -384.2133523098096 (T) = (0 -159273.6547404263) / Math.Sqrt((33488.95750124427 / (24)) + (94489.49376378255 / (36))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (36) - 2, .025) and -0.1805661103766714 = (134912.94840710654 - 159273.6547404263) / 134912.94840710654 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 ; Benchstone.BenchI.Fib.Test() push ebp mov ebp,esp push esi mov ecx,17 call dword ptr ds:[0A6C1420]; Benchstone.BenchI.Fib.Fibonacci(Int32) mov esi,eax mov ecx,16 call dword ptr ds:[0A6C1420]; Benchstone.BenchI.Fib.Fibonacci(Int32) add eax,esi cmp eax,0B520 sete al movzx eax,al pop esi pop ebp ret ; Total bytes of code 44 ``` ```assembly ; Benchstone.BenchI.Fib.Fibonacci(Int32) M01_L00: push ebp mov ebp,esp push edi push esi mov esi,ecx cmp esi,2 jle short M01_L01 lea ecx,[esi-1] call dword ptr ds:[0A6C1420] mov edi,eax lea ecx,[esi-2] call dword ptr ds:[0A6C1420] add eax,edi pop esi pop edi pop ebp ret M01_L01: mov eax,1 pop esi pop edi pop ebp ret ; Total bytes of code 47 ``` ### Compare Jit Disasm ```assembly ; Benchstone.BenchI.Fib.Test() push ebp mov ebp,esp push esi mov ecx,17 call dword ptr ds:[0AA6F420]; Benchstone.BenchI.Fib.Fibonacci(Int32) mov esi,eax mov ecx,16 call dword ptr ds:[0AA6F420]; Benchstone.BenchI.Fib.Fibonacci(Int32) add eax,esi cmp eax,0B520 sete al movzx eax,al pop esi pop ebp ret ; Total bytes of code 44 ``` ```assembly ; Benchstone.BenchI.Fib.Fibonacci(Int32) M01_L00: push ebp mov ebp,esp push edi push esi mov esi,ecx cmp esi,2 jle short M01_L01 lea ecx,[esi-1] call dword ptr ds:[0AA6F420] mov edi,eax lea ecx,[esi-2] call dword ptr ds:[0AA6F420] add eax,edi pop esi pop edi pop ebp ret M01_L01: mov eax,1 pop esi pop edi pop ebp ret ; Total bytes of code 47 ``` ### 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 6123cb00bbec8ae3500c970890f5b0efcf7950e8
Compare ffbcb8336ac67496b0565112f663f74fda6cac34
Diff Diff

Regressions in PerfLabTests.CastingPerf2.CastingPerf

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[IFooObjIsDescendantOfIFoo - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/PerfLabTests.CastingPerf2.CastingPerf.IFooObjIsDescendantOfIFoo.html>) 478.51 μs 584.96 μs 1.22 0.04 False Trace Trace
[IFooObjIsIFooInterAlia - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/PerfLabTests.CastingPerf2.CastingPerf.IFooObjIsIFooInterAlia.html>) 374.20 μs 463.90 μs 1.24 0.03 False

graph graph Test Report

Repro

General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md

Payloads

Baseline Compare

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'PerfLabTests.CastingPerf2.CastingPerf*'
### Payloads [Baseline]() [Compare]() ### Histogram #### PerfLabTests.CastingPerf2.CastingPerf.IFooObjIsDescendantOfIFoo ```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 584.9637792397659 > 506.16589015151516. IsChangePoint: Marked as a change because one of 1/18/2023 6:24:13 PM, 1/27/2023 7:12:54 PM, 2/9/2023 4:27:10 AM, 2/24/2023 9:01:57 AM, 3/6/2023 11:14:52 AM, 3/14/2023 10:43:28 AM falls between 3/5/2023 5:50:49 PM and 3/14/2023 10:43:28 AM. IsRegressionStdDev: Marked as regression because -71.71082077437953 (T) = (0 -582220.4148962059) / Math.Sqrt((31398254.517656684 / (24)) + (24972737.360400695 / (36))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (36) - 2, .025) and -0.21105020657606796 = (480756.62902720104 - 582220.4148962059) / 480756.62902720104 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.CastingPerf2.CastingPerf.IFooObjIsDescendantOfIFoo() push ebp mov ebp,esp push edi push esi push ebx xor esi,esi mov edi,ds:[0A5C6334] test edi,edi jle short M00_L01 mov ebx,ds:[6CA4274] mov edx,ebx mov ecx,offset MT_PerfLabTests.CastingPerf2.IFoo call dword ptr ds:[4ACB888]; System.Runtime.CompilerServices.CastHelpers.ChkCastInterface(Void*, System.Object) M00_L00: mov edx,ebx mov ecx,offset MT_PerfLabTests.CastingPerf2.IFoo call dword ptr ds:[4ACB888]; System.Runtime.CompilerServices.CastHelpers.ChkCastInterface(Void*, System.Object) mov edx,6CA42C4 call CORINFO_HELP_ASSIGN_REF_EAX inc esi cmp esi,edi jl short M00_L00 M00_L01: pop ebx pop esi pop edi pop ebp ret ; Total bytes of code 70 ``` ```assembly ; System.Runtime.CompilerServices.CastHelpers.ChkCastInterface(Void*, System.Object) push ebp mov ebp,esp push esi test edx,edx je short M01_L01 mov eax,[edx] movzx esi,word ptr [eax+0E] test esi,esi je short M01_L04 mov eax,[eax+24] cmp esi,4 jl short M01_L03 M01_L00: cmp [eax],ecx je short M01_L01 cmp [eax+4],ecx je short M01_L01 cmp [eax+8],ecx je short M01_L01 cmp [eax+0C],ecx jne short M01_L02 M01_L01: mov eax,edx pop esi pop ebp ret M01_L02: add eax,10 add esi,0FFFFFFFC cmp esi,4 jge short M01_L00 test esi,esi je short M01_L04 M01_L03: cmp [eax],ecx je short M01_L01 add eax,4 dec esi test esi,esi jg short M01_L03 M01_L04: call dword ptr ds:[4ACB870] pop esi pop ebp ret ; Total bytes of code 86 ``` ### Compare Jit Disasm ```assembly ; PerfLabTests.CastingPerf2.CastingPerf.IFooObjIsDescendantOfIFoo() push ebp mov ebp,esp push edi push esi push ebx xor esi,esi mov edi,ds:[0A878084] test edi,edi jle short M00_L01 mov ebx,ds:[6CF4274] mov edx,ebx mov ecx,offset MT_PerfLabTests.CastingPerf2.IFoo call dword ptr ds:[7FEB888]; System.Runtime.CompilerServices.CastHelpers.ChkCastInterface(Void*, System.Object) M00_L00: mov edx,ebx mov ecx,offset MT_PerfLabTests.CastingPerf2.IFoo call dword ptr ds:[7FEB888]; System.Runtime.CompilerServices.CastHelpers.ChkCastInterface(Void*, System.Object) mov edx,6CF42C4 call CORINFO_HELP_ASSIGN_REF_EAX inc esi cmp esi,edi jl short M00_L00 M00_L01: pop ebx pop esi pop edi pop ebp ret ; Total bytes of code 70 ``` ```assembly ; System.Runtime.CompilerServices.CastHelpers.ChkCastInterface(Void*, System.Object) push ebp mov ebp,esp push esi test edx,edx je short M01_L01 mov eax,[edx] movzx esi,word ptr [eax+0E] test esi,esi je short M01_L04 mov eax,[eax+24] cmp esi,4 jl short M01_L03 M01_L00: cmp [eax],ecx je short M01_L01 cmp [eax+4],ecx je short M01_L01 cmp [eax+8],ecx je short M01_L01 cmp [eax+0C],ecx jne short M01_L02 M01_L01: mov eax,edx pop esi pop ebp ret M01_L02: add eax,10 add esi,0FFFFFFFC cmp esi,4 jge short M01_L00 test esi,esi je short M01_L04 M01_L03: cmp [eax],ecx je short M01_L01 add eax,4 dec esi test esi,esi jg short M01_L03 M01_L04: call dword ptr ds:[7FEB870] pop esi pop ebp ret ; Total bytes of code 86 ``` #### PerfLabTests.CastingPerf2.CastingPerf.IFooObjIsIFooInterAlia ```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 463.897818627451 > 392.9108080929488. IsChangePoint: Marked as a change because one of 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/27/2023 7:12:54 PM, 3/6/2023 11:14:52 AM, 3/14/2023 10:43:28 AM falls between 3/5/2023 5:50:49 PM and 3/14/2023 10:43:28 AM. IsRegressionStdDev: Marked as regression because -73.50002922397927 (T) = (0 -451966.92761713424) / Math.Sqrt((193042.52599733995 / (24)) + (39870831.8898378 / (36))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (36) - 2, .025) and -0.207383288344262 = (374335.91468450456 - 451966.92761713424) / 374335.91468450456 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 6123cb00bbec8ae3500c970890f5b0efcf7950e8
Compare ffbcb8336ac67496b0565112f663f74fda6cac34
Diff Diff

Regressions in System.Collections.ContainsTrue<Int32>

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.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Collections.ContainsTrue(Int32).Span(Size%3a%20512).html>) 16.41 μs 17.52 μs 1.07 0.12 False

graph Test Report

Repro

General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md

Payloads

Baseline Compare

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.ContainsTrue&lt;Int32&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Collections.ContainsTrue<Int32>.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 17.519744698660705 > 17.20258114060867. IsChangePoint: Marked as a change because one of 2/9/2023 4:27:10 AM, 2/14/2023 5:47:38 PM, 2/20/2023 9:09:49 AM, 3/6/2023 11:14:52 AM, 3/14/2023 10:43:28 AM falls between 3/5/2023 5:50:49 PM and 3/14/2023 10:43:28 AM. IsRegressionStdDev: Marked as regression because -67.06055528893727 (T) = (0 -17573.505741413042) / Math.Sqrt((6572.556686996529 / (24)) + (2182.10084530761 / (36))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (36) - 2, .025) and -0.07502503137354344 = (16347.06655989176 - 17573.505741413042) / 16347.06655989176 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 6123cb00bbec8ae3500c970890f5b0efcf7950e8
Compare ffbcb8336ac67496b0565112f663f74fda6cac34
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>) 8.10 μs 8.94 μs 1.10 0.07 False

graph Test Report

Repro

General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md

Payloads

Baseline Compare

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.942225650593185 > 8.487165399912895. IsChangePoint: Marked as a change because one of 1/20/2023 8:02:54 AM, 1/30/2023 9:42:46 PM, 2/9/2023 4:27:10 AM, 2/16/2023 6:27:39 AM, 3/6/2023 11:14:52 AM, 3/14/2023 10:43:28 AM falls between 3/5/2023 5:50:49 PM and 3/14/2023 10:43:28 AM. IsRegressionStdDev: Marked as regression because -16.244634772737133 (T) = (0 -8900.454097841575) / Math.Sqrt((24952.46402797539 / (24)) + (38346.11713749472 / (36))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (36) - 2, .025) and -0.0913877645753172 = (8155.171229452931 - 8900.454097841575) / 8155.171229452931 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 6123cb00bbec8ae3500c970890f5b0efcf7950e8
Compare ffbcb8336ac67496b0565112f663f74fda6cac34
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.93 μs 187.11 μ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.38 μs 2.00 0.02 False Trace Trace
[InterfaceInterfaceMethodLongHierarchy - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/PerfLabTests.LowLevelPerf.InterfaceInterfaceMethodLongHierarchy.html>) 311.82 μs 380.04 μs 1.22 0.02 False

graph graph graph Test Report

Repro

General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md

Payloads

Baseline Compare

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.10671626984123 > 163.72974798886136. IsChangePoint: Marked as a change because one of 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/13/2023 6:54:14 PM, 2/16/2023 9:36:08 AM, 2/20/2023 10:31:48 AM, 3/6/2023 11:14:52 AM, 3/14/2023 10:43:28 AM falls between 3/5/2023 5:50:49 PM and 3/14/2023 10:43:28 AM. IsRegressionStdDev: Marked as regression because -425.5329595517297 (T) = (0 -187248.32546094916) / Math.Sqrt((58050.08684586906 / (24)) + (106764.32828036108 / (36))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (36) - 2, .025) and -0.20013066457353257 = (156023.28228775656 - 187248.32546094916) / 156023.28228775656 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:[6BC4180] xor eax,eax xor edi,edi cmp dword ptr ds:[0A6B62D0],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:[0A6B62D0] 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:[6CB4180] xor eax,eax xor edi,edi cmp dword ptr ds:[0A7567D0],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:[0A7567D0] 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.37623256972112 > 32.75622397632619. IsChangePoint: Marked as a change because one of 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/13/2023 6:54:14 PM, 2/16/2023 9:36:08 AM, 2/20/2023 10:31:48 AM, 3/6/2023 11:14:52 AM, 3/14/2023 10:43:28 AM falls between 3/5/2023 5:50:49 PM and 3/14/2023 10:43:28 AM. IsRegressionStdDev: Marked as regression because -1128.529317987603 (T) = (0 -62435.66215330479) / Math.Sqrt((8565.986708358476 / (24)) + (14674.132653367786 / (36))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (36) - 2, .025) and -0.9991147549783176 = (31231.654910166457 - 62435.66215330479) / 31231.654910166457 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,0A9F5CF8 mov edx,82 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov eax,ds:[0A9F62D0] test eax,eax jle short M00_L01 M00_L00: mov dword ptr ds:[881C2C4],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,0A9D61F8 mov edx,82 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE mov eax,ds:[0A9D67D0] test eax,eax jle short M00_L01 M00_L00: mov dword ptr ds:[0B27D754],1 inc esi cmp esi,eax jl short M00_L00 M00_L01: pop esi pop ebp ret ; Total bytes of code 48 ``` #### PerfLabTests.LowLevelPerf.InterfaceInterfaceMethodLongHierarchy ```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 380.044481707317 > 327.420234375. IsChangePoint: Marked as a change because one of 1/13/2023 4:37:08 PM, 2/9/2023 4:10:34 PM, 3/6/2023 11:14:52 AM, 3/14/2023 10:43:28 AM falls between 3/5/2023 5:50:49 PM and 3/14/2023 10:43:28 AM. IsRegressionStdDev: Marked as regression because -75.57120057269363 (T) = (0 -385052.770856858) / Math.Sqrt((198994.66501203293 / (24)) + (33348110.537572358 / (36))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (36) - 2, .025) and -0.2341694389421504 = (311993.4416678638 - 385052.770856858) / 311993.4416678638 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 6123cb00bbec8ae3500c970890f5b0efcf7950e8
Compare ffbcb8336ac67496b0565112f663f74fda6cac34
Diff Diff

Regressions in System.Collections.IterateForEach<String>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[SortedList - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Collections.IterateForEach(String).SortedList(Size%3a%20512).html>) 7.94 μs 8.84 μs 1.11 0.02 False
[ConcurrentStack - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Collections.IterateForEach(String).ConcurrentStack(Size%3a%20512).html>) 4.05 μs 5.13 μs 1.27 0.02 False

graph graph Test Report

Repro

General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md

Payloads

Baseline Compare

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.IterateForEach&lt;String&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Collections.IterateForEach<String>.SortedList(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.841750896564744 > 8.336263618844152. IsChangePoint: Marked as a change because one of 1/13/2023 4:37:08 PM, 1/30/2023 9:42:46 PM, 2/9/2023 10:24:28 PM, 3/6/2023 11:14:52 AM, 3/14/2023 10:43:28 AM falls between 3/5/2023 5:50:49 PM and 3/14/2023 10:43:28 AM. IsRegressionStdDev: Marked as regression because -27.658055193378182 (T) = (0 -8804.723376091297) / Math.Sqrt((8594.676277900546 / (24)) + (19485.919154248557 / (36))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (36) - 2, .025) and -0.1040039578919097 = (7975.264321428588 - 8804.723376091297) / 7975.264321428588 is less than -0.05. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```#### System.Collections.IterateForEach<String>.ConcurrentStack(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 5.129883038541327 > 4.253312632149037. IsChangePoint: Marked as a change because one of 1/5/2023 11:35:29 PM, 1/13/2023 4:37:08 PM, 2/24/2023 9:01:57 AM, 3/6/2023 11:14:52 AM, 3/14/2023 10:43:28 AM falls between 3/5/2023 5:50:49 PM and 3/14/2023 10:43:28 AM. IsRegressionStdDev: Marked as regression because -444.8606311260765 (T) = (0 -5138.528545236457) / Math.Sqrt((54.654414204322315 / (24)) + (132.40356666253672 / (36))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (36) - 2, .025) and -0.26785591333788006 = (4052.9278533774946 - 5138.528545236457) / 4052.9278533774946 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 6123cb00bbec8ae3500c970890f5b0efcf7950e8
Compare ffbcb8336ac67496b0565112f663f74fda6cac34
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
[Stack - 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).Stack(Size%3a%20512).html>) 1.61 μs 1.85 μs 1.15 0.04 False

graph Test Report

Repro

General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md

Payloads

Baseline Compare

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>.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 1.8501803161747752 > 1.6952009570327216. IsChangePoint: Marked as a change because one of 2/20/2023 10:31:48 AM, 2/24/2023 9:01:57 AM, 3/6/2023 11:14:52 AM, 3/14/2023 10:43:28 AM falls between 3/5/2023 5:50:49 PM and 3/14/2023 10:43:28 AM. IsRegressionStdDev: Marked as regression because -44.09752106064356 (T) = (0 -1844.2975034335623) / Math.Sqrt((157.15794928146107 / (24)) + (715.8529377092491 / (36))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (36) - 2, .025) and -0.14015947108710994 = (1617.5785494945515 - 1844.2975034335623) / 1617.5785494945515 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 6123cb00bbec8ae3500c970890f5b0efcf7950e8
Compare ffbcb8336ac67496b0565112f663f74fda6cac34
Diff Diff

Regressions in System.Collections.CtorFromCollection<String>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[ConcurrentStack - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Collections.CtorFromCollection(String).ConcurrentStack(Size%3a%20512).html>) 5.32 μs 5.67 μs 1.07 0.03 False

graph Test Report

Repro

General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md

Payloads

Baseline Compare

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.CtorFromCollection&lt;String&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Collections.CtorFromCollection<String>.ConcurrentStack(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 5.669010524813123 > 5.582494478783927. IsChangePoint: Marked as a change because one of 1/5/2023 11:35:29 PM, 1/11/2023 2:37:52 AM, 2/9/2023 4:27:10 AM, 3/6/2023 11:14:52 AM, 3/14/2023 10:43:28 AM falls between 3/5/2023 5:50:49 PM and 3/14/2023 10:43:28 AM. IsRegressionStdDev: Marked as regression because -64.61550338725053 (T) = (0 -5672.42177703227) / Math.Sqrt((186.51507670715745 / (24)) + (761.5052560156096 / (36))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (36) - 2, .025) and -0.0652614143950648 = (5324.91058098964 - 5672.42177703227) / 5324.91058098964 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 6123cb00bbec8ae3500c970890f5b0efcf7950e8
Compare ffbcb8336ac67496b0565112f663f74fda6cac34
Diff Diff

Regressions in System.Collections.CreateAddAndClear<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.CreateAddAndClear(Int32).Dictionary(Size%3a%20512).html>) 13.15 μs 14.00 μs 1.06 0.08 False

graph Test Report

Repro

General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md

Payloads

Baseline Compare

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.CreateAddAndClear&lt;Int32&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Collections.CreateAddAndClear<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 14.003076553491352 > 13.836187538165515. IsChangePoint: Marked as a change because one of 1/5/2023 9:29:47 PM, 1/20/2023 8:02:54 AM, 1/30/2023 9:42:46 PM, 2/14/2023 5:47:38 PM, 2/16/2023 9:36:08 AM, 3/6/2023 11:14:52 AM, 3/14/2023 10:43:28 AM falls between 3/5/2023 5:50:49 PM and 3/14/2023 10:43:28 AM. IsRegressionStdDev: Marked as regression because -12.965773709909348 (T) = (0 -14160.9262579021) / Math.Sqrt((40555.95466057374 / (24)) + (178129.9335055944 / (36))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (36) - 2, .025) and -0.08061034187612506 = (13104.562957741364 - 14160.9262579021) / 13104.562957741364 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 6123cb00bbec8ae3500c970890f5b0efcf7950e8
Compare ffbcb8336ac67496b0565112f663f74fda6cac34
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.z22.web.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.87 μs 1.14 0.02 False
[ArrayList - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Collections.IterateForEachNonGeneric(Int32).ArrayList(Size%3a%20512).html>) 2.81 μs 3.48 μs 1.24 0.04 False

graph graph Test Report

Repro

General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md

Payloads

Baseline Compare

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.8677428270713925 > 3.5684256509376597. IsChangePoint: Marked as a change because one of 1/5/2023 11:35:29 PM, 1/13/2023 4:37:08 PM, 2/16/2023 9:36:08 AM, 2/24/2023 9:01:57 AM, 3/6/2023 11:14:52 AM, 3/14/2023 10:43:28 AM falls between 3/5/2023 5:50:49 PM and 3/14/2023 10:43:28 AM. IsRegressionStdDev: Marked as regression because -280.1849419569997 (T) = (0 -3870.7894405538227) / Math.Sqrt((38.16790043841436 / (24)) + (45.01073194796441 / (36))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (36) - 2, .025) and -0.1389494458342943 = (3398.5612396680367 - 3870.7894405538227) / 3398.5612396680367 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.IterateForEachNonGeneric<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 3.475180127779008 > 2.950874249853479. IsChangePoint: Marked as a change because one of 1/3/2023 6:29:42 AM, 3/6/2023 11:14:52 AM, 3/14/2023 10:43:28 AM falls between 3/5/2023 5:50:49 PM and 3/14/2023 10:43:28 AM. IsRegressionStdDev: Marked as regression because -205.80893614102638 (T) = (0 -3443.9912775766957) / Math.Sqrt((36.95247773577524 / (24)) + (286.3528374785658 / (36))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (36) - 2, .025) and -0.22568590498293964 = (2809.8481540624657 - 3443.9912775766957) / 2809.8481540624657 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 6123cb00bbec8ae3500c970890f5b0efcf7950e8
Compare ffbcb8336ac67496b0565112f663f74fda6cac34
Diff Diff

Regressions in PerfLabTests.CastingPerf

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[FooObjIsNull - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/PerfLabTests.CastingPerf.FooObjIsNull.html>) 155.95 μs 224.42 μs 1.44 0.03 False Trace Trace
[ObjFooIsObj - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/PerfLabTests.CastingPerf.ObjFooIsObj.html>) 155.92 μs 224.65 μs 1.44 0.03 False
[ObjScalarValueType - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/PerfLabTests.CastingPerf.ObjScalarValueType.html>) 155.92 μs 235.62 μs 1.51 0.02 False
[ObjInt - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/PerfLabTests.CastingPerf.ObjInt.html>) 155.92 μs 234.54 μs 1.50 0.02 False

graph graph graph graph Test Report

Repro

General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md

Payloads

Baseline Compare

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'PerfLabTests.CastingPerf*'
### Payloads [Baseline]() [Compare]() ### Histogram #### PerfLabTests.CastingPerf.FooObjIsNull ```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 224.420318877551 > 164.07006277227723. IsChangePoint: Marked as a change because one of 1/3/2023 6:29:42 AM, 1/15/2023 2:31:53 AM, 1/18/2023 8:37:25 PM, 2/20/2023 10:31:48 AM, 3/6/2023 11:14:52 AM, 3/14/2023 10:43:28 AM falls between 3/5/2023 5:50:49 PM and 3/14/2023 10:43:28 AM. IsRegressionStdDev: Marked as regression because -90.78023630496675 (T) = (0 -226226.8614599367) / Math.Sqrt((98325.68883365551 / (24)) + (21202729.04601114 / (36))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (36) - 2, .025) and -0.44723546829946603 = (156316.5541580862 - 226226.8614599367) / 156316.5541580862 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.CastingPerf.FooObjIsNull() push ebp mov ebp,esp push esi xor eax,eax mov ecx,ds:[0B0E62C0] test ecx,ecx jle short M00_L01 mov esi,ds:[75E4140] nop nop nop nop nop nop nop nop nop nop M00_L00: mov edx,75E4150 call CORINFO_HELP_ASSIGN_REF_ESI inc eax cmp eax,ecx jl short M00_L00 M00_L01: pop esi pop ebp ret ; Total bytes of code 50 ``` ### Compare Jit Disasm ```assembly ; PerfLabTests.CastingPerf.FooObjIsNull() push ebp mov ebp,esp push esi xor eax,eax mov ecx,ds:[0A9267C0] test ecx,ecx jle short M00_L01 mov esi,ds:[6F14140] nop nop nop nop nop nop nop nop nop nop M00_L00: mov edx,6F14150 call CORINFO_HELP_ASSIGN_REF_ESI inc eax cmp eax,ecx jl short M00_L00 M00_L01: pop esi pop ebp ret ; Total bytes of code 50 ``` #### PerfLabTests.CastingPerf.ObjFooIsObj ```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 224.64695422535215 > 164.20715655940592. IsChangePoint: Marked as a change because one of 1/3/2023 6:29:42 AM, 1/15/2023 2:31:53 AM, 1/18/2023 8:37:25 PM, 2/20/2023 10:31:48 AM, 3/6/2023 11:14:52 AM, 3/14/2023 10:43:28 AM falls between 3/5/2023 5:50:49 PM and 3/14/2023 10:43:28 AM. IsRegressionStdDev: Marked as regression because -92.17185262414921 (T) = (0 -227228.52566933562) / Math.Sqrt((304657.4739575663 / (24)) + (20891392.918601684 / (36))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (36) - 2, .025) and -0.454266436593325 = (156249.58394943582 - 227228.52566933562) / 156249.58394943582 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. ```#### PerfLabTests.CastingPerf.ObjScalarValueType ```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 235.62136860341153 > 163.71762117407656. IsChangePoint: Marked as a change because one of 1/3/2023 6:29:42 AM, 1/15/2023 2:31:53 AM, 1/18/2023 8:37:25 PM, 2/20/2023 10:31:48 AM, 3/6/2023 11:14:52 AM, 3/14/2023 10:43:28 AM falls between 3/5/2023 5:50:49 PM and 3/14/2023 10:43:28 AM. IsRegressionStdDev: Marked as regression because -90.09979338468088 (T) = (0 -226818.00693766607) / Math.Sqrt((121740.35447261545 / (24)) + (22028715.161867417 / (36))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (36) - 2, .025) and -0.45353035632231853 = (156046.28135290864 - 226818.00693766607) / 156046.28135290864 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. ```#### PerfLabTests.CastingPerf.ObjInt ```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 234.54339019189766 > 163.89389077970299. IsChangePoint: Marked as a change because one of 1/3/2023 6:29:42 AM, 1/15/2023 2:31:53 AM, 1/18/2023 8:37:25 PM, 2/20/2023 10:31:48 AM, 3/6/2023 11:14:52 AM, 3/14/2023 10:43:28 AM falls between 3/5/2023 5:50:49 PM and 3/14/2023 10:43:28 AM. IsRegressionStdDev: Marked as regression because -114.84960376344871 (T) = (0 -226100.60874170336) / Math.Sqrt((62070.30909093648 / (24)) + (13290707.952347422 / (36))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (36) - 2, .025) and -0.44868330640712945 = (156073.17882502152 - 226100.60874170336) / 156073.17882502152 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 6123cb00bbec8ae3500c970890f5b0efcf7950e8
Compare ffbcb8336ac67496b0565112f663f74fda6cac34
Diff Diff

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

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[GetHashCodeBenchmark - 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(Double).GetHashCodeBenchmark.html>) 21.27 ns 24.29 ns 1.14 0.02 False

graph Test Report

Repro

General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md

Payloads

Baseline Compare

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Numerics.Tests.Perf_VectorOf&lt;Double&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Numerics.Tests.Perf_VectorOf<Double>.GetHashCodeBenchmark ```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 24.293165594326773 > 22.341660796825142. IsChangePoint: Marked as a change because one of 1/10/2023 7:48:18 AM, 2/24/2023 9:01:57 AM, 3/6/2023 11:14:52 AM, 3/14/2023 10:43:28 AM falls between 3/5/2023 5:50:49 PM and 3/14/2023 10:43:28 AM. IsRegressionStdDev: Marked as regression because -34.46773121303902 (T) = (0 -23.42888798713864) / Math.Sqrt((0.057530083563129976 / (24)) + (0.05647016710902708 / (36))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (36) - 2, .025) and -0.10210423662113319 = (21.25832313190963 - 23.42888798713864) / 21.25832313190963 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 6123cb00bbec8ae3500c970890f5b0efcf7950e8
Compare ffbcb8336ac67496b0565112f663f74fda6cac34
Diff Diff

Regressions in IfStatements.IfStatements

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[Or - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/IfStatements.IfStatements.Or.html>) 69.25 μs 75.13 μs 1.08 0.03 False

graph Test Report

Repro

General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md

Payloads

Baseline Compare

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'IfStatements.IfStatements*'
### Payloads [Baseline]() [Compare]() ### Histogram #### IfStatements.IfStatements.Or ```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 75.12524137047163 > 72.76217337474473. IsChangePoint: Marked as a change because one of 1/13/2023 4:37:08 PM, 1/18/2023 6:24:13 PM, 1/22/2023 11:22:03 PM, 1/30/2023 9:42:46 PM, 2/9/2023 4:27:10 AM, 2/16/2023 6:27:39 AM, 3/6/2023 11:14:52 AM, 3/14/2023 10:43:28 AM falls between 3/5/2023 5:50:49 PM and 3/14/2023 10:43:28 AM. IsRegressionStdDev: Marked as regression because -100.24220931932479 (T) = (0 -74861.4948312425) / Math.Sqrt((59123.35088852874 / (24)) + (17570.913249687335 / (36))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (36) - 2, .025) and -0.07845478455870923 = (69415.51551637366 - 74861.4948312425) / 69415.51551637366 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 6123cb00bbec8ae3500c970890f5b0efcf7950e8
Compare ffbcb8336ac67496b0565112f663f74fda6cac34
Diff Diff

Regressions in PerfLabTests.DelegatePerf

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[DelegateInvoke - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/PerfLabTests.DelegatePerf.DelegateInvoke.html>) 438.41 μs 498.93 μs 1.14 0.03 False

graph Test Report

Repro

General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md

Payloads

Baseline Compare

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'PerfLabTests.DelegatePerf*'
### Payloads [Baseline]() [Compare]() ### Histogram #### PerfLabTests.DelegatePerf.DelegateInvoke ```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 498.93197544642857 > 458.39878559027784. IsChangePoint: Marked as a change because one of 1/5/2023 11:35:29 PM, 1/30/2023 9:42:46 PM, 2/13/2023 6:54:14 PM, 2/16/2023 9:36:08 AM, 2/20/2023 10:31:48 AM, 3/6/2023 11:14:52 AM, 3/14/2023 10:43:28 AM falls between 3/5/2023 5:50:49 PM and 3/14/2023 10:43:28 AM. IsRegressionStdDev: Marked as regression because -291.5940575161755 (T) = (0 -499186.86322520796) / Math.Sqrt((768519.1176506117 / (24)) + (478308.2721839842 / (36))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (36) - 2, .025) and -0.14199275139535145 = (437119.11710058857 - 499186.86322520796) / 437119.11710058857 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 6123cb00bbec8ae3500c970890f5b0efcf7950e8
Compare ffbcb8336ac67496b0565112f663f74fda6cac34
Diff Diff

Regressions in Benchstone.BenchI.Ackermann

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[Test - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/Benchstone.BenchI.Ackermann.Test.html>) 4.63 μs 4.97 μs 1.07 0.03 False

graph Test Report

Repro

General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md

Payloads

Baseline Compare

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'Benchstone.BenchI.Ackermann*'
### Payloads [Baseline]() [Compare]() ### Histogram #### Benchstone.BenchI.Ackermann.Test ```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.971126743431722 > 4.872064237892672. IsChangePoint: Marked as a change because one of 1/13/2023 4:37:08 PM, 1/18/2023 6:24:13 PM, 1/22/2023 11:22:03 PM, 1/30/2023 9:42:46 PM, 2/9/2023 4:10:34 PM, 3/6/2023 11:14:52 AM, 3/14/2023 10:43:28 AM falls between 3/5/2023 5:50:49 PM and 3/14/2023 10:43:28 AM. IsRegressionStdDev: Marked as regression because -32.60247067853048 (T) = (0 -4952.702499283771) / Math.Sqrt((477.1959292199303 / (24)) + (2719.7944679013285 / (36))) is less than -2.001717484144427 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (36) - 2, .025) and -0.06872648875239165 = (4634.209548848602 - 4952.702499283771) / 4634.209548848602 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)