Repository navigation
[Perf] Windows/x64: 4 Regressions on 10/27/2024 3:01:56 PM #109347
Copy link
Copy link
Closed
Labels
arch-x64area-System.Collectionsos-windowsruntime-coreclrspecific to the CoreCLR runtimespecific to the CoreCLR runtimetenet-performancePerformance related issuePerformance related issuetenet-performance-benchmarksIssue from performance benchmarkIssue from performance benchmark
Milestone
Description
Run Information
| Name | Value |
|---|---|
| Architecture | x64 |
| OS | Windows 10.0.22621 |
| Queue | TigerWindows |
| Baseline | 601753aeed1e3454328a23c7e8ab4a3b3277e87b |
| Compare | e4fe27d8be89ac6805d9f2d4e92295a3322364a9 |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Regressions in System.Collections.ContainsTrue<String>
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 174.53 μs | 284.86 μs | 1.63 | 0.44 | False | ||||
| 249.64 μs | 284.25 μs | 1.14 | 0.13 | False | ||||
| 248.22 μs | 283.71 μs | 1.14 | 0.14 | 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.Collections.ContainsTrue<String>*'Details
System.Collections.ContainsTrue<String>.Stack(Size: 512)
ETL Files
Histogram
JIT Disasms
System.Collections.ContainsTrue<String>.ICollection(Size: 512)
ETL Files
Histogram
JIT Disasms
System.Collections.ContainsTrue<String>.List(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.22621 |
| Queue | TigerWindows |
| Baseline | 601753aeed1e3454328a23c7e8ab4a3b3277e87b |
| Compare | e4fe27d8be89ac6805d9f2d4e92295a3322364a9 |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Regressions in System.Collections.IterateForEach<String>
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 26.17 μs | 33.99 μs | 1.30 | 0.13 | 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.Collections.IterateForEach<String>*'Details
System.Collections.IterateForEach<String>.ImmutableDictionary(Size: 512)
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
arch-x64area-System.Collectionsos-windowsruntime-coreclrspecific to the CoreCLR runtimespecific to the CoreCLR runtimetenet-performancePerformance related issuePerformance related issuetenet-performance-benchmarksIssue from performance benchmarkIssue from performance benchmark




Activity
DrewScoggins commentedon Oct 29, 2024
#109256
Regresssions
Improvements
AndyAyersMS commentedon Feb 15, 2025
Current collation
1.63
1.30
1.30
1.22
1.53
1.40
1.32
0.81
1.20
1.67
1.14
0.93
0.94
0.94
0.83
0.92
0.85
0.84
0.91
1.66
0.65
1.63
1.14
1.15
0.82
0.67
0.82
0.81
0.86
0.84
0.88
0.88
0.83
0.88
0.65
0.65
0.88
0.87
0.84
0.83
0.70
0.80
0.84
0.77
AndyAyersMS commentedon Apr 15, 2025
System.Collections.IterateForEach(String).ImmutableDictionary(Size: 512)
This is mostly remedied, except for zen4 on windows
System.Collections.AddGivenSize(String).List(Size: 512)
Mostly remedied, except for intel linux
AndyAyersMS commentedon Apr 15, 2025
For AddGivenSize, inner loops are similar but .NET 9 has better alignment (despite there being a call in the loop). Wonder if that's it...
Current mainline offsets are higher because we inline the list ctor, which accesses a shared static field (which is what the blamed PR enables).
versus
Let's see if we can easily enable alignment padding for loops with calls...
AndyAyersMS commentedon Apr 30, 2025
Some of these improved with #114191, eg

AndyAyersMS commentedon Apr 30, 2025
Going to close now, given that this is down to one benchmark on only one HW config.