Skip to content

Commit a92849a

Browse files
wip
1 parent 20c858c commit a92849a

File tree

4 files changed

+38
-32
lines changed

4 files changed

+38
-32
lines changed

Cargo.toml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ semver = "1"
2727
tokio = { version = "1.40.0", features = ["sync"], optional = true }
2828
# TODO: channels with futures
2929
# TODO: channels crossbeam
30+
jemallocator = "0.5.4"
31+
3032

3133
[dev-dependencies]
3234
assert_fs = "1.1.2"
@@ -49,6 +51,7 @@ cc = "1.1.15"
4951
rusqlite = { version = "0.32.1", features = ["bundled"] }
5052
concat-idents = "1.1.5"
5153

54+
5255
[features]
5356
default = [ "upgrade_0_5_x", "upgrade_0_7_x" ]
5457
upgrade_0_5_x = [ "redb1" ]
@@ -63,4 +66,4 @@ name = "seconday_index"
6366
harness = false
6467

6568
[build-dependencies]
66-
skeptic = "0.13.7"
69+
skeptic = "0.13.7"

benches/seconday_index.rs

Lines changed: 32 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ use criterion::{
1111
use native_model::{native_model, Model};
1212
use rand::Rng;
1313

14+
// #[global_allocator]
15+
// static GLOBAL: jemallocator::Jemalloc = jemallocator::Jemalloc;
16+
1417
fn bench_insert<T: Default + Item + native_db::ToInput>(c: &mut Criterion, item_name: &str) {
1518
let mut group = c.benchmark_group(format!("insert_{}", item_name));
1619
group.plot_config(
@@ -149,41 +152,41 @@ fn bench_select<T: Default + Item + native_db::ToInput + Clone + Debug>(
149152
let start = std::time::Instant::now();
150153
let native_db = native_db.r_transaction().unwrap();
151154
for _ in 0..iters {
152-
let from_sk = 1;
153-
let to_sk = 100;
154-
let items: Vec<T> = native_db.scan().secondary(Item1SK_NUni_NOptKey::sk_1).unwrap().range(from_sk..).unwrap().try_collect().unwrap();
155-
println!("from_sk: {:?}, to_sk: {:?}, len: {:?}", from_sk, to_sk, items.len());
155+
let from_sk: i64 = rand::thread_rng().gen_range(0..50);
156+
let to_sk: i64 = rand::thread_rng().gen_range(50..100);
157+
let _items: Vec<T> = native_db.scan().secondary(Item1SK_NUni_NOptKey::sk_1).unwrap().range(from_sk..to_sk).unwrap().try_collect().unwrap();
158+
// println!("len: {:?}", _items.len());
156159
}
157160
start.elapsed()
158161
})
159162
});
160163

161164

162-
// group.bench_function(BenchmarkId::new("random range", "Sqlite"), |b| {
163-
// b.iter_custom(|iters| {
164-
// let sqlite = SqliteBenchDatabase::setup();
165-
// sqlite.insert_bulk_random::<T>(NUMBER_OF_ITEMS);
166-
// let start = std::time::Instant::now();
167-
// for _ in 0..iters {
168-
// let from_sk = rand::thread_rng().gen_range(0..50);
169-
// let to_sk = rand::thread_rng().gen_range(50..100);
170-
// let mut db = sqlite.db().borrow_mut();
171-
// let transaction = db
172-
// .transaction_with_behavior(TransactionBehavior::Immediate)
173-
// .unwrap();
174-
// let sql = T::generate_select_range_sk(&"sk_1");
175-
// let mut stmt = transaction.prepare_cached(&sql).unwrap();
176-
// let rows = stmt.query_map(&[(":from_sk", &from_sk), (":to_sk", &to_sk)], |row| {
177-
// let binary: Vec<u8> = row.get(1)?;
178-
// let item = T::native_db_bincode_decode_from_slice(&binary).unwrap();
179-
// Ok(item)
180-
// });
181-
// let out = rows.unwrap().map(|r| r.unwrap()).collect::<Vec<T>>();
182-
// println!("len: {:?}", out.len());
183-
// }
184-
// start.elapsed()
185-
// });
186-
// });
165+
group.bench_function(BenchmarkId::new("random range", "Sqlite"), |b| {
166+
b.iter_custom(|iters| {
167+
let sqlite = SqliteBenchDatabase::setup();
168+
sqlite.insert_bulk_random::<T>(NUMBER_OF_ITEMS);
169+
let start = std::time::Instant::now();
170+
for _ in 0..iters {
171+
let from_sk: i64 = rand::thread_rng().gen_range(0..50);
172+
let to_sk: i64 = rand::thread_rng().gen_range(50..100);
173+
let mut db = sqlite.db().borrow_mut();
174+
let transaction = db
175+
.transaction_with_behavior(TransactionBehavior::Immediate)
176+
.unwrap();
177+
let sql = T::generate_select_range_sk(&"sk_1");
178+
let mut stmt = transaction.prepare_cached(&sql).unwrap();
179+
let rows = stmt.query_map(&[(":from_sk", &from_sk), (":to_sk", &to_sk)], |row| {
180+
let binary: Vec<u8> = row.get(1)?;
181+
let item = T::native_db_bincode_decode_from_slice(&binary).unwrap();
182+
Ok(item)
183+
});
184+
let _out = rows.unwrap().map(|r| r.unwrap()).collect::<Vec<T>>();
185+
// println!("len: {:?}", _out.len());
186+
}
187+
start.elapsed()
188+
});
189+
});
187190
}
188191

189192
fn first_compare(c: &mut Criterion) {

benches/setup.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ impl BenchDatabase for NativeDBBenchDatabase {
200200
fn setup() -> Self {
201201
let tmp = TmpFs::new().unwrap();
202202
let db_path = tmp.path("native_db_bench");
203-
let db = Builder::new().create(&MODELS, db_path.clone()).unwrap();
203+
let db = Builder::new().set_cache_size(1024 * 1024 * 1024).create(&MODELS, db_path.clone()).unwrap();
204204
Self { tmp, db }
205205
}
206206

justfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ bench_build:
7474
cargo bench --no-run
7575

7676
bench bench_name:
77-
CRITERION_DEBUG=1 cargo bench --bench {{bench_name}}; \
77+
CRITERION_DEBUG=1 cargo bench --profile release --bench {{bench_name}}; \
7878
start ./target/criterion/report/index.html
7979

8080
expand test_file_name="util":

0 commit comments

Comments
 (0)