dotnet / dotnet/perf-autofiling-issues

[Perf] Linux/arm64: 40 Improvements on 8/5/2026 1:23:13 AM +00:00

Open
#77,442 2 comments 0 reactions 0 assignees View on GitHub
ampere arch-arm64 bdn-update 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 | ubuntu 22.04
Queue | AmpereUbuntu
Baseline | [2dd5330804f9d4f49599d82c90a67892d4dd8af0](https://github.com/dotnet/runtime/commit/2dd5330804f9d4f49599d82c90a67892d4dd8af0)
Compare | [c8f97975ab0d8ff84aebf176829e17f7c7052f03](https://github.com/dotnet/runtime/commit/c8f97975ab0d8ff84aebf176829e17f7c7052f03)
Diff | [Diff](https://github.com/dotnet/runtime/compare/2dd5330804f9d4f49599d82c90a67892d4dd8af0...c8f97975ab0d8ff84aebf176829e17f7c7052f03)
Configs | CompilationMode:tiered, RunKind:micro

### Improvements in System.Reflection.Metadata.Perf_TypeName

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

  • [Parse_AssemblyQualifiedName - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 1137.32 ns | 933.50 ns | 0.82 | 0.10 | False | | |
|
  • [Parse_AssemblyQualifiedName - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 1108.24 ns | 910.65 ns | 0.82 | 0.12 | False | | |
|
  • [Parse_AssemblyQualifiedName - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 1133.86 ns | 933.03 ns | 0.82 | 0.12 | False | | |
|
  • [Parse_AssemblyQualifiedName - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 1044.61 ns | 859.81 ns | 0.82 | 0.13 | False | | |
|
  • [Parse_AssemblyQualifiedName - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 1131.62 ns | 935.63 ns | 0.83 | 0.08 | False | | |
|
  • [Parse_AssemblyQualifiedName - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 7.26 μs | 6.02 μs | 0.83 | 0.11 | False | | |
|
  • [ParseAndGetAssemblyQualifiedName - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 1.34 μs | 1.11 μs | 0.83 | 0.08 | False | | |
|
  • [Parse_AssemblyQualifiedName - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 1096.55 ns | 915.87 ns | 0.84 | 0.14 | False | | |
|
  • [ParseAndGetAssemblyQualifiedName - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 1.33 μs | 1.12 μs | 0.84 | 0.09 | False | | |
|
  • [ParseAndGetAssemblyQualifiedName - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 1.32 μs | 1.12 μs | 0.85 | 0.08 | False | | |
|
  • [Parse_AssemblyQualifiedName - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 1053.71 ns | 905.52 ns | 0.86 | 0.11 | False | | |
|
  • [Parse_AssemblyQualifiedName - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 3.29 μs | 2.83 μs | 0.86 | 0.14 | False | | |
|
  • [ParseAndGetAssemblyQualifiedName - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 3.97 μs | 3.42 μs | 0.86 | 0.09 | False | | |
|
  • [ParseAndGetAssemblyQualifiedName - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 1154.75 ns | 997.18 ns | 0.86 | 0.14 | False | | |
|
  • [ParseAndGetFullName - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 7.41 μs | 6.44 μs | 0.87 | 0.07 | False | | |
|
  • [Parse_FullNames - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 2.36 μs | 2.06 μs | 0.87 | 0.10 | False | | |
|
  • [ParseAndGetAssemblyQualifiedName - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 1.27 μs | 1.11 μs | 0.87 | 0.08 | False | | |
|
  • [ParseAndGetAssemblyQualifiedName - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 1.25 μs | 1.10 μs | 0.88 | 0.10 | False | | |
|
  • [ParseAndGetFullName - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 2.91 μs | 2.57 μs | 0.88 | 0.09 | False | | |
|
  • [Parse_AssemblyQualifiedName - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 3.35 μs | 2.95 μs | 0.88 | 0.13 | False | | |
|
  • [Parse_FullNames - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 6.13 μs | 5.42 μs | 0.88 | 0.13 | False | | |
|
  • [ParseAndGetAssemblyQualifiedName - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 3.98 μs | 3.52 μs | 0.88 | 0.10 | False | | |
|
  • [ParseAndGetAssemblyQualifiedName - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 1.30 μs | 1.15 μs | 0.88 | 0.08 | False | | |
|
  • [ParseAndGetFullName - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 2.99 μs | 2.65 μs | 0.89 | 0.06 | False | | |
|
  • [Parse_FullNames - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 2.52 μs | 2.25 μs | 0.89 | 0.14 | False | | |
|
  • [Parse_AssemblyQualifiedName - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 3.34 μs | 2.98 μs | 0.89 | 0.11 | False | | |
|
  • [Parse_FullNames - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 2.41 μs | 2.17 μs | 0.90 | 0.13 | False | | |
|
  • [ParseAndGetAssemblyQualifiedName - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 8.30 μs | 7.56 μs | 0.91 | 0.06 | False | | |
|
  • [ParseAndGetFullName - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 2.79 μs | 2.56 μs | 0.91 | 0.05 | False | | |
|
  • [ParseAndGetAssemblyQualifiedName - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 3.98 μs | 3.64 μs | 0.91 | 0.12 | False | | |

![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![graph]()
![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
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Reflection.Metadata.Perf_TypeName*'
```

### System.Reflection.Metadata.Perf_TypeName.Parse_AssemblyQualifiedName(input: typeof(System.Int32[]))

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Reflection.Metadata.Perf_TypeName.Parse_AssemblyQualifiedName(input: typeof(System.Int32&))

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Reflection.Metadata.Perf_TypeName.Parse_AssemblyQualifiedName(input: typeof(System.Int32[*]))

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Reflection.Metadata.Perf_TypeName.Parse_AssemblyQualifiedName(input: typeof(System.Reflection.Metadata.Nested))

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Reflection.Metadata.Perf_TypeName.Parse_AssemblyQualifiedName(input: typeof(System.Int32[,]))

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Reflection.Metadata.Perf_TypeName.Parse_AssemblyQualifiedName(input: typeof(System.Collections.Generic.Dictionary`2[]) (COMPLEX))

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Reflection.Metadata.Perf_TypeName.ParseAndGetAssemblyQualifiedName(input: typeof(System.Int32[,]))

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Reflection.Metadata.Perf_TypeName.Parse_AssemblyQualifiedName(input: typeof(System.Int32*))

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Reflection.Metadata.Perf_TypeName.ParseAndGetAssemblyQualifiedName(input: typeof(System.Int32[]))

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Reflection.Metadata.Perf_TypeName.ParseAndGetAssemblyQualifiedName(input: typeof(System.Int32*))

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Reflection.Metadata.Perf_TypeName.Parse_AssemblyQualifiedName(input: typeof(int))

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Reflection.Metadata.Perf_TypeName.Parse_AssemblyQualifiedName(input: typeof(System.Collections.Generic.Dictionary<String, Boolean>))

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Reflection.Metadata.Perf_TypeName.ParseAndGetAssemblyQualifiedName(input: typeof(System.Collections.Generic.Dictionary<String, Boolean>))

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Reflection.Metadata.Perf_TypeName.ParseAndGetAssemblyQualifiedName(input: typeof(System.Reflection.Metadata.Nested))

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Reflection.Metadata.Perf_TypeName.ParseAndGetFullName(input: typeof(System.Collections.Generic.Dictionary`2[]) (COMPLEX))

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Reflection.Metadata.Perf_TypeName.Parse_FullNames(input: typeof(System.Collections.Generic.Dictionary<String, Boolean>))

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Reflection.Metadata.Perf_TypeName.ParseAndGetAssemblyQualifiedName(input: typeof(System.Int32&))

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Reflection.Metadata.Perf_TypeName.ParseAndGetAssemblyQualifiedName(input: typeof(int))

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Reflection.Metadata.Perf_TypeName.ParseAndGetFullName(input: typeof(System.Collections.Generic.Dictionary`2[]))

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Reflection.Metadata.Perf_TypeName.Parse_AssemblyQualifiedName(input: typeof(System.Collections.Generic.Dictionary`2[]))

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Reflection.Metadata.Perf_TypeName.Parse_FullNames(input: typeof(System.Collections.Generic.Dictionary`2[]) (COMPLEX))

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Reflection.Metadata.Perf_TypeName.ParseAndGetAssemblyQualifiedName(input: typeof(System.Reflection.Metadata.NestedGeneric<String, Boolean>))

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Reflection.Metadata.Perf_TypeName.ParseAndGetAssemblyQualifiedName(input: typeof(System.Int32[*]))

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Reflection.Metadata.Perf_TypeName.ParseAndGetFullName(input: typeof(System.Reflection.Metadata.NestedGeneric<String, Boolean>))

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Reflection.Metadata.Perf_TypeName.Parse_FullNames(input: typeof(System.Reflection.Metadata.NestedGeneric<String, Boolean>))

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Reflection.Metadata.Perf_TypeName.Parse_AssemblyQualifiedName(input: typeof(System.Reflection.Metadata.NestedGeneric<String, Boolean>))

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Reflection.Metadata.Perf_TypeName.Parse_FullNames(input: typeof(System.Collections.Generic.Dictionary`2[]))

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Reflection.Metadata.Perf_TypeName.ParseAndGetAssemblyQualifiedName(input: typeof(System.Collections.Generic.Dictionary`2[]) (COMPLEX))

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Reflection.Metadata.Perf_TypeName.ParseAndGetFullName(input: typeof(System.Collections.Generic.Dictionary<String, Boolean>))

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Reflection.Metadata.Perf_TypeName.ParseAndGetAssemblyQualifiedName(input: typeof(System.Collections.Generic.Dictionary`2[]))

#### 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 | ubuntu 22.04
Queue | AmpereUbuntu
Baseline | [2dd5330804f9d4f49599d82c90a67892d4dd8af0](https://github.com/dotnet/runtime/commit/2dd5330804f9d4f49599d82c90a67892d4dd8af0)
Compare | [c8f97975ab0d8ff84aebf176829e17f7c7052f03](https://github.com/dotnet/runtime/commit/c8f97975ab0d8ff84aebf176829e17f7c7052f03)
Diff | [Diff](https://github.com/dotnet/runtime/compare/2dd5330804f9d4f49599d82c90a67892d4dd8af0...c8f97975ab0d8ff84aebf176829e17f7c7052f03)
Configs | CompilationMode:tiered, RunKind:micro

### Improvements in Microsoft.Extensions.Logging.FormattingOverhead

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

  • [FourArguments_DefineMessage - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 268.02 ns | 233.00 ns | 0.87 | 0.31 | False | | |
|
  • [TwoArguments - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 170.60 ns | 152.16 ns | 0.89 | 0.17 | 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
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'Microsoft.Extensions.Logging.FormattingOverhead*'
```

### Microsoft.Extensions.Logging.FormattingOverhead.FourArguments_DefineMessage

#### ETL Files

#### Histogram

#### JIT Disasms

### Microsoft.Extensions.Logging.FormattingOverhead.TwoArguments

#### 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 | ubuntu 22.04
Queue | AmpereUbuntu
Baseline | [2dd5330804f9d4f49599d82c90a67892d4dd8af0](https://github.com/dotnet/runtime/commit/2dd5330804f9d4f49599d82c90a67892d4dd8af0)
Compare | [c8f97975ab0d8ff84aebf176829e17f7c7052f03](https://github.com/dotnet/runtime/commit/c8f97975ab0d8ff84aebf176829e17f7c7052f03)
Diff | [Diff](https://github.com/dotnet/runtime/compare/2dd5330804f9d4f49599d82c90a67892d4dd8af0...c8f97975ab0d8ff84aebf176829e17f7c7052f03)
Configs | CompilationMode:tiered, RunKind:micro

### Improvements in System.Text.Json.Tests.Utf8JsonReaderCommentsTests

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

  • [Utf8JsonReaderCommentParsing - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 4.39 μs | 2.21 μs | 0.50 | 0.00 | False | | |
|
  • [Utf8JsonReaderCommentParsing - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 4.38 μs | 2.26 μs | 0.52 | 0.01 | 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
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Text.Json.Tests.Utf8JsonReaderCommentsTests*'
```

### System.Text.Json.Tests.Utf8JsonReaderCommentsTests.Utf8JsonReaderCommentParsing(CommentHandling: Skip, SegmentSize: 0, TestCase: LongMultiLine)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Json.Tests.Utf8JsonReaderCommentsTests.Utf8JsonReaderCommentParsing(CommentHandling: Allow, SegmentSize: 0, TestCase: LongMultiLine)

#### 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.Reflection.Metadata/Perf.TypeName.cs lines 48-50 and 58-60, then review the linked ARM64 Ubuntu report and baseline/compare commits. Determine whether the reported improvements require a runtime change or follow-up; done means the performance result is understood and any necessary action is identified.

Written by the indexing model from the issue text.

Assessment

Tech stack
linux
Domain
operating-systems, 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.