Python SDK logging benchmarks
Manual performance benchmarks for the Rerun Python SDK logging pipeline. These are not run in CI — they are intended for local profiling and regression checks.
Running benchmarks
From the rerun/ directory:
# Run all benchmarks:
pixi run py-bench
# Run only throughput benchmarks:
pixi run py-bench -k "not micro"
# Run only micro-benchmarks:
pixi run py-bench -k micro
# Run a specific benchmark:
pixi run py-bench -k "micro_log-Points3D"
Running standalone (for profiling)
Enter the pixi shell first:
pixi shell
Then run a benchmark directly:
# Run the throughput benchmark standalone:
uvpy -m tests.python.log_benchmark.test_log_benchmark transform3d
# With options:
uvpy -m tests.python.log_benchmark.test_log_benchmark transform3d --num-entities 10 --num-time-steps 10000 --static
# Connect to a running Rerun viewer (start `rerun` first):
uvpy -m tests.python.log_benchmark.test_log_benchmark transform3d --connect
Profiling with py-spy
# Generate a flamegraph (on Linux, add --native for native stack traces):
sudo PYTHONPATH=rerun_py/rerun_sdk:rerun_py py-spy record -o flamegraph.svg -- \
.venv/bin/python -m tests.python.log_benchmark.test_log_benchmark transform3d
# Then open flamegraph.svg in a browser
Comparing benchmark runs
Use --benchmark-save to save benchmark results:
# Save a baseline on the current branch:
pixi run py-bench -k micro --benchmark-save=before
# Make changes, rebuild, then save again:
pixi run py-bench -k micro --benchmark-save=after
Saved results are stored in .benchmarks/ under the project root and are automatically numbered, e.g. 0001_before and 0002_after.
You can then compare using the pytest-benchmark CLI:
uv run pytest-benchmark compare 0001 0002
Test files
__init__.py— Shared data classes (Point3DInput,Transform3DInput)test_log_benchmark.py— Throughput benchmarkstest_micro_benchmark.py— Per-call overhead micro-benchmarks