dotnet / runtime

.NET is a cross-platform runtime for cloud, mobile, desktop, and IoT apps.
https://docs.microsoft.com/dotnet/core/
MIT License
15.19k stars 4.72k forks source link

Regressions in System.Text.RegularExpressions.Tests.Perf_Regex_Industry_RustLang_Sherlock #67912

Closed performanceautofiler[bot] closed 2 years ago

performanceautofiler[bot] commented 2 years ago

Run Information

Architecture x64
OS Windows 10.0.19042
Baseline cd5beb14b0ce11ae1e4e3f1d30bffba7e37ce606
Compare 55f204501f7300786f4a15f84a5f353f0620475b
Diff Diff

Regressions in System.Text.RegularExpressions.Tests.Perf_Regex_Industry_RustLang_Sherlock

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[Count - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.19042/amd/System.Text.RegularExpressions.Tests.Perf_Regex_Industry_RustLang_Sherlock.Count(Pattern%3a%20%22(%3fi)Sherlock%7cHolmes%7cWatson%22%2c%20Options%3a%20Compiled).html>) 1.75 ms 1.91 ms 1.09 0.01 False
[Count - Duration of single invocation](<https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.19042/amd/System.Text.RegularExpressions.Tests.Perf_Regex_Industry_RustLang_Sherlock.Count(Pattern%3a%20%22(%3fi)Sherlock%7cHolmes%7cWatson%7cIrene%7cAdler%7cJohn%7cBaker%22%2c%20Options%3a%20Compiled).html>) 2.90 ms 3.40 ms 1.17 0.01 True

graph graph Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Text.RegularExpressions.Tests.Perf_Regex_Industry_RustLang_Sherlock*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Text.RegularExpressions.Tests.Perf_Regex_Industry_RustLang_Sherlock.Count(Pattern: "(?i)Sherlock|Holmes|Watson", Options: Compiled) ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsRegressionWindowed: Marked as regression because 1.9050833796296296 > 1.8348061538461538. IsChangePoint: Marked as a change because one of 2/26/2022 10:27:55 AM, 3/3/2022 7:35:51 PM, 3/25/2022 7:34:40 AM, 3/31/2022 1:45:25 PM falls between 3/22/2022 11:55:12 PM and 3/31/2022 1:45:25 PM. IsRegressionStdDev: Marked as regression because -323.11043860323406 (T) = (0 -1906789.982326007) / Math.Sqrt((1353416.1955267477 / (28)) + (4889418.773011583 / (25))) is less than -2.007583770314729 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (28) + (25) - 2, .025) and -0.0913318994129754 = (1747213.6417451596 - 1906789.982326007) / 1747213.6417451596 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.Text.RegularExpressions.Tests.Perf_Regex_Industry_RustLang_Sherlock.Count(Pattern: "(?i)Sherlock|Holmes|Watson|Irene|Adler|John|Baker", Options: Compiled) ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsRegressionWindowed: Marked as regression because 3.4001733333333335 > 2.9486669114583335. IsChangePoint: Marked as a change because one of 3/25/2022 7:34:40 AM, 3/31/2022 1:45:25 PM falls between 3/22/2022 11:55:12 PM and 3/31/2022 1:45:25 PM. IsRegressionStdDev: Marked as regression because -54.619347525146864 (T) = (0 -3482917.940128205) / Math.Sqrt((2045691008.944673 / (28)) + (1867378821.8056953 / (25))) is less than -2.007583770314729 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (28) + (25) - 2, .025) and -0.23551808936116547 = (2818993.886142999 - 3482917.940128205) / 2818993.886142999 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 as 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)
ghost commented 2 years ago

Tagging subscribers to this area: @dotnet/area-system-text-regularexpressions See info in area-owners.md if you want to be subscribed.

