Repository navigation
[Perf] Windows/x64: 33 Regressions on 6/21/2024 6:31:57 PM #103972
Description
Run Information
| Name | Value |
|---|---|
| Architecture | x64 |
| OS | Windows 10.0.22631 |
| Queue | ViperWindows |
| Baseline | 8923c96baa4ca6f5540ca185a3e614a96fe63b34 |
| Compare | 0262a63be0f560fa902b1e31e9a10760e466352d |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Regressions in System.Text.Json.Tests.Utf8JsonReaderCommentsTests
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 69.18 ns | 81.88 ns | 1.18 | 0.08 | False | ||||
| 110.55 ns | 125.75 ns | 1.14 | 0.08 | 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.Text.Json.Tests.Utf8JsonReaderCommentsTests*'Details
System.Text.Json.Tests.Utf8JsonReaderCommentsTests.Utf8JsonReaderCommentParsing(CommentHandling: Skip, SegmentSize: 100, TestCase: ShortMultiLine)
ETL Files
Histogram
JIT Disasms
System.Text.Json.Tests.Utf8JsonReaderCommentsTests.Utf8JsonReaderCommentParsing(CommentHandling: Skip, SegmentSize: 0, TestCase: LongSingleLine)
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.22631 |
| Queue | ViperWindows |
| Baseline | 8923c96baa4ca6f5540ca185a3e614a96fe63b34 |
| Compare | 0262a63be0f560fa902b1e31e9a10760e466352d |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Regressions in System.Linq.Tests.Perf_Enumerable
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 104.29 ns | 118.45 ns | 1.14 | 0.15 | False | ||||
| 29.31 ns | 39.29 ns | 1.34 | 0.11 | False | ||||
| 38.40 ns | 62.93 ns | 1.64 | 0.03 | True | ||||
| 108.24 ns | 122.41 ns | 1.13 | 0.05 | True | ||||
| 102.96 ns | 125.29 ns | 1.22 | 0.09 | False | ||||
| 101.79 ns | 124.12 ns | 1.22 | 0.16 | False | ||||
| 102.43 ns | 121.89 ns | 1.19 | 0.04 | False | ||||
| 102.21 ns | 117.97 ns | 1.15 | 0.12 | False | ||||
| 334.88 ns | 355.25 ns | 1.06 | 0.05 | False | ||||
| 119.81 ns | 131.68 ns | 1.10 | 0.08 | False | ||||
| 129.29 ns | 147.50 ns | 1.14 | 0.01 | False | ||||
| 103.39 ns | 121.52 ns | 1.18 | 0.22 | False | ||||
| 63.77 ns | 89.59 ns | 1.40 | 0.03 | True | ||||
| 120.53 ns | 135.08 ns | 1.12 | 0.14 | False | ||||
| 122.35 ns | 143.10 ns | 1.17 | 0.24 | False | ||||
| 130.47 ns | 148.53 ns | 1.14 | 0.00 | False | ||||
| 82.69 ns | 109.31 ns | 1.32 | 0.07 | False | ||||
| 132.98 ns | 153.08 ns | 1.15 | 0.00 | True | ||||
| 102.37 ns | 122.38 ns | 1.20 | 0.05 | False | ||||
| 103.77 ns | 126.73 ns | 1.22 | 0.30 | False | ||||
| 101.73 ns | 119.91 ns | 1.18 | 0.20 | 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.Linq.Tests.Perf_Enumerable*'Details
System.Linq.Tests.Perf_Enumerable.FirstWithPredicate_LastElementMatches(input: Array)
ETL Files
Histogram
JIT Disasms
System.Linq.Tests.Perf_Enumerable.ElementAt(input: IEnumerable)
ETL Files
Histogram
JIT Disasms
System.Linq.Tests.Perf_Enumerable.Count(input: IEnumerable)
ETL Files
Histogram
JIT Disasms
System.Linq.Tests.Perf_Enumerable.CastToSameType(input: IEnumerable)
ETL Files
Histogram
JIT Disasms
System.Linq.Tests.Perf_Enumerable.FirstWithPredicate_LastElementMatches(input: IEnumerable)
ETL Files
Histogram
JIT Disasms
System.Linq.Tests.Perf_Enumerable.AnyWithPredicate_LastElementMatches(input: Array)
ETL Files
Histogram
JIT Disasms
System.Linq.Tests.Perf_Enumerable.Sum(input: IEnumerable)
ETL Files
Histogram
JIT Disasms
System.Linq.Tests.Perf_Enumerable.All_AllElementsMatch(input: IEnumerable)
ETL Files
Histogram
JIT Disasms
System.Linq.Tests.Perf_Enumerable.Reverse(input: IEnumerable)
ETL Files
Histogram
JIT Disasms
System.Linq.Tests.Perf_Enumerable.Select(input: Array)
ETL Files
Histogram
JIT Disasms
System.Linq.Tests.Perf_Enumerable.AnyWithPredicate_LastElementMatches(input: List)
ETL Files
Histogram
JIT Disasms
System.Linq.Tests.Perf_Enumerable.SingleWithPredicate_LastElementMatches(input: Array)
ETL Files
Histogram
JIT Disasms
System.Linq.Tests.Perf_Enumerable.Repeat
ETL Files
Histogram
JIT Disasms
System.Linq.Tests.Perf_Enumerable.WhereFirst_LastElementMatches(input: IEnumerable)
ETL Files
Histogram
JIT Disasms
System.Linq.Tests.Perf_Enumerable.WhereAny_LastElementMatches(input: IEnumerable)
ETL Files
Histogram
JIT Disasms
System.Linq.Tests.Perf_Enumerable.FirstWithPredicate_LastElementMatches(input: List)
ETL Files
Histogram
JIT Disasms
System.Linq.Tests.Perf_Enumerable.Range
ETL Files
Histogram
JIT Disasms
System.Linq.Tests.Perf_Enumerable.SingleWithPredicate_LastElementMatches(input: List)
ETL Files
Histogram
JIT Disasms
System.Linq.Tests.Perf_Enumerable.Aggregate_Seed(input: IEnumerable)
ETL Files
Histogram
JIT Disasms
System.Linq.Tests.Perf_Enumerable.SingleWithPredicate_LastElementMatches(input: IEnumerable)
ETL Files
Histogram
JIT Disasms
System.Linq.Tests.Perf_Enumerable.AnyWithPredicate_LastElementMatches(input: IEnumerable)
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.22631 |
| Queue | ViperWindows |
| Baseline | 8923c96baa4ca6f5540ca185a3e614a96fe63b34 |
| Compare | 0262a63be0f560fa902b1e31e9a10760e466352d |
| 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 |
|---|---|---|---|---|---|---|---|---|
| 1.00 μs | 1.26 μs | 1.25 | 0.01 | True | ||||
| 1.09 μs | 1.44 μs | 1.32 | 0.02 | True | ||||
| 8.26 μs | 14.23 μs | 1.72 | 0.08 | True | ||||
| 8.81 μs | 12.91 μs | 1.47 | 0.09 | True | ||||
| 9.44 μs | 13.60 μs | 1.44 | 0.09 | 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>.Stack(Size: 512)
ETL Files
Histogram
JIT Disasms
System.Collections.IterateForEach<String>.Queue(Size: 512)
ETL Files
Histogram
JIT Disasms
System.Collections.IterateForEach<String>.ImmutableSortedDictionary(Size: 512)
ETL Files
Histogram
JIT Disasms
System.Collections.IterateForEach<String>.ImmutableSortedSet(Size: 512)
ETL Files
Histogram
JIT Disasms
System.Collections.IterateForEach<String>.ImmutableList(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.22631 |
| Queue | ViperWindows |
| Baseline | 8923c96baa4ca6f5540ca185a3e614a96fe63b34 |
| Compare | 0262a63be0f560fa902b1e31e9a10760e466352d |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Regressions in SciMark2.kernel
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 326.62 ms | 388.15 ms | 1.19 | 0.02 | False | ||||
| 462.87 ms | 512.19 ms | 1.11 | 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 'SciMark2.kernel*'Details
SciMark2.kernel.benchSparseMult
ETL Files
Histogram
JIT Disasms
SciMark2.kernel.benchMonteCarlo
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.22631 |
| Queue | ViperWindows |
| Baseline | 8923c96baa4ca6f5540ca185a3e614a96fe63b34 |
| Compare | 0262a63be0f560fa902b1e31e9a10760e466352d |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Regressions in System.Collections.CtorFromCollection<Int32>
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 3.98 μs | 7.22 μs | 1.81 | 0.22 | True | ||||
| 3.05 μs | 6.16 μs | 2.02 | 0.15 | 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 'System.Collections.CtorFromCollection<Int32>*'Details
System.Collections.CtorFromCollection<Int32>.ImmutableStack(Size: 512)
ETL Files
Histogram
JIT Disasms
System.Collections.CtorFromCollection<Int32>.ConcurrentStack(Size: 512)
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
































Activity
performanceautofiler commentedon Jun 25, 2024
Run Information
Regressions in LinqBenchmarks
Test Report
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
Details
LinqBenchmarks.Count00LinqMethodX
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
DrewScoggins commentedon Jun 25, 2024
Seems to be related to #103785
AndyAyersMS commentedon Jun 25, 2024
Regressions:
Improvements:
AndyAyersMS commentedon Jul 19, 2024
Collated Regression Table
1.81
1.72
1.60
1.25
1.47
1.36
1.40
1.50
2.02
1.39
1.48
1.44
1.40
1.50
1.60
1.36
1.44
1.25
1.28
1.29
1.32
1.39
1.38
1.40
1.37
1.32
1.39
1.15
1.45
1.13
1.44
1.16
1.15
1.22
1.28
1.23
1.25
1.37
1.39
1.08
1.14
1.24
1.15
1.37
1.25
1.23
1.65
1.22
1.06
1.20
1.21
1.73
1.28
1.19
1.26
1.36
1.37
1.22
1.23
1.16
1.18
1.21
1.19
1.33
1.17
1.19
1.38
1.12
1.23
1.12
1.40
1.21
1.22
1.22
1.26
1.35
1.06
1.22
1.21
1.35
1.10
1.14
1.11
0.84
1.64
1.19
1.27
1.11
1.20
1.22
1.29
1.16
1.16
1.14
1.15
1.28
1.31
1.45
1.07
1.18
1.19
1.21
1.13
1.18
1.17
1.16
1.14
1.28
1.34
1.14
1.08
1.18
1.22
1.10
1.16
1.19
1.10
1.14
1.15
1.14
1.08
1.20
1.14
1.13
1.13
1.40
1.10
1.11
1.12
1.13
1.19
1.12
1.13
1.07
1.24
1.07
1.16
1.10
1.09
1.09
1.06
1.07
1.06
1.11
1.06
1.07
1.08
1.12
1.09
1.07
1.11
1.09
1.07
0.85
1.34
1.08
1.08
1.11
1.06
1.09
1.06
1.10
1.11
1.07
1.22
1.07
0.77
1.32
1.19
1.10
1.13
1.16
1.09
1.24
1.13
1.11
1.11
0.90
0.90
0.89
0.83
2.34
2.29
2.31
1.09
JulieLeeMSFT commentedon Aug 1, 2024
pushing to .NET 10 becasue any fix on flow graph has a high risk.
amanasifkhalid commentedon Apr 28, 2025
Updated table:
1.50
1.72
1.64
1.19
1.44
1.24
1.21
1.73
1.28
1.19
1.16
1.16
1.18
1.09
1.12
1.25
1.09
1.07
1.11
1.39
1.48
1.17
1.34
1.44
1.25
1.32
1.14
1.40
1.37
1.11
1.25
1.16
1.36
1.40
1.36
1.06
1.22
1.15
1.06
1.06
1.11
1.13
1.10
1.19
1.13
1.23
1.65
1.22
1.20
1.35
1.22
1.47
1.22
1.23
1.40
1.21
1.22
1.11
1.32
1.15
1.09
1.22
1.16
1.13
1.10
1.11
1.16
1.18
1.19
1.32
1.19
1.13
1.10
1.14
1.19
1.12
1.40
1.10
1.11
1.17
1.09
1.23
1.06
1.34
1.14
1.18
1.27
1.11
1.22
1.08
1.07
1.07
1.22
1.19
2.02
1.26
1.24
2.31
2.34
2.29
1.81
1.31
1.45
1.18
1.14
1.28
1.36
1.22
1.37
1.39
1.14
1.45
1.13
1.44
1.15
1.19
1.14
1.21
1.35
1.14
1.08
amanasifkhalid commentedon Apr 28, 2025
The remaining regressions fall into one of the following categories:
fgCalledCountafter synthesis #112041)I think it's worth keeping this issue open to track the last category. Moving to future.
AndyAyersMS commentedon Jun 27, 2026
Closing — the work tracked here has shipped.
Summary of resolution:
BubbleSort2,IniArray,InProd) — closed 2025-04-25; fix PRs JIT: Move loop inversion to after loop recognition #115850 and JIT: Graph-based loop inversion #116017 merged June 2025.Residual benchmark sensitivity (
BubbleSort2, etc.) is now tracked individually by the perf autofiler when it actually regresses (e.g. perf-autofiling-issues#64975, #64446 on Linux/x64; #60813 on Windows/x86). Notably perf-autofiling-issues#72932 (May 2026) shows a batch ofBubbleSort2improvements on Windows/x64. Keeping this umbrella open 14 months past last activity isn''t adding value — individual perf regressions get their own per-event tracking issue.Thanks @amanasifkhalid for the systematic triage.
Note
Wrap-up by GitHub Copilot CLI.