dotnet / dotnet/perf-autofiling-issues

[Perf] Linux/arm64: 25 Improvements on 6/25/2026 3:50:04 PM +00:00

Open
#75,517 1 comment 0 reactions 0 assignees View on GitHub
arch-arm64 branch-refs/heads/main compilationmode-tiered kind-micro Look Again os-linux 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 | arm64
OS | azurelinux 3.0
Queue | CobaltAzureLinux
Baseline | [818cfd5edcda78ac3eb201af392fd301ab9ad46b](https://github.com/dotnet/runtime/commit/818cfd5edcda78ac3eb201af392fd301ab9ad46b)
Compare | [4e28c96c3bd32ce2811ef7128641e8926874020e](https://github.com/dotnet/runtime/commit/4e28c96c3bd32ce2811ef7128641e8926874020e)
Diff | [Diff](https://github.com/dotnet/runtime/compare/818cfd5edcda78ac3eb201af392fd301ab9ad46b...4e28c96c3bd32ce2811ef7128641e8926874020e)
Configs | CompilationMode:tiered, RunKind:micro

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

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

  • [SerializeObjectProperty - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 7.98 μs | 4.54 μs | 0.57 | 0.23 | False | | |
|
  • [SerializeToWriter - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 7.25 μs | 5.03 μs | 0.69 | 0.20 | False | | |
|
  • [SerializeToWriter - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 6.16 μs | 5.37 μs | 0.87 | 0.20 | False | | |
|
  • [SerializeToStream - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 6.07 μs | 5.30 μs | 0.87 | 0.19 | False | | |
|
  • [SerializeObjectProperty - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 7.74 μs | 6.86 μs | 0.89 | 0.19 | False | | |
|
  • [SerializeToStream - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 6.93 μs | 6.29 μs | 0.91 | 0.20 | False | | |
|
  • [SerializeToUtf8Bytes - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 7.52 μs | 6.89 μs | 0.92 | 0.20 | False | | |
|
  • [SerializeToString - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 8.62 μs | 8.01 μs | 0.93 | 0.25 | 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<Dictionary<String, String>>.SerializeObjectProperty(Mode: Reflection)

#### ETL Files

#### Histogram

#### JIT Disasms

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

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Serialization.Tests.WriteJson<Dictionary<String, String>>.SerializeToWriter(Mode: Reflection)

#### ETL Files

#### Histogram

#### JIT Disasms

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

#### ETL Files

#### Histogram

#### JIT Disasms

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

#### ETL Files

#### Histogram

#### JIT Disasms

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

#### ETL Files

#### Histogram

#### JIT Disasms

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

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Serialization.Tests.WriteJson<Dictionary<String, 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 | arm64
OS | azurelinux 3.0
Queue | CobaltAzureLinux
Baseline | [818cfd5edcda78ac3eb201af392fd301ab9ad46b](https://github.com/dotnet/runtime/commit/818cfd5edcda78ac3eb201af392fd301ab9ad46b)
Compare | [4e28c96c3bd32ce2811ef7128641e8926874020e](https://github.com/dotnet/runtime/commit/4e28c96c3bd32ce2811ef7128641e8926874020e)
Diff | [Diff](https://github.com/dotnet/runtime/compare/818cfd5edcda78ac3eb201af392fd301ab9ad46b...4e28c96c3bd32ce2811ef7128641e8926874020e)
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
-- | -- | -- | -- | -- | -- | -- | -- | --
|

  • [SerializeObjectProperty - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 4.22 μs | 2.35 μs | 0.56 | 0.19 | False | | |
|
  • [SerializeToString - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 4.72 μs | 2.73 μs | 0.58 | 0.24 | False | | |
|
  • [SerializeToWriter - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 4.15 μs | 2.70 μs | 0.65 | 0.28 | False | | |
|
  • [SerializeToStream - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 3.28 μs | 2.90 μs | 0.88 | 0.16 | False | | |
|
  • [SerializeToStream - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 4.14 μs | 3.73 μs | 0.90 | 0.21 | False | | |
|
  • [SerializeToUtf8Bytes - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 4.11 μs | 3.76 μs | 0.92 | 0.16 | False | | |
|
  • [SerializeToWriter - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 3.85 μs | 3.54 μs | 0.92 | 0.18 | False | | |

![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>>.SerializeObjectProperty(Mode: SourceGen)

#### 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>>.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>>.SerializeToStream(Mode: Reflection)

#### ETL Files

#### Histogram

#### JIT Disasms

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

#### ETL Files

#### Histogram

#### JIT Disasms

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

#### 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 | arm64
OS | azurelinux 3.0
Queue | CobaltAzureLinux
Baseline | [818cfd5edcda78ac3eb201af392fd301ab9ad46b](https://github.com/dotnet/runtime/commit/818cfd5edcda78ac3eb201af392fd301ab9ad46b)
Compare | [4e28c96c3bd32ce2811ef7128641e8926874020e](https://github.com/dotnet/runtime/commit/4e28c96c3bd32ce2811ef7128641e8926874020e)
Diff | [Diff](https://github.com/dotnet/runtime/compare/818cfd5edcda78ac3eb201af392fd301ab9ad46b...4e28c96c3bd32ce2811ef7128641e8926874020e)
Configs | CompilationMode:tiered, RunKind:micro

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

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

  • [SerializeToString - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 9.54 μs | 5.59 μs | 0.59 | 0.19 | False | | |
|
  • [SerializeToUtf8Bytes - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 8.36 μs | 4.95 μs | 0.59 | 0.21 | False | | |
|
  • [SerializeToStream - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 8.18 μs | 7.49 μs | 0.92 | 0.17 | False | | |
|
  • [SerializeObjectProperty - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 9.75 μs | 9.08 μs | 0.93 | 0.20 | False | | |

![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<ImmutableSortedDictionary<String, String>>.SerializeToString(Mode: Reflection)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Serialization.Tests.WriteJson<ImmutableSortedDictionary<String, String>>.SerializeToUtf8Bytes(Mode: Reflection)

#### ETL Files

#### Histogram

#### JIT Disasms

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

#### ETL Files

#### Histogram

#### JIT Disasms

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

#### 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 | arm64
OS | azurelinux 3.0
Queue | CobaltAzureLinux
Baseline | [818cfd5edcda78ac3eb201af392fd301ab9ad46b](https://github.com/dotnet/runtime/commit/818cfd5edcda78ac3eb201af392fd301ab9ad46b)
Compare | [4e28c96c3bd32ce2811ef7128641e8926874020e](https://github.com/dotnet/runtime/commit/4e28c96c3bd32ce2811ef7128641e8926874020e)
Diff | [Diff](https://github.com/dotnet/runtime/compare/818cfd5edcda78ac3eb201af392fd301ab9ad46b...4e28c96c3bd32ce2811ef7128641e8926874020e)
Configs | CompilationMode:tiered, RunKind:micro

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

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]()
| 4.78 μs | 4.37 μs | 0.92 | 0.44 | False | | |
|
  • [SerializeToWriter - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 4.78 μs | 4.40 μs | 0.92 | 0.35 | False | | |
|
  • [SerializeToUtf8Bytes - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 5.04 μs | 4.69 μs | 0.93 | 0.33 | False | | |
|
  • [SerializeToStream - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 5.09 μs | 4.77 μs | 0.94 | 0.26 | False | | |

![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<ArrayList>.SerializeToWriter(Mode: Reflection)

#### ETL Files

#### Histogram

#### JIT Disasms

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

#### ETL Files

#### Histogram

#### JIT Disasms

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

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Serialization.Tests.WriteJson<ArrayList>.SerializeToStream(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 | arm64
OS | azurelinux 3.0
Queue | CobaltAzureLinux
Baseline | [818cfd5edcda78ac3eb201af392fd301ab9ad46b](https://github.com/dotnet/runtime/commit/818cfd5edcda78ac3eb201af392fd301ab9ad46b)
Compare | [4e28c96c3bd32ce2811ef7128641e8926874020e](https://github.com/dotnet/runtime/commit/4e28c96c3bd32ce2811ef7128641e8926874020e)
Diff | [Diff](https://github.com/dotnet/runtime/compare/818cfd5edcda78ac3eb201af392fd301ab9ad46b...4e28c96c3bd32ce2811ef7128641e8926874020e)
Configs | CompilationMode:tiered, RunKind:micro

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

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

  • [SerializeToString - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 15.92 μs | 9.29 μs | 0.58 | 0.25 | False | | |
|
  • [SerializeToStream - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 8.61 μs | 7.92 μs | 0.92 | 0.15 | False | | |

![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<ImmutableDictionary<String, String>>.SerializeToString(Mode: SourceGen)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Serialization.Tests.WriteJson<ImmutableDictionary<String, String>>.SerializeToStream(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)

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 the referenced WriteJson cases. Review the linked arm64 AzureLinux reports and compare the baseline and test results. Done means identifying whether the reported performance changes require a runtime action or can be closed as an automated improvement.

Written by the indexing model from the issue text.

Assessment

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.