resqlite Benchmark Dashboard

Loading benchmarks...

resqlite
sqlite3 (raw FFI)
sqlite_async (PowerSync)
drift
Glossary:
Loading benchmark data...

Scope & Methodology

Peers tested: resqlite (this repo, current commit), sqlite3.dart 3.3.0 (synchronous FFI baseline), sqlite_async 0.14.0-wip.0 (PowerSync, async + reactive), drift 2.21.0 (codegen-backed, isolate-backed, reactive). Hardware is shown in the device selector above; each device has its own full run. See SCOPE.md for the full peer list, versioning policy, and upgrade process.

Numbers reported: Wall-clock medians in ms (lower is better) from multi-repeat runs, plus p90 for tail-latency. Point-query throughput is queries/sec (higher is better). Main-isolate times show the time actually spent on the calling/UI thread — the critical budget in Flutter. Sync libraries (sqlite3) report main == wall by construction.

Fair comparison rules: identical SQL queries, identical seed data, WAL mode everywhere. sqlite_async's watch() throttle is set to Duration.zero so we're comparing invalidation engines rather than throttling policies. Each peer uses its idiomatic API (db.select() / db.getAll() / prepared Statement); no crippled versions. Methodology details live in METHODOLOGY.md.

Known Gaps

Honesty about what these numbers do not tell you. The suite is designed to expose the behaviors Flutter app authors care about, but it's not exhaustive.

Peers not included:

Workloads not included:

The SCOPE.md Known Gaps section is the canonical list; this summary is kept in sync with it.

Run dart run benchmark/run_release.dart "your-device" --repeat=3 and submit a PR to add your device.