blob: 98ddc7570077e8d6a313005f673278db321663bb [file] [view]
# 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.