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: 14 Regressions on 1/5/2023 11:35:29 PM #11520

Open performanceautofiler[bot] opened 1 year ago

performanceautofiler[bot] commented 1 year ago

Run Information

Architecture x86
OS Windows 10.0.18362
Baseline 83261a95516d09f7dbc94fa954e54a4250cb7450
Compare b0601cfa4a0366f271f8f3f041d40673243a6886
Diff Diff

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
[Array - 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).Array(Size%3a%202048).html>) 166.37 ns 188.78 ns 1.13 0.20 False

graph Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.CopyTo&lt;Int32&gt;*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Collections.CopyTo<Int32>.Array(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 188.7819838402044 > 174.72971808559475. IsChangePoint: Marked as a change because one of 12/6/2022 2:12:43 AM, 1/5/2023 6:34:45 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsRegressionStdDev: Marked as regression because -4.909038983008347 (T) = (0 -188.37623537309796) / Math.Sqrt((138.49483076097542 / (29)) + (0.38600417743274523 / (19))) is less than -2.0128955989180297 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (29) + (19) - 2, .025) and -0.06052441759758061 = (177.62555227142155 - 188.37623537309796) / 177.62555227142155 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 83261a95516d09f7dbc94fa954e54a4250cb7450
Compare b0601cfa4a0366f271f8f3f041d40673243a6886
Diff Diff

Regressions in System.Text.Encodings.Web.Tests.Perf_Encoders

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[EncodeUtf16 - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf16(arguments%3a%20UnsafeRelaxed%2chello%20%22there%22%2c512).html>) 97.64 ns 111.76 ns 1.14 0.11 False 1206.2150391149091 1301.9311701663426 1.079352460338803 Trace Trace
[EncodeUtf8 - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf8(arguments%3a%20JavaScript%2cno%20escaping%20required%2c512).html>) 60.67 ns 73.14 ns 1.21 0.30 False 764.5090211960761 866.4524166145584 1.1333449215013731 Trace Trace
[EncodeUtf8 - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf8(arguments%3a%20Url%2c%26lorem%20ipsum%3ddolor%20sit%20amet%2c512).html>) 156.55 ns 169.29 ns 1.08 0.02 False 1896.7628627734537 1993.4277179338192 1.0509630682135045 Trace Trace
[EncodeUtf8 - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf8(arguments%3a%20UnsafeRelaxed%2chello%20%22there%22%2c512).html>) 97.03 ns 103.57 ns 1.07 0.09 False 1094.3712939464897 1184.8790387824824 1.082702959531775 Trace Trace
[EncodeUtf16 - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf16(arguments%3a%20JavaScript%2cno%20escaping%20required%2c512).html>) 76.25 ns 87.91 ns 1.15 0.21 False 908.6537527014539 1010.7065130952452 1.1123120441536565 Trace Trace
[EncodeUtf16 - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf16(arguments%3a%20Url%2c%c2%a92020%2c512).html>) 101.35 ns 111.17 ns 1.10 0.07 False 1208.8815047417957 1315.2090133361094 1.087955277814449 Trace Trace
[EncodeUtf8 - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf8(arguments%3a%20JavaScript%2c%26Hello%2b(World)!%2c512).html>) 119.18 ns 131.42 ns 1.10 0.04 False 1416.1118719473097 1511.9218507693283 1.067657069134142
[EncodeUtf8 - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf8(arguments%3a%20Url%2c%c2%a92020%2c512).html>) 101.36 ns 113.87 ns 1.12 0.15 False 1220.1000197465783 1309.9289230224886 1.0736242126236244 Trace Trace
[EncodeUtf16 - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf16(arguments%3a%20Url%2c%26lorem%20ipsum%3ddolor%20sit%20amet%2c512).html>) 147.24 ns 164.53 ns 1.12 0.02 False 1909.3688869568655 2011.5885857901278 1.0535358565500557 Trace Trace
[EncodeUtf8 - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf8(arguments%3a%20UnsafeRelaxed%2cno%20(escaping%20%2f)%20required%2c16).html>) 22.51 ns 25.17 ns 1.12 0.10 False 236.797099773433 242.7814549429196 1.0252720796631902
[EncodeUtf16 - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf16(arguments%3a%20UnsafeRelaxed%2cno%20(escaping%20%2f)%20required%2c512).html>) 80.02 ns 88.41 ns 1.10 0.37 False 909.0900524487714 1009.7932535364527 1.1107736255791403
[EncodeUtf16 - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf16(arguments%3a%20JavaScript%2c%26Hello%2b(World)!%2c512).html>) 135.82 ns 171.46 ns 1.26 0.02 False 1703.4775523808642 1799.4267791477398 1.0563255011096402
[EncodeUtf8 - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x86_Windows 10.0.18362/System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf8(arguments%3a%20UnsafeRelaxed%2cno%20(escaping%20%2f)%20required%2c512).html>) 60.40 ns 74.20 ns 1.23 0.31 False 764.5214253803755 866.7989170375918 1.1337797585022942

graph graph graph graph graph graph graph graph graph graph graph graph graph Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Text.Encodings.Web.Tests.Perf_Encoders*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf16(arguments: UnsafeRelaxed,hello "there",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 111.76242396217162 > 104.2137295318704. IsChangePoint: Marked as a change because one of 1/5/2023 6:34:45 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsRegressionStdDev: Marked as regression because -23.134935975055367 (T) = (0 -113.64154906696221) / Math.Sqrt((5.173447578700161 / (29)) + (3.651192399340521 / (18))) is less than -2.0141033888794695 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (29) + (18) - 2, .025) and -0.14377004283724307 = (99.35699031342199 - 113.64154906696221) / 99.35699031342199 is less than -0.05. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf16(EncoderArguments) mov ecx,edx cmp [ecx],ecx call dword ptr ds:[0A8BF858]; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf16() ret ; Total bytes of code 11 ``` ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf16() push ebp mov ebp,esp push edi push esi push ebx sub esp,8 xor eax,eax mov [ebp-10],eax mov [ebp-14],eax mov eax,[ecx+8] mov edx,[ecx+0C] test edx,edx je short M01_L02 lea esi,[edx+8] mov edi,[edx+4] M01_L00: mov edx,[ecx+10] test edx,edx je short M01_L03 lea ebx,[edx+8] mov ecx,[edx+4] M01_L01: push edi push esi push ecx push ebx lea edx,[ebp-14] push edx push 1 lea edx,[ebp-10] mov ecx,eax mov eax,[eax] mov eax,[eax+2C] call dword ptr [eax+14] lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret M01_L02: xor esi,esi xor edi,edi jmp short M01_L00 M01_L03: xor ebx,ebx xor ecx,ecx jmp short M01_L01 ; Total bytes of code 89 ``` ### Compare Jit Disasm ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf16(EncoderArguments) mov ecx,edx cmp [ecx],ecx call dword ptr ds:[0B053858]; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf16() ret ; Total bytes of code 11 ``` ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf16() push ebp mov ebp,esp push edi push esi push ebx sub esp,8 xor eax,eax mov [ebp-10],eax mov [ebp-14],eax mov eax,[ecx+8] mov edx,[ecx+0C] test edx,edx je short M01_L02 lea esi,[edx+8] mov edi,[edx+4] M01_L00: mov edx,[ecx+10] test edx,edx je short M01_L03 lea ebx,[edx+8] mov ecx,[edx+4] M01_L01: push edi push esi push ecx push ebx lea edx,[ebp-14] push edx push 1 lea edx,[ebp-10] mov ecx,eax mov eax,[eax] mov eax,[eax+2C] call dword ptr [eax+14] lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret M01_L02: xor esi,esi xor edi,edi jmp short M01_L00 M01_L03: xor ebx,ebx xor ecx,ecx jmp short M01_L01 ; Total bytes of code 89 ``` #### System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf8(arguments: JavaScript,no escaping required,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 73.14058442095512 > 64.07402823933813. IsChangePoint: Marked as a change because one of 1/5/2023 6:34:45 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsRegressionStdDev: Marked as regression because -18.359991777517315 (T) = (0 -72.77022393573843) / Math.Sqrt((4.559388249655918 / (29)) + (3.5565059055806234 / (19))) is less than -2.0128955989180297 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (29) + (19) - 2, .025) and -0.17379892219669263 = (61.995476873972095 - 72.77022393573843) / 61.995476873972095 is less than -0.05. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf8(EncoderArguments) mov ecx,edx cmp [ecx],ecx call dword ptr ds:[0AA4F840]; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf8() ret ; Total bytes of code 11 ``` ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf8() push ebp mov ebp,esp push edi push esi push ebx sub esp,8 xor eax,eax mov [ebp-10],eax mov [ebp-14],eax mov eax,[ecx+8] mov edx,[ecx+14] test edx,edx je short M01_L02 lea esi,[edx+8] mov edi,[edx+4] M01_L00: mov edx,[ecx+18] test edx,edx je short M01_L03 lea ebx,[edx+8] mov ecx,[edx+4] M01_L01: push edi push esi push ecx push ebx lea edx,[ebp-14] push edx push 1 lea edx,[ebp-10] mov ecx,eax mov eax,[eax] mov eax,[eax+2C] call dword ptr [eax+0C] lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret M01_L02: xor esi,esi xor edi,edi jmp short M01_L00 M01_L03: xor ebx,ebx xor ecx,ecx jmp short M01_L01 ; Total bytes of code 89 ``` ### Compare Jit Disasm ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf8(EncoderArguments) mov ecx,edx cmp [ecx],ecx call dword ptr ds:[0B763840]; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf8() ret ; Total bytes of code 11 ``` ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf8() push ebp mov ebp,esp push edi push esi push ebx sub esp,8 xor eax,eax mov [ebp-10],eax mov [ebp-14],eax mov eax,[ecx+8] mov edx,[ecx+14] test edx,edx je short M01_L02 lea esi,[edx+8] mov edi,[edx+4] M01_L00: mov edx,[ecx+18] test edx,edx je short M01_L03 lea ebx,[edx+8] mov ecx,[edx+4] M01_L01: push edi push esi push ecx push ebx lea edx,[ebp-14] push edx push 1 lea edx,[ebp-10] mov ecx,eax mov eax,[eax] mov eax,[eax+2C] call dword ptr [eax+0C] lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret M01_L02: xor esi,esi xor edi,edi jmp short M01_L00 M01_L03: xor ebx,ebx xor ecx,ecx jmp short M01_L01 ; Total bytes of code 89 ``` #### System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf8(arguments: Url,&lorem ipsum=dolor sit amet,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 169.29434509424843 > 164.79200795962112. IsChangePoint: Marked as a change because one of 10/25/2022 2:34:53 PM, 11/18/2022 7:31:41 AM, 1/5/2023 6:34:45 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsRegressionStdDev: Marked as regression because -9.157569206007869 (T) = (0 -171.13734983572908) / Math.Sqrt((1.9508614385188003 / (29)) + (39.90848876475591 / (19))) is less than -2.0128955989180297 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (29) + (19) - 2, .025) and -0.08552147970764924 = (157.65450342062277 - 171.13734983572908) / 157.65450342062277 is less than -0.05. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf8(EncoderArguments) mov ecx,edx cmp [ecx],ecx call dword ptr ds:[0A73F840]; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf8() ret ; Total bytes of code 11 ``` ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf8() push ebp mov ebp,esp push edi push esi push ebx sub esp,8 xor eax,eax mov [ebp-10],eax mov [ebp-14],eax mov eax,[ecx+8] mov edx,[ecx+14] test edx,edx je short M01_L02 lea esi,[edx+8] mov edi,[edx+4] M01_L00: mov edx,[ecx+18] test edx,edx je short M01_L03 lea ebx,[edx+8] mov ecx,[edx+4] M01_L01: push edi push esi push ecx push ebx lea edx,[ebp-14] push edx push 1 lea edx,[ebp-10] mov ecx,eax mov eax,[eax] mov eax,[eax+2C] call dword ptr [eax+0C] lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret M01_L02: xor esi,esi xor edi,edi jmp short M01_L00 M01_L03: xor ebx,ebx xor ecx,ecx jmp short M01_L01 ; Total bytes of code 89 ``` ### Compare Jit Disasm ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf8(EncoderArguments) mov ecx,edx cmp [ecx],ecx call dword ptr ds:[0B163840]; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf8() ret ; Total bytes of code 11 ``` ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf8() push ebp mov ebp,esp push edi push esi push ebx sub esp,8 xor eax,eax mov [ebp-10],eax mov [ebp-14],eax mov eax,[ecx+8] mov edx,[ecx+14] test edx,edx je short M01_L02 lea esi,[edx+8] mov edi,[edx+4] M01_L00: mov edx,[ecx+18] test edx,edx je short M01_L03 lea ebx,[edx+8] mov ecx,[edx+4] M01_L01: push edi push esi push ecx push ebx lea edx,[ebp-14] push edx push 1 lea edx,[ebp-10] mov ecx,eax mov eax,[eax] mov eax,[eax+2C] call dword ptr [eax+0C] lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret M01_L02: xor esi,esi xor edi,edi jmp short M01_L00 M01_L03: xor ebx,ebx xor ecx,ecx jmp short M01_L01 ; Total bytes of code 89 ``` #### System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf8(arguments: UnsafeRelaxed,hello "there",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 103.56726103627292 > 99.68256252710597. IsChangePoint: Marked as a change because one of 10/25/2022 2:34:53 PM, 1/5/2023 6:34:45 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsRegressionStdDev: Marked as regression because -21.235523515011554 (T) = (0 -105.12229717055749) / Math.Sqrt((2.325327085730243 / (29)) + (3.7445047820912603 / (19))) is less than -2.0128955989180297 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (29) + (19) - 2, .025) and -0.11902978517982714 = (93.9405711651048 - 105.12229717055749) / 93.9405711651048 is less than -0.05. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf8(EncoderArguments) mov ecx,edx cmp [ecx],ecx call dword ptr ds:[0A4AF840]; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf8() ret ; Total bytes of code 11 ``` ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf8() push ebp mov ebp,esp push edi push esi push ebx sub esp,8 xor eax,eax mov [ebp-10],eax mov [ebp-14],eax mov eax,[ecx+8] mov edx,[ecx+14] test edx,edx je short M01_L02 lea esi,[edx+8] mov edi,[edx+4] M01_L00: mov edx,[ecx+18] test edx,edx je short M01_L03 lea ebx,[edx+8] mov ecx,[edx+4] M01_L01: push edi push esi push ecx push ebx lea edx,[ebp-14] push edx push 1 lea edx,[ebp-10] mov ecx,eax mov eax,[eax] mov eax,[eax+2C] call dword ptr [eax+0C] lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret M01_L02: xor esi,esi xor edi,edi jmp short M01_L00 M01_L03: xor ebx,ebx xor ecx,ecx jmp short M01_L01 ; Total bytes of code 89 ``` ### Compare Jit Disasm ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf8(EncoderArguments) mov ecx,edx cmp [ecx],ecx call dword ptr ds:[0AE73840]; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf8() ret ; Total bytes of code 11 ``` ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf8() push ebp mov ebp,esp push edi push esi push ebx sub esp,8 xor eax,eax mov [ebp-10],eax mov [ebp-14],eax mov eax,[ecx+8] mov edx,[ecx+14] test edx,edx je short M01_L02 lea esi,[edx+8] mov edi,[edx+4] M01_L00: mov edx,[ecx+18] test edx,edx je short M01_L03 lea ebx,[edx+8] mov ecx,[edx+4] M01_L01: push edi push esi push ecx push ebx lea edx,[ebp-14] push edx push 1 lea edx,[ebp-10] mov ecx,eax mov eax,[eax] mov eax,[eax+2C] call dword ptr [eax+0C] lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret M01_L02: xor esi,esi xor edi,edi jmp short M01_L00 M01_L03: xor ebx,ebx xor ecx,ecx jmp short M01_L01 ; Total bytes of code 89 ``` #### System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf16(arguments: JavaScript,no escaping required,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 87.91234705463707 > 79.52455235777114. IsChangePoint: Marked as a change because one of 1/5/2023 6:34:45 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsRegressionStdDev: Marked as regression because -14.373467915567398 (T) = (0 -90.69291296978385) / Math.Sqrt((9.448476112662421 / (29)) + (9.369276375962496 / (19))) is less than -2.0128955989180297 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (29) + (19) - 2, .025) and -0.16743404966067407 = (77.68568425440787 - 90.69291296978385) / 77.68568425440787 is less than -0.05. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf16(EncoderArguments) mov ecx,edx cmp [ecx],ecx call dword ptr ds:[0A67F858]; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf16() ret ; Total bytes of code 11 ``` ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf16() push ebp mov ebp,esp push edi push esi push ebx sub esp,8 xor eax,eax mov [ebp-10],eax mov [ebp-14],eax mov eax,[ecx+8] mov edx,[ecx+0C] test edx,edx je short M01_L02 lea esi,[edx+8] mov edi,[edx+4] M01_L00: mov edx,[ecx+10] test edx,edx je short M01_L03 lea ebx,[edx+8] mov ecx,[edx+4] M01_L01: push edi push esi push ecx push ebx lea edx,[ebp-14] push edx push 1 lea edx,[ebp-10] mov ecx,eax mov eax,[eax] mov eax,[eax+2C] call dword ptr [eax+14] lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret M01_L02: xor esi,esi xor edi,edi jmp short M01_L00 M01_L03: xor ebx,ebx xor ecx,ecx jmp short M01_L01 ; Total bytes of code 89 ``` ### Compare Jit Disasm ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf16(EncoderArguments) mov ecx,edx cmp [ecx],ecx call dword ptr ds:[0AA53858]; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf16() ret ; Total bytes of code 11 ``` ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf16() push ebp mov ebp,esp push edi push esi push ebx sub esp,8 xor eax,eax mov [ebp-10],eax mov [ebp-14],eax mov eax,[ecx+8] mov edx,[ecx+0C] test edx,edx je short M01_L02 lea esi,[edx+8] mov edi,[edx+4] M01_L00: mov edx,[ecx+10] test edx,edx je short M01_L03 lea ebx,[edx+8] mov ecx,[edx+4] M01_L01: push edi push esi push ecx push ebx lea edx,[ebp-14] push edx push 1 lea edx,[ebp-10] mov ecx,eax mov eax,[eax] mov eax,[eax+2C] call dword ptr [eax+14] lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret M01_L02: xor esi,esi xor edi,edi jmp short M01_L00 M01_L03: xor ebx,ebx xor ecx,ecx jmp short M01_L01 ; Total bytes of code 89 ``` #### System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf16(arguments: Url,©2020,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 111.17015662612557 > 106.20315531161272. IsChangePoint: Marked as a change because one of 1/5/2023 6:34:45 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsRegressionStdDev: Marked as regression because -12.160631245225135 (T) = (0 -113.78189890675097) / Math.Sqrt((1.7234711585972737 / (29)) + (17.91119008086089 / (19))) is less than -2.0128955989180297 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (29) + (19) - 2, .025) and -0.11980845598950197 = (101.6083583742983 - 113.78189890675097) / 101.6083583742983 is less than -0.05. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf16(EncoderArguments) mov ecx,edx cmp [ecx],ecx call dword ptr ds:[0AAFF858]; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf16() ret ; Total bytes of code 11 ``` ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf16() push ebp mov ebp,esp push edi push esi push ebx sub esp,8 xor eax,eax mov [ebp-10],eax mov [ebp-14],eax mov eax,[ecx+8] mov edx,[ecx+0C] test edx,edx je short M01_L02 lea esi,[edx+8] mov edi,[edx+4] M01_L00: mov edx,[ecx+10] test edx,edx je short M01_L03 lea ebx,[edx+8] mov ecx,[edx+4] M01_L01: push edi push esi push ecx push ebx lea edx,[ebp-14] push edx push 1 lea edx,[ebp-10] mov ecx,eax mov eax,[eax] mov eax,[eax+2C] call dword ptr [eax+14] lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret M01_L02: xor esi,esi xor edi,edi jmp short M01_L00 M01_L03: xor ebx,ebx xor ecx,ecx jmp short M01_L01 ; Total bytes of code 89 ``` ### Compare Jit Disasm ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf16(EncoderArguments) mov ecx,edx cmp [ecx],ecx call dword ptr ds:[0B063858]; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf16() ret ; Total bytes of code 11 ``` ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf16() push ebp mov ebp,esp push edi push esi push ebx sub esp,8 xor eax,eax mov [ebp-10],eax mov [ebp-14],eax mov eax,[ecx+8] mov edx,[ecx+0C] test edx,edx je short M01_L02 lea esi,[edx+8] mov edi,[edx+4] M01_L00: mov edx,[ecx+10] test edx,edx je short M01_L03 lea ebx,[edx+8] mov ecx,[edx+4] M01_L01: push edi push esi push ecx push ebx lea edx,[ebp-14] push edx push 1 lea edx,[ebp-10] mov ecx,eax mov eax,[eax] mov eax,[eax+2C] call dword ptr [eax+14] lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret M01_L02: xor esi,esi xor edi,edi jmp short M01_L00 M01_L03: xor ebx,ebx xor ecx,ecx jmp short M01_L01 ; Total bytes of code 89 ``` #### System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf8(arguments: JavaScript,&Hello+<World>!,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 131.4153388568814 > 124.90434779016863. IsChangePoint: Marked as a change because one of 10/25/2022 2:34:53 PM, 11/19/2022 5:03:25 AM, 1/5/2023 6:34:45 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsRegressionStdDev: Marked as regression because -23.69761470151754 (T) = (0 -131.80902348669122) / Math.Sqrt((1.2872756933578045 / (29)) + (3.879264220106277 / (19))) is less than -2.0128955989180297 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (29) + (19) - 2, .025) and -0.09846001668372309 = (119.9943752933546 - 131.80902348669122) / 119.9943752933546 is less than -0.05. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf8(EncoderArguments) mov ecx,edx cmp [ecx],ecx call dword ptr ds:[0A4EF840]; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf8() ret ; Total bytes of code 11 ``` ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf8() push ebp mov ebp,esp push edi push esi push ebx sub esp,8 xor eax,eax mov [ebp-10],eax mov [ebp-14],eax mov eax,[ecx+8] mov edx,[ecx+14] test edx,edx je short M01_L02 lea esi,[edx+8] mov edi,[edx+4] M01_L00: mov edx,[ecx+18] test edx,edx je short M01_L03 lea ebx,[edx+8] mov ecx,[edx+4] M01_L01: push edi push esi push ecx push ebx lea edx,[ebp-14] push edx push 1 lea edx,[ebp-10] mov ecx,eax mov eax,[eax] mov eax,[eax+2C] call dword ptr [eax+0C] lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret M01_L02: xor esi,esi xor edi,edi jmp short M01_L00 M01_L03: xor ebx,ebx xor ecx,ecx jmp short M01_L01 ; Total bytes of code 89 ``` ### Compare Jit Disasm ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf8(EncoderArguments) mov ecx,edx cmp [ecx],ecx call dword ptr ds:[0B153840]; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf8() ret ; Total bytes of code 11 ``` ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf8() push ebp mov ebp,esp push edi push esi push ebx sub esp,8 xor eax,eax mov [ebp-10],eax mov [ebp-14],eax mov eax,[ecx+8] mov edx,[ecx+14] test edx,edx je short M01_L02 lea esi,[edx+8] mov edi,[edx+4] M01_L00: mov edx,[ecx+18] test edx,edx je short M01_L03 lea ebx,[edx+8] mov ecx,[edx+4] M01_L01: push edi push esi push ecx push ebx lea edx,[ebp-14] push edx push 1 lea edx,[ebp-10] mov ecx,eax mov eax,[eax] mov eax,[eax+2C] call dword ptr [eax+0C] lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret M01_L02: xor esi,esi xor edi,edi jmp short M01_L00 M01_L03: xor ebx,ebx xor ecx,ecx jmp short M01_L01 ; Total bytes of code 89 ``` #### System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf8(arguments: Url,©2020,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 113.86847267989445 > 106.5025240049404. IsChangePoint: Marked as a change because one of 11/21/2022 9:59:44 PM, 1/5/2023 6:34:45 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsRegressionStdDev: Marked as regression because -18.866605259663537 (T) = (0 -116.76358873699239) / Math.Sqrt((5.037633451217009 / (29)) + (6.95192905319131 / (19))) is less than -2.0128955989180297 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (29) + (19) - 2, .025) and -0.13467774716793218 = (102.90462558944623 - 116.76358873699239) / 102.90462558944623 is less than -0.05. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf8(EncoderArguments) mov ecx,edx cmp [ecx],ecx call dword ptr ds:[0A2DF840]; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf8() ret ; Total bytes of code 11 ``` ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf8() push ebp mov ebp,esp push edi push esi push ebx sub esp,8 xor eax,eax mov [ebp-10],eax mov [ebp-14],eax mov eax,[ecx+8] mov edx,[ecx+14] test edx,edx je short M01_L02 lea esi,[edx+8] mov edi,[edx+4] M01_L00: mov edx,[ecx+18] test edx,edx je short M01_L03 lea ebx,[edx+8] mov ecx,[edx+4] M01_L01: push edi push esi push ecx push ebx lea edx,[ebp-14] push edx push 1 lea edx,[ebp-10] mov ecx,eax mov eax,[eax] mov eax,[eax+2C] call dword ptr [eax+0C] lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret M01_L02: xor esi,esi xor edi,edi jmp short M01_L00 M01_L03: xor ebx,ebx xor ecx,ecx jmp short M01_L01 ; Total bytes of code 89 ``` ### Compare Jit Disasm ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf8(EncoderArguments) mov ecx,edx cmp [ecx],ecx call dword ptr ds:[0AFC3840]; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf8() ret ; Total bytes of code 11 ``` ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf8() push ebp mov ebp,esp push edi push esi push ebx sub esp,8 xor eax,eax mov [ebp-10],eax mov [ebp-14],eax mov eax,[ecx+8] mov edx,[ecx+14] test edx,edx je short M01_L02 lea esi,[edx+8] mov edi,[edx+4] M01_L00: mov edx,[ecx+18] test edx,edx je short M01_L03 lea ebx,[edx+8] mov ecx,[edx+4] M01_L01: push edi push esi push ecx push ebx lea edx,[ebp-14] push edx push 1 lea edx,[ebp-10] mov ecx,eax mov eax,[eax] mov eax,[eax+2C] call dword ptr [eax+0C] lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret M01_L02: xor esi,esi xor edi,edi jmp short M01_L00 M01_L03: xor ebx,ebx xor ecx,ecx jmp short M01_L01 ; Total bytes of code 89 ``` #### System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf16(arguments: Url,&lorem ipsum=dolor sit amet,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 164.53135977230733 > 154.51630690221856. IsChangePoint: Marked as a change because one of 1/5/2023 6:34:45 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsRegressionStdDev: Marked as regression because -27.84102535251679 (T) = (0 -160.96364271299396) / Math.Sqrt((2.790746076299665 / (29)) + (1.9438643892442928 / (19))) is less than -2.0128955989180297 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (29) + (19) - 2, .025) and -0.08350526604973847 = (148.558246790842 - 160.96364271299396) / 148.558246790842 is less than -0.05. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf16(EncoderArguments) mov ecx,edx cmp [ecx],ecx call dword ptr ds:[0AC9F858]; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf16() ret ; Total bytes of code 11 ``` ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf16() push ebp mov ebp,esp push edi push esi push ebx sub esp,8 xor eax,eax mov [ebp-10],eax mov [ebp-14],eax mov eax,[ecx+8] mov edx,[ecx+0C] test edx,edx je short M01_L02 lea esi,[edx+8] mov edi,[edx+4] M01_L00: mov edx,[ecx+10] test edx,edx je short M01_L03 lea ebx,[edx+8] mov ecx,[edx+4] M01_L01: push edi push esi push ecx push ebx lea edx,[ebp-14] push edx push 1 lea edx,[ebp-10] mov ecx,eax mov eax,[eax] mov eax,[eax+2C] call dword ptr [eax+14] lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret M01_L02: xor esi,esi xor edi,edi jmp short M01_L00 M01_L03: xor ebx,ebx xor ecx,ecx jmp short M01_L01 ; Total bytes of code 89 ``` ### Compare Jit Disasm ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf16(EncoderArguments) mov ecx,edx cmp [ecx],ecx call dword ptr ds:[0A773858]; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf16() ret ; Total bytes of code 11 ``` ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf16() push ebp mov ebp,esp push edi push esi push ebx sub esp,8 xor eax,eax mov [ebp-10],eax mov [ebp-14],eax mov eax,[ecx+8] mov edx,[ecx+0C] test edx,edx je short M01_L02 lea esi,[edx+8] mov edi,[edx+4] M01_L00: mov edx,[ecx+10] test edx,edx je short M01_L03 lea ebx,[edx+8] mov ecx,[edx+4] M01_L01: push edi push esi push ecx push ebx lea edx,[ebp-14] push edx push 1 lea edx,[ebp-10] mov ecx,eax mov eax,[eax] mov eax,[eax+2C] call dword ptr [eax+14] lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret M01_L02: xor esi,esi xor edi,edi jmp short M01_L00 M01_L03: xor ebx,ebx xor ecx,ecx jmp short M01_L01 ; Total bytes of code 89 ``` #### System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf8(arguments: UnsafeRelaxed,no <escaping /> required,16) ```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 25.16608197380717 > 23.587975948174808. IsChangePoint: Marked as a change because one of 1/5/2023 6:34:45 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsRegressionStdDev: Marked as regression because -32.59565242422686 (T) = (0 -25.27475566640028) / Math.Sqrt((0.04258230616405951 / (29)) + (0.11205121205493945 / (19))) is less than -2.0128955989180297 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (29) + (19) - 2, .025) and -0.1244588793222181 = (22.47726095740821 - 25.27475566640028) / 22.47726095740821 is less than -0.05. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf8(EncoderArguments) mov ecx,edx cmp [ecx],ecx call dword ptr ds:[0AABF840]; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf8() ret ; Total bytes of code 11 ``` ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf8() push ebp mov ebp,esp push edi push esi push ebx sub esp,8 xor eax,eax mov [ebp-10],eax mov [ebp-14],eax mov eax,[ecx+8] mov edx,[ecx+14] test edx,edx je short M01_L02 lea esi,[edx+8] mov edi,[edx+4] M01_L00: mov edx,[ecx+18] test edx,edx je short M01_L03 lea ebx,[edx+8] mov ecx,[edx+4] M01_L01: push edi push esi push ecx push ebx lea edx,[ebp-14] push edx push 1 lea edx,[ebp-10] mov ecx,eax mov eax,[eax] mov eax,[eax+2C] call dword ptr [eax+0C] lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret M01_L02: xor esi,esi xor edi,edi jmp short M01_L00 M01_L03: xor ebx,ebx xor ecx,ecx jmp short M01_L01 ; Total bytes of code 89 ``` ### Compare Jit Disasm ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf8(EncoderArguments) mov ecx,edx cmp [ecx],ecx call dword ptr ds:[0ADF3840]; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf8() ret ; Total bytes of code 11 ``` ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf8() push ebp mov ebp,esp push edi push esi push ebx sub esp,8 xor eax,eax mov [ebp-10],eax mov [ebp-14],eax mov eax,[ecx+8] mov edx,[ecx+14] test edx,edx je short M01_L02 lea esi,[edx+8] mov edi,[edx+4] M01_L00: mov edx,[ecx+18] test edx,edx je short M01_L03 lea ebx,[edx+8] mov ecx,[edx+4] M01_L01: push edi push esi push ecx push ebx lea edx,[ebp-14] push edx push 1 lea edx,[ebp-10] mov ecx,eax mov eax,[eax] mov eax,[eax+2C] call dword ptr [eax+0C] lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret M01_L02: xor esi,esi xor edi,edi jmp short M01_L00 M01_L03: xor ebx,ebx xor ecx,ecx jmp short M01_L01 ; Total bytes of code 89 ``` #### System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf16(arguments: UnsafeRelaxed,no <escaping /> required,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 88.41101948922353 > 79.48260117285199. IsChangePoint: Marked as a change because one of 1/5/2023 6:34:45 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsRegressionStdDev: Marked as regression because -14.949046407677173 (T) = (0 -89.00541363378005) / Math.Sqrt((7.108544894759325 / (29)) + (8.583486296007178 / (19))) is less than -2.0128955989180297 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (29) + (19) - 2, .025) and -0.16307406443110511 = (76.52600668841782 - 89.00541363378005) / 76.52600668841782 is less than -0.05. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf16(EncoderArguments) mov ecx,edx cmp [ecx],ecx call dword ptr ds:[0B27F858]; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf16() ret ; Total bytes of code 11 ``` ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf16() push ebp mov ebp,esp push edi push esi push ebx sub esp,8 xor eax,eax mov [ebp-10],eax mov [ebp-14],eax mov eax,[ecx+8] mov edx,[ecx+0C] test edx,edx je short M01_L02 lea esi,[edx+8] mov edi,[edx+4] M01_L00: mov edx,[ecx+10] test edx,edx je short M01_L03 lea ebx,[edx+8] mov ecx,[edx+4] M01_L01: push edi push esi push ecx push ebx lea edx,[ebp-14] push edx push 1 lea edx,[ebp-10] mov ecx,eax mov eax,[eax] mov eax,[eax+2C] call dword ptr [eax+14] lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret M01_L02: xor esi,esi xor edi,edi jmp short M01_L00 M01_L03: xor ebx,ebx xor ecx,ecx jmp short M01_L01 ; Total bytes of code 89 ``` ### Compare Jit Disasm ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf16(EncoderArguments) mov ecx,edx cmp [ecx],ecx call dword ptr ds:[0AC73858]; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf16() ret ; Total bytes of code 11 ``` ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf16() push ebp mov ebp,esp push edi push esi push ebx sub esp,8 xor eax,eax mov [ebp-10],eax mov [ebp-14],eax mov eax,[ecx+8] mov edx,[ecx+0C] test edx,edx je short M01_L02 lea esi,[edx+8] mov edi,[edx+4] M01_L00: mov edx,[ecx+10] test edx,edx je short M01_L03 lea ebx,[edx+8] mov ecx,[edx+4] M01_L01: push edi push esi push ecx push ebx lea edx,[ebp-14] push edx push 1 lea edx,[ebp-10] mov ecx,eax mov eax,[eax] mov eax,[eax+2C] call dword ptr [eax+14] lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret M01_L02: xor esi,esi xor edi,edi jmp short M01_L00 M01_L03: xor ebx,ebx xor ecx,ecx jmp short M01_L01 ; Total bytes of code 89 ``` #### System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf16(arguments: JavaScript,&Hello+<World>!,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 171.45504475583695 > 142.1874559753224. IsChangePoint: Marked as a change because one of 10/25/2022 2:34:53 PM, 1/5/2023 6:34:45 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsRegressionStdDev: Marked as regression because -15.302312682460457 (T) = (0 -153.6292878325303) / Math.Sqrt((2.7902089930284064 / (29)) + (21.736461648977585 / (19))) is less than -2.0128955989180297 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (29) + (19) - 2, .025) and -0.12476650717091665 = (136.58771563081865 - 153.6292878325303) / 136.58771563081865 is less than -0.05. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf16(EncoderArguments) mov ecx,edx cmp [ecx],ecx call dword ptr ds:[0A75F858]; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf16() ret ; Total bytes of code 11 ``` ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf16() push ebp mov ebp,esp push edi push esi push ebx sub esp,8 xor eax,eax mov [ebp-10],eax mov [ebp-14],eax mov eax,[ecx+8] mov edx,[ecx+0C] test edx,edx je short M01_L02 lea esi,[edx+8] mov edi,[edx+4] M01_L00: mov edx,[ecx+10] test edx,edx je short M01_L03 lea ebx,[edx+8] mov ecx,[edx+4] M01_L01: push edi push esi push ecx push ebx lea edx,[ebp-14] push edx push 1 lea edx,[ebp-10] mov ecx,eax mov eax,[eax] mov eax,[eax+2C] call dword ptr [eax+14] lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret M01_L02: xor esi,esi xor edi,edi jmp short M01_L00 M01_L03: xor ebx,ebx xor ecx,ecx jmp short M01_L01 ; Total bytes of code 89 ``` ### Compare Jit Disasm ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf16(EncoderArguments) mov ecx,edx cmp [ecx],ecx call dword ptr ds:[0B143858]; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf16() ret ; Total bytes of code 11 ``` ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf16() push ebp mov ebp,esp push edi push esi push ebx sub esp,8 xor eax,eax mov [ebp-10],eax mov [ebp-14],eax mov eax,[ecx+8] mov edx,[ecx+0C] test edx,edx je short M01_L02 lea esi,[edx+8] mov edi,[edx+4] M01_L00: mov edx,[ecx+10] test edx,edx je short M01_L03 lea ebx,[edx+8] mov ecx,[edx+4] M01_L01: push edi push esi push ecx push ebx lea edx,[ebp-14] push edx push 1 lea edx,[ebp-10] mov ecx,eax mov eax,[eax] mov eax,[eax+2C] call dword ptr [eax+14] lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret M01_L02: xor esi,esi xor edi,edi jmp short M01_L00 M01_L03: xor ebx,ebx xor ecx,ecx jmp short M01_L01 ; Total bytes of code 89 ``` #### System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf8(arguments: UnsafeRelaxed,no <escaping /> required,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 74.20186341260238 > 63.289017802909385. IsChangePoint: Marked as a change because one of 1/5/2023 6:34:45 PM, 1/10/2023 12:53:48 PM falls between 1/1/2023 3:57:25 AM and 1/10/2023 12:53:48 PM. IsRegressionStdDev: Marked as regression because -14.094214045730714 (T) = (0 -75.65892887110184) / Math.Sqrt((17.711939629437868 / (29)) + (6.234709733415651 / (19))) is less than -2.0128955989180297 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (29) + (19) - 2, .025) and -0.22026426356769485 = (62.00208522856952 - 75.65892887110184) / 62.00208522856952 is less than -0.05. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf8(EncoderArguments) mov ecx,edx cmp [ecx],ecx call dword ptr ds:[0B1EF840]; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf8() ret ; Total bytes of code 11 ``` ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf8() push ebp mov ebp,esp push edi push esi push ebx sub esp,8 xor eax,eax mov [ebp-10],eax mov [ebp-14],eax mov eax,[ecx+8] mov edx,[ecx+14] test edx,edx je short M01_L02 lea esi,[edx+8] mov edi,[edx+4] M01_L00: mov edx,[ecx+18] test edx,edx je short M01_L03 lea ebx,[edx+8] mov ecx,[edx+4] M01_L01: push edi push esi push ecx push ebx lea edx,[ebp-14] push edx push 1 lea edx,[ebp-10] mov ecx,eax mov eax,[eax] mov eax,[eax+2C] call dword ptr [eax+0C] lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret M01_L02: xor esi,esi xor edi,edi jmp short M01_L00 M01_L03: xor ebx,ebx xor ecx,ecx jmp short M01_L01 ; Total bytes of code 89 ``` ### Compare Jit Disasm ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders.EncodeUtf8(EncoderArguments) mov ecx,edx cmp [ecx],ecx call dword ptr ds:[0B413840]; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf8() ret ; Total bytes of code 11 ``` ```assembly ; System.Text.Encodings.Web.Tests.Perf_Encoders+EncoderArguments.EncodeUtf8() push ebp mov ebp,esp push edi push esi push ebx sub esp,8 xor eax,eax mov [ebp-10],eax mov [ebp-14],eax mov eax,[ecx+8] mov edx,[ecx+14] test edx,edx je short M01_L02 lea esi,[edx+8] mov edi,[edx+4] M01_L00: mov edx,[ecx+18] test edx,edx je short M01_L03 lea ebx,[edx+8] mov ecx,[edx+4] M01_L01: push edi push esi push ecx push ebx lea edx,[ebp-14] push edx push 1 lea edx,[ebp-10] mov ecx,eax mov eax,[eax] mov eax,[eax+2C] call dword ptr [eax+0C] lea esp,[ebp-0C] pop ebx pop esi pop edi pop ebp ret M01_L02: xor esi,esi xor edi,edi jmp short M01_L00 M01_L03: xor ebx,ebx xor ecx,ecx jmp short M01_L01 ; Total bytes of code 89 ``` ### 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)