dotnet / dotnet/perf-autofiling-issues

[Perf] Windows/x64: 19 Improvements on 1/7/2026 4:35:05 PM +00:00

Open
#67,999 3 comments 0 reactions 0 assignees View on GitHub
arch-x64 branch-refs/heads/main kind-micro os-windows perf-improvement runtime-coreclr untriaged
Dominant language
No language data
Stars
10
Forks
8
PR merge metrics
PR metrics pending

Description

### Run Information

Name | Value
-- | --
Architecture | x64
OS | Windows 10.0.22631
Queue | ViperWindows
Baseline | [a9687b6e3abc8c4199150ce3d463dbf82ba2fef1](https://github.com/dotnet/runtime/commit/a9687b6e3abc8c4199150ce3d463dbf82ba2fef1)
Compare | [313982dff3457c8291e8b88cd99785f6920319f0](https://github.com/dotnet/runtime/commit/313982dff3457c8291e8b88cd99785f6920319f0)
Diff | [Diff](https://github.com/dotnet/runtime/compare/a9687b6e3abc8c4199150ce3d463dbf82ba2fef1...313982dff3457c8291e8b88cd99785f6920319f0)
Configs | CompilationMode:tiered, RunKind:micro

### Improvements in System.Linq.Tests.Perf_Enumerable

Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio
-- | -- | -- | -- | -- | -- | -- | -- | --
|

  • [Average - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 104.56 ns | 72.78 ns | 0.70 | 0.00 | False | | |
|
  • [CastToSameType - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 101.43 ns | 28.65 ns | 0.28 | 0.01 | False | | |
|
  • [SelectToArray - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 73.85 ns | 54.17 ns | 0.73 | 0.17 | False | | |
|
  • [ToList - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 240.73 ns | 179.95 ns | 0.75 | 0.03 | False | | |
|
  • [FirstWithPredicate_LastElementMatches - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 99.09 ns | 54.70 ns | 0.55 | 0.04 | False | | |
|
  • [SelectToList - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 253.08 ns | 171.48 ns | 0.68 | 0.17 | False | | |
|
  • [LastWithPredicate_FirstElementMatches - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 98.47 ns | 90.92 ns | 0.92 | 0.34 | False | | |
|
  • [WhereAny_LastElementMatches - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 108.77 ns | 82.60 ns | 0.76 | 0.03 | False | | |
|
  • [Min - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 99.77 ns | 70.61 ns | 0.71 | 0.02 | False | | |
|
  • [ElementAt - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 30.77 ns | 14.78 ns | 0.48 | 0.30 | False | | |
|
  • [Count - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 41.09 ns | 27.92 ns | 0.68 | 0.03 | False | | |
|
  • [SingleWithPredicate_LastElementMatches - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 54.99 ns | 32.37 ns | 0.59 | 0.06 | False | | |
|
  • [All_AllElementsMatch - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 99.14 ns | 44.58 ns | 0.45 | 0.03 | False | | |
|
  • [Aggregate_Seed - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 94.87 ns | 29.31 ns | 0.31 | 0.00 | False | | |
|
  • [Sum - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 95.39 ns | 47.07 ns | 0.49 | 0.04 | False | | |
|
  • [AnyWithPredicate_LastElementMatches - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 98.67 ns | 53.81 ns | 0.55 | 0.07 | False | | |
|
  • [WhereFirst_LastElementMatches - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 112.88 ns | 61.23 ns | 0.54 | 0.02 | False | | |
|
  • [Max - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 97.72 ns | 69.52 ns | 0.71 | 0.10 | False | | |
|
  • [SelectToArray - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 242.47 ns | 173.66 ns | 0.72 | 0.08 | False | | |

![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
[Test Report]()

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

```cmd
git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Linq.Tests.Perf_Enumerable*'
```

### System.Linq.Tests.Perf_Enumerable.Average(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.SelectToArray(input: List)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Linq.Tests.Perf_Enumerable.ToList(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.SelectToList(input: IEnumerable)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Linq.Tests.Perf_Enumerable.LastWithPredicate_FirstElementMatches(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.Min(input: IEnumerable)

#### 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.SingleWithPredicate_LastElementMatches(input: Array)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Linq.Tests.Perf_Enumerable.All_AllElementsMatch(input: IEnumerable)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Linq.Tests.Perf_Enumerable.Aggregate_Seed(input: IEnumerable)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Linq.Tests.Perf_Enumerable.Sum(input: IEnumerable)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Linq.Tests.Perf_Enumerable.AnyWithPredicate_LastElementMatches(input: IEnumerable)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Linq.Tests.Perf_Enumerable.WhereFirst_LastElementMatches(input: IEnumerable)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Linq.Tests.Perf_Enumerable.Max(input: IEnumerable)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Linq.Tests.Perf_Enumerable.SelectToArray(input: IEnumerable)

#### 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)

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the linked benchmark entries in dotnet/performance/src/benchmarks/micro/libraries/System.Linq/Perf.Enumerable.cs and compare the baseline and test reports for the listed System.Linq.Tests.Perf_Enumerable cases. Determine whether these automated improvements identify an actionable change; done would require a clear, scoped follow-up rather than the generated measurements alone.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
performance
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
10/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.