dotnet / dotnet/perf-autofiling-issues

[Perf] Linux/x64: 124 Regressions on 5/19/2026 5:33:16 PM +00:00

Open
#73,451 10 comments 0 reactions 0 assignees View on GitHub
arch-x64 bdn-update branch-refs/heads/main compilationmode-tiered kind-micro_mono llvm-true mono-aot mono-llvm monoaot-true monointerpreter-false os-linux perf-regression runkind-micro_mono runtime-mono untriaged
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 | [21d1570e075a895f62c292a5e1854947b97c7dbc](https://github.com/dotnet/runtime/commit/21d1570e075a895f62c292a5e1854947b97c7dbc)
Compare | [f397c835cc1c655505d2a22fd0cebb9e96733d0b](https://github.com/dotnet/runtime/commit/f397c835cc1c655505d2a22fd0cebb9e96733d0b)
Diff | [Diff](https://github.com/dotnet/runtime/compare/21d1570e075a895f62c292a5e1854947b97c7dbc...f397c835cc1c655505d2a22fd0cebb9e96733d0b)
Configs | CompilationMode:tiered, LLVM:true, MonoAOT:true, MonoInterpreter:false, RunKind:micro_mono

### Regressions in System.Tests.Perf_String

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

  • [IndexerCheckLengthHoisting - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 22.27 ns | 41.41 ns | 1.86 | 0.02 | False | | |
|
  • [PadLeft - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 531.23 ns | 679.24 ns | 1.28 | 0.45 | False | | |
|
  • [GetChars - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 153.05 ns | 191.24 ns | 1.25 | 0.12 | False | | |
|
  • [Concat_str_str - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 306.88 ns | 374.65 ns | 1.22 | 0.14 | False | | |
|
  • [IndexerCheckPathLength - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 99.03 ns | 118.98 ns | 1.20 | 0.03 | False | | |
|
  • [Concat_str_str - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 43.89 ns | 52.56 ns | 1.20 | 0.08 | False | | |
|
  • [Concat_str_str_str - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 444.31 ns | 531.18 ns | 1.20 | 0.15 | False | | |
|
  • [GetChars - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 26.31 ns | 30.98 ns | 1.18 | 0.06 | False | | |
|
  • [Concat_str_str_str - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 64.73 ns | 73.77 ns | 1.14 | 0.13 | False | | |
|
  • [Replace_Char - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 314.79 ns | 358.55 ns | 1.14 | 0.01 | False | | |
|
  • [CtorCharCount - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 35.72 ns | 40.38 ns | 1.13 | 0.03 | False | | |
|
  • [Concat_str_str_str_str - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 96.29 ns | 107.72 ns | 1.12 | 0.08 | False | | |
|
  • [Substring_Int - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 15.57 ns | 17.34 ns | 1.11 | 0.11 | False | | |
|
  • [Replace_Char - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 27.18 ns | 29.93 ns | 1.10 | 0.02 | False | | |
|
  • [Substring_Int - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 15.28 ns | 16.53 ns | 1.08 | 0.05 | False | | |
|
  • [Replace_Char - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 53.39 ns | 57.70 ns | 1.08 | 0.02 | False | | |

![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

Repro Steps

#### Prerequisites (Files either built locally (with build.(sh/cmd) or downloaded from payload above (if same system setup) (in this order))
- Libraries build extracted to `runtime/artifacts` or build instructions: [Libraries README](https://github.com/dotnet/runtime/blob/main/docs/workflow/building/libraries/README.md) args: `-subset libs+libs.tests -rc release -configuration Release -arch $RunArch -framework net8.0`
- CoreCLR product build extracted to `runtime/artifacts/bin/coreclr/$RunOS.$RunArch.Release`, build instructions: [CoreCLR README](https://github.com/dotnet/runtime/blob/main/docs/workflow/building/coreclr/README.md) args: `-subset clr+libs -rc release -configuration Release -arch $RunArch -framework net8.0`
- AOT MONO build extracted to `runtime/artifacts/bin/mono/$RunOS.$RunArch.Release`, build instructions: [MONO README](https://github.com/dotnet/runtime/blob/main/docs/workflow/building/mono/README.md) args: `-arch $RunArch -os $RunOS -s mono+libs+host+packs -c Release /p:CrossBuild=false /p:MonoLLVMUseCxx11Abi=false`
- Dotnet SDK installed for dotnet commands
- Running commands from the runtime folder

Linux
```cmd
# Set $RunDir to the runtime directory
RunDir=`pwd`

# Set the OS, arch, and OSId
RunOS='linux'
RunOSId='linux'
RunArch='x64'

# Create aot directory
mkdir -p $RunDir/artifacts/bin/aot/sgen
mkdir -p $RunDir/artifacts/bin/aot/pack
cp -r $RunDir/artifacts/obj/mono/$RunOS.$RunArch.Release/mono/* $RunDir/artifacts/bin/aot/sgen
cp -r $RunDir/artifacts/bin/microsoft.netcore.app.runtime.$RunOS-$RunArch/Release/* $RunDir/artifacts/bin/aot/pack

# Create Core Root
$RunDir/src/tests/build.sh release $RunArch generatelayoutonly /p:LibrariesConfiguration=Release

# Clone performance
git clone --branch main --depth 1 --quiet https://github.com/dotnet/performance.git $RunDir/performance

# One line run:
python3 $RunDir/performance/scripts/benchmarks_ci.py --csproj $RunDir/performance/src/benchmarks/micro/MicroBenchmarks.csproj --incremental no --architecture $RunArch -f net8.0 --filter 'System.Tests.Perf_String*' --bdn-artifacts $RunDir/artifacts/BenchmarkDotNet.Artifacts --bdn-arguments="--anyCategories Libraries Runtime --category-exclusion-filter NoAOT NoWASM --runtimes monoaotllvm --aotcompilerpath $RunDir/artifacts/bin/aot/sgen/mini/mono-sgen --customruntimepack $RunDir/artifacts/bin/aot/pack --aotcompilermode llvm --logBuildOutput --generateBinLog"

# Individual Commands:
# Restore
dotnet restore $RunDir/performance/src/benchmarks/micro/MicroBenchmarks.csproj --packages $RunDir/performance/artifacts/packages /p:UseSharedCompilation=false /p:BuildInParallel=false /m:1

# Build
dotnet build $RunDir/performance/src/benchmarks/micro/MicroBenchmarks.csproj --configuration Release --framework net8.0 --no-restore /p:NuGetPackageRoot=$RunDir/performance/artifacts/packages /p:UseSharedCompilation=false /p:BuildInParallel=false /m:1

# Run
dotnet run --project $RunDir/performance/src/benchmarks/micro/MicroBenchmarks.csproj --configuration Release --framework net8.0 --no-restore --no-build -- --filter System.Tests.Perf_String* --anyCategories Libraries Runtime " --category-exclusion-filter NoAOT NoWASM --runtimes monoaotllvm --aotcompilerpath $RunDir/artifacts/bin/aot/sgen/mini/mono-sgen --customruntimepack $RunDir/artifacts/bin/aot/pack --aotcompilermode llvm --logBuildOutput --generateBinLog " --artifacts $RunDir/artifacts/BenchmarkDotNet.Artifacts --packages $RunDir/performance/artifacts/packages --buildTimeout 1200
```

Windows
```cmd
# Set $RunDir to the runtime directory
$RunDir="FullPathHere"

# Set the OS, arch, and OSId
RunOS='windows'
RunOSId='win'
RunArch='x64'

# Create aot directory
mkdir $RunDir\artifacts\bin\aot\sgen
mkdir $RunDir\artifacts\bin\aot\pack
xcopy $RunDir\artifacts\obj\mono\$RunOS.$RunArch.Release\mono $RunDir\artifacts\bin\aot\sgen\ /e /y
xcopy $RunDir\artifacts\bin\microsoft.netcore.app.runtime.$RunOSId-$RunArch\Release $RunDir\artifacts\bin\aot\pack\ /e /y

# Create Core Root
$RunDir\src\tests\build.cmd release $RunArch generatelayoutonly /p:LibrariesConfiguration=Release

# Clone performance
git clone --branch main --depth 1 --quiet https://github.com/dotnet/performance.git $RunDir\performance

# One line run:
python3 $RunDir\performance\scripts\benchmarks_ci.py --csproj $RunDir\performance\src\benchmarks\micro\MicroBenchmarks.csproj --incremental no --architecture $RunArch -f net8.0 --filter 'System.Tests.Perf_String*' --bdn-artifacts $RunDir\artifacts\BenchmarkDotNet.Artifacts --bdn-arguments="--anyCategories Libraries Runtime --category-exclusion-filter NoAOT NoWASM --runtimes monoaotllvm --aotcompilerpath $RunDir\artifacts\bin\aot\sgen\mini\mono-sgen.exe --customruntimepack $RunDir\artifacts\bin\aot\pack --aotcompilermode llvm --logBuildOutput --generateBinLog"

# Individual Commands:
# Restore
dotnet restore $RunDir\performance\src\benchmarks\micro\MicroBenchmarks.csproj --packages $RunDir\performance\artifacts\packages /p:UseSharedCompilation=false /p:BuildInParallel=false /m:1

# Build
dotnet build $RunDir\performance\src\benchmarks\micro\MicroBenchmarks.csproj --configuration Release --framework net8.0 --no-restore /p:NuGetPackageRoot=$RunDir\performance\artifacts\packages /p:UseSharedCompilation=false /p:BuildInParallel=false /m:1

# Run
dotnet run --project $RunDir\performance\src\benchmarks\micro\MicroBenchmarks.csproj --configuration Release --framework net8.0 --no-restore --no-build -- --filter System.Tests.Perf_String* --anyCategories Libraries Runtime " --category-exclusion-filter NoAOT NoWASM --runtimes monoaotllvm --aotcompilerpath $RunDir\artifacts\bin\aot\sgen\mini\mono-sgen.exe --customruntimepack $RunDir\artifacts\bin\aot\pack -aotcompilermode llvm --logBuildOutput --generateBinLog " --artifacts $RunDir\artifacts\BenchmarkDotNet.Artifacts --packages $RunDir\performance\artifacts\packages --buildTimeout 1200
```

### System.Tests.Perf_String.IndexerCheckLengthHoisting

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_String.PadLeft(n: 2142)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_String.GetChars(size: 1000)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_String.Concat_str_str(size: 1000)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_String.IndexerCheckPathLength

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_String.Concat_str_str(size: 100)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_String.Concat_str_str_str(size: 1000)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_String.GetChars(size: 100)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_String.Concat_str_str_str(size: 100)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_String.Replace_Char(text: "yfesgj0sg1ijslnjsb3uofdz3tbzf6ysgblu3at20nfab2wei1kxfbvsbpzwhanjczcqa2psra3aacxb67qnwbnfp2tok6v0a58lzfdql1fehvs91yzkt9xam7ahjbhvpd9edll13ab46i74ktwwgkgbi792e5gkuuzevo5qm8qt83edag7zovoe686gmtw730kms2i5xgji4xcp25287q68fvhwszd3mszht2uh7bchlgkj5qnq1x9m4lg7vwn8cq5l756akua6oyx9k71bmxbysnmhvxvlxde4k9maumfgxd8gxhxx4mwpph2ttyox9zilt3ylv1q9s4bopfuoa8qlrzodg2q67sh85wx4slcd6w7ufnendaxai633ove2ktbaxdt2sz6y6mo42473xd274gz833p6hj3mu77c4m4od9e5s8btxleh0efqnu9zj9rwtbk5758lio35b3q426j5fwwq1qyknfedrsmqyfw1m38mkkotdf7n0vr6p3erhy8dkzntr9fwjrslxjgrbegih0n6bpb5bfuy55bu65ce9kejcfifxwpcs05umrsb8kvd64q2iwugbbi7vd35g5ho0rff9rhombgzzaniyq7bbjbqr88jyw4ccgnoyl31of3a5thv0vg08gnrqzxas800hewtw8tnwgw5pav81ntdpdd62689x3iqpc317y82b3e2trbpdzieoxldaz009tz37gqmh4bdp1bv9lnl5s58udb11z0h7i2sdl5nbyhjyfzxwzezmp4qx0i3eyvsd3fg8sryq9jhlvkonnfcvb4snl4mcbimdzg49tzdhqjmfxfcq3p1st6b9x2xyevo17evpqp4yc4f2rm0f26ivr3t2f5m0boc44vituxaovcqy1jrkcs6im2kdu3jvcexx2k76egve63aon5a6nbxss4rcke90npmqp35qluf571ms160y2nhaqef835wah41qru8tauu362v0r8konl8", oldChar: 'b', newChar: '+')

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_String.CtorCharCount(size: 100)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_String.Concat_str_str_str_str(size: 100)

#### ETL Files

#### Histogram

#### JIT Disasms

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

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_String.Replace_Char(text: "Hello", oldChar: 'l', newChar: '!')

#### ETL Files

#### Histogram

#### JIT Disasms

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

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Tests.Perf_String.Replace_Char(text: "yfesgj0sg1ijslnjsb3uofdz3tbzf6ysgblu3at20nfab2wei1kxfbvsbpzwhanjczcqa2psra3aacxb67qnwbnfp2tok6v0a58l", oldChar: 'b', newChar: '+')

#### 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 | [21d1570e075a895f62c292a5e1854947b97c7dbc](https://github.com/dotnet/runtime/commit/21d1570e075a895f62c292a5e1854947b97c7dbc)
Compare | [f397c835cc1c655505d2a22fd0cebb9e96733d0b](https://github.com/dotnet/runtime/commit/f397c835cc1c655505d2a22fd0cebb9e96733d0b)
Diff | [Diff](https://github.com/dotnet/runtime/compare/21d1570e075a895f62c292a5e1854947b97c7dbc...f397c835cc1c655505d2a22fd0cebb9e96733d0b)
Configs | CompilationMode:tiered, LLVM:true, MonoAOT:true, MonoInterpreter:false, RunKind:micro_mono

### Regressions in System.Text.Tests.Perf_StringBuilder

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

  • [ToString_SingleSegment - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 26.70 ns | 30.66 ns | 1.15 | 0.08 | False | | |
|
  • [Append_Memory - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 475.55 ns | 540.10 ns | 1.14 | 0.07 | False | | |
|
  • [Append_NonEmptySpan - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 467.59 ns | 522.04 ns | 1.12 | 0.05 | False | | |
|
  • [ctor_capacity - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 43.36 ns | 47.99 ns | 1.11 | 0.03 | False | | |
|
  • [Append_Strings - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 238.53 ns | 260.86 ns | 1.09 | 0.01 | False | | |
|
  • [ctor_string - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 49.13 ns | 53.33 ns | 1.09 | 0.01 | False | | |
|
  • [Insert_Strings - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 434.87 ns | 469.37 ns | 1.08 | 0.03 | False | | |
|
  • [ToString_MultipleSegments - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [ADX - Test Multi Config Graph]()
| 34.98 ns | 37.16 ns | 1.06 | 0.07 | 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

Repro Steps

#### Prerequisites (Files either built locally (with build.(sh/cmd) or downloaded from payload above (if same system setup) (in this order))
- Libraries build extracted to `runtime/artifacts` or build instructions: [Libraries README](https://github.com/dotnet/runtime/blob/main/docs/workflow/building/libraries/README.md) args: `-subset libs+libs.tests -rc release -configuration Release -arch $RunArch -framework net8.0`
- CoreCLR product build extracted to `runtime/artifacts/bin/coreclr/$RunOS.$RunArch.Release`, build instructions: [CoreCLR README](https://github.com/dotnet/runtime/blob/main/docs/workflow/building/coreclr/README.md) args: `-subset clr+libs -rc release -configuration Release -arch $RunArch -framework net8.0`
- AOT MONO build extracted to `runtime/artifacts/bin/mono/$RunOS.$RunArch.Release`, build instructions: [MONO README](https://github.com/dotnet/runtime/blob/main/docs/workflow/building/mono/README.md) args: `-arch $RunArch -os $RunOS -s mono+libs+host+packs -c Release /p:CrossBuild=false /p:MonoLLVMUseCxx11Abi=false`
- Dotnet SDK installed for dotnet commands
- Running commands from the runtime folder

Linux
```cmd
# Set $RunDir to the runtime directory
RunDir=`pwd`

# Set the OS, arch, and OSId
RunOS='linux'
RunOSId='linux'
RunArch='x64'

# Create aot directory
mkdir -p $RunDir/artifacts/bin/aot/sgen
mkdir -p $RunDir/artifacts/bin/aot/pack
cp -r $RunDir/artifacts/obj/mono/$RunOS.$RunArch.Release/mono/* $RunDir/artifacts/bin/aot/sgen
cp -r $RunDir/artifacts/bin/microsoft.netcore.app.runtime.$RunOS-$RunArch/Release/* $RunDir/artifacts/bin/aot/pack

# Create Core Root
$RunDir/src/tests/build.sh release $RunArch generatelayoutonly /p:LibrariesConfiguration=Release

# Clone performance
git clone --branch main --depth 1 --quiet https://github.com/dotnet/performance.git $RunDir/performance

# One line run:
python3 $RunDir/performance/scripts/benchmarks_ci.py --csproj $RunDir/performance/src/benchmarks/micro/MicroBenchmarks.csproj --incremental no --architecture $RunArch -f net8.0 --filter 'System.Text.Tests.Perf_StringBuilder*' --bdn-artifacts $RunDir/artifacts/BenchmarkDotNet.Artifacts --bdn-arguments="--anyCategories Libraries Runtime --category-exclusion-filter NoAOT NoWASM --runtimes monoaotllvm --aotcompilerpath $RunDir/artifacts/bin/aot/sgen/mini/mono-sgen --customruntimepack $RunDir/artifacts/bin/aot/pack --aotcompilermode llvm --logBuildOutput --generateBinLog"

# Individual Commands:
# Restore
dotnet restore $RunDir/performance/src/benchmarks/micro/MicroBenchmarks.csproj --packages $RunDir/performance/artifacts/packages /p:UseSharedCompilation=false /p:BuildInParallel=false /m:1

# Build
dotnet build $RunDir/performance/src/benchmarks/micro/MicroBenchmarks.csproj --configuration Release --framework net8.0 --no-restore /p:NuGetPackageRoot=$RunDir/performance/artifacts/packages /p:UseSharedCompilation=false /p:BuildInParallel=false /m:1

# Run
dotnet run --project $RunDir/performance/src/benchmarks/micro/MicroBenchmarks.csproj --configuration Release --framework net8.0 --no-restore --no-build -- --filter System.Text.Tests.Perf_StringBuilder* --anyCategories Libraries Runtime " --category-exclusion-filter NoAOT NoWASM --runtimes monoaotllvm --aotcompilerpath $RunDir/artifacts/bin/aot/sgen/mini/mono-sgen --customruntimepack $RunDir/artifacts/bin/aot/pack --aotcompilermode llvm --logBuildOutput --generateBinLog " --artifacts $RunDir/artifacts/BenchmarkDotNet.Artifacts --packages $RunDir/performance/artifacts/packages --buildTimeout 1200
```

Windows
```cmd
# Set $RunDir to the runtime directory
$RunDir="FullPathHere"

# Set the OS, arch, and OSId
RunOS='windows'
RunOSId='win'
RunArch='x64'

# Create aot directory
mkdir $RunDir\artifacts\bin\aot\sgen
mkdir $RunDir\artifacts\bin\aot\pack
xcopy $RunDir\artifacts\obj\mono\$RunOS.$RunArch.Release\mono $RunDir\artifacts\bin\aot\sgen\ /e /y
xcopy $RunDir\artifacts\bin\microsoft.netcore.app.runtime.$RunOSId-$RunArch\Release $RunDir\artifacts\bin\aot\pack\ /e /y

# Create Core Root
$RunDir\src\tests\build.cmd release $RunArch generatelayoutonly /p:LibrariesConfiguration=Release

# Clone performance
git clone --branch main --depth 1 --quiet https://github.com/dotnet/performance.git $RunDir\performance

# One line run:
python3 $RunDir\performance\scripts\benchmarks_ci.py --csproj $RunDir\performance\src\benchmarks\micro\MicroBenchmarks.csproj --incremental no --architecture $RunArch -f net8.0 --filter 'System.Text.Tests.Perf_StringBuilder*' --bdn-artifacts $RunDir\artifacts\BenchmarkDotNet.Artifacts --bdn-arguments="--anyCategories Libraries Runtime --category-exclusion-filter NoAOT NoWASM --runtimes monoaotllvm --aotcompilerpath $RunDir\artifacts\bin\aot\sgen\mini\mono-sgen.exe --customruntimepack $RunDir\artifacts\bin\aot\pack --aotcompilermode llvm --logBuildOutput --generateBinLog"

# Individual Commands:
# Restore
dotnet restore $RunDir\performance\src\benchmarks\micro\MicroBenchmarks.csproj --packages $RunDir\performance\artifacts\packages /p:UseSharedCompilation=false /p:BuildInParallel=false /m:1

# Build
dotnet build $RunDir\performance\src\benchmarks\micro\MicroBenchmarks.csproj --configuration Release --framework net8.0 --no-restore /p:NuGetPackageRoot=$RunDir\performance\artifacts\packages /p:UseSharedCompilation=false /p:BuildInParallel=false /m:1

# Run
dotnet run --project $RunDir\performance\src\benchmarks\micro\MicroBenchmarks.csproj --configuration Release --framework net8.0 --no-restore --no-build -- --filter System.Text.Tests.Perf_StringBuilder* --anyCategories Libraries Runtime " --category-exclusion-filter NoAOT NoWASM --runtimes monoaotllvm --aotcompilerpath $RunDir\artifacts\bin\aot\sgen\mini\mono-sgen.exe --customruntimepack $RunDir\artifacts\bin\aot\pack -aotcompilermode llvm --logBuildOutput --generateBinLog " --artifacts $RunDir\artifacts\BenchmarkDotNet.Artifacts --packages $RunDir\performance\artifacts\packages --buildTimeout 1200
```

### System.Text.Tests.Perf_StringBuilder.ToString_SingleSegment(length: 100)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Tests.Perf_StringBuilder.Append_Memory

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Tests.Perf_StringBuilder.Append_NonEmptySpan

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Tests.Perf_StringBuilder.ctor_capacity(length: 100)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Tests.Perf_StringBuilder.Append_Strings(repeat: 1)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Tests.Perf_StringBuilder.ctor_string(length: 100)

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Tests.Perf_StringBuilder.Insert_Strings

#### ETL Files

#### Histogram

#### JIT Disasms

### System.Text.Tests.Perf_StringBuilder.ToString_MultipleSegments(length: 100)

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

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.