dotnet / runtime

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

[Perf] Windows/x64: 2 Regressions on 8/17/2024 7:43:54 PM #106710

Open performanceautofiler[bot] opened 3 weeks ago

performanceautofiler[bot] commented 3 weeks ago

Run Information

Name Value
Architecture x64
OS Windows 10.0.22621
Queue TigerWindows
Baseline 0d8e5652d86d5d5aec8125dbf336b3c383c1d124
Compare 217525ae6f6a117a0780620ed4fb1b94e03fd4d6
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in System.Text.Json.Document.Tests.Perf_EnumerateObject

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
2.36 μs 2.52 μs 1.07 0.01 False
2.38 μs 2.52 μs 1.06 0.02 False

graph graph Test Report

Repro

General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Text.Json.Document.Tests.Perf_EnumerateObject*'
### System.Text.Json.Document.Tests.Perf_EnumerateObject.PropertyIndexer(TestCase: NumericProperties) #### ETL Files #### Histogram #### JIT Disasms ### System.Text.Json.Document.Tests.Perf_EnumerateObject.PropertyIndexer(TestCase: StringProperties) #### ETL Files #### Histogram #### JIT Disasms ### 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)
DrewScoggins commented 3 weeks ago

Related to https://github.com/dotnet/runtime/pull/106503

dotnet-policy-service[bot] commented 3 weeks ago

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

DrewScoggins commented 3 weeks ago

PTAL @etemi

etemi commented 3 weeks ago

TBH I don't (yet) see how this regression is related to my changes. I will try to reproduce this locally.

etemi commented 3 weeks ago
eiriktsarpalis commented 2 weeks ago

I find it unlikely that this is being caused by #106503. It adds a few instructions to the main JsonDocument parsing method that could, theoretically, incur regressions in the micro level however the benchmark itself measures enumeration of a pre-parsed document which exercises a completely disjoint code-path.

The regression concerns main, so I'm updating the milestone to reflect this.