Skip to content

Commit 03b4e08

Browse files
committed
bench deser dataset only
1 parent 1ee5046 commit 03b4e08

2 files changed

Lines changed: 85 additions & 2 deletions

File tree

benches/index.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,9 @@ use hidefix::idx::Index;
88
fn chunked_1d(b: &mut Bencher) {
99
b.iter(|| Index::index("tests/data/dmrpp/chunked_oneD.h5").unwrap())
1010
}
11+
12+
#[ignore]
13+
#[bench]
14+
fn meps(b: &mut Bencher) {
15+
b.iter(|| test::black_box(Index::index("tests/data/meps_det_vc_2_5km_latest.nc")).unwrap())
16+
}

benches/serde_db.rs

Lines changed: 79 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ extern crate test;
33
use tempfile::{NamedTempFile, TempDir};
44
use test::Bencher;
55

6-
use hidefix::idx::Index;
6+
use hidefix::idx::{DatasetD, Index};
77

88
mod serde_db_sled {
99
use super::*;
@@ -107,6 +107,60 @@ mod serde_db_sqlite {
107107
})
108108
}
109109

110+
#[ignore]
111+
#[bench]
112+
fn deserialize_meps_bincode_only_read_x_wind_ml(b: &mut Bencher) {
113+
let rt = tokio::runtime::Runtime::new().unwrap();
114+
let i = Index::index("tests/data/meps_det_vc_2_5km_latest.nc").unwrap();
115+
let d = i.dataset("x_wind_ml").unwrap();
116+
117+
let bts = bincode::serialize(d).unwrap();
118+
119+
println!("serialized size: {}", bts.len());
120+
121+
let db = NamedTempFile::new().unwrap();
122+
123+
let pool = rt.block_on(async {
124+
let pool = SqlitePool::connect(&format!("sqlite:{}", db.path().to_str().unwrap()))
125+
.await
126+
.unwrap();
127+
let mut c = pool.acquire().await.unwrap();
128+
129+
sqlx::query("CREATE TABLE hdf5 (dataset TEXT, idx BLOB)")
130+
.execute(&mut c)
131+
.await
132+
.unwrap();
133+
sqlx::query("CREATE INDEX dataset_idx ON hdf5 (dataset)")
134+
.execute(&mut c)
135+
.await
136+
.unwrap();
137+
138+
// Insert index into db
139+
sqlx::query("INSERT INTO hdf5 (dataset, idx) VALUES (?1, ?2)")
140+
.bind("meps")
141+
.bind(&bts)
142+
.execute(&mut c)
143+
.await
144+
.unwrap();
145+
146+
pool
147+
});
148+
149+
b.iter(|| {
150+
let (_nbts,): (Vec<u8>,) = test::black_box(
151+
rt.block_on(
152+
sqlx::query_as("SELECT idx FROM hdf5 WHERE dataset = ?1")
153+
.bind("meps")
154+
.fetch_one(&pool),
155+
)
156+
.unwrap(),
157+
);
158+
// assert_eq!(&bts, &nbts);
159+
160+
// let bts = rt.block_on(async { test::black_box(Vec::<u8>::with_capacity(8_000_000)) });
161+
})
162+
}
163+
110164
#[ignore]
111165
#[bench]
112166
fn deserialize_meps_bincode(b: &mut Bencher) {
@@ -228,6 +282,7 @@ mod serde_db_redis {
228282
let i = Index::index("tests/data/meps_det_vc_2_5km_latest.nc").unwrap();
229283

230284
let bts = bincode::serialize(&i).unwrap();
285+
println!("bytes: {}", bts.len());
231286

232287
let mut db = redis::Client::open("redis://:@127.1:6379")
233288
.unwrap()
@@ -237,11 +292,33 @@ mod serde_db_redis {
237292
db.set::<_, _, ()>("meps", bts.as_slice()).unwrap();
238293

239294
b.iter(|| {
240-
let nbts: Vec<u8> = db.get("meps").unwrap();
295+
let nbts: Vec<u8> = test::black_box(db.get("meps").unwrap());
241296
test::black_box(bincode::deserialize::<Index>(&nbts).unwrap());
242297
})
243298
}
244299

300+
#[ignore]
301+
#[bench]
302+
fn deserialize_meps_bincode_x_wind_ml(b: &mut Bencher) {
303+
let i = Index::index("tests/data/meps_det_vc_2_5km_latest.nc").unwrap();
304+
let d = i.dataset("x_wind_ml").unwrap();
305+
306+
let bts = bincode::serialize(d).unwrap();
307+
println!("bytes: {}", bts.len());
308+
309+
let mut db = redis::Client::open("redis://:@127.1:6379")
310+
.unwrap()
311+
.get_connection()
312+
.unwrap();
313+
314+
db.set::<_, _, ()>("meps", bts.as_slice()).unwrap();
315+
316+
b.iter(|| {
317+
let nbts: Vec<u8> = test::black_box(db.get("meps").unwrap());
318+
test::black_box(bincode::deserialize::<DatasetD>(&nbts).unwrap());
319+
})
320+
}
321+
245322
#[ignore]
246323
#[bench]
247324
fn deserialize_meps_bincode_only_read(b: &mut Bencher) {

0 commit comments

Comments
 (0)