# 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:

```shell
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:

```shell
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.
