Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Regressions in System.Text.Tests.Perf_StringBuilder #64751

Closed
performanceautofiler bot opened this issue Feb 3, 2022 · 9 comments
Closed

Regressions in System.Text.Tests.Perf_StringBuilder #64751

performanceautofiler bot opened this issue Feb 3, 2022 · 9 comments
Assignees
Labels

Comments

@performanceautofiler
Copy link

Run Information

Architecture arm64
OS Windows 10.0.19041
Baseline 11bf8a782d27dd0f614dd0da03b27ab025933320
Compare 8471eecd98e5493e3fbc8bcc34662310ef8762eb
Diff Diff

Regressions in System.Text.Tests.Perf_StringBuilder

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
Append_Span - Duration of single invocation 27.39 ns 43.81 ns 1.60 0.10 True

graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Text.Tests.Perf_StringBuilder*'

Payloads

Baseline
Compare

Histogram

System.Text.Tests.Perf_StringBuilder.Append_Span


Description of detection logic

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 43.806113539524524 > 28.626101433626996.
IsChangePoint: Marked as a change because one of 1/28/2022 4:34:00 PM, 2/2/2022 11:04:24 PM falls between 1/25/2022 5:49:56 AM and 2/2/2022 11:04:24 PM.
IsRegressionStdDev: Marked as regression because -38.4072881703715 (T) = (0 -46.3456689212713) / Math.Sqrt((0.7290073887378425 / (26)) + (4.322788422199066 / (19))) is less than -2.016692199226234 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (26) + (19) - 2, .025) and -0.7209753526364372 = (26.929885341049392 - 46.3456689212713) / 26.929885341049392 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
Benchmarking workflow for dotnet/runtime repository

@performanceautofiler performanceautofiler bot added arm64 untriaged New issue has not been triaged by the area owner labels Feb 3, 2022
@EgorBo EgorBo changed the title [Perf] Changes at 1/28/2022 8:15:35 PM Regressions in System.Text.Tests.Perf_StringBuilder Feb 3, 2022
@dotnet-issue-labeler dotnet-issue-labeler bot added the untriaged New issue has not been triaged by the area owner label Feb 3, 2022
@dotnet-issue-labeler
Copy link

I couldn't figure out the best area label to add to this issue. If you have write-permissions please help me learn by adding exactly one area label.

@EgorBo EgorBo transferred this issue from dotnet/perf-autofiling-issues Feb 3, 2022
@EgorBo
Copy link
Member

EgorBo commented Feb 3, 2022

Most likely inliner + #64357

@EgorBo EgorBo self-assigned this Feb 3, 2022
@EgorBo
Copy link
Member

EgorBo commented Feb 3, 2022

hmm or likely #64405 since it touched Append directly (we just didn't expect from it any regressions at all and blamed #64357 🙂)

@stephentoub
Copy link
Member

hmm or likely #64405 since it touched Append directly

Certainly seems likely it was #64405... now I just need to figure out why :)

@ghost
Copy link

ghost commented Feb 4, 2022

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

Issue Details

Run Information

Architecture arm64
OS Windows 10.0.19041
Baseline 11bf8a782d27dd0f614dd0da03b27ab025933320
Compare 8471eecd98e5493e3fbc8bcc34662310ef8762eb
Diff Diff

Regressions in System.Text.Tests.Perf_StringBuilder

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
Append_Span - Duration of single invocation 27.39 ns 43.81 ns 1.60 0.10 True

graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Text.Tests.Perf_StringBuilder*'

Payloads

Baseline
Compare

Histogram

System.Text.Tests.Perf_StringBuilder.Append_Span


Description of detection logic

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 43.806113539524524 > 28.626101433626996.
IsChangePoint: Marked as a change because one of 1/28/2022 4:34:00 PM, 2/2/2022 11:04:24 PM falls between 1/25/2022 5:49:56 AM and 2/2/2022 11:04:24 PM.
IsRegressionStdDev: Marked as regression because -38.4072881703715 (T) = (0 -46.3456689212713) / Math.Sqrt((0.7290073887378425 / (26)) + (4.322788422199066 / (19))) is less than -2.016692199226234 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (26) + (19) - 2, .025) and -0.7209753526364372 = (26.929885341049392 - 46.3456689212713) / 26.929885341049392 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
Benchmarking workflow for dotnet/runtime repository

Author: performanceautofiler[bot]
Assignees: EgorBo
Labels:

area-System.Runtime, untriaged, refs/heads/main, Regression, RunKind=micro, CoreClr, arm64, Windows 10.0.19041

Milestone: -

@danmoseley
Copy link
Member

Why doesn't the regression show on the graph here (?)

@EgorBo
Copy link
Member

EgorBo commented Feb 4, 2022

Why doesn't the regression show on the graph here (?)

@DrewScoggins promised to fix it 🙂

@stephentoub
Copy link
Member

Turns out the perf test is buggy: it was trying to append 100 chars 16 times, but it was actually appending an empty span 16 times. Since appending an empty span is rare, my change included moving the 0-length check into the non-inlined helper; this regression comes then from making a non-inlined method call 16 more times than it was previously. This is not something that needs to be fixed.

@DrewScoggins
Copy link
Member

Why doesn't the regression show on the graph here (?)

@DrewScoggins promised to fix it 🙂

The issue that caused this has been fixed, but it is not easy to go back and regenerate the image for the graph. So I am just going to leave it as is for now.

@jeffhandley jeffhandley added runtime-coreclr specific to the CoreCLR runtime and removed CoreClr labels Mar 3, 2022
@ghost ghost locked as resolved and limited conversation to collaborators Apr 2, 2022
@tannergooding tannergooding removed the untriaged New issue has not been triaged by the area owner label Jun 24, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

8 participants