benchdiff
A CLI benchmarking tool with rich terminal output and markdown export.
Installation
pip install benchdiff
Usage
Create a file named bench_*.py and define a __benchmarks__ list:
# bench_strings.py
words = ["hello", "world", "foo", "bar"]
def concat():
result = ""
for w in words:
result += w
def join():
"".join(words)
def format_string():
"%s %s %s %s" % tuple(words)
def fstring():
f"{words[0]} {words[1]} {words[2]} {words[3]}"
__benchmarks__ = [
("String concatenation", [concat, join]),
("String formatting", [format_string, fstring]),
]
Run benchmarks:
benchdiff benchmarks/
╭──────────────────────────────── benchdiff ────────────────────────────────╮
│ │
│ Benchmark Min Median Max × │
│ ─────────────────────────────────────────────────────────────────────── │
│ String concatenation │
│ concat 78.333ns 80.833ns 97.750ns 1.711x │
│ join 44.250ns 47.250ns 53.125ns 1.000x │
│ String formatting │
│ format_string 103.834ns 110.417ns 114.708ns 1.464x │
│ fstring 75.000ns 75.417ns 76.083ns 1.000x │
│ │
│ * times in nanoseconds, lower is better │
│ ───────────────────────────────────────────────────────────────────────── │
│ Python 3.14.2 │
│ Platform macOS-26.3.1 │
│ CPU Apple M3 Pro │
│ Rounds 5 × 1,000 calls │
│ Date 2026-05-08 10:05:59 │
╰───────────────────────────────────────────────────────────────────────────╯
CLI options
benchdiff [PATH] [OPTIONS]
Arguments:
PATH Path to search for bench_*.py files [default: .]
Options:
--repeat Number of measurement loops [default: 5]
--times Number of calls per measurement [default: 1000]
--markdown Output as GFM markdown table
--help Show this message and exit.
Markdown output
benchdiff benchmarks/ --markdown
| Benchmark | Min | Median | Max | × |
|---|---|---|---|---|
| String concatenation | ||||
| concat | 84.875ns | 94.250ns | 157.792ns | 1.879x |
| join | 50.042ns | 50.167ns | 52.166ns | 1.000x |
| String formatting | ||||
| format_string | 113.833ns | 115.083ns | 118.750ns | 1.539x |
| fstring | 72.375ns | 74.791ns | 84.583ns | 1.000x |
times in nanoseconds, lower is better
Python 3.14.2 · macOS-26.3.1 · Apple M3 Pro · 5 × 1,000 rounds · 2026-05-08 11:14:38
Metadata
Release files for benchdiff 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| benchdiff-0.3.0.tar.gz | 5.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| benchdiff-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 12.1 kB
Release files / benchdiff-0.3.0.tar.gz
| Download URL | benchdiff-0.3.0.tar.gz |
|---|---|
| Size | 5.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
fca4dd6d5fda7c2c409842c28631c40aeedcc7607fe600a0e418f66b5a21641b
|
|
BLAKE2b-256 checksum How to use checksums |
e520f4b57f07a428f80f8062dc65129faf0a954ac856fba11e4792d502da7cb4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.12 {"installer":{"name":"uv","version":"0.11.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / benchdiff-0.3.0-py3-none-any.whl
| Download URL | benchdiff-0.3.0-py3-none-any.whl |
|---|---|
| Size | 6.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d634dcfa563d168bd1d146157a82ba4f208d75c6183393340db337a75096f975
|
|
BLAKE2b-256 checksum How to use checksums |
83d1a372f9be53fc93432c620254f245b706bee7e529f53b605fe6ad26acae5d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.12 {"installer":{"name":"uv","version":"0.11.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|