OpenDAL Python Bindings Benchmark

This benchmark is test against the opendal and aws python sdk.

To run the benchmark, please make sure the following env have been set correctly.

  • AWS_REGION: the region of the s3 service
  • AWS_ENDPOINT: the endpoint of the s3 service
  • AWS_ACCESS_KEY_ID: the access key of the s3 service
  • AWS_SECRET_ACCESS_KEY: the secret key of the s3 service
  • AWS_S3_BUCKET: the bucket name of the s3 service

To run the benchmark:

maturin develop -r -E=benchmark

export AWS_ENDPOINT=http://127.0.0.1:9000
export AWS_REGION=us-east-1
export AWS_ACCESS_KEY_ID=minioadmin
export AWS_SECRET_ACCESS_KEY=minioadmin
export AWS_S3_BUCKET=opendal

uv run async_opendal_benchmark.py
uv run async_origin_s3_benchmark_with_gevent.py

Blocking Operator GIL benchmark

blocking_gil_benchmark.py uses a local HTTP subprocess with a configurable response delay, so it does not require service credentials. It reports the median and p95 latency for one blocking read, two sequential reads, and two reads started from independent Python threads.

From bindings/python, build the binding from the revision to measure, then run:

uv run maturin develop --release
uv run benchmark/blocking_gil_benchmark.py \
  --delay-ms 50 --iterations 30 --warmups 3

Run the same command from an unchanged baseline checkout to compare single-thread overhead and concurrency speedup with identical local I/O.