tenzir-bench measures the performance of
Tenzir pipelines. It runs repeatable
benchmarks against local binaries or container images and records results for
comparison across builds and releases.
- ⏱️ Repeatable measurements: Run warmups and multiple measurement passes with consistent datasets and execution settings.
- 🧩 Reusable fixtures: Provision services such as Kafka or a Tenzir node and seed them with benchmark inputs.
- 🏎️ Flexible runners: Measure wall-clock time, CPU use, peak memory, and hardware counters with pluggable runners.
- 🔬 Build comparisons: Compare local binaries and Docker images directly, or evaluate runs against published release results.
tenzir-bench requires Python 3.11 or newer. Run the latest compatible release
from PyPI with uvx:
uvx tenzir-bench --helpuvx downloads the release into an isolated environment and caches subsequent
invocations.
Prepare the managed reference datasets:
uvx tenzir-bench prepareRun the examples against a local Tenzir build:
uvx tenzir-bench run --tenzir ./build/bin/tenzir --benchmark examples/benchmarksCompare two builds:
uvx tenzir-bench compare \
--base ./build/baseline/bin/tenzir \
--candidate ./build/candidate/bin/tenzir \
examples/benchmarks \
--compactBuild targets can also use the docker:// prefix, for example,
docker://ghcr.io/tenzir/tenzir:main.
The documentation currently lives in this repository:
- Read the command guide to run, compare, synchronize, evaluate, and publish benchmarks.
- Read the benchmark authoring guide to define benchmarks, implementations, inputs, and fixtures.
- Explore the runnable examples for complete benchmark layouts.
tenzir-bench is available under the Apache License, Version 2.0. See
LICENSE for details.