This directory stores benchmark results for tracking performance across versions.
All benchmark scripts are in the examples/ directory. Compile first with rebar3 compile.
escript examples/benchmark.erl --quickescript examples/benchmark.erl --fullescript examples/benchmark_compare.erlThis outputs a summary table useful for comparing performance between versions.
escript examples/benchmark.erl --concurrentescript examples/bench_channel.erlCompares Channel API throughput at various message sizes.
escript examples/bench_reactor_modes.erlCompares Reactor performance in worker mode vs subinterpreter mode (Python 3.12+).
rebar3 shell
> run_benchmark:run().Compares Erlang event loop vs standard asyncio event loop performance.
To save benchmark results for comparison:
# Run and save to timestamped file
escript examples/benchmark_compare.erl > benchmark_results/$(date +%Y%m%d_%H%M%S).txtResult files are named with timestamps: YYYYMMDD_HHMMSS.txt
Example files:
reactor_modes_20260309_093558.txt- Reactor modes comparison results
When comparing versions, focus on:
- Sync call latency - Time per
py:call()operation - Cast throughput - Non-blocking
py:cast()operations per second - Concurrent throughput - Performance under parallel load
- Channel throughput - Messages per second at various sizes
- Reactor modes - Worker vs subinterpreter performance
Benchmarks automatically print system info including:
- Erlang/OTP version
- Number of schedulers
- Python version
- Execution mode (free_threaded, subinterp, multi_executor)
- Max concurrent operations