dotnet / dotnet/perf-autofiling-issues

[Perf] Linux/arm64: 238 Improvements on 8/11/2026 9:14:21 PM +00:00

Open
#78,211 9 comments 0 reactions 0 assignees View on GitHub
arch-arm64 branch-refs/heads/main compilationmode-tiered kind-micro 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 | [643b8962835e549e8f6c88fd8b19f6f79685fba0](https://github.com/dotnet/runtime/commit/643b8962835e549e8f6c88fd8b19f6f79685fba0)
Compare | [633ab1a41439ad2405ba2eb241295ba1842fcf5a](https://github.com/dotnet/runtime/commit/633ab1a41439ad2405ba2eb241295ba1842fcf5a)
Diff | [Diff](https://github.com/dotnet/runtime/compare/643b8962835e549e8f6c88fd8b19f6f79685fba0...633ab1a41439ad2405ba2eb241295ba1842fcf5a)
Configs | CompilationMode:tiered, RunKind:micro

### Improvements in System.Tests.Perf_Int32

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

  • [ParseHex - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 16.46 ns | 8.78 ns | 0.53 | 0.14 | False | | |
|
  • [Parse - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 16.79 ns | 9.57 ns | 0.57 | 0.19 | False | | |
|
  • [ParseSpan - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 17.03 ns | 9.80 ns | 0.58 | 0.16 | False | | |
|
  • [TryParse - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 16.95 ns | 10.02 ns | 0.59 | 0.15 | False | | |
|
  • [TryParseSpan - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 16.53 ns | 10.02 ns | 0.61 | 0.15 | False | | |
|
  • [Parse - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 20.08 ns | 13.40 ns | 0.67 | 0.14 | False | | |
|
  • [ParseSpan - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 20.15 ns | 13.61 ns | 0.68 | 0.18 | False | | |
|
  • [ToString - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 32.12 ns | 22.15 ns | 0.69 | 0.15 | False | | |
|
  • [TryParse - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 19.94 ns | 13.85 ns | 0.69 | 0.24 | False | | |
|
  • [TryFormat - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 23.20 ns | 16.59 ns | 0.71 | 0.20 | False | | |
|
  • [ParseSpan - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 26.33 ns | 19.34 ns | 0.73 | 0.16 | False | | |
|
  • [ParseHex - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 29.99 ns | 22.05 ns | 0.74 | 0.18 | False | | |
|
  • [Parse - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 25.99 ns | 19.15 ns | 0.74 | 0.23 | False | | |
|
  • [ParseSpan - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 26.55 ns | 19.81 ns | 0.75 | 0.20 | False | | |
|
  • [TryParseSpan - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 26.14 ns | 19.56 ns | 0.75 | 0.20 | False | | |
|
  • [ToString - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 14.72 ns | 12.07 ns | 0.82 | 0.13 | False | | |
|
  • [ParseHex - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 48.28 ns | 39.83 ns | 0.82 | 0.13 | False | | |

![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.Tests.Perf_Int32*'
```

### System.Tests.Perf_Int32.ParseHex(value: "4")

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_Int32.Parse(value: "4")

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_Int32.ParseSpan(value: "4")

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_Int32.TryParse(value: "4")

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_Int32.TryParseSpan(value: "4")

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_Int32.Parse(value: "12345")

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_Int32.ParseSpan(value: "12345")

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_Int32.ToString(value: -2147483648)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_Int32.TryParse(value: "12345")

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_Int32.TryFormat(value: -2147483648)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_Int32.ParseSpan(value: "2147483647")

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_Int32.ParseHex(value: "3039")

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_Int32.Parse(value: "2147483647")

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_Int32.ParseSpan(value: "-2147483648")

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_Int32.TryParseSpan(value: "2147483647")

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_Int32.ToString(value: 12345)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_Int32.ParseHex(value: "80000000")

#### 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 | [643b8962835e549e8f6c88fd8b19f6f79685fba0](https://github.com/dotnet/runtime/commit/643b8962835e549e8f6c88fd8b19f6f79685fba0)
Compare | [633ab1a41439ad2405ba2eb241295ba1842fcf5a](https://github.com/dotnet/runtime/commit/633ab1a41439ad2405ba2eb241295ba1842fcf5a)
Diff | [Diff](https://github.com/dotnet/runtime/compare/643b8962835e549e8f6c88fd8b19f6f79685fba0...633ab1a41439ad2405ba2eb241295ba1842fcf5a)
Configs | CompilationMode:tiered, RunKind:micro

### Improvements in System.Tests.Perf_String

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

  • [ToLower - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 18.54 ns | 10.64 ns | 0.57 | 0.16 | False | | |
|
  • [ToUpper - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 17.81 ns | 10.52 ns | 0.59 | 0.26 | False | | |
|
  • [ToLower - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 33.62 ns | 24.45 ns | 0.73 | 0.21 | False | | |
|
  • [ToUpper - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 33.21 ns | 24.47 ns | 0.74 | 0.18 | False | | |
|
  • [ToUpper - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 33.27 ns | 24.52 ns | 0.74 | 0.20 | False | | |
|
  • [ToLower - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 33.19 ns | 24.48 ns | 0.74 | 0.22 | False | | |
|
  • [ToLower - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 59.45 ns | 48.07 ns | 0.81 | 0.17 | False | | |
|
  • [Substring_IntInt - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 13.94 ns | 11.30 ns | 0.81 | 0.22 | False | | |
|
  • [Substring_Int - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 15.11 ns | 12.41 ns | 0.82 | 0.15 | False | | |
|
  • [Remove_IntInt - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 19.08 ns | 15.98 ns | 0.84 | 0.11 | False | | |
|
  • [Trim - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 19.53 ns | 16.38 ns | 0.84 | 0.13 | False | | |
|
  • [Remove_IntInt - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 19.94 ns | 17.09 ns | 0.86 | 0.17 | False | | |
|
  • [Split_Csv - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 679.67 ΞΌs | 603.54 ΞΌs | 0.89 | 0.13 | False | | |

![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.Tests.Perf_String*'
```

### System.Tests.Perf_String.ToLower(s: "test")

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_String.ToUpper(s: "TEST")

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_String.ToLower(s: "TeSt")

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_String.ToUpper(s: "TeSt")

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_String.ToUpper(s: "test")

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_String.ToLower(s: "TEST")

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_String.ToLower(s: "This is a much longer piece of text that might benefit more from vectorization.")

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_String.Substring_IntInt(s: "dzsdzsDDZSDZSDZSddsz", i1: 7, i2: 4)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_String.Substring_Int(s: "dzsdzsDDZSDZSDZSddsz", i: 7)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_String.Remove_IntInt(s: "dzsdzsDDZSDZSDZSddsz", i1: 7, i2: 4)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_String.Trim(s: " Te st ")

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_String.Remove_IntInt(s: "dzsdzsDDZSDZSDZSddsz", i1: 10, i2: 1)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_String.Split_Csv(testName: "Long Mixed", lines: ["Year,TRI Facility ID,Facility Name,Street Address,City,County,ST,ZIP,Latitude,Longitude,Federal Facility,Primary SIC,SIC 2,SIC 3,SIC 4,SIC 5,SIC 6,Primary NAICS,NAICS 2,NAICS 3,NAICS 4,NAICS 5,NAICS 6,Doc_Ctrl_Num,Chemical,CAS #/Compound ID,Clean Air Act Chemical,Classification,Metal,Metal Category,Carcinogen,Form Type,Unit of Measure,5.1 Fugitive Air,5.2 Stack Air,5.3 Water,5.4.1 Underground Class I,5.4.2 Underground Class II-V,5.5.1A RCRA C Landfills,5.5.1B Other Landfills,5.5.2 Land Treatment,5.5.3 Surface Impoundment,5.5.3A RCRA C Surface Impoundment,5.5.3B Other Surface Impoundment,5.5.4 Other Disposal,On-site Release Total,6.1 POTW - Transfers for Release,6.1 POTW - Transfers for Treatment,6.1 POTW - Total Transfers,6.2 M10,6.2 M41,6.2 M62,6.2 M71,6.2 M81,6.2 M82,6.2 M72,6.2 M63,6.2 M66,6.2 M67,6.2 M64,6.2 M65,6.2 M73,6.2 M79,6.2 M90,6.2 M94,6.2 M99,Off-Site Release Total,6.2 M20,6.2 M24,6.2 M26,6.2 M28,6.2 M93,Off-Site Recycled Total,6.2 M56,6.2 M92,Off-Site Recovery Total,6.2 M40,6.2 M50,6.2 M54,6.2 M61,6.2 M69,6.2 M95,Off-Site Treated Total,Total Releases,8.1 Releases,8.1a On-site Contained Releases,8.1b On-site Other Releases,8.1c Off-site Contained Releases,8.1d Off-site Other Releases,8.2 Energy Recovery On-site,8.3 Energy Recovery Off-site,8.4 Recycling On-Site,8.5 Recycling Off-Site,8.6 Treatment On-site,8.7 Treatement Off-site,Production Waste (8.1 thru 8.7),8.8 One-time Release,8.9 Production Ratio,Parent Company Name,Parent Company DB Number", "2012,5804WRBFCQ923CU,HANKINSON RENEWABLE ENERGY LLC,9230 COUNTY RD 1,HANKINSON,RICHLAND,ND,58041,46.073186,-96.886775,NO,,,,,,,325193,,,,,,1312210336463,HYDROGEN SULFIDE,007783064,YES,NON-PBT,NO,0,NO,A,Pounds,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,MURPHY OIL CORP,008053712", "2012,5804WRBFCQ923CU,HANKINSON RENEWABLE ENERGY LLC,9230 COUNTY RD 1,HANKINSON,RICHLAND,ND,58041,46.073186,-96.886775,NO,,,,,,,325193,,,,,,1312210336475,METHANOL,000067561,YES,NON-PBT,NO,0,NO,R,Pounds,446.35,3113.31,0,0,0,0,0,0,0,0,0,0,3559.66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3559.66,0,0,3559.66,0,0,0,0,0,0,0,0,3559.66,0,1.09,MURPHY OIL CORP,008053712", "2012,5804WRBFCQ923CU,HANKINSON RENEWABLE ENERGY LLC,9230 COUNTY RD 1,HANKINSON,RICHLAND,ND,58041,46.073186,-96.886775,NO,,,,,,,325193,,,,,,1312210336424,ACROLEIN,000107028,YES,NON-PBT,NO,0,NO,R,Pounds,689.46,4150.01,0,0,0,0,0,0,0,0,0,0,4839.47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4839.47,0,0,4839.47,0,0,0,0,0,0,0,0,4839.47,0,1.09,MURPHY OIL CORP,008053712", "2012,5804WRBFCQ923CU,HANKINSON RENEWABLE ENERGY LLC,9230 COUNTY RD 1,HANKINSON,RICHLAND,ND,58041,46.073186,-96.886775,NO,,,,,,,325193,,,,,,1312210336487,N-HEXANE,000110543,YES,NON-PBT,NO,0,NO,R,Pounds,270.23,5919.44,0,0,0,0,0,0,0,0,0,0,6189.67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6189.67,0,0,6189.67,0,0,0,0,0,0,0,0,6189.67,0,1.15,MURPHY OIL CORP,008053712", ...])

#### 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.Runtime/Perf.Int32.cs, then inspect the linked ARM64 AzureLinux reports for the listed Parse, TryParse, ParseSpan, TryParseSpan, and ToString results. Determine whether the reported improvements need triage; done means the performance behavior has been understood and any follow-up is identified.

Written by the indexing model from the issue text.

Assessment

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.