Repository navigation
Description
Run Information
| Name | Value |
|---|---|
| Architecture | x64 |
| OS | Windows 10.0.18362 |
| Queue | TigerWindows |
| Baseline | 1a2f095fb212dcbf394f01122b9f317b7cc70fdb |
| Compare | 2361c00717a54a5dd9b0cf727102d64f783855b9 |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Regressions in System.Globalization.Tests.StringEquality
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 761.52 ns | 973.83 ns | 1.28 | 0.00 | True | ||||
| 1.19 μs | 1.28 μs | 1.08 | 0.01 | False |
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.Globalization.Tests.StringEquality*'Details
Payloads
System.Globalization.Tests.StringEquality.Compare_Same(Count: 1024, Options: (en-US, OrdinalIgnoreCase))
ETL Files
Histogram
JIT Disasms
System.Globalization.Tests.StringEquality.Compare_Same_Upper(Count: 1024, Options: (en-US, OrdinalIgnoreCase))
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
| Name | Value |
|---|---|
| Architecture | x64 |
| OS | Windows 10.0.18362 |
| Queue | TigerWindows |
| Baseline | 1a2f095fb212dcbf394f01122b9f317b7cc70fdb |
| Compare | 2361c00717a54a5dd9b0cf727102d64f783855b9 |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Regressions in Benchmark.GetChildKeysTests
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 14.99 ms | 16.20 ms | 1.08 | 0.02 | False |
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 'Benchmark.GetChildKeysTests*'Details
Payloads
Benchmark.GetChildKeysTests.AddChainedConfigurationEmpty
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
| Name | Value |
|---|---|
| Architecture | x64 |
| OS | Windows 10.0.18362 |
| Queue | TigerWindows |
| Baseline | 1a2f095fb212dcbf394f01122b9f317b7cc70fdb |
| Compare | 2361c00717a54a5dd9b0cf727102d64f783855b9 |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Regressions in Span.Sorting
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 8.54 μs | 16.21 μs | 1.90 | 0.45 | True |
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 'Span.Sorting*'Details
Payloads
Span.Sorting.QuickSortArray(Size: 512)
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
| Name | Value |
|---|---|
| Architecture | x64 |
| OS | Windows 10.0.18362 |
| Queue | TigerWindows |
| Baseline | 1a2f095fb212dcbf394f01122b9f317b7cc70fdb |
| Compare | 2361c00717a54a5dd9b0cf727102d64f783855b9 |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Regressions in Benchstone.BenchI.EightQueens
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 1.80 μs | 2.04 μs | 1.13 | 0.03 | False |
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 'Benchstone.BenchI.EightQueens*'Details
Payloads
Benchstone.BenchI.EightQueens.Test
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository





Activity
DrewScoggins commentedon Feb 6, 2024
Diff here: 207e1fb...df0778d
Nothing is jumping out as the culprit, but there were a few JIT changes.
DrewScoggins commentedon Feb 6, 2024
Linux related regressions: dotnet/perf-autofiling-issues#28564
BruceForstall commentedon Feb 13, 2024
Maybe #97722?
1 remaining item
AndyAyersMS commentedon Jul 22, 2024
EightQueens seems to be an intel-only regression, and then only on some cases, and two other regressions since.
Most all the time is in
TryMe.Codegen from baseline to latest shows RBO did one jump thread (from #97722), different layout, and an IV widening.
There are a lot of spilled CSEs here in both baseline and latest codegen, but more spill occurrences in latest. Possibly the one extra jump thread by RBO has created more critical edges and so made life more difficult for LSRA.
Final flow graphs. You can clearly see the impact of RPO layout at least...
AndyAyersMS commentedon Aug 6, 2024
Span.Sorting.QuickSortArray(Size: 512)
Regressions here were fixed by RPO layout:
AndyAyersMS commentedon Aug 6, 2024
System.Globalization.Tests.StringEquality.Compare_Same(Count: 1024, Options: (en-US, OrdinalIgnoreCase))
Ditto for this benchmark
AndyAyersMS commentedon Aug 6, 2024
System.Globalization.Tests.StringEquality.Compare_Same_Upper(Count: 1024, Options: (en-US, OrdinalIgnoreCase))
Same as the two above, recovers with later changes.
AndyAyersMS commentedon Aug 6, 2024
Benchmark.GetChildKeysTests.AddChainedConfigurationEmpty
Ditto like the above
AndyAyersMS commentedon Aug 6, 2024
So the only persisted regression is in 8 queens, and that one seems to be the increase in resolution moves by the allocator.
Going to move this to .NET 10 as there's no simple fix available now.
AndyAyersMS commentedon Feb 25, 2025
Likely won't get to this in .NET 10 either