SQLx Self-Benchmarks ==================== This Cargo project implements various benchmarks for SQLx using [Criterion](https://crates.io/crates/criterion). ### Available Benchmarks * Group `pg_pool`: benchmarks `sqlx::Pool` against a PostgreSQL server. * `DATABASE_URL` must be set (or in `.env`) pointing to a PostgreSQL server. It should preferably be running on the same machine as the benchmarks to reduce latency. * The `postgres` feature must be enabled for this benchmark to run. * Benchmarks: * `bench_pgpool_acquire`: benchmarks `Pool::acquire()` when many concurrent tasks are also using the pool, with or without the pool being fair. Concurrently to the benchmark iteration function calling and blocking on `Pool::acquire()`, a varying number of background tasks are also calling `acquire()` and holding the acquired connection for 500µs each before releasing it back to the pool. The pool is created with `.min_connections(50).max_connections(50)` so we shouldn't be measuring anything but the actual overhead of `Pool`'s bookkeeping. ### Running You must choose a runtime to execute the benchmarks on; the feature flags are the same as the `sqlx` crate: ```bash cargo bench --features runtime-tokio-native-tls cargo bench --features runtime-async-std-rustls ``` When complete, the benchmark results will be in `target/criterion/`. Open `target/criterion/report/index.html` or pick one of the benchmark subfolders and open `report/index.html` there to view the results. Benchmark Results ------- If you want to share the results here, please follow the format below. * [2020/07/01: `pg_pool` benchmark added to test pool fairness changes](results/2020-07-01-bench_pgpool_acquire/REPORT.md)