dotnet / dotnet/perf-autofiling-issues

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

Open
#75,889 7 comments 0 reactions 0 assignees View on GitHub
aot-true arch-wasm arch-x64 branch-refs/heads/main compilationmode-wasm kind-micro Look Again os-linux perf-improvement runkind-micro untriaged wasm-aot
Dominant language
No language data
Stars
10
Forks
8
PR merge metrics
PR metrics pending

Description

### Run Information

Name | Value
-- | --
Architecture | x64
OS | ubuntu 22.04
Queue | ViperUbuntu
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 | AOT:true, CompilationMode:wasm, RunKind:micro

### Improvements in System.IO.Tests.Perf_File

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

  • [ReadAllBytes - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 10.29 μs | 4.69 μs | 0.46 | 0.02 | False | | |
|
  • [ReadAllBytes - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 10.45 μs | 4.98 μs | 0.48 | 0.01 | False | | |
|
  • [ReadAllBytes - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 11.44 μs | 6.08 μs | 0.53 | 0.03 | False | | |
|
  • [AppendAllText - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 5.61 μs | 3.63 μs | 0.65 | 0.03 | False | | |
|
  • [CopyToOverwrite - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 17.72 μs | 11.50 μs | 0.65 | 0.01 | False | | |
|
  • [CopyToOverwrite - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 21.10 μs | 15.05 μs | 0.71 | 0.01 | False | | |
|
  • [CopyTo - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 25.31 μs | 19.26 μs | 0.76 | 0.01 | False | | |
|
  • [AppendAllLines - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 8.50 μs | 6.64 μs | 0.78 | 0.02 | False | | |
|
  • [CopyTo - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 29.00 μs | 23.14 μs | 0.80 | 0.01 | False | | |
|
  • [Delete - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 5.59 μs | 4.48 μs | 0.80 | 0.28 | False | | |
|
  • [Exists - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 2.00 μs | 1.65 μs | 0.82 | 0.01 | False | | |
|
  • [ReadAllLines - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 16.95 μs | 14.84 μs | 0.88 | 0.01 | False | | |
|
  • [WriteAllText - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 4.43 μs | 4.01 μs | 0.90 | 0.03 | False | | |
|
  • [ReadAllBytes - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 90.30 μs | 82.65 μs | 0.92 | 0.07 | False | | |
|
  • [WriteAllBytes - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 4.09 μs | 3.84 μs | 0.94 | 0.02 | False | | |

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

### System.IO.Tests.Perf_File.ReadAllBytes(size: 512)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.IO.Tests.Perf_File.ReadAllBytes(size: 4096)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.IO.Tests.Perf_File.ReadAllBytes(size: 16384)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.IO.Tests.Perf_File.AppendAllText(size: 100)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.IO.Tests.Perf_File.CopyToOverwrite(size: 512)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.IO.Tests.Perf_File.CopyToOverwrite(size: 4096)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.IO.Tests.Perf_File.CopyTo(size: 512)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.IO.Tests.Perf_File.AppendAllLines

#### ETL Files

#### Histogram

#### JIT Disasms

### System.IO.Tests.Perf_File.CopyTo(size: 4096)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.IO.Tests.Perf_File.Delete

#### ETL Files

#### Histogram

#### JIT Disasms

### System.IO.Tests.Perf_File.Exists

#### ETL Files

#### Histogram

#### JIT Disasms

### System.IO.Tests.Perf_File.ReadAllLines

#### ETL Files

#### Histogram

#### JIT Disasms

### System.IO.Tests.Perf_File.WriteAllText(size: 100)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.IO.Tests.Perf_File.ReadAllBytes(size: 1048576)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.IO.Tests.Perf_File.WriteAllBytes(size: 512)

#### 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 | ubuntu 22.04
Queue | ViperUbuntu
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 | AOT:true, CompilationMode:wasm, RunKind:micro

### Improvements in System.IO.Tests.Perf_FileStream

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

  • [SeekBackward - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 1704.56 μs | 402.36 μs | 0.24 | 0.01 | False | | |
|
  • [SeekBackward - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 1670.91 μs | 398.15 μs | 0.24 | 0.01 | False | | |
|
  • [GetLength - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 1623.43 ns | 389.24 ns | 0.24 | 0.02 | False | | |
|
  • [LockUnlock - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 7.06 μs | 3.72 μs | 0.53 | 0.03 | False | | |
|
  • [LockUnlock - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 7.00 μs | 3.75 μs | 0.54 | 0.02 | False | | |
|
  • [OpenClose - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 4.89 μs | 3.01 μs | 0.61 | 0.01 | False | | |
|
  • [OpenClose - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 4.88 μs | 3.04 μs | 0.62 | 0.02 | False | | |
|
  • [Read - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 5.59 μs | 3.58 μs | 0.64 | 0.00 | False | | |
|
  • [Read - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 5.61 μs | 3.73 μs | 0.66 | 0.02 | False | | |
|
  • [CopyToFile - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 12.68 μs | 9.10 μs | 0.72 | 0.01 | False | | |
|
  • [ReadByte - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 11.63 μs | 9.71 μs | 0.83 | 0.07 | False | | |
|
  • [ReadByte - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 11.66 μs | 9.74 μs | 0.84 | 0.04 | False | | |
|
  • [Write - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 5.19 μs | 4.73 μs | 0.91 | 0.02 | False | | |
|
  • [Write - Duration of single invocation]()
  • 📝 - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 5.19 μs | 4.76 μs | 0.92 | 0.01 | False | | |

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

### System.IO.Tests.Perf_FileStream.SeekBackward(fileSize: 1024, options: None)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.IO.Tests.Perf_FileStream.SeekBackward(fileSize: 1024, options: Asynchronous)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.IO.Tests.Perf_FileStream.GetLength(options: Read)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.IO.Tests.Perf_FileStream.LockUnlock(fileSize: 1024, options: Asynchronous)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.IO.Tests.Perf_FileStream.LockUnlock(fileSize: 1024, options: None)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.IO.Tests.Perf_FileStream.OpenClose(fileSize: 1024, options: Asynchronous)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.IO.Tests.Perf_FileStream.OpenClose(fileSize: 1024, options: None)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.IO.Tests.Perf_FileStream.Read(fileSize: 1024, userBufferSize: 1024, options: None)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.IO.Tests.Perf_FileStream.Read(fileSize: 1024, userBufferSize: 1024, options: Asynchronous)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.IO.Tests.Perf_FileStream.CopyToFile(fileSize: 1024, options: None)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.IO.Tests.Perf_FileStream.ReadByte(fileSize: 1024, options: Asynchronous)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.IO.Tests.Perf_FileStream.ReadByte(fileSize: 1024, options: None)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.IO.Tests.Perf_FileStream.Write(fileSize: 1024, userBufferSize: 1024, options: None)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.IO.Tests.Perf_FileStream.Write(fileSize: 1024, userBufferSize: 1024, options: Asynchronous)

#### 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.IO.FileSystem/Perf.File.cs, especially the ReadAllBytes, AppendAllText, CopyTo, and CopyToOverwrite entries referenced in the report. Compare the baseline and test runs linked in the issue, but note that the issue does not specify a requested code change or acceptance criterion; triage must first establish whether any follow-up is needed.

Written by the indexing model from the issue text.

Assessment

Tech stack
ubuntu, wasm
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.