Repository navigation
[Perf] Windows/x64: Half and FrozenDictionary Regressions on 1/28/2025 11:31:49 PM +00:00 #112135
Copy link
Copy link
Closed
Labels
arch-x64area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMICLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMIos-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 | d20c35e05c16dd2ec9cddd4259738cc02228d425 |
| Compare | d9b75154ad360154b863ee01b72fbef94de261b0 |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Regressions in System.Tests.Perf_Half
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 1.01 ns | 2.25 ns | 2.24 | 0.04 | False | ||||
| 1.01 ns | 2.25 ns | 2.24 | 0.04 | 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.Tests.Perf_Half*'Details
System.Tests.Perf_Half.HalfToSingle(value: 12344)
ETL Files
Histogram
JIT Disasms
System.Tests.Perf_Half.HalfToSingle(value: NaN)
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 | d20c35e05c16dd2ec9cddd4259738cc02228d425 |
| Compare | d9b75154ad360154b863ee01b72fbef94de261b0 |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Regressions in System.Collections.Perf_Frozen<Int16>
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 50.64 ns | 59.55 ns | 1.18 | 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.Collections.Perf_Frozen<Int16>*'Details
System.Collections.Perf_Frozen<Int16>.ToFrozenDictionary(Count: 4)
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-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMICLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMIos-windowsruntime-coreclrspecific to the CoreCLR runtimespecific to the CoreCLR runtimetenet-performancePerformance related issuePerformance related issuetenet-performance-benchmarksIssue from performance benchmarkIssue from performance benchmark



Activity
LoopedBard3 commentedon Feb 4, 2025
From range: 9b24fb6...21ab780, Half test regressions were caused by #111024 (FYI @EgorBo) and Frozen Dictionary Regression was caused by #111886 (FYI @stephentoub).
Related Regressions:
[-][Perf] Windows/x64: 3 Regressions on 1/28/2025 11:31:49 PM +00:00[/-][+][Perf] Windows/x64: Half and FrozenDictionary Regressions on 1/28/2025 11:31:49 PM +00:00[/+]dotnet-policy-service commentedon Feb 6, 2025
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch
See info in area-owners.md if you want to be subscribed.
xtqqczze commentedon Feb 7, 2025
Originally posted by @xtqqczze in #111024 (comment)
stephentoub commentedon Feb 8, 2025
The ToFrozenDictionary one is acceptable. #112298 will help a little, but this is a 9ns regression when constructing the FrozenDictionary, in order to improve the throughput of accessing it. That kind of tradeoff is the main reason this type exists: we're ok spending a bit more at construction in order to optimize throughput of reads.
EgorBo commentedon Jul 16, 2025
Closing per Stephen comment. All Half-related regressions seem no longer relevant, e.g.