Issue Details
### Run Information Architecture | x64 -- | -- OS | Windows 10.0.19042 Baseline | [cd5beb14b0ce11ae1e4e3f1d30bffba7e37ce606](https://github.com/dotnet/runtime/commit/cd5beb14b0ce11ae1e4e3f1d30bffba7e37ce606) Compare | [55f204501f7300786f4a15f84a5f353f0620475b](https://github.com/dotnet/runtime/commit/55f204501f7300786f4a15f84a5f353f0620475b) Diff | [Diff](https://github.com/dotnet/runtime/compare/cd5beb14b0ce11ae1e4e3f1d30bffba7e37ce606...55f204501f7300786f4a15f84a5f353f0620475b) ### Regressions in System.Text.RegularExpressions.Tests.Perf_Regex_Industry_RustLang_Sherlock Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- [Count - Duration of single invocation]() | 1.75 ms | 1.91 ms | 1.09 | 0.01 | False | | | [Count - Duration of single invocation]() | 2.90 ms | 3.40 ms | 1.17 | 0.01 | True | | | ![graph]() ![graph]() [Test Report]() ### Repro ```cmd git clone https://github.com/dotnet/performance.git py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Text.RegularExpressions.Tests.Perf_Regex_Industry_RustLang_Sherlock*' ```
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Text.RegularExpressions.Tests.Perf_Regex_Industry_RustLang_Sherlock.Count(Pattern: "(?i)Sherlock|Holmes|Watson", Options: Compiled) ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsRegressionWindowed: Marked as regression because 1.9050833796296296 > 1.8348061538461538. IsChangePoint: Marked as a change because one of 2/26/2022 10:27:55 AM, 3/3/2022 7:35:51 PM, 3/25/2022 7:34:40 AM, 3/31/2022 1:45:25 PM falls between 3/22/2022 11:55:12 PM and 3/31/2022 1:45:25 PM. IsRegressionStdDev: Marked as regression because -323.11043860323406 (T) = (0 -1906789.982326007) / Math.Sqrt((1353416.1955267477 / (28)) + (4889418.773011583 / (25))) is less than -2.007583770314729 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (28) + (25) - 2, .025) and -0.0913318994129754 = (1747213.6417451596 - 1906789.982326007) / 1747213.6417451596 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.Text.RegularExpressions.Tests.Perf_Regex_Industry_RustLang_Sherlock.Count(Pattern: "(?i)Sherlock|Holmes|Watson|Irene|Adler|John|Baker", Options: Compiled) ```log ``` ### Description of detection logic ```IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small. IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small. IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline. IsRegressionWindowed: Marked as regression because 3.4001733333333335 > 2.9486669114583335. IsChangePoint: Marked as a change because one of 3/25/2022 7:34:40 AM, 3/31/2022 1:45:25 PM falls between 3/22/2022 11:55:12 PM and 3/31/2022 1:45:25 PM. IsRegressionStdDev: Marked as regression because -54.619347525146864 (T) = (0 -3482917.940128205) / Math.Sqrt((2045691008.944673 / (28)) + (1867378821.8056953 / (25))) is less than -2.007583770314729 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (28) + (25) - 2, .025) and -0.23551808936116547 = (2818993.886142999 - 3482917.940128205) / 2818993.886142999 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 as 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)
Author: performanceautofiler[bot]
Assignees: -
Labels: `area-System.Text.RegularExpressions`, `untriaged`, `refs/heads/main`, `RunKind=micro`, `Windows 10.0.19042`, `Regression`, `CoreClr`, `x64`
Milestone: -
EgorBo commented 2 years ago

Most likely https://github.com/dotnet/runtime/pull/67133 cc @stephentoub

EgorBo commented 2 years ago

alpine-x64 https://github.com/dotnet/perf-autofiling-issues/issues/4300 windows-x64 https://github.com/dotnet/perf-autofiling-issues/issues/4287

stephentoub commented 2 years ago

This one is very surprising. I'll take a look.

stephentoub commented 2 years ago

The regression is gone:

image image