-
Notifications
You must be signed in to change notification settings - Fork 4.9k
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
[Perf] ubuntu 20.04/arm64 : Regressions in System.Text.Json.Tests.Utf8JsonReaderCommentsTests on 8/11/2022 10:02:44 AM #74442
Comments
Tagging subscribers to this area: @dotnet/area-system-text-json, @gregsdennis Issue DetailsRun Information
Regressions in System.Text.Json.Tests.Utf8JsonReaderCommentsTests
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Text.Json.Tests.Utf8JsonReaderCommentsTests*' PayloadsHistogramSystem.Text.Json.Tests.Utf8JsonReaderCommentsTests.Utf8JsonReaderCommentParsing(CommentHandling: Allow, SegmentSize: 100, TestCase: LongMultiLine)
Description of detection logic
DocsProfiling workflow for dotnet/runtime repository
|
Unclear what the culprit is, but it falls under this range: 7be3790...bb97114 |
Looking at that commit range, #73481 appears to stand out since single-line comment parsing is implemented using runtime/src/libraries/System.Text.Json/src/System/Text/Json/Reader/Utf8JsonReader.cs Lines 2376 to 2381 in 7aef48a
Could this change have the potential to regress ARM64? cc @adamsitnik |
It could. But this benchmark uses span of 512 bytes. The benchmark for which the regression was reported here uses multiple 100-byte long spans and I would not expect it to regress. @eiriktsarpalis the best thing to do would be to profile it. Do you have access to Surface Pro X? The |
I've been able to isolate the performance regression to #73481 locally:
All other benchmark parameters record no regressions, so I've skipped them from this list. @adamsitnik could you take a look? |
Profiling indicates that most time is spent in |
Tagging subscribers to this area: @dotnet/area-system-memory Issue DetailsRun Information
Regressions in System.Text.Json.Tests.Utf8JsonReaderCommentsTests
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Text.Json.Tests.Utf8JsonReaderCommentsTests*' PayloadsHistogramSystem.Text.Json.Tests.Utf8JsonReaderCommentsTests.Utf8JsonReaderCommentParsing(CommentHandling: Allow, SegmentSize: 100, TestCase: LongMultiLine)
Description of detection logic
DocsProfiling workflow for dotnet/runtime repository
|
FWIW I'm reproducing the regression on Windows. |
@adamsitnik Should we consider reverting #73481 for 7.0? It looks like the gains from that change are less significant than this regression. |
The revert for this change won't be straightforward because the underlying code has been changed since the performance changes were made. Because the changes benefit other scenarios and the regressed benchmark is related to JSON comments (vs. data), we are going to accept this regression for 7.0 but we will investigate it for a potential fix early in 8.0. |
We're in between the regression point and baseline currently. This isn't really critical to fix and is overall within an acceptable range considering the current code is maintainable and supports multiple platforms and hardware configurations without being overly complex. PRs to improve the perf would be accepted, but we need to take into account any increases in code maintenance burden as part of that. |
Run Information
Regressions in System.Text.Json.Tests.Utf8JsonReaderCommentsTests
Test Report
Repro
Payloads
Baseline
Compare
Histogram
System.Text.Json.Tests.Utf8JsonReaderCommentsTests.Utf8JsonReaderCommentParsing(CommentHandling: Allow, SegmentSize: 100, TestCase: LongMultiLine)
Description of detection logic
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
The text was updated successfully, but these errors were encountered: