Files

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 benchmarks
  • test_micro_benchmark.py — Per-call overhead micro-benchmarks