diff --git a/Cargo.toml b/Cargo.toml index adcd8e5..923e3a9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -56,7 +56,6 @@ series = ["vtab"] # check for invalid query. extra_check = [] modern_sqlite = ["libsqlite3-sys/bundled_bindings"] -unstable = [] in_gecko = ["modern_sqlite", "libsqlite3-sys/in_gecko"] bundled-windows = ["libsqlite3-sys/bundled-windows"] @@ -82,6 +81,9 @@ lazy_static = "1.0" regex = "1.0" uuid = { version = "0.8", features = ["v4"] } unicase = "2.4.0" +# Use `bencher` over criterion becasue it builds much faster and we don't have +# many benchmarks +bencher = "0.1" [dependencies.libsqlite3-sys] path = "libsqlite3-sys" @@ -97,6 +99,10 @@ name = "deny_single_threaded_sqlite_config" [[test]] name = "vtab" +[[bench]] +name = "cache" +harness = false + [package.metadata.docs.rs] features = [ "backup", "blob", "chrono", "collation", "functions", "limits", "load_extension", "serde_json", "trace", "url", "vtab", "window", "modern_sqlite" ] all-features = false diff --git a/benches/cache.rs b/benches/cache.rs new file mode 100644 index 0000000..dd3683e --- /dev/null +++ b/benches/cache.rs @@ -0,0 +1,18 @@ +use bencher::{benchmark_group, benchmark_main, Bencher}; +use rusqlite::Connection; + +fn bench_no_cache(b: &mut Bencher) { + let db = Connection::open_in_memory().unwrap(); + db.set_prepared_statement_cache_capacity(0); + let sql = "SELECT 1, 'test', 3.14 UNION SELECT 2, 'exp', 2.71"; + b.iter(|| db.prepare(sql).unwrap()); +} + +fn bench_cache(b: &mut Bencher) { + let db = Connection::open_in_memory().unwrap(); + let sql = "SELECT 1, 'test', 3.14 UNION SELECT 2, 'exp', 2.71"; + b.iter(|| db.prepare_cached(sql).unwrap()); +} + +benchmark_group!(cache_benches, bench_no_cache, bench_cache); +benchmark_main!(cache_benches); diff --git a/benches/lib.rs b/benches/lib.rs deleted file mode 100644 index 2d799f4..0000000 --- a/benches/lib.rs +++ /dev/null @@ -1,24 +0,0 @@ -#![cfg_attr(feature = "unstable", feature(test))] - -#[cfg(feature = "unstable")] -mod bench { - extern crate test; - - use rusqlite::Connection; - use test::Bencher; - - #[bench] - fn bench_no_cache(b: &mut Bencher) { - let db = Connection::open_in_memory().unwrap(); - db.set_prepared_statement_cache_capacity(0); - let sql = "SELECT 1, 'test', 3.14 UNION SELECT 2, 'exp', 2.71"; - b.iter(|| db.prepare(sql).unwrap()); - } - - #[bench] - fn bench_cache(b: &mut Bencher) { - let db = Connection::open_in_memory().unwrap(); - let sql = "SELECT 1, 'test', 3.14 UNION SELECT 2, 'exp', 2.71"; - b.iter(|| db.prepare_cached(sql).unwrap()); - } -}