BenchmarkDotNet.ResultDiff
No description available
Install / Use
/learn @lahma/BenchmarkDotNet.ResultDiffREADME
BenchmarkDotNet.ResultDiff is a simple command line program that takes two directories as parameters and outputs a diff view for the BenchmarkDotNet results.
The input used is the CSV result format and output is the GitHub flavored version of Markdown.
Each result file comparison is added to output with heading containing the name of benchmark (file name).
See this PR for Jint for an example how output file contents can be easily pasted to PRs.
Usage
General workflow that works at least for me
- Run your benchmark on original branch
- Rename the result directory BenchmarkDotNet.Artifacts to for example BenchmarkDotNet.Artifacts_original
- Switch to your optimization branch
- Run benchmarks again
- Run this tool and paths as parameters (BenchmarkDotNet.Artifacts_original BenchmarkDotNet.Artifacts)
cd C:\Sources\BenchmarkDotNet.ResultDiff\src\BenchmarkDotNet.ResultDiff
dotnet run ..\jint\Jint.Benchmark\BenchmarkDotNet.Artifacts_dev ..\jint\Jint.Benchmark\BenchmarkDotNet.Artifacts_my_feature
Analyzing pair ArrayBenchmark-report.csv Wrote results to C:\BenchmarkDotNet.ResultDiff\BenchmarkDotNet.Artifacts_dev_vs_BenchmarkDotNet.Artifacts-github.md
BenchmarkDotNet input
The tool turns these two results tables (taken from markdown output, tool actually uses CSV):
BenchmarkDotNet.Artifacts_dev\results
| Method | N | Mean | Error | StdDev | Gen 0 | Allocated | |------------------- |---- |------------:|-----------:|-----------:|----------:|------------:| | Slice | 100 | 436.2 us | 0.7824 us | 0.6936 us | 161.1328 | 660.16 KB | | Concat | 100 | 468.4 us | 1.0230 us | 0.9569 us | 175.7813 | 720.31 KB | | Unshift | 100 | 17,912.2 us | 29.0475 us | 24.2560 us | 3562.5000 | 14672.66 KB | | Push | 100 | 10,861.8 us | 17.9719 us | 16.8109 us | 343.7500 | 1438.28 KB | | Index | 100 | 12,106.5 us | 7.0282 us | 6.5742 us | 390.6250 | 1637.5 KB | | Map | 100 | 3,382.7 us | 13.8354 us | 12.9416 us | 765.6250 | 3149.22 KB | | Apply | 100 | 569.2 us | 1.1511 us | 1.0767 us | 188.4766 | 774.22 KB | | JsonStringifyParse | 100 | 4,523.7 us | 6.5277 us | 6.1060 us | 1273.4375 | 5225 KB |
BenchmarkDotNet.Artifacts_my_feature\results
| Method | N | Mean | Error | StdDev | Gen 0 | Allocated | |------------------- |---- |------------:|-----------:|----------:|----------:|------------:| | Slice | 100 | 455.8 us | 3.482 us | 3.086 us | 161.1328 | 660.16 KB | | Concat | 100 | 496.6 us | 9.547 us | 10.611 us | 175.7813 | 720.31 KB | | Unshift | 100 | 19,023.0 us | 103.525 us | 96.838 us | 3562.5000 | 14672.66 KB | | Push | 100 | 11,274.1 us | 31.569 us | 29.530 us | 343.7500 | 1438.28 KB | | Index | 100 | 12,471.8 us | 33.521 us | 29.716 us | 390.6250 | 1643.75 KB | | Map | 100 | 3,624.8 us | 31.269 us | 29.249 us | 691.4063 | 2833.59 KB | | Apply | 100 | 600.3 us | 6.965 us | 6.515 us | 188.4766 | 774.22 KB | | JsonStringifyParse | 100 | 4,602.2 us | 49.303 us | 43.706 us | 1273.4375 | 5225.78 KB |
Output
Output for each file single result table that allows easier examination of differences between the results:
BenchmarkDotNet.Artifacts_dev_vs_BenchmarkDotNet.Artifacts_my_feature-github.md
ArrayBenchmark
| Diff|Method|N|Mean|Gen 0|Allocated| |------- |-------|-------|-------:|-------:|-------:| | Old |Slice|100|436.2 us|161.1328|660.16 KB| | New | | | 455.8 us (+4%) | 161.1328 (0%) | 660.16 KB (0%) | | Old |Concat|100|468.4 us|175.7813|720.31 KB| | New | | | 496.6 us (+6%) | 175.7813 (0%) | 720.31 KB (0%) | | Old |Unshift|100|17,912.2 us|3562.5000|14672.66 KB| | New | | | 19,023.0 us (+6%) | 3562.5000 (0%) | 14672.66 KB (0%) | | Old |Push|100|10,861.8 us|343.7500|1438.28 KB| | New | | | 11,274.1 us (+4%) | 343.7500 (0%) | 1438.28 KB (0%) | | Old |Index|100|12,106.5 us|390.6250|1637.5 KB| | New | | | 12,471.8 us (+3%) | 390.6250 (0%) | 1643.75 KB (0%) | | Old |Map|100|3,382.7 us|765.6250|3149.22 KB| | New | | | 3,624.8 us (+7%) | 691.4063 (-10%) | 2833.59 KB (-10%) | | Old |Apply|100|569.2 us|188.4766|774.22 KB| | New | | | 600.3 us (+5%) | 188.4766 (0%) | 774.22 KB (0%) | | Old |JsonStringifyParse|100|4,523.7 us|1273.4375|5225 KB| | New | | | 4,602.2 us (+2%) | 1273.4375 (0%) | 5225.78 KB (0%) |
Related Skills
node-connect
350.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
109.9kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
350.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
350.1kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
