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: 8 Regressions on 3/16/2023 2:58:09 AM #14231

Open performanceautofiler[bot] opened 1 year ago

performanceautofiler[bot] commented 1 year ago

Run Information

Name Value
Architecture x86
OS Windows 10.0.18362
Queue TigerWindows
Baseline 41cb2d30974d6dba121276f28c84b6ad362e150c
Compare 7f0c19acfcfe1d89d1aaee814e6fd00b3ff1c8a2
Diff Diff
Configs CompliationMode:tiered, RunKind:micro

Regressions in System.IO.Tests.Perf_FileStream

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[ReadAsync_NoBuffering - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.IO.Tests.Perf_FileStream.ReadAsync_NoBuffering(fileSize%3a%20104857600%2c%20userBufferSize%3a%2016384%2c%20options%3a%20Asynchronous).html>) 77.43 ms 150.00 ms 1.94 0.23 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.IO.Tests.Perf_FileStream*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.IO.Tests.Perf_FileStream.ReadAsync_NoBuffering(fileSize: 104857600, userBufferSize: 16384, options: Asynchronous) ```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 150.0013575 > 82.72334087499999. IsChangePoint: Marked as a change because one of 3/16/2023 12:15:41 AM, 3/21/2023 3:33:39 AM falls between 3/11/2023 9:11:51 PM and 3/21/2023 3:33:39 AM. IsRegressionStdDev: Marked as regression because -27.820573695597847 (T) = (0 -159345542.53654972) / Math.Sqrt((4278767180905.9043 / (35)) + (196528759164241.1 / (23))) is less than -2.0032407188469383 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (35) + (23) - 2, .025) and -1.0575977313720235 = (77442514.6893493 - 159345542.53654972) / 77442514.6893493 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

Name Value
Architecture x86
OS Windows 10.0.18362
Queue TigerWindows
Baseline 41cb2d30974d6dba121276f28c84b6ad362e150c
Compare 7f0c19acfcfe1d89d1aaee814e6fd00b3ff1c8a2
Diff Diff
Configs CompliationMode:tiered, RunKind:micro

Regressions in System.Tests.Perf_Random

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[NextDouble_unseeded - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Tests.Perf_Random.NextDouble_unseeded.html>) 0.62 ns 14.58 ns 23.48 0.35 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 'System.Tests.Perf_Random*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Tests.Perf_Random.NextDouble_unseeded ```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.577775189641986 > 0.6237951936550391. IsChangePoint: Marked as a change because one of 2/9/2023 4:10:34 PM, 2/14/2023 10:45:34 AM, 3/10/2023 4:14:40 PM, 3/16/2023 12:15:41 AM, 3/21/2023 3:33:39 AM falls between 3/11/2023 9:11:51 PM and 3/21/2023 3:33:39 AM. IsRegressionStdDev: Marked as regression because -9.126384576320177 (T) = (0 -14.831726550949377) / Math.Sqrt((42.16460671625814 / (35)) + (1.7181093914315904 / (23))) is less than -2.0032407188469383 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (35) + (23) - 2, .025) and -2.2895010146839825 = (4.508807410224873 - 14.831726550949377) / 4.508807410224873 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 BDN Disasm ```assembly ; System.Tests.Perf_Random.NextDouble_unseeded() push ebp mov ebp,esp sub esp,8 vzeroupper mov ecx,[ecx+4] mov eax,[ecx] mov eax,[eax+2C] call dword ptr [eax+0C] fstp qword ptr [ebp-8] vmovsd xmm0,qword ptr [ebp-8] vmovsd qword ptr [ebp-8],xmm0 fld qword ptr [ebp-8] mov esp,ebp pop ebp ret ; Total bytes of code 40 ``` ### Compare BDN Disasm ```assembly ; System.Tests.Perf_Random.NextDouble_unseeded() push ebp mov ebp,esp sub esp,8 vzeroupper mov ecx,[ecx+4] mov eax,[ecx] mov eax,[eax+2C] call dword ptr [eax+0C] fstp qword ptr [ebp-8] vmovsd xmm0,qword ptr [ebp-8] vmovsd qword ptr [ebp-8],xmm0 fld qword ptr [ebp-8] mov esp,ebp pop ebp ret ; Total bytes of code 40 ``` ### 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

Name Value
Architecture x86
OS Windows 10.0.18362
Queue TigerWindows
Baseline 41cb2d30974d6dba121276f28c84b6ad362e150c
Compare 7f0c19acfcfe1d89d1aaee814e6fd00b3ff1c8a2
Diff Diff
Configs CompliationMode:tiered, RunKind:micro

Regressions in System.Collections.CopyTo<Int32>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[ReadOnlySpan - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Collections.CopyTo(Int32).ReadOnlySpan(Size%3a%202048).html>) 166.37 ns 185.97 ns 1.12 0.10 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.CopyTo&lt;Int32&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Collections.CopyTo<Int32>.ReadOnlySpan(Size: 2048) ```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 185.97041729512318 > 184.66445193040673. IsChangePoint: Marked as a change because one of 1/5/2023 11:35:29 PM, 1/23/2023 2:02:15 AM, 2/1/2023 4:12:58 PM, 3/11/2023 8:53:40 AM, 3/16/2023 12:15:41 AM, 3/21/2023 3:33:39 AM falls between 3/11/2023 9:11:51 PM and 3/21/2023 3:33:39 AM. IsRegressionStdDev: Marked as regression because -7.026289919847508 (T) = (0 -186.945250557219) / Math.Sqrt((104.0206742734286 / (35)) + (1.529071532731485 / (23))) is less than -2.0032407188469383 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (35) + (23) - 2, .025) and -0.07010822944400621 = (174.697516955224 - 186.945250557219) / 174.697516955224 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

Name Value
Architecture x86
OS Windows 10.0.18362
Queue TigerWindows
Baseline 41cb2d30974d6dba121276f28c84b6ad362e150c
Compare 7f0c19acfcfe1d89d1aaee814e6fd00b3ff1c8a2
Diff Diff
Configs CompliationMode:tiered, RunKind:micro

Regressions in System.Tests.Perf_Double

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[Parse - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Tests.Perf_Double.Parse(value%3a%20%2212345%22).html>) 0.56 ns 92.76 ns 166.03 0.16 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 'System.Tests.Perf_Double*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Tests.Perf_Double.Parse(value: "12345") ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsRegressionWindowed: Marked as regression because 92.76298773614067 > 0.6746822913510206. IsChangePoint: Marked as a change because one of 2/9/2023 4:10:34 PM, 2/14/2023 11:21:41 AM, 3/10/2023 4:14:40 PM, 3/16/2023 12:15:41 AM, 3/21/2023 3:33:39 AM falls between 3/11/2023 9:11:51 PM and 3/21/2023 3:33:39 AM. IsRegressionStdDev: Marked as regression because -7.782195429515743 (T) = (0 -90.86317690725468) / Math.Sqrt((1807.9783056265328 / (35)) + (412.14736774167153 / (22))) is less than -2.0040447832881556 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (35) + (22) - 2, .025) and -2.5533261882180063 = (25.571301956047716 - 90.86317690725468) / 25.571301956047716 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 BDN Disasm ```assembly ; System.Tests.Perf_Double.Parse(System.String) push ebp mov ebp,esp push edi push esi sub esp,10 vzeroupper test edx,edx je short M00_L00 lea esi,[edx+8] mov edi,[edx+4] push edi push esi call dword ptr ds:[0A3258B8]; System.Globalization.NumberFormatInfo.get_CurrentInfo() mov edx,eax lea ecx,[ebp-10] push ecx mov ecx,0E7 call dword ptr ds:[82AF288]; System.Number.TryParseDouble(System.ReadOnlySpan`1, System.Globalization.NumberStyles, System.Globalization.NumberFormatInfo, Double ByRef) test eax,eax je short M00_L01 vmovsd xmm0,qword ptr [ebp-10] vmovsd qword ptr [ebp-18],xmm0 fld qword ptr [ebp-18] lea esp,[ebp-8] pop esi pop edi pop ebp ret M00_L00: mov ecx,11 call dword ptr ds:[8317588] int 3 M00_L01: push edi push esi mov ecx,1 xor edx,edx call dword ptr ds:[82AF378] int 3 ; Total bytes of code 98 ``` ```assembly ; System.Globalization.NumberFormatInfo.get_CurrentInfo() push ebp mov ebp,esp mov ecx,2F54F20 mov edx,253 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov ecx,[eax+4] test ecx,ecx jne short M01_L00 mov ecx,ds:[6A7122C] test ecx,ecx jne short M01_L00 mov ecx,ds:[6A7121C] test ecx,ecx je short M01_L03 M01_L00: cmp byte ptr [ecx+31],0 jne short M01_L01 mov eax,[ecx+0C] test eax,eax je short M01_L01 pop ebp ret M01_L01: mov edx,7C756F8 mov eax,[ecx] mov eax,[eax+30] call dword ptr [eax] mov edx,eax mov eax,edx test eax,eax je short M01_L02 mov ecx,offset MT_System.Globalization.NumberFormatInfo cmp [eax],ecx jne short M01_L04 M01_L02: pop ebp ret M01_L03: call dword ptr ds:[82A95D0] mov ecx,eax jmp short M01_L00 M01_L04: call dword ptr ds:[7C3B8B8] int 3 ; Total bytes of code 108 ``` ```assembly ; System.Number.TryParseDouble(System.ReadOnlySpan`1, System.Globalization.NumberStyles, System.Globalization.NumberFormatInfo, Double ByRef) push ebp mov ebp,esp push edi push esi push ebx sub esp,44 vzeroupper vxorps xmm4,xmm4,xmm4 vmovdqu xmmword ptr [ebp-28],xmm4 xor eax,eax mov [ebp-18],eax mov [ebp-14],eax mov [ebp-10],esp mov dword ptr [ebp-48],599B27A9 mov esi,edx test [esp],esp sub esp,304 lea edx,[esp] mov [ebp-10],esp mov byte ptr [ebp-1A],3 mov [ebp-18],edx mov dword ptr [ebp-14],301 lea edx,[ebp-18] cmp dword ptr [edx+4],0 jbe near ptr M02_L83 mov edx,[edx] mov byte ptr [edx],0 mov edi,[ebp+0C] mov ebx,[ebp+10] mov [ebp-28],edi mov eax,edi mov [ebp-2C],eax mov [ebp-30],eax push ecx lea edx,[ebp-24] push edx push esi mov edx,[ebp-30] lea edx,[edx+ebx*2] lea ecx,[ebp-30] call dword ptr ds:[82ADFC0]; System.Number.TryParseNumber(Char* ByRef, Char*, System.Globalization.NumberStyles, NumberBuffer ByRef, System.Globalization.NumberFormatInfo) test eax,eax jne short M02_L04 M02_L00: xor ecx,ecx M02_L01: xor eax,eax mov [ebp-28],eax test ecx,ecx jne near ptr M02_L49 mov edi,[ebp+0C] mov ebx,[ebp+10] xor eax,eax test ebx,ebx jle short M02_L08 M02_L02: mov [ebp-34],eax movzx ecx,word ptr [edi+eax*2] cmp ecx,100 jae short M02_L06 test byte ptr [ecx+6C3F2A28],80 je short M02_L03 jmp short M02_L07 M02_L03: mov eax,[ebp-34] jmp short M02_L08 M02_L04: mov ecx,[ebp-30] mov eax,[ebp-2C] sub ecx,eax mov edx,ecx shr edx,1F add ecx,edx sar ecx,1 cmp ecx,ebx jl near ptr M02_L52 M02_L05: xor ecx,ecx mov [ebp-28],ecx mov ecx,1 jmp short M02_L01 M02_L06: call dword ptr ds:[0ADE1360] test eax,eax je short M02_L11 M02_L07: mov eax,[ebp-34] inc eax cmp eax,ebx jl short M02_L02 M02_L08: lea edx,[ebx-1] mov [ebp-34],eax cmp edx,eax jle short M02_L14 M02_L09: cmp edx,ebx jae near ptr M02_L83 mov [ebp-38],edx movzx ecx,word ptr [edi+edx*2] cmp ecx,100 jae short M02_L12 test byte ptr [ecx+6C3F2A28],80 je short M02_L10 jmp short M02_L13 M02_L10: mov edx,[ebp-38] jmp short M02_L14 M02_L11: mov eax,[ebp-34] jmp short M02_L08 M02_L12: call dword ptr ds:[0ADE1360] test eax,eax je short M02_L16 M02_L13: mov edx,[ebp-38] dec edx mov eax,[ebp-34] cmp edx,eax mov [ebp-34],eax jg short M02_L09 M02_L14: mov eax,[ebp-34] sub edx,eax inc edx cmp eax,ebx ja near ptr M02_L76 sub ebx,eax cmp ebx,edx jb near ptr M02_L76 lea edi,[edi+eax*2] mov ebx,edx mov ecx,[esi+30] test ecx,ecx je short M02_L17 lea edx,[ecx+8] mov eax,[ecx+4] M02_L15: mov ecx,ebx cmp ecx,eax jne short M02_L23 test eax,eax je near ptr M02_L53 jmp short M02_L20 M02_L16: mov edx,[ebp-38] jmp short M02_L14 M02_L17: xor edx,edx xor eax,eax jmp short M02_L15 M02_L18: lea edx,[ecx+8] mov eax,[ecx+4] M02_L19: mov ecx,ebx cmp ecx,eax jne short M02_L29 test eax,eax je near ptr M02_L54 jmp short M02_L26 M02_L20: mov ecx,ebx cmp ecx,8 jge short M02_L21 push ebx mov ecx,edi call dword ptr ds:[845F420] jmp short M02_L22 M02_L21: push ebx mov ecx,edi call dword ptr ds:[845F3F0] M02_L22: test eax,eax jne near ptr M02_L53 M02_L23: mov ecx,[esi+34] test ecx,ecx jne short M02_L18 xor edx,edx xor eax,eax jmp short M02_L19 M02_L24: lea edx,[ecx+8] mov eax,[ecx+4] M02_L25: mov ecx,ebx cmp ecx,eax jne short M02_L32 test eax,eax je near ptr M02_L55 jmp near ptr M02_L39 M02_L26: mov ecx,ebx cmp ecx,8 jge short M02_L27 push ebx mov ecx,edi call dword ptr ds:[845F420] jmp short M02_L28 M02_L27: push ebx mov ecx,edi call dword ptr ds:[845F3F0] M02_L28: test eax,eax jne near ptr M02_L54 M02_L29: mov ecx,[esi+2C] test ecx,ecx jne short M02_L24 xor edx,edx xor eax,eax jmp short M02_L25 M02_L30: push ebx mov ecx,edi call dword ptr ds:[845F3F0] M02_L31: test eax,eax jne near ptr M02_L55 M02_L32: mov ecx,[esi+10] test ecx,ecx je short M02_L34 lea edx,[ecx+8] mov eax,[ecx+4] M02_L33: cmp eax,ebx jg short M02_L35 cmp eax,8 jge short M02_L40 push eax mov ecx,edi call dword ptr ds:[845F420] jmp short M02_L41 M02_L34: xor edx,edx xor eax,eax jmp short M02_L33 M02_L35: xor eax,eax M02_L36: test eax,eax jne near ptr M02_L56 mov ecx,[esi+14] test ecx,ecx je short M02_L38 lea edx,[ecx+8] mov eax,[ecx+4] M02_L37: cmp eax,ebx jg short M02_L42 cmp eax,8 jge short M02_L47 push eax mov ecx,edi call dword ptr ds:[845F420] jmp short M02_L48 M02_L38: xor edx,edx xor eax,eax jmp short M02_L37 M02_L39: mov ecx,ebx cmp ecx,8 jge short M02_L30 push ebx mov ecx,edi call dword ptr ds:[845F420] jmp short M02_L31 M02_L40: push eax mov ecx,edi call dword ptr ds:[845F3F0] M02_L41: jmp short M02_L36 M02_L42: xor eax,eax M02_L43: test eax,eax jne near ptr M02_L70 M02_L44: cmp byte ptr [esi+72],0 jne near ptr M02_L75 M02_L45: vxorps xmm0,xmm0,xmm0 mov esi,[ebp+8] vmovsd qword ptr [esi],xmm0 xor eax,eax cmp dword ptr [ebp-48],599B27A9 je short M02_L46 call CORINFO_HELP_FAIL_FAST M02_L46: lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret 0C M02_L47: push eax mov ecx,edi call dword ptr ds:[845F3F0] M02_L48: jmp short M02_L43 M02_L49: lea ecx,[ebp-24] call dword ptr ds:[82AF438]; System.Number.NumberToDouble(NumberBuffer ByRef) fstp qword ptr [ebp-50] mov esi,[ebp+8] vmovsd xmm0,qword ptr [ebp-50] vmovsd qword ptr [esi],xmm0 M02_L50: mov eax,1 cmp dword ptr [ebp-48],599B27A9 je short M02_L51 call CORINFO_HELP_FAIL_FAST M02_L51: lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret 0C M02_L52: push ebx push edi mov ecx,[ebp-30] sub ecx,eax mov eax,ecx shr eax,1F add ecx,eax sar ecx,1 call dword ptr ds:[82AF2E8] test eax,eax jne near ptr M02_L05 jmp near ptr M02_L00 M02_L53: vmovsd xmm0,qword ptr ds:[0ADA16F0] mov esi,[ebp+8] vmovsd qword ptr [esi],xmm0 jmp short M02_L50 M02_L54: vmovsd xmm0,qword ptr ds:[0ADA16F8] mov esi,[ebp+8] vmovsd qword ptr [esi],xmm0 jmp short M02_L50 M02_L55: vmovsd xmm0,qword ptr ds:[0ADA1700] mov esi,[ebp+8] vmovsd qword ptr [esi],xmm0 jmp short M02_L50 M02_L56: mov ecx,[esi+10] mov ecx,[ecx+4] cmp ecx,ebx ja near ptr M02_L76 lea edi,[edi+ecx*2] sub ebx,ecx mov ecx,[esi+30] test ecx,ecx jne short M02_L57 xor edx,edx xor eax,eax jmp short M02_L58 M02_L57: lea edx,[ecx+8] mov eax,[ecx+4] M02_L58: cmp ebx,eax jne short M02_L62 test eax,eax je short M02_L61 mov ecx,ebx cmp ecx,8 jge short M02_L59 push ebx mov ecx,edi call dword ptr ds:[845F420] jmp short M02_L60 M02_L59: push ebx mov ecx,edi call dword ptr ds:[845F3F0] M02_L60: test eax,eax je short M02_L62 M02_L61: vmovsd xmm0,qword ptr ds:[0ADA16F0] mov esi,[ebp+8] vmovsd qword ptr [esi],xmm0 jmp near ptr M02_L50 M02_L62: mov eax,ebx mov ecx,[esi+2C] test ecx,ecx jne short M02_L63 xor edx,edx xor esi,esi jmp short M02_L64 M02_L63: lea edx,[ecx+8] mov esi,[ecx+4] M02_L64: mov ecx,edi cmp eax,esi jne short M02_L68 test esi,esi je short M02_L67 cmp eax,8 jge short M02_L65 push eax call dword ptr ds:[845F420] jmp short M02_L66 M02_L65: push eax call dword ptr ds:[845F3F0] M02_L66: test eax,eax je short M02_L68 M02_L67: vmovsd xmm0,qword ptr ds:[0ADA1700] mov esi,[ebp+8] vmovsd qword ptr [esi],xmm0 jmp near ptr M02_L50 M02_L68: vxorps xmm0,xmm0,xmm0 mov esi,[ebp+8] vmovsd qword ptr [esi],xmm0 xor eax,eax cmp dword ptr [ebp-48],599B27A9 je short M02_L69 call CORINFO_HELP_FAIL_FAST M02_L69: lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret 0C M02_L70: mov ecx,[esi+14] mov ecx,[ecx+4] cmp ecx,ebx ja near ptr M02_L76 lea edx,[edi+ecx*2] mov eax,ebx sub eax,ecx mov [ebp-3C],eax mov ecx,[esi+2C] test ecx,ecx jne short M02_L71 xor ecx,ecx xor eax,eax jmp short M02_L72 M02_L71: lea eax,[ecx+8] mov ecx,[ecx+4] xchg eax,ecx M02_L72: mov [ebp-44],edx mov edx,[ebp-3C] cmp edx,eax jne near ptr M02_L44 test eax,eax je near ptr M02_L82 mov eax,[ebp-44] mov [ebp-40],ecx cmp edx,8 jge short M02_L73 push edx mov ecx,eax mov edx,[ebp-40] call dword ptr ds:[845F420] jmp short M02_L74 M02_L73: push edx mov ecx,eax mov edx,[ebp-40] call dword ptr ds:[845F3F0] M02_L74: test eax,eax jne short M02_L82 jmp near ptr M02_L44 M02_L75: push ebx push edi mov ecx,2D call dword ptr ds:[82AF270] test eax,eax je near ptr M02_L45 cmp ebx,1 jae short M02_L77 M02_L76: call dword ptr ds:[8317270] int 3 M02_L77: lea ecx,[edi+2] lea eax,[ebx-1] mov edx,[esi+2C] test edx,edx jne short M02_L78 xor edx,edx xor esi,esi jmp short M02_L79 M02_L78: lea esi,[edx+8] mov edx,[edx+4] mov ebx,edx mov edx,esi mov esi,ebx M02_L79: cmp eax,esi jne near ptr M02_L45 test esi,esi je short M02_L82 cmp eax,8 jge short M02_L80 push eax call dword ptr ds:[845F420] jmp short M02_L81 M02_L80: push eax call dword ptr ds:[845F3F0] M02_L81: test eax,eax je near ptr M02_L45 M02_L82: vmovsd xmm0,qword ptr ds:[0ADA1700] mov esi,[ebp+8] vmovsd qword ptr [esi],xmm0 jmp near ptr M02_L50 M02_L83: call CORINFO_HELP_RNGCHKFAIL int 3 ; Total bytes of code 1328 ``` ### Compare BDN Disasm ```assembly ; System.Tests.Perf_Double.Parse(System.String) push ebp mov ebp,esp push edi push esi sub esp,10 vzeroupper test edx,edx je short M00_L00 lea esi,[edx+8] mov edi,[edx+4] push edi push esi call dword ptr ds:[0B1B3288]; System.Globalization.NumberFormatInfo.get_CurrentInfo() mov edx,eax lea ecx,[ebp-10] push ecx mov ecx,0E7 call dword ptr ds:[90DF288]; System.Number.TryParseDouble(System.ReadOnlySpan`1, System.Globalization.NumberStyles, System.Globalization.NumberFormatInfo, Double ByRef) test eax,eax je short M00_L01 vmovsd xmm0,qword ptr [ebp-10] vmovsd qword ptr [ebp-18],xmm0 fld qword ptr [ebp-18] lea esp,[ebp-8] pop esi pop edi pop ebp ret M00_L00: mov ecx,11 call dword ptr ds:[9147588] int 3 M00_L01: push edi push esi mov ecx,1 xor edx,edx call dword ptr ds:[90DF378] int 3 ; Total bytes of code 98 ``` ```assembly ; System.Globalization.NumberFormatInfo.get_CurrentInfo() push ebp mov ebp,esp mov ecx,55E4F30 mov edx,253 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE mov ecx,[eax+4] test ecx,ecx jne short M01_L00 mov ecx,ds:[789122C] test ecx,ecx jne short M01_L00 mov ecx,ds:[789121C] test ecx,ecx je short M01_L03 M01_L00: cmp byte ptr [ecx+31],0 jne short M01_L01 mov eax,[ecx+0C] test eax,eax je short M01_L01 pop ebp ret M01_L01: mov edx,8AA568C mov eax,[ecx] mov eax,[eax+30] call dword ptr [eax] mov edx,eax mov eax,edx test eax,eax je short M01_L02 mov ecx,offset MT_System.Globalization.NumberFormatInfo cmp [eax],ecx jne short M01_L04 M01_L02: pop ebp ret M01_L03: call dword ptr ds:[90D95D0] mov ecx,eax jmp short M01_L00 M01_L04: call dword ptr ds:[8A6B8B8] int 3 ; Total bytes of code 108 ``` ```assembly ; System.Number.TryParseDouble(System.ReadOnlySpan`1, System.Globalization.NumberStyles, System.Globalization.NumberFormatInfo, Double ByRef) push ebp mov ebp,esp push edi push esi push ebx sub esp,44 vzeroupper vxorps xmm4,xmm4,xmm4 vmovdqu xmmword ptr [ebp-28],xmm4 xor eax,eax mov [ebp-18],eax mov [ebp-14],eax mov [ebp-10],esp mov dword ptr [ebp-48],0D3F5D4CE mov esi,edx test [esp],esp sub esp,304 lea edx,[esp] mov [ebp-10],esp mov byte ptr [ebp-1A],3 mov [ebp-18],edx mov dword ptr [ebp-14],301 lea edx,[ebp-18] cmp dword ptr [edx+4],0 jbe near ptr M02_L81 mov edx,[edx] mov byte ptr [edx],0 mov edi,[ebp+0C] mov ebx,[ebp+10] mov [ebp-28],edi mov eax,edi mov [ebp-2C],eax mov [ebp-30],eax push ecx lea edx,[ebp-24] push edx push esi mov edx,[ebp-30] lea edx,[edx+ebx*2] lea ecx,[ebp-30] call dword ptr ds:[90DDFC0]; System.Number.TryParseNumber(Char* ByRef, Char*, System.Globalization.NumberStyles, NumberBuffer ByRef, System.Globalization.NumberFormatInfo) test eax,eax jne short M02_L04 M02_L00: xor ecx,ecx M02_L01: xor eax,eax mov [ebp-28],eax test ecx,ecx jne near ptr M02_L47 mov edi,[ebp+0C] mov ebx,[ebp+10] xor eax,eax test ebx,ebx jle short M02_L08 M02_L02: mov [ebp-34],eax movzx ecx,word ptr [edi+eax*2] cmp ecx,100 jae short M02_L06 test byte ptr [ecx+6BE41F58],80 je short M02_L03 jmp short M02_L07 M02_L03: mov eax,[ebp-34] jmp short M02_L08 M02_L04: mov ecx,[ebp-30] mov eax,[ebp-2C] sub ecx,eax mov edx,ecx shr edx,1F add ecx,edx sar ecx,1 cmp ecx,ebx jl near ptr M02_L63 M02_L05: xor ecx,ecx mov [ebp-28],ecx mov ecx,1 jmp short M02_L01 M02_L06: call dword ptr ds:[0BC81360] test eax,eax je short M02_L11 M02_L07: mov eax,[ebp-34] inc eax cmp eax,ebx jl short M02_L02 M02_L08: lea edx,[ebx-1] mov [ebp-34],eax cmp edx,eax jle short M02_L14 M02_L09: cmp edx,ebx jae near ptr M02_L81 mov [ebp-38],edx movzx ecx,word ptr [edi+edx*2] cmp ecx,100 jae short M02_L12 test byte ptr [ecx+6BE41F58],80 je short M02_L10 jmp short M02_L13 M02_L10: mov edx,[ebp-38] jmp short M02_L14 M02_L11: mov eax,[ebp-34] jmp short M02_L08 M02_L12: call dword ptr ds:[0BC81360] test eax,eax je short M02_L16 M02_L13: mov edx,[ebp-38] dec edx mov eax,[ebp-34] cmp edx,eax mov [ebp-34],eax jg short M02_L09 M02_L14: mov eax,[ebp-34] sub edx,eax inc edx cmp eax,ebx ja near ptr M02_L56 sub ebx,eax cmp ebx,edx jb near ptr M02_L56 lea edi,[edi+eax*2] mov ebx,edx mov ecx,[esi+30] test ecx,ecx je short M02_L17 lea edx,[ecx+8] mov eax,[ecx+4] M02_L15: cmp ebx,eax jne short M02_L20 test eax,eax je near ptr M02_L64 jmp short M02_L22 M02_L16: mov edx,[ebp-38] jmp short M02_L14 M02_L17: xor edx,edx xor eax,eax jmp short M02_L15 M02_L18: push ebx mov ecx,edi call dword ptr ds:[92BF3F0] M02_L19: test eax,eax jne near ptr M02_L64 M02_L20: mov ecx,[esi+34] test ecx,ecx je short M02_L23 lea edx,[ecx+8] mov eax,[ecx+4] M02_L21: cmp ebx,eax jne short M02_L27 test eax,eax je near ptr M02_L65 jmp short M02_L24 M02_L22: mov ecx,ebx cmp ecx,8 jge short M02_L18 push ebx mov ecx,edi call dword ptr ds:[92BF420] jmp short M02_L19 M02_L23: xor edx,edx xor eax,eax jmp short M02_L21 M02_L24: cmp ebx,8 jge short M02_L25 push ebx mov ecx,edi call dword ptr ds:[92BF420] jmp short M02_L26 M02_L25: push ebx mov ecx,edi call dword ptr ds:[92BF3F0] M02_L26: test eax,eax jne near ptr M02_L65 M02_L27: mov ecx,[esi+2C] test ecx,ecx je short M02_L29 lea edx,[ecx+8] mov eax,[ecx+4] M02_L28: mov ecx,ebx cmp ecx,eax jne short M02_L32 test eax,eax je near ptr M02_L66 jmp short M02_L35 M02_L29: xor edx,edx xor eax,eax jmp short M02_L28 M02_L30: push ebx mov ecx,edi call dword ptr ds:[92BF3F0] M02_L31: test eax,eax jne near ptr M02_L66 M02_L32: mov ecx,[esi+10] test ecx,ecx je short M02_L34 lea edx,[ecx+8] mov eax,[ecx+4] M02_L33: cmp eax,ebx jg short M02_L38 cmp eax,8 jge short M02_L36 push eax mov ecx,edi call dword ptr ds:[92BF420] jmp short M02_L37 M02_L34: xor edx,edx xor eax,eax jmp short M02_L33 M02_L35: cmp ebx,8 jge short M02_L30 push ebx mov ecx,edi call dword ptr ds:[92BF420] jmp short M02_L31 M02_L36: push eax mov ecx,edi call dword ptr ds:[92BF3F0] M02_L37: test eax,eax jne near ptr M02_L67 M02_L38: mov ecx,[esi+14] test ecx,ecx je short M02_L40 lea edx,[ecx+8] mov eax,[ecx+4] M02_L39: cmp eax,ebx jg short M02_L42 cmp eax,8 jge short M02_L45 push eax mov ecx,edi call dword ptr ds:[92BF420] jmp short M02_L46 M02_L40: xor edx,edx xor eax,eax jmp short M02_L39 M02_L41: test eax,eax jne short M02_L50 M02_L42: cmp byte ptr [esi+72],0 jne near ptr M02_L55 M02_L43: vxorps xmm0,xmm0,xmm0 mov esi,[ebp+8] vmovsd qword ptr [esi],xmm0 xor eax,eax cmp dword ptr [ebp-48],0D3F5D4CE je short M02_L44 call CORINFO_HELP_FAIL_FAST M02_L44: lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret 0C M02_L45: push eax mov ecx,edi call dword ptr ds:[92BF3F0] M02_L46: jmp short M02_L41 M02_L47: lea ecx,[ebp-24] call dword ptr ds:[90DF438]; System.Number.NumberToDouble(NumberBuffer ByRef) fstp qword ptr [ebp-50] mov esi,[ebp+8] vmovsd xmm0,qword ptr [ebp-50] vmovsd qword ptr [esi],xmm0 M02_L48: mov eax,1 cmp dword ptr [ebp-48],0D3F5D4CE je short M02_L49 call CORINFO_HELP_FAIL_FAST M02_L49: lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret 0C M02_L50: mov ecx,[esi+14] mov ecx,[ecx+4] cmp ecx,ebx ja near ptr M02_L56 lea edx,[edi+ecx*2] mov eax,ebx sub eax,ecx mov [ebp-3C],eax mov ecx,[esi+2C] test ecx,ecx jne short M02_L51 xor ecx,ecx xor eax,eax jmp short M02_L52 M02_L51: lea eax,[ecx+8] mov ecx,[ecx+4] xchg eax,ecx M02_L52: mov [ebp-44],edx mov edx,[ebp-3C] cmp edx,eax jne near ptr M02_L42 test eax,eax je near ptr M02_L62 mov eax,[ebp-44] mov [ebp-40],ecx cmp edx,8 jge short M02_L53 push edx mov ecx,eax mov edx,[ebp-40] call dword ptr ds:[92BF420] jmp short M02_L54 M02_L53: push edx mov ecx,eax mov edx,[ebp-40] call dword ptr ds:[92BF3F0] M02_L54: test eax,eax jne short M02_L62 jmp near ptr M02_L42 M02_L55: push ebx push edi mov ecx,2D call dword ptr ds:[90DF270] test eax,eax je near ptr M02_L43 cmp ebx,1 jae short M02_L57 M02_L56: call dword ptr ds:[9147270] int 3 M02_L57: lea ecx,[edi+2] lea eax,[ebx-1] mov edx,[esi+2C] test edx,edx jne short M02_L58 xor edx,edx xor esi,esi jmp short M02_L59 M02_L58: lea esi,[edx+8] mov edx,[edx+4] mov ebx,edx mov edx,esi mov esi,ebx M02_L59: cmp eax,esi jne near ptr M02_L43 test esi,esi je short M02_L62 cmp eax,8 jge short M02_L60 push eax call dword ptr ds:[92BF420] jmp short M02_L61 M02_L60: push eax call dword ptr ds:[92BF3F0] M02_L61: test eax,eax je near ptr M02_L43 M02_L62: vmovsd xmm0,qword ptr ds:[0BC51768] mov esi,[ebp+8] vmovsd qword ptr [esi],xmm0 jmp near ptr M02_L48 M02_L63: push ebx push edi mov ecx,[ebp-30] sub ecx,eax mov eax,ecx shr eax,1F add ecx,eax sar ecx,1 call dword ptr ds:[90DF2E8] test eax,eax jne near ptr M02_L05 jmp near ptr M02_L00 M02_L64: vmovsd xmm0,qword ptr ds:[0BC51770] mov esi,[ebp+8] vmovsd qword ptr [esi],xmm0 jmp near ptr M02_L48 M02_L65: vmovsd xmm0,qword ptr ds:[0BC51778] mov esi,[ebp+8] vmovsd qword ptr [esi],xmm0 jmp near ptr M02_L48 M02_L66: vmovsd xmm0,qword ptr ds:[0BC51768] mov esi,[ebp+8] vmovsd qword ptr [esi],xmm0 jmp near ptr M02_L48 M02_L67: mov ecx,[esi+10] mov ecx,[ecx+4] cmp ecx,ebx ja near ptr M02_L56 lea edi,[edi+ecx*2] sub ebx,ecx mov ecx,[esi+30] test ecx,ecx jne short M02_L68 xor edx,edx xor eax,eax jmp short M02_L69 M02_L68: lea edx,[ecx+8] mov eax,[ecx+4] M02_L69: mov ecx,ebx cmp ecx,eax jne short M02_L73 test eax,eax je short M02_L72 cmp ebx,8 jge short M02_L70 push ebx mov ecx,edi call dword ptr ds:[92BF420] jmp short M02_L71 M02_L70: push ebx mov ecx,edi call dword ptr ds:[92BF3F0] M02_L71: test eax,eax je short M02_L73 M02_L72: vmovsd xmm0,qword ptr ds:[0BC51770] mov esi,[ebp+8] vmovsd qword ptr [esi],xmm0 jmp near ptr M02_L48 M02_L73: mov eax,ebx mov ecx,[esi+2C] test ecx,ecx jne short M02_L74 xor edx,edx xor esi,esi jmp short M02_L75 M02_L74: lea edx,[ecx+8] mov esi,[ecx+4] M02_L75: mov ecx,edi cmp eax,esi jne short M02_L79 test esi,esi je short M02_L78 cmp eax,8 jge short M02_L76 push eax call dword ptr ds:[92BF420] jmp short M02_L77 M02_L76: push eax call dword ptr ds:[92BF3F0] M02_L77: test eax,eax je short M02_L79 M02_L78: vmovsd xmm0,qword ptr ds:[0BC51768] mov esi,[ebp+8] vmovsd qword ptr [esi],xmm0 jmp near ptr M02_L48 M02_L79: vxorps xmm0,xmm0,xmm0 mov esi,[ebp+8] vmovsd qword ptr [esi],xmm0 xor eax,eax cmp dword ptr [ebp-48],0D3F5D4CE je short M02_L80 call CORINFO_HELP_FAIL_FAST M02_L80: lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret 0C M02_L81: call CORINFO_HELP_RNGCHKFAIL int 3 ; Total bytes of code 1316 ``` ### 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

Name Value
Architecture x86
OS Windows 10.0.18362
Queue TigerWindows
Baseline 41cb2d30974d6dba121276f28c84b6ad362e150c
Compare 7f0c19acfcfe1d89d1aaee814e6fd00b3ff1c8a2
Diff Diff
Configs CompliationMode:tiered, RunKind:micro

Regressions in System.Net.Http.Tests.SocketsHttpHandlerPerfTest

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[Get - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Net.Http.Tests.SocketsHttpHandlerPerfTest.Get(ssl%3a%20True%2c%20chunkedResponse%3a%20False%2c%20responseLength%3a%20100000).html>) 159.16 μs 176.53 μs 1.11 0.12 False
[Get - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Net.Http.Tests.SocketsHttpHandlerPerfTest.Get(ssl%3a%20True%2c%20chunkedResponse%3a%20True%2c%20responseLength%3a%20100000).html>) 156.87 μs 170.58 μs 1.09 0.26 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.Net.Http.Tests.SocketsHttpHandlerPerfTest*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Net.Http.Tests.SocketsHttpHandlerPerfTest.Get(ssl: True, chunkedResponse: False, responseLength: 100000) ```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 176.52519607843135 > 167.42023721070598. IsChangePoint: Marked as a change because one of 2/1/2023 6:25:50 PM, 2/7/2023 8:22:47 AM, 3/16/2023 12:15:41 AM, 3/21/2023 3:33:39 AM falls between 3/11/2023 9:11:51 PM and 3/21/2023 3:33:39 AM. IsRegressionStdDev: Marked as regression because -9.497797604377498 (T) = (0 -175539.7404163295) / Math.Sqrt((14924480.042319272 / (35)) + (57267938.47855172 / (23))) is less than -2.0032407188469383 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (35) + (23) - 2, .025) and -0.1018052535499742 = (159320.11564725 - 175539.7404163295) / 159320.11564725 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.Net.Http.Tests.SocketsHttpHandlerPerfTest.Get(ssl: True, chunkedResponse: True, responseLength: 100000) ```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 170.57646780303028 > 164.18479800124078. IsChangePoint: Marked as a change because one of 2/1/2023 6:25:50 PM, 2/7/2023 8:22:47 AM, 3/16/2023 12:15:41 AM, 3/21/2023 3:33:39 AM falls between 3/11/2023 9:11:51 PM and 3/21/2023 3:33:39 AM. IsRegressionStdDev: Marked as regression because -8.366099044739089 (T) = (0 -172065.20175490231) / Math.Sqrt((29719027.0159965 / (35)) + (62732342.34393045 / (23))) is less than -2.0032407188469383 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (35) + (23) - 2, .025) and -0.10126451409166205 = (156243.29990949 - 172065.20175490231) / 156243.29990949 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

Name Value
Architecture x86
OS Windows 10.0.18362
Queue TigerWindows
Baseline 41cb2d30974d6dba121276f28c84b6ad362e150c
Compare 7f0c19acfcfe1d89d1aaee814e6fd00b3ff1c8a2
Diff Diff
Configs CompliationMode:tiered, RunKind:micro

Regressions in System.Collections.ContainsFalse<Int32>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[Queue - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Collections.ContainsFalse(Int32).Queue(Size%3a%20512).html>) 26.22 μs 30.64 μs 1.17 0.09 False
[ImmutableArray - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Collections.ContainsFalse(Int32).ImmutableArray(Size%3a%20512).html>) 26.73 μs 31.45 μs 1.18 0.13 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.ContainsFalse&lt;Int32&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Collections.ContainsFalse<Int32>.Queue(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 30.636374299719893 > 27.536162749917224. IsChangePoint: Marked as a change because one of 1/5/2023 11:35:29 PM, 1/11/2023 4:46:06 PM, 2/14/2023 5:47:38 PM, 2/16/2023 6:27:39 AM, 3/10/2023 4:14:40 PM, 3/16/2023 12:15:41 AM, 3/21/2023 3:33:39 AM falls between 3/11/2023 9:11:51 PM and 3/21/2023 3:33:39 AM. IsRegressionStdDev: Marked as regression because -5.50736575499638 (T) = (0 -31222.034239664677) / Math.Sqrt((6776723.2614038 / (35)) + (3197617.2289390657 / (23))) is less than -2.0032407188469383 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (35) + (23) - 2, .025) and -0.11325852053614216 = (28045.627914555043 - 31222.034239664677) / 28045.627914555043 is less than -0.05. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```#### System.Collections.ContainsFalse<Int32>.ImmutableArray(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 31.447270000000003 > 30.541776056230038. IsChangePoint: Marked as a change because one of 1/6/2023 8:14:14 AM, 1/11/2023 4:46:06 PM, 2/9/2023 4:10:34 PM, 2/13/2023 11:10:05 PM, 3/11/2023 8:53:40 AM, 3/15/2023 9:07:40 PM, 3/21/2023 3:33:39 AM falls between 3/11/2023 9:11:51 PM and 3/21/2023 3:33:39 AM. IsRegressionStdDev: Marked as regression because -2.4831974071043987 (T) = (0 -31113.56097972249) / Math.Sqrt((10543381.284522561 / (34)) + (4808079.699678826 / (24))) is less than -2.0032407188469383 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (34) + (24) - 2, .025) and -0.06046861760156334 = (29339.44528230481 - 31113.56097972249) / 29339.44528230481 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)