@@ -11,6 +11,9 @@ use criterion::{
11
11
use native_model:: { native_model, Model } ;
12
12
use rand:: Rng ;
13
13
14
+ // #[global_allocator]
15
+ // static GLOBAL: jemallocator::Jemalloc = jemallocator::Jemalloc;
16
+
14
17
fn bench_insert < T : Default + Item + native_db:: ToInput > ( c : & mut Criterion , item_name : & str ) {
15
18
let mut group = c. benchmark_group ( format ! ( "insert_{}" , item_name) ) ;
16
19
group. plot_config (
@@ -149,41 +152,41 @@ fn bench_select<T: Default + Item + native_db::ToInput + Clone + Debug>(
149
152
let start = std:: time:: Instant :: now ( ) ;
150
153
let native_db = native_db. r_transaction ( ) . unwrap ( ) ;
151
154
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());
156
159
}
157
160
start. elapsed ( )
158
161
} )
159
162
} ) ;
160
163
161
164
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
+ } ) ;
187
190
}
188
191
189
192
fn first_compare ( c : & mut Criterion ) {
0 commit comments