dotnet / dotnet/perf-autofiling-issues

[Perf] Windows/x64: 9 Improvements on 6/25/2026 8:16:25 PM +00:00

Open
#75,220 2 comments 0 reactions 0 assignees View on GitHub
arch-x64 branch-refs/heads/main compilationmode-tiered kind-micro os-windows perf-improvement runkind-micro 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 | [818cfd5edcda78ac3eb201af392fd301ab9ad46b](https://github.com/dotnet/runtime/commit/818cfd5edcda78ac3eb201af392fd301ab9ad46b)
Compare | [c369fd627a26b606f36e6b3cbef6f25f3c00bbac](https://github.com/dotnet/runtime/commit/c369fd627a26b606f36e6b3cbef6f25f3c00bbac)
Diff | [Diff](https://github.com/dotnet/runtime/compare/818cfd5edcda78ac3eb201af392fd301ab9ad46b...c369fd627a26b606f36e6b3cbef6f25f3c00bbac)
Configs | CompilationMode:tiered, RunKind:micro

### Improvements in System.Text.Json.Serialization.Tests.WriteJson<HashSet<String>>

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

  • [SerializeToWriter - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 2.83 μs | 1.43 μs | 0.50 | 0.06 | False | | |
|
  • [SerializeToStream - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 1.80 μs | 1.44 μs | 0.80 | 0.09 | False | | |
|
  • [SerializeObjectProperty - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 2.03 μs | 1.71 μs | 0.84 | 0.05 | False | | |
|
  • [SerializeToStream - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 2.30 μs | 1.96 μs | 0.85 | 0.02 | False | | |
|
  • [SerializeToString - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 2.41 μs | 2.12 μs | 0.88 | 0.02 | False | | |
|
  • [SerializeToUtf8Bytes - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 2.55 μs | 2.28 μs | 0.89 | 0.02 | False | | |
|
  • [SerializeObjectProperty - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 2.51 μs | 2.26 μs | 0.90 | 0.04 | False | | |
|
  • [SerializeToString - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 2.74 μs | 2.47 μs | 0.90 | 0.04 | False | | |

![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.Text.Json.Serialization.Tests.WriteJson>*'
```

### System.Text.Json.Serialization.Tests.WriteJson<HashSet<String>>.SerializeToWriter(Mode: SourceGen)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Serialization.Tests.WriteJson<HashSet<String>>.SerializeToStream(Mode: SourceGen)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Serialization.Tests.WriteJson<HashSet<String>>.SerializeObjectProperty(Mode: SourceGen)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Serialization.Tests.WriteJson<HashSet<String>>.SerializeToStream(Mode: Reflection)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Serialization.Tests.WriteJson<HashSet<String>>.SerializeToString(Mode: Reflection)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Serialization.Tests.WriteJson<HashSet<String>>.SerializeToUtf8Bytes(Mode: SourceGen)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Serialization.Tests.WriteJson<HashSet<String>>.SerializeObjectProperty(Mode: Reflection)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Serialization.Tests.WriteJson<HashSet<String>>.SerializeToString(Mode: SourceGen)

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

---

### Run Information

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

### Improvements in System.IO.Pipelines.Tests.Perf_Pipe

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

  • [ReadAsyncWithCancellationToken - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 2.12 ms | 1.76 ms | 0.83 | 0.35 | False | | |

![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.IO.Pipelines.Tests.Perf_Pipe*'
```

### System.IO.Pipelines.Tests.Perf_Pipe.ReadAsyncWithCancellationToken

#### 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 benchmark source at src/benchmarks/micro/libraries/System.Text.Json/Serializer/WriteJson.cs, especially lines 75-98, and review the linked performance history reports. Compare the baseline and test results for the listed HashSet serialization benchmarks; done means determining whether the reported improvements need follow-up.

Written by the indexing model from the issue text.

Assessment

Tech stack
json
Domain
performance
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
32/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.