mirror of
https://github.com/adamhathcock/sharpcompress.git
synced 2026-02-15 21:22:53 +00:00
Add GitHub Actions workflow, baseline results, and documentation for performance benchmarks
Co-authored-by: adamhathcock <527620+adamhathcock@users.noreply.github.com>
This commit is contained in:
66
.github/workflows/performance-benchmarks.yml
vendored
Normal file
66
.github/workflows/performance-benchmarks.yml
vendored
Normal file
@@ -0,0 +1,66 @@
|
||||
name: Performance Benchmarks
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- 'master'
|
||||
- 'release'
|
||||
pull_request:
|
||||
branches:
|
||||
- 'master'
|
||||
- 'release'
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
benchmark:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- uses: actions/setup-dotnet@v5
|
||||
with:
|
||||
dotnet-version: 10.0.x
|
||||
|
||||
- name: Build Performance Project
|
||||
run: dotnet build tests/SharpCompress.Performance/SharpCompress.Performance.csproj --configuration Release
|
||||
|
||||
- name: Run Benchmarks
|
||||
run: dotnet run --project tests/SharpCompress.Performance/SharpCompress.Performance.csproj --configuration Release --no-build -- --filter "*" --exporters json markdown --artifacts benchmark-results
|
||||
continue-on-error: true
|
||||
|
||||
- name: Display Benchmark Results
|
||||
if: always()
|
||||
run: |
|
||||
echo "## Benchmark Results" >> $GITHUB_STEP_SUMMARY
|
||||
echo "" >> $GITHUB_STEP_SUMMARY
|
||||
if [ -d "benchmark-results/results" ]; then
|
||||
for file in benchmark-results/results/*-report-github.md; do
|
||||
if [ -f "$file" ]; then
|
||||
cat "$file" >> $GITHUB_STEP_SUMMARY
|
||||
echo "" >> $GITHUB_STEP_SUMMARY
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
- name: Compare with Baseline
|
||||
if: always()
|
||||
run: |
|
||||
echo "## Comparison with Baseline" >> $GITHUB_STEP_SUMMARY
|
||||
echo "" >> $GITHUB_STEP_SUMMARY
|
||||
echo "Baseline results are stored in tests/SharpCompress.Performance/baseline-results.md" >> $GITHUB_STEP_SUMMARY
|
||||
echo "" >> $GITHUB_STEP_SUMMARY
|
||||
echo "### Baseline Results" >> $GITHUB_STEP_SUMMARY
|
||||
cat tests/SharpCompress.Performance/baseline-results.md >> $GITHUB_STEP_SUMMARY || echo "Baseline file not found" >> $GITHUB_STEP_SUMMARY
|
||||
|
||||
- name: Upload Benchmark Results
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: benchmark-results
|
||||
path: benchmark-results/
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -17,6 +17,7 @@ tests/TestArchives/*/Scratch2
|
||||
tools
|
||||
.idea/
|
||||
artifacts/
|
||||
BenchmarkDotNet.Artifacts/
|
||||
|
||||
.DS_Store
|
||||
*.snupkg
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,17 +0,0 @@
|
||||
```
|
||||
|
||||
BenchmarkDotNet v0.14.0, Ubuntu 24.04.3 LTS (Noble Numbat)
|
||||
Intel Xeon Platinum 8370C CPU 2.80GHz, 1 CPU, 4 logical and 2 physical cores
|
||||
.NET SDK 10.0.102
|
||||
[Host] : .NET 10.0.2 (10.0.225.61305), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
|
||||
Dry : .NET 10.0.2 (10.0.225.61305), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
|
||||
|
||||
UnrollFactor=1 WarmupCount=1
|
||||
|
||||
```
|
||||
| Method | Job | Toolchain | InvocationCount | IterationCount | LaunchCount | RunStrategy | Mean | Error | StdDev | Allocated |
|
||||
|------------------------- |----------- |----------------------- |---------------- |--------------- |------------ |------------ |-----------:|-----------:|----------:|----------:|
|
||||
| 'GZip: Compress 100KB' | Job-QHCVAS | InProcessEmitToolchain | 1 | 3 | Default | Default | 6,080.9 μs | 1,949.7 μs | 106.87 μs | 523.98 KB |
|
||||
| 'GZip: Decompress 100KB' | Job-QHCVAS | InProcessEmitToolchain | 1 | 3 | Default | Default | 428.4 μs | 364.3 μs | 19.97 μs | 37.74 KB |
|
||||
| 'GZip: Compress 100KB' | Dry | Default | Default | 1 | 1 | ColdStart | 6,951.5 μs | NA | 0.00 μs | 521.07 KB |
|
||||
| 'GZip: Decompress 100KB' | Dry | Default | Default | 1 | 1 | ColdStart | 6,179.5 μs | NA | 0.00 μs | 34.51 KB |
|
||||
@@ -1,5 +0,0 @@
|
||||
Method,Job,AnalyzeLaunchVariance,EvaluateOverhead,MaxAbsoluteError,MaxRelativeError,MinInvokeCount,MinIterationTime,OutlierMode,Affinity,EnvironmentVariables,Jit,LargeAddressAware,Platform,PowerPlanMode,Runtime,AllowVeryLargeObjects,Concurrent,CpuGroups,Force,HeapAffinitizeMask,HeapCount,NoAffinitize,RetainVm,Server,Arguments,BuildConfiguration,Clock,EngineFactory,NuGetReferences,Toolchain,IsMutator,InvocationCount,IterationCount,IterationTime,LaunchCount,MaxIterationCount,MaxWarmupIterationCount,MemoryRandomization,MinIterationCount,MinWarmupIterationCount,RunStrategy,UnrollFactor,WarmupCount,Mean,Error,StdDev,Allocated
|
||||
'GZip: Compress 100KB',Job-QHCVAS,False,Default,Default,Default,Default,Default,Default,1111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,InProcessEmitToolchain,Default,1,3,Default,Default,Default,Default,Default,Default,Default,Default,1,1,"6,080.9 μs","1,949.7 μs",106.87 μs,523.98 KB
|
||||
'GZip: Decompress 100KB',Job-QHCVAS,False,Default,Default,Default,Default,Default,Default,1111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,InProcessEmitToolchain,Default,1,3,Default,Default,Default,Default,Default,Default,Default,Default,1,1,428.4 μs,364.3 μs,19.97 μs,37.74 KB
|
||||
'GZip: Compress 100KB',Dry,False,Default,Default,Default,Default,Default,Default,1111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,1,Default,1,Default,Default,Default,Default,Default,ColdStart,1,1,"6,951.5 μs",NA,0.00 μs,521.07 KB
|
||||
'GZip: Decompress 100KB',Dry,False,Default,Default,Default,Default,Default,Default,1111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,1,Default,1,Default,Default,Default,Default,Default,ColdStart,1,1,"6,179.5 μs",NA,0.00 μs,34.51 KB
|
||||
|
@@ -1,34 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang='en'>
|
||||
<head>
|
||||
<meta charset='utf-8' />
|
||||
<title>SharpCompress.Performance.Benchmarks.GZipBenchmarks-20260205-133044</title>
|
||||
|
||||
<style type="text/css">
|
||||
table { border-collapse: collapse; display: block; width: 100%; overflow: auto; }
|
||||
td, th { padding: 6px 13px; border: 1px solid #ddd; text-align: right; }
|
||||
tr { background-color: #fff; border-top: 1px solid #ccc; }
|
||||
tr:nth-child(even) { background: #f8f8f8; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre><code>
|
||||
BenchmarkDotNet v0.14.0, Ubuntu 24.04.3 LTS (Noble Numbat)
|
||||
Intel Xeon Platinum 8370C CPU 2.80GHz, 1 CPU, 4 logical and 2 physical cores
|
||||
.NET SDK 10.0.102
|
||||
[Host] : .NET 10.0.2 (10.0.225.61305), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
|
||||
Dry : .NET 10.0.2 (10.0.225.61305), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
|
||||
</code></pre>
|
||||
<pre><code>UnrollFactor=1 WarmupCount=1
|
||||
</code></pre>
|
||||
|
||||
<table>
|
||||
<thead><tr><th>Method </th><th>Job </th><th>Toolchain </th><th>InvocationCount</th><th>IterationCount</th><th>LaunchCount</th><th>RunStrategy</th><th>Mean</th><th>Error</th><th>StdDev</th><th>Allocated</th>
|
||||
</tr>
|
||||
</thead><tbody><tr><td>'GZip: Compress 100KB'</td><td>Job-QHCVAS</td><td>InProcessEmitToolchain</td><td>1</td><td>3</td><td>Default</td><td>Default</td><td>6,080.9 μs</td><td>1,949.7 μs</td><td>106.87 μs</td><td>523.98 KB</td>
|
||||
</tr><tr><td>'GZip: Decompress 100KB'</td><td>Job-QHCVAS</td><td>InProcessEmitToolchain</td><td>1</td><td>3</td><td>Default</td><td>Default</td><td>428.4 μs</td><td>364.3 μs</td><td>19.97 μs</td><td>37.74 KB</td>
|
||||
</tr><tr><td>'GZip: Compress 100KB'</td><td>Dry</td><td>Default</td><td>Default</td><td>1</td><td>1</td><td>ColdStart</td><td>6,951.5 μs</td><td>NA</td><td>0.00 μs</td><td>521.07 KB</td>
|
||||
</tr><tr><td>'GZip: Decompress 100KB'</td><td>Dry</td><td>Default</td><td>Default</td><td>1</td><td>1</td><td>ColdStart</td><td>6,179.5 μs</td><td>NA</td><td>0.00 μs</td><td>34.51 KB</td>
|
||||
</tr></tbody></table>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,17 +0,0 @@
|
||||
```
|
||||
|
||||
BenchmarkDotNet v0.14.0, Ubuntu 24.04.3 LTS (Noble Numbat)
|
||||
Intel Xeon Platinum 8370C CPU 2.80GHz, 1 CPU, 4 logical and 2 physical cores
|
||||
.NET SDK 10.0.102
|
||||
[Host] : .NET 10.0.2 (10.0.225.61305), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
|
||||
Dry : .NET 10.0.2 (10.0.225.61305), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
|
||||
|
||||
UnrollFactor=1 WarmupCount=1
|
||||
|
||||
```
|
||||
| Method | Job | Toolchain | InvocationCount | IterationCount | LaunchCount | RunStrategy | Mean | Error | StdDev | Allocated |
|
||||
|----------------------------------------- |----------- |----------------------- |---------------- |--------------- |------------ |------------ |----------:|---------:|----------:|----------:|
|
||||
| 'Rar: Extract all entries (Archive API)' | Job-QHCVAS | InProcessEmitToolchain | 1 | 3 | Default | Default | 1.986 ms | 1.050 ms | 0.0576 ms | 95.77 KB |
|
||||
| 'Rar: Extract all entries (Reader API)' | Job-QHCVAS | InProcessEmitToolchain | 1 | 3 | Default | Default | 2.325 ms | 1.576 ms | 0.0864 ms | 154.18 KB |
|
||||
| 'Rar: Extract all entries (Archive API)' | Dry | Default | Default | 1 | 1 | ColdStart | 44.016 ms | NA | 0.0000 ms | 91.88 KB |
|
||||
| 'Rar: Extract all entries (Reader API)' | Dry | Default | Default | 1 | 1 | ColdStart | 48.894 ms | NA | 0.0000 ms | 150.29 KB |
|
||||
@@ -1,5 +0,0 @@
|
||||
Method,Job,AnalyzeLaunchVariance,EvaluateOverhead,MaxAbsoluteError,MaxRelativeError,MinInvokeCount,MinIterationTime,OutlierMode,Affinity,EnvironmentVariables,Jit,LargeAddressAware,Platform,PowerPlanMode,Runtime,AllowVeryLargeObjects,Concurrent,CpuGroups,Force,HeapAffinitizeMask,HeapCount,NoAffinitize,RetainVm,Server,Arguments,BuildConfiguration,Clock,EngineFactory,NuGetReferences,Toolchain,IsMutator,InvocationCount,IterationCount,IterationTime,LaunchCount,MaxIterationCount,MaxWarmupIterationCount,MemoryRandomization,MinIterationCount,MinWarmupIterationCount,RunStrategy,UnrollFactor,WarmupCount,Mean,Error,StdDev,Allocated
|
||||
'Rar: Extract all entries (Archive API)',Job-QHCVAS,False,Default,Default,Default,Default,Default,Default,1111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,InProcessEmitToolchain,Default,1,3,Default,Default,Default,Default,Default,Default,Default,Default,1,1,1.986 ms,1.050 ms,0.0576 ms,95.77 KB
|
||||
'Rar: Extract all entries (Reader API)',Job-QHCVAS,False,Default,Default,Default,Default,Default,Default,1111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,InProcessEmitToolchain,Default,1,3,Default,Default,Default,Default,Default,Default,Default,Default,1,1,2.325 ms,1.576 ms,0.0864 ms,154.18 KB
|
||||
'Rar: Extract all entries (Archive API)',Dry,False,Default,Default,Default,Default,Default,Default,1111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,1,Default,1,Default,Default,Default,Default,Default,ColdStart,1,1,44.016 ms,NA,0.0000 ms,91.88 KB
|
||||
'Rar: Extract all entries (Reader API)',Dry,False,Default,Default,Default,Default,Default,Default,1111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,1,Default,1,Default,Default,Default,Default,Default,ColdStart,1,1,48.894 ms,NA,0.0000 ms,150.29 KB
|
||||
|
@@ -1,34 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang='en'>
|
||||
<head>
|
||||
<meta charset='utf-8' />
|
||||
<title>SharpCompress.Performance.Benchmarks.RarBenchmarks-20260205-133044</title>
|
||||
|
||||
<style type="text/css">
|
||||
table { border-collapse: collapse; display: block; width: 100%; overflow: auto; }
|
||||
td, th { padding: 6px 13px; border: 1px solid #ddd; text-align: right; }
|
||||
tr { background-color: #fff; border-top: 1px solid #ccc; }
|
||||
tr:nth-child(even) { background: #f8f8f8; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre><code>
|
||||
BenchmarkDotNet v0.14.0, Ubuntu 24.04.3 LTS (Noble Numbat)
|
||||
Intel Xeon Platinum 8370C CPU 2.80GHz, 1 CPU, 4 logical and 2 physical cores
|
||||
.NET SDK 10.0.102
|
||||
[Host] : .NET 10.0.2 (10.0.225.61305), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
|
||||
Dry : .NET 10.0.2 (10.0.225.61305), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
|
||||
</code></pre>
|
||||
<pre><code>UnrollFactor=1 WarmupCount=1
|
||||
</code></pre>
|
||||
|
||||
<table>
|
||||
<thead><tr><th>Method </th><th>Job </th><th>Toolchain </th><th>InvocationCount</th><th>IterationCount</th><th>LaunchCount</th><th>RunStrategy</th><th>Mean</th><th>Error</th><th>StdDev</th><th>Allocated</th>
|
||||
</tr>
|
||||
</thead><tbody><tr><td>'Rar: Extract all entries (Archive API)'</td><td>Job-QHCVAS</td><td>InProcessEmitToolchain</td><td>1</td><td>3</td><td>Default</td><td>Default</td><td>1.986 ms</td><td>1.050 ms</td><td>0.0576 ms</td><td>95.77 KB</td>
|
||||
</tr><tr><td>'Rar: Extract all entries (Reader API)'</td><td>Job-QHCVAS</td><td>InProcessEmitToolchain</td><td>1</td><td>3</td><td>Default</td><td>Default</td><td>2.325 ms</td><td>1.576 ms</td><td>0.0864 ms</td><td>154.18 KB</td>
|
||||
</tr><tr><td>'Rar: Extract all entries (Archive API)'</td><td>Dry</td><td>Default</td><td>Default</td><td>1</td><td>1</td><td>ColdStart</td><td>44.016 ms</td><td>NA</td><td>0.0000 ms</td><td>91.88 KB</td>
|
||||
</tr><tr><td>'Rar: Extract all entries (Reader API)'</td><td>Dry</td><td>Default</td><td>Default</td><td>1</td><td>1</td><td>ColdStart</td><td>48.894 ms</td><td>NA</td><td>0.0000 ms</td><td>150.29 KB</td>
|
||||
</tr></tbody></table>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,17 +0,0 @@
|
||||
```
|
||||
|
||||
BenchmarkDotNet v0.14.0, Ubuntu 24.04.3 LTS (Noble Numbat)
|
||||
Intel Xeon Platinum 8370C CPU 2.80GHz, 1 CPU, 4 logical and 2 physical cores
|
||||
.NET SDK 10.0.102
|
||||
[Host] : .NET 10.0.2 (10.0.225.61305), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
|
||||
Dry : .NET 10.0.2 (10.0.225.61305), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
|
||||
|
||||
UnrollFactor=1 WarmupCount=1
|
||||
|
||||
```
|
||||
| Method | Job | Toolchain | InvocationCount | IterationCount | LaunchCount | RunStrategy | Mean | Error | StdDev | Allocated |
|
||||
|---------------------------------- |----------- |----------------------- |---------------- |--------------- |------------ |------------ |---------:|----------:|---------:|----------:|
|
||||
| '7Zip LZMA: Extract all entries' | Job-QHCVAS | InProcessEmitToolchain | 1 | 3 | Default | Default | 10.76 ms | 14.511 ms | 0.795 ms | 277.93 KB |
|
||||
| '7Zip LZMA2: Extract all entries' | Job-QHCVAS | InProcessEmitToolchain | 1 | 3 | Default | Default | 10.11 ms | 1.960 ms | 0.107 ms | 277.71 KB |
|
||||
| '7Zip LZMA: Extract all entries' | Dry | Default | Default | 1 | 1 | ColdStart | 51.59 ms | NA | 0.000 ms | 274.04 KB |
|
||||
| '7Zip LZMA2: Extract all entries' | Dry | Default | Default | 1 | 1 | ColdStart | 51.68 ms | NA | 0.000 ms | 273.82 KB |
|
||||
@@ -1,5 +0,0 @@
|
||||
Method,Job,AnalyzeLaunchVariance,EvaluateOverhead,MaxAbsoluteError,MaxRelativeError,MinInvokeCount,MinIterationTime,OutlierMode,Affinity,EnvironmentVariables,Jit,LargeAddressAware,Platform,PowerPlanMode,Runtime,AllowVeryLargeObjects,Concurrent,CpuGroups,Force,HeapAffinitizeMask,HeapCount,NoAffinitize,RetainVm,Server,Arguments,BuildConfiguration,Clock,EngineFactory,NuGetReferences,Toolchain,IsMutator,InvocationCount,IterationCount,IterationTime,LaunchCount,MaxIterationCount,MaxWarmupIterationCount,MemoryRandomization,MinIterationCount,MinWarmupIterationCount,RunStrategy,UnrollFactor,WarmupCount,Mean,Error,StdDev,Allocated
|
||||
'7Zip LZMA: Extract all entries',Job-QHCVAS,False,Default,Default,Default,Default,Default,Default,1111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,InProcessEmitToolchain,Default,1,3,Default,Default,Default,Default,Default,Default,Default,Default,1,1,10.76 ms,14.511 ms,0.795 ms,277.93 KB
|
||||
'7Zip LZMA2: Extract all entries',Job-QHCVAS,False,Default,Default,Default,Default,Default,Default,1111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,InProcessEmitToolchain,Default,1,3,Default,Default,Default,Default,Default,Default,Default,Default,1,1,10.11 ms,1.960 ms,0.107 ms,277.71 KB
|
||||
'7Zip LZMA: Extract all entries',Dry,False,Default,Default,Default,Default,Default,Default,1111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,1,Default,1,Default,Default,Default,Default,Default,ColdStart,1,1,51.59 ms,NA,0.000 ms,274.04 KB
|
||||
'7Zip LZMA2: Extract all entries',Dry,False,Default,Default,Default,Default,Default,Default,1111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,1,Default,1,Default,Default,Default,Default,Default,ColdStart,1,1,51.68 ms,NA,0.000 ms,273.82 KB
|
||||
|
@@ -1,34 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang='en'>
|
||||
<head>
|
||||
<meta charset='utf-8' />
|
||||
<title>SharpCompress.Performance.Benchmarks.SevenZipBenchmarks-20260205-133045</title>
|
||||
|
||||
<style type="text/css">
|
||||
table { border-collapse: collapse; display: block; width: 100%; overflow: auto; }
|
||||
td, th { padding: 6px 13px; border: 1px solid #ddd; text-align: right; }
|
||||
tr { background-color: #fff; border-top: 1px solid #ccc; }
|
||||
tr:nth-child(even) { background: #f8f8f8; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre><code>
|
||||
BenchmarkDotNet v0.14.0, Ubuntu 24.04.3 LTS (Noble Numbat)
|
||||
Intel Xeon Platinum 8370C CPU 2.80GHz, 1 CPU, 4 logical and 2 physical cores
|
||||
.NET SDK 10.0.102
|
||||
[Host] : .NET 10.0.2 (10.0.225.61305), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
|
||||
Dry : .NET 10.0.2 (10.0.225.61305), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
|
||||
</code></pre>
|
||||
<pre><code>UnrollFactor=1 WarmupCount=1
|
||||
</code></pre>
|
||||
|
||||
<table>
|
||||
<thead><tr><th>Method </th><th>Job </th><th>Toolchain </th><th>InvocationCount</th><th>IterationCount</th><th>LaunchCount</th><th>RunStrategy</th><th>Mean</th><th>Error</th><th>StdDev</th><th>Allocated</th>
|
||||
</tr>
|
||||
</thead><tbody><tr><td>'7Zip LZMA: Extract all entries'</td><td>Job-QHCVAS</td><td>InProcessEmitToolchain</td><td>1</td><td>3</td><td>Default</td><td>Default</td><td>10.76 ms</td><td>14.511 ms</td><td>0.795 ms</td><td>277.93 KB</td>
|
||||
</tr><tr><td>'7Zip LZMA2: Extract all entries'</td><td>Job-QHCVAS</td><td>InProcessEmitToolchain</td><td>1</td><td>3</td><td>Default</td><td>Default</td><td>10.11 ms</td><td>1.960 ms</td><td>0.107 ms</td><td>277.71 KB</td>
|
||||
</tr><tr><td>'7Zip LZMA: Extract all entries'</td><td>Dry</td><td>Default</td><td>Default</td><td>1</td><td>1</td><td>ColdStart</td><td>51.59 ms</td><td>NA</td><td>0.000 ms</td><td>274.04 KB</td>
|
||||
</tr><tr><td>'7Zip LZMA2: Extract all entries'</td><td>Dry</td><td>Default</td><td>Default</td><td>1</td><td>1</td><td>ColdStart</td><td>51.68 ms</td><td>NA</td><td>0.000 ms</td><td>273.82 KB</td>
|
||||
</tr></tbody></table>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,25 +0,0 @@
|
||||
```
|
||||
|
||||
BenchmarkDotNet v0.14.0, Ubuntu 24.04.3 LTS (Noble Numbat)
|
||||
Intel Xeon Platinum 8370C CPU 2.80GHz, 1 CPU, 4 logical and 2 physical cores
|
||||
.NET SDK 10.0.102
|
||||
[Host] : .NET 10.0.2 (10.0.225.61305), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
|
||||
Dry : .NET 10.0.2 (10.0.225.61305), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
|
||||
|
||||
UnrollFactor=1 WarmupCount=1
|
||||
|
||||
```
|
||||
| Method | Job | Toolchain | InvocationCount | IterationCount | LaunchCount | RunStrategy | Mean | Error | StdDev | Allocated |
|
||||
|----------------------------------------- |----------- |----------------------- |---------------- |--------------- |------------ |------------ |------------:|---------:|---------:|----------:|
|
||||
| 'Tar: Extract all entries (Archive API)' | Job-QHCVAS | InProcessEmitToolchain | 1 | 3 | Default | Default | 128.4 μs | 452.3 μs | 24.79 μs | 20.73 KB |
|
||||
| 'Tar: Extract all entries (Reader API)' | Job-QHCVAS | InProcessEmitToolchain | 1 | 3 | Default | Default | 286.7 μs | 390.3 μs | 21.40 μs | 217.47 KB |
|
||||
| 'Tar.GZip: Extract all entries' | Job-QHCVAS | InProcessEmitToolchain | 1 | 3 | Default | Default | NA | NA | NA | NA |
|
||||
| 'Tar: Create archive with small files' | Job-QHCVAS | InProcessEmitToolchain | 1 | 3 | Default | Default | 117.9 μs | 485.1 μs | 26.59 μs | 72.55 KB |
|
||||
| 'Tar: Extract all entries (Archive API)' | Dry | Default | Default | 1 | 1 | ColdStart | 16,228.5 μs | NA | 0.00 μs | 16.84 KB |
|
||||
| 'Tar: Extract all entries (Reader API)' | Dry | Default | Default | 1 | 1 | ColdStart | 24,383.0 μs | NA | 0.00 μs | 213.58 KB |
|
||||
| 'Tar.GZip: Extract all entries' | Dry | Default | Default | 1 | 1 | ColdStart | NA | NA | NA | NA |
|
||||
| 'Tar: Create archive with small files' | Dry | Default | Default | 1 | 1 | ColdStart | 8,466.1 μs | NA | 0.00 μs | 68.38 KB |
|
||||
|
||||
Benchmarks with issues:
|
||||
TarBenchmarks.'Tar.GZip: Extract all entries': Job-QHCVAS(Toolchain=InProcessEmitToolchain, InvocationCount=1, IterationCount=3, UnrollFactor=1, WarmupCount=1)
|
||||
TarBenchmarks.'Tar.GZip: Extract all entries': Dry(IterationCount=1, LaunchCount=1, RunStrategy=ColdStart, UnrollFactor=1, WarmupCount=1)
|
||||
@@ -1,9 +0,0 @@
|
||||
Method,Job,AnalyzeLaunchVariance,EvaluateOverhead,MaxAbsoluteError,MaxRelativeError,MinInvokeCount,MinIterationTime,OutlierMode,Affinity,EnvironmentVariables,Jit,LargeAddressAware,Platform,PowerPlanMode,Runtime,AllowVeryLargeObjects,Concurrent,CpuGroups,Force,HeapAffinitizeMask,HeapCount,NoAffinitize,RetainVm,Server,Arguments,BuildConfiguration,Clock,EngineFactory,NuGetReferences,Toolchain,IsMutator,InvocationCount,IterationCount,IterationTime,LaunchCount,MaxIterationCount,MaxWarmupIterationCount,MemoryRandomization,MinIterationCount,MinWarmupIterationCount,RunStrategy,UnrollFactor,WarmupCount,Mean,Error,StdDev,Allocated
|
||||
'Tar: Extract all entries (Archive API)',Job-QHCVAS,False,Default,Default,Default,Default,Default,Default,1111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,InProcessEmitToolchain,Default,1,3,Default,Default,Default,Default,Default,Default,Default,Default,1,1,128.4 μs,452.3 μs,24.79 μs,20.73 KB
|
||||
'Tar: Extract all entries (Reader API)',Job-QHCVAS,False,Default,Default,Default,Default,Default,Default,1111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,InProcessEmitToolchain,Default,1,3,Default,Default,Default,Default,Default,Default,Default,Default,1,1,286.7 μs,390.3 μs,21.40 μs,217.47 KB
|
||||
'Tar.GZip: Extract all entries',Job-QHCVAS,False,Default,Default,Default,Default,Default,Default,1111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,InProcessEmitToolchain,Default,1,3,Default,Default,Default,Default,Default,Default,Default,Default,1,1,NA,NA,NA,NA
|
||||
'Tar: Create archive with small files',Job-QHCVAS,False,Default,Default,Default,Default,Default,Default,1111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,InProcessEmitToolchain,Default,1,3,Default,Default,Default,Default,Default,Default,Default,Default,1,1,117.9 μs,485.1 μs,26.59 μs,72.55 KB
|
||||
'Tar: Extract all entries (Archive API)',Dry,False,Default,Default,Default,Default,Default,Default,1111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,1,Default,1,Default,Default,Default,Default,Default,ColdStart,1,1,"16,228.5 μs",NA,0.00 μs,16.84 KB
|
||||
'Tar: Extract all entries (Reader API)',Dry,False,Default,Default,Default,Default,Default,Default,1111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,1,Default,1,Default,Default,Default,Default,Default,ColdStart,1,1,"24,383.0 μs",NA,0.00 μs,213.58 KB
|
||||
'Tar.GZip: Extract all entries',Dry,False,Default,Default,Default,Default,Default,Default,1111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,1,Default,1,Default,Default,Default,Default,Default,ColdStart,1,1,NA,NA,NA,NA
|
||||
'Tar: Create archive with small files',Dry,False,Default,Default,Default,Default,Default,Default,1111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,1,Default,1,Default,Default,Default,Default,Default,ColdStart,1,1,"8,466.1 μs",NA,0.00 μs,68.38 KB
|
||||
|
@@ -1,38 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang='en'>
|
||||
<head>
|
||||
<meta charset='utf-8' />
|
||||
<title>SharpCompress.Performance.Benchmarks.TarBenchmarks-20260205-133046</title>
|
||||
|
||||
<style type="text/css">
|
||||
table { border-collapse: collapse; display: block; width: 100%; overflow: auto; }
|
||||
td, th { padding: 6px 13px; border: 1px solid #ddd; text-align: right; }
|
||||
tr { background-color: #fff; border-top: 1px solid #ccc; }
|
||||
tr:nth-child(even) { background: #f8f8f8; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre><code>
|
||||
BenchmarkDotNet v0.14.0, Ubuntu 24.04.3 LTS (Noble Numbat)
|
||||
Intel Xeon Platinum 8370C CPU 2.80GHz, 1 CPU, 4 logical and 2 physical cores
|
||||
.NET SDK 10.0.102
|
||||
[Host] : .NET 10.0.2 (10.0.225.61305), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
|
||||
Dry : .NET 10.0.2 (10.0.225.61305), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
|
||||
</code></pre>
|
||||
<pre><code>UnrollFactor=1 WarmupCount=1
|
||||
</code></pre>
|
||||
|
||||
<table>
|
||||
<thead><tr><th>Method </th><th>Job </th><th>Toolchain </th><th>InvocationCount</th><th>IterationCount</th><th>LaunchCount</th><th>RunStrategy</th><th>Mean </th><th>Error</th><th>StdDev</th><th>Allocated</th>
|
||||
</tr>
|
||||
</thead><tbody><tr><td>'Tar: Extract all entries (Archive API)'</td><td>Job-QHCVAS</td><td>InProcessEmitToolchain</td><td>1</td><td>3</td><td>Default</td><td>Default</td><td>128.4 μs</td><td>452.3 μs</td><td>24.79 μs</td><td>20.73 KB</td>
|
||||
</tr><tr><td>'Tar: Extract all entries (Reader API)'</td><td>Job-QHCVAS</td><td>InProcessEmitToolchain</td><td>1</td><td>3</td><td>Default</td><td>Default</td><td>286.7 μs</td><td>390.3 μs</td><td>21.40 μs</td><td>217.47 KB</td>
|
||||
</tr><tr><td>'Tar.GZip: Extract all entries'</td><td>Job-QHCVAS</td><td>InProcessEmitToolchain</td><td>1</td><td>3</td><td>Default</td><td>Default</td><td>NA</td><td>NA</td><td>NA</td><td>NA</td>
|
||||
</tr><tr><td>'Tar: Create archive with small files'</td><td>Job-QHCVAS</td><td>InProcessEmitToolchain</td><td>1</td><td>3</td><td>Default</td><td>Default</td><td>117.9 μs</td><td>485.1 μs</td><td>26.59 μs</td><td>72.55 KB</td>
|
||||
</tr><tr><td>'Tar: Extract all entries (Archive API)'</td><td>Dry</td><td>Default</td><td>Default</td><td>1</td><td>1</td><td>ColdStart</td><td>16,228.5 μs</td><td>NA</td><td>0.00 μs</td><td>16.84 KB</td>
|
||||
</tr><tr><td>'Tar: Extract all entries (Reader API)'</td><td>Dry</td><td>Default</td><td>Default</td><td>1</td><td>1</td><td>ColdStart</td><td>24,383.0 μs</td><td>NA</td><td>0.00 μs</td><td>213.58 KB</td>
|
||||
</tr><tr><td>'Tar.GZip: Extract all entries'</td><td>Dry</td><td>Default</td><td>Default</td><td>1</td><td>1</td><td>ColdStart</td><td>NA</td><td>NA</td><td>NA</td><td>NA</td>
|
||||
</tr><tr><td>'Tar: Create archive with small files'</td><td>Dry</td><td>Default</td><td>Default</td><td>1</td><td>1</td><td>ColdStart</td><td>8,466.1 μs</td><td>NA</td><td>0.00 μs</td><td>68.38 KB</td>
|
||||
</tr></tbody></table>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,19 +0,0 @@
|
||||
```
|
||||
|
||||
BenchmarkDotNet v0.14.0, Ubuntu 24.04.3 LTS (Noble Numbat)
|
||||
Intel Xeon Platinum 8370C CPU 2.80GHz, 1 CPU, 4 logical and 2 physical cores
|
||||
.NET SDK 10.0.102
|
||||
[Host] : .NET 10.0.2 (10.0.225.61305), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
|
||||
Dry : .NET 10.0.2 (10.0.225.61305), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
|
||||
|
||||
UnrollFactor=1 WarmupCount=1
|
||||
|
||||
```
|
||||
| Method | Job | Toolchain | InvocationCount | IterationCount | LaunchCount | RunStrategy | Mean | Error | StdDev | Median | Allocated |
|
||||
|----------------------------------------- |----------- |----------------------- |---------------- |--------------- |------------ |------------ |----------:|-----------:|----------:|-----------:|-----------:|
|
||||
| 'Zip: Extract all entries (Archive API)' | Job-QHCVAS | InProcessEmitToolchain | 1 | 3 | Default | Default | 5.829 ms | 69.397 ms | 3.8039 ms | 7.3861 ms | 186.55 KB |
|
||||
| 'Zip: Extract all entries (Reader API)' | Job-QHCVAS | InProcessEmitToolchain | 1 | 3 | Default | Default | 4.978 ms | 114.015 ms | 6.2496 ms | 1.4033 ms | 128.05 KB |
|
||||
| 'Zip: Create archive with small files' | Job-QHCVAS | InProcessEmitToolchain | 1 | 3 | Default | Default | 1.175 ms | 11.325 ms | 0.6207 ms | 0.8635 ms | 2812.43 KB |
|
||||
| 'Zip: Extract all entries (Archive API)' | Dry | Default | Default | 1 | 1 | ColdStart | 43.781 ms | NA | 0.0000 ms | 43.7807 ms | 182.66 KB |
|
||||
| 'Zip: Extract all entries (Reader API)' | Dry | Default | Default | 1 | 1 | ColdStart | 38.885 ms | NA | 0.0000 ms | 38.8848 ms | 123.88 KB |
|
||||
| 'Zip: Create archive with small files' | Dry | Default | Default | 1 | 1 | ColdStart | 23.153 ms | NA | 0.0000 ms | 23.1528 ms | 2808.54 KB |
|
||||
@@ -1,7 +0,0 @@
|
||||
Method,Job,AnalyzeLaunchVariance,EvaluateOverhead,MaxAbsoluteError,MaxRelativeError,MinInvokeCount,MinIterationTime,OutlierMode,Affinity,EnvironmentVariables,Jit,LargeAddressAware,Platform,PowerPlanMode,Runtime,AllowVeryLargeObjects,Concurrent,CpuGroups,Force,HeapAffinitizeMask,HeapCount,NoAffinitize,RetainVm,Server,Arguments,BuildConfiguration,Clock,EngineFactory,NuGetReferences,Toolchain,IsMutator,InvocationCount,IterationCount,IterationTime,LaunchCount,MaxIterationCount,MaxWarmupIterationCount,MemoryRandomization,MinIterationCount,MinWarmupIterationCount,RunStrategy,UnrollFactor,WarmupCount,Mean,Error,StdDev,Median,Allocated
|
||||
'Zip: Extract all entries (Archive API)',Job-QHCVAS,False,Default,Default,Default,Default,Default,Default,1111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,InProcessEmitToolchain,Default,1,3,Default,Default,Default,Default,Default,Default,Default,Default,1,1,5.829 ms,69.397 ms,3.8039 ms,7.3861 ms,186.55 KB
|
||||
'Zip: Extract all entries (Reader API)',Job-QHCVAS,False,Default,Default,Default,Default,Default,Default,1111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,InProcessEmitToolchain,Default,1,3,Default,Default,Default,Default,Default,Default,Default,Default,1,1,4.978 ms,114.015 ms,6.2496 ms,1.4033 ms,128.05 KB
|
||||
'Zip: Create archive with small files',Job-QHCVAS,False,Default,Default,Default,Default,Default,Default,1111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,InProcessEmitToolchain,Default,1,3,Default,Default,Default,Default,Default,Default,Default,Default,1,1,1.175 ms,11.325 ms,0.6207 ms,0.8635 ms,2812.43 KB
|
||||
'Zip: Extract all entries (Archive API)',Dry,False,Default,Default,Default,Default,Default,Default,1111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,1,Default,1,Default,Default,Default,Default,Default,ColdStart,1,1,43.781 ms,NA,0.0000 ms,43.7807 ms,182.66 KB
|
||||
'Zip: Extract all entries (Reader API)',Dry,False,Default,Default,Default,Default,Default,Default,1111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,1,Default,1,Default,Default,Default,Default,Default,ColdStart,1,1,38.885 ms,NA,0.0000 ms,38.8848 ms,123.88 KB
|
||||
'Zip: Create archive with small files',Dry,False,Default,Default,Default,Default,Default,Default,1111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,1,Default,1,Default,Default,Default,Default,Default,ColdStart,1,1,23.153 ms,NA,0.0000 ms,23.1528 ms,2808.54 KB
|
||||
|
@@ -1,36 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang='en'>
|
||||
<head>
|
||||
<meta charset='utf-8' />
|
||||
<title>SharpCompress.Performance.Benchmarks.ZipBenchmarks-20260205-133047</title>
|
||||
|
||||
<style type="text/css">
|
||||
table { border-collapse: collapse; display: block; width: 100%; overflow: auto; }
|
||||
td, th { padding: 6px 13px; border: 1px solid #ddd; text-align: right; }
|
||||
tr { background-color: #fff; border-top: 1px solid #ccc; }
|
||||
tr:nth-child(even) { background: #f8f8f8; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre><code>
|
||||
BenchmarkDotNet v0.14.0, Ubuntu 24.04.3 LTS (Noble Numbat)
|
||||
Intel Xeon Platinum 8370C CPU 2.80GHz, 1 CPU, 4 logical and 2 physical cores
|
||||
.NET SDK 10.0.102
|
||||
[Host] : .NET 10.0.2 (10.0.225.61305), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
|
||||
Dry : .NET 10.0.2 (10.0.225.61305), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
|
||||
</code></pre>
|
||||
<pre><code>UnrollFactor=1 WarmupCount=1
|
||||
</code></pre>
|
||||
|
||||
<table>
|
||||
<thead><tr><th>Method </th><th>Job </th><th>Toolchain </th><th>InvocationCount</th><th>IterationCount</th><th>LaunchCount</th><th>RunStrategy</th><th>Mean</th><th>Error</th><th>StdDev</th><th>Median</th><th>Allocated</th>
|
||||
</tr>
|
||||
</thead><tbody><tr><td>'Zip: Extract all entries (Archive API)'</td><td>Job-QHCVAS</td><td>InProcessEmitToolchain</td><td>1</td><td>3</td><td>Default</td><td>Default</td><td>5.829 ms</td><td>69.397 ms</td><td>3.8039 ms</td><td>7.3861 ms</td><td>186.55 KB</td>
|
||||
</tr><tr><td>'Zip: Extract all entries (Reader API)'</td><td>Job-QHCVAS</td><td>InProcessEmitToolchain</td><td>1</td><td>3</td><td>Default</td><td>Default</td><td>4.978 ms</td><td>114.015 ms</td><td>6.2496 ms</td><td>1.4033 ms</td><td>128.05 KB</td>
|
||||
</tr><tr><td>'Zip: Create archive with small files'</td><td>Job-QHCVAS</td><td>InProcessEmitToolchain</td><td>1</td><td>3</td><td>Default</td><td>Default</td><td>1.175 ms</td><td>11.325 ms</td><td>0.6207 ms</td><td>0.8635 ms</td><td>2812.43 KB</td>
|
||||
</tr><tr><td>'Zip: Extract all entries (Archive API)'</td><td>Dry</td><td>Default</td><td>Default</td><td>1</td><td>1</td><td>ColdStart</td><td>43.781 ms</td><td>NA</td><td>0.0000 ms</td><td>43.7807 ms</td><td>182.66 KB</td>
|
||||
</tr><tr><td>'Zip: Extract all entries (Reader API)'</td><td>Dry</td><td>Default</td><td>Default</td><td>1</td><td>1</td><td>ColdStart</td><td>38.885 ms</td><td>NA</td><td>0.0000 ms</td><td>38.8848 ms</td><td>123.88 KB</td>
|
||||
</tr><tr><td>'Zip: Create archive with small files'</td><td>Dry</td><td>Default</td><td>Default</td><td>1</td><td>1</td><td>ColdStart</td><td>23.153 ms</td><td>NA</td><td>0.0000 ms</td><td>23.1528 ms</td><td>2808.54 KB</td>
|
||||
</tr></tbody></table>
|
||||
</body>
|
||||
</html>
|
||||
103
tests/SharpCompress.Performance/README.md
Normal file
103
tests/SharpCompress.Performance/README.md
Normal file
@@ -0,0 +1,103 @@
|
||||
# SharpCompress Performance Benchmarks
|
||||
|
||||
This project contains performance benchmarks for SharpCompress using [BenchmarkDotNet](https://benchmarkdotnet.org/).
|
||||
|
||||
## Overview
|
||||
|
||||
The benchmarks test all major archive formats supported by SharpCompress:
|
||||
- **Zip**: Read (Archive & Reader API) and Write operations
|
||||
- **Tar**: Read (Archive & Reader API) and Write operations, including Tar.GZip
|
||||
- **Rar**: Read operations (Archive & Reader API)
|
||||
- **7Zip**: Read operations for LZMA and LZMA2 compression
|
||||
- **GZip**: Compression and decompression
|
||||
|
||||
## Running Benchmarks
|
||||
|
||||
### Run all benchmarks
|
||||
```bash
|
||||
dotnet run --project tests/SharpCompress.Performance/SharpCompress.Performance.csproj --configuration Release
|
||||
```
|
||||
|
||||
### Run specific benchmark class
|
||||
```bash
|
||||
dotnet run --project tests/SharpCompress.Performance/SharpCompress.Performance.csproj --configuration Release -- --filter "*ZipBenchmarks*"
|
||||
```
|
||||
|
||||
### Run with specific job configuration
|
||||
```bash
|
||||
# Quick run for testing (1 warmup, 1 iteration)
|
||||
dotnet run --project tests/SharpCompress.Performance/SharpCompress.Performance.csproj --configuration Release -- --job Dry
|
||||
|
||||
# Short run (3 warmup, 3 iterations)
|
||||
dotnet run --project tests/SharpCompress.Performance/SharpCompress.Performance.csproj --configuration Release -- --job Short
|
||||
|
||||
# Medium run (default)
|
||||
dotnet run --project tests/SharpCompress.Performance/SharpCompress.Performance.csproj --configuration Release -- --job Medium
|
||||
```
|
||||
|
||||
### Export results
|
||||
```bash
|
||||
# Export to JSON
|
||||
dotnet run --project tests/SharpCompress.Performance/SharpCompress.Performance.csproj --configuration Release -- --exporters json
|
||||
|
||||
# Export to multiple formats
|
||||
dotnet run --project tests/SharpCompress.Performance/SharpCompress.Performance.csproj --configuration Release -- --exporters json markdown html
|
||||
```
|
||||
|
||||
### List available benchmarks
|
||||
```bash
|
||||
dotnet run --project tests/SharpCompress.Performance/SharpCompress.Performance.csproj --configuration Release -- --list flat
|
||||
```
|
||||
|
||||
## Baseline Results
|
||||
|
||||
The baseline results are stored in `baseline-results.md` and represent the expected performance characteristics of the library. These results are used in CI to detect significant performance regressions.
|
||||
|
||||
To update the baseline:
|
||||
1. Run the benchmarks: `dotnet run --project tests/SharpCompress.Performance/SharpCompress.Performance.csproj --configuration Release -- --exporters markdown --artifacts baseline-output`
|
||||
2. Combine the results: `cat baseline-output/results/*-report-github.md > baseline-results.md`
|
||||
3. Review the changes and commit if appropriate
|
||||
|
||||
## CI Integration
|
||||
|
||||
The performance benchmarks run automatically in GitHub Actions on:
|
||||
- Push to `master` or `release` branches
|
||||
- Pull requests to `master` or `release` branches
|
||||
- Manual workflow dispatch
|
||||
|
||||
Results are displayed in the GitHub Actions summary and uploaded as artifacts.
|
||||
|
||||
## Benchmark Configuration
|
||||
|
||||
The benchmarks are configured with minimal iterations for CI efficiency:
|
||||
- **Warmup Count**: 1 iteration
|
||||
- **Iteration Count**: 3 iterations
|
||||
- **Invocation Count**: 1
|
||||
- **Unroll Factor**: 1
|
||||
- **Toolchain**: InProcessEmitToolchain (for fast execution)
|
||||
|
||||
These settings provide a good balance between speed and accuracy for CI purposes. For more accurate results, use the `Short`, `Medium`, or `Long` job configurations.
|
||||
|
||||
## Memory Diagnostics
|
||||
|
||||
All benchmarks include memory diagnostics using `[MemoryDiagnoser]`, which provides:
|
||||
- Total allocated memory per operation
|
||||
- Gen 0/1/2 collection counts
|
||||
|
||||
## Understanding Results
|
||||
|
||||
Key metrics in the benchmark results:
|
||||
- **Mean**: Average execution time
|
||||
- **Error**: Half of 99.9% confidence interval
|
||||
- **StdDev**: Standard deviation
|
||||
- **Allocated**: Total managed memory allocated per operation
|
||||
|
||||
## Contributing
|
||||
|
||||
When adding new benchmarks:
|
||||
1. Create a new class in the `Benchmarks/` directory
|
||||
2. Inherit from `ArchiveBenchmarkBase` for archive-related benchmarks
|
||||
3. Add `[MemoryDiagnoser]` attribute to the class
|
||||
4. Use `[Benchmark(Description = "...")]` for each benchmark method
|
||||
5. Add `[GlobalSetup]` for one-time initialization
|
||||
6. Update this README if needed
|
||||
81
tests/SharpCompress.Performance/baseline-results.md
Normal file
81
tests/SharpCompress.Performance/baseline-results.md
Normal file
@@ -0,0 +1,81 @@
|
||||
```
|
||||
|
||||
BenchmarkDotNet v0.14.0, Ubuntu 24.04.3 LTS (Noble Numbat)
|
||||
Intel Xeon Platinum 8370C CPU 2.80GHz, 1 CPU, 4 logical and 2 physical cores
|
||||
.NET SDK 10.0.102
|
||||
[Host] : .NET 10.0.2 (10.0.225.61305), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
|
||||
|
||||
Toolchain=InProcessEmitToolchain InvocationCount=1 IterationCount=3
|
||||
UnrollFactor=1 WarmupCount=1
|
||||
|
||||
```
|
||||
| Method | Mean | Error | StdDev | Allocated |
|
||||
|------------------------- |-----------:|-----------:|----------:|----------:|
|
||||
| 'GZip: Compress 100KB' | 6,090.9 μs | 1,940.6 μs | 106.37 μs | 523.37 KB |
|
||||
| 'GZip: Decompress 100KB' | 434.5 μs | 389.3 μs | 21.34 μs | 37.41 KB |
|
||||
```
|
||||
|
||||
BenchmarkDotNet v0.14.0, Ubuntu 24.04.3 LTS (Noble Numbat)
|
||||
Intel Xeon Platinum 8370C CPU 2.80GHz, 1 CPU, 4 logical and 2 physical cores
|
||||
.NET SDK 10.0.102
|
||||
[Host] : .NET 10.0.2 (10.0.225.61305), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
|
||||
|
||||
Toolchain=InProcessEmitToolchain InvocationCount=1 IterationCount=3
|
||||
UnrollFactor=1 WarmupCount=1
|
||||
|
||||
```
|
||||
| Method | Mean | Error | StdDev | Allocated |
|
||||
|----------------------------------------- |---------:|----------:|----------:|----------:|
|
||||
| 'Rar: Extract all entries (Archive API)' | 2.070 ms | 2.4938 ms | 0.1367 ms | 95.77 KB |
|
||||
| 'Rar: Extract all entries (Reader API)' | 2.359 ms | 0.9123 ms | 0.0500 ms | 154.18 KB |
|
||||
```
|
||||
|
||||
BenchmarkDotNet v0.14.0, Ubuntu 24.04.3 LTS (Noble Numbat)
|
||||
Intel Xeon Platinum 8370C CPU 2.80GHz, 1 CPU, 4 logical and 2 physical cores
|
||||
.NET SDK 10.0.102
|
||||
[Host] : .NET 10.0.2 (10.0.225.61305), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
|
||||
|
||||
Toolchain=InProcessEmitToolchain InvocationCount=1 IterationCount=3
|
||||
UnrollFactor=1 WarmupCount=1
|
||||
|
||||
```
|
||||
| Method | Mean | Error | StdDev | Allocated |
|
||||
|---------------------------------- |----------:|-----------:|----------:|----------:|
|
||||
| '7Zip LZMA: Extract all entries' | 14.042 ms | 98.7800 ms | 5.4145 ms | 277.93 KB |
|
||||
| '7Zip LZMA2: Extract all entries' | 8.654 ms | 0.6124 ms | 0.0336 ms | 277.71 KB |
|
||||
```
|
||||
|
||||
BenchmarkDotNet v0.14.0, Ubuntu 24.04.3 LTS (Noble Numbat)
|
||||
Intel Xeon Platinum 8370C CPU 2.80GHz, 1 CPU, 4 logical and 2 physical cores
|
||||
.NET SDK 10.0.102
|
||||
[Host] : .NET 10.0.2 (10.0.225.61305), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
|
||||
|
||||
Toolchain=InProcessEmitToolchain InvocationCount=1 IterationCount=3
|
||||
UnrollFactor=1 WarmupCount=1
|
||||
|
||||
```
|
||||
| Method | Mean | Error | StdDev | Allocated |
|
||||
|----------------------------------------- |---------:|---------:|---------:|----------:|
|
||||
| 'Tar: Extract all entries (Archive API)' | 148.0 μs | 356.4 μs | 19.53 μs | 20.73 KB |
|
||||
| 'Tar: Extract all entries (Reader API)' | 259.5 μs | 347.1 μs | 19.02 μs | 217.47 KB |
|
||||
| 'Tar.GZip: Extract all entries' | NA | NA | NA | NA |
|
||||
| 'Tar: Create archive with small files' | 139.1 μs | 728.8 μs | 39.95 μs | 72.55 KB |
|
||||
|
||||
Benchmarks with issues:
|
||||
TarBenchmarks.'Tar.GZip: Extract all entries': Job-NHXEIE(Toolchain=InProcessEmitToolchain, InvocationCount=1, IterationCount=3, UnrollFactor=1, WarmupCount=1)
|
||||
```
|
||||
|
||||
BenchmarkDotNet v0.14.0, Ubuntu 24.04.3 LTS (Noble Numbat)
|
||||
Intel Xeon Platinum 8370C CPU 2.80GHz, 1 CPU, 4 logical and 2 physical cores
|
||||
.NET SDK 10.0.102
|
||||
[Host] : .NET 10.0.2 (10.0.225.61305), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
|
||||
|
||||
Toolchain=InProcessEmitToolchain InvocationCount=1 IterationCount=3
|
||||
UnrollFactor=1 WarmupCount=1
|
||||
|
||||
```
|
||||
| Method | Mean | Error | StdDev | Median | Allocated |
|
||||
|----------------------------------------- |---------:|-----------:|----------:|----------:|-----------:|
|
||||
| 'Zip: Extract all entries (Archive API)' | 5.629 ms | 66.953 ms | 3.6699 ms | 7.2353 ms | 186.55 KB |
|
||||
| 'Zip: Extract all entries (Reader API)' | 4.935 ms | 114.613 ms | 6.2823 ms | 1.3354 ms | 128.05 KB |
|
||||
| 'Zip: Create archive with small files' | 1.250 ms | 10.341 ms | 0.5668 ms | 0.9229 ms | 2812.43 KB |
|
||||
Reference in New Issue
Block a user