From 31308f3699263de2291e5c4e4730bc20deb8bc3c Mon Sep 17 00:00:00 2001 From: Pekka Enberg Date: Sat, 3 Aug 2024 21:04:33 +0300 Subject: [PATCH] core: Switch SQLite to use locking_mode EXCLUSIVE MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Let's switch the SQLite benchmarks to use similar file locking protocol as we do. Improves SQLite's performance by 2x, but Limbo is still faster. Before: rusqlite/Prepare statement: 'SELECT * FROM users LIMIT 1' time: [2.1027 µs 2.1239 µs 2.1563 µs] thrpt: [463.75 Kelem/s 470.83 Kelem/s 475.57 Kelem/s] After: rusqlite/Execute prepared statement: 'SELECT * FROM users LIMIT 1' time: [940.07 ns 944.16 ns 949.39 ns] thrpt: [1.0533 Melem/s 1.0591 Melem/s 1.0638 Melem/s] --- core/benches/benchmark.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/benches/benchmark.rs b/core/benches/benchmark.rs index 2dbe67962..d9eb2e1ba 100644 --- a/core/benches/benchmark.rs +++ b/core/benches/benchmark.rs @@ -107,6 +107,8 @@ fn rusqlite_bench(criterion: &mut Criterion) { let conn = rusqlite::Connection::open("../testing/testing.db").unwrap(); + conn.pragma_update(None, "locking_mode", &"EXCLUSIVE") + .unwrap(); group.bench_function("Prepare statement: 'SELECT 1'", |b| { b.iter(|| { conn.prepare("SELECT 1").unwrap();