mirror of
https://github.com/launchbadge/sqlx
synced 2024-11-10 14:34:19 +00:00
a2eceec33b
* chore: replace `dotenv` with `dotenvy` The former appears to be unmaintained and the latter is a drop-in replacement. * chore: fix all warnings |
||
---|---|---|
.. | ||
benches | ||
results/2020-07-01-bench_pgpool_acquire | ||
Cargo.toml | ||
README.md | ||
test.db |
SQLx Self-Benchmarks
This Cargo project implements various benchmarks for SQLx using Criterion.
Available Benchmarks
- Group
pg_pool
: benchmarkssqlx::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
: benchmarksPool::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 onPool::acquire()
, a varying number of background tasks are also callingacquire()
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 ofPool
's bookkeeping.
Running
You must choose a runtime to execute the benchmarks on; the feature flags are the same as the sqlx
crate:
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.