@@ -3,7 +3,7 @@ extern crate test;
33use tempfile:: { NamedTempFile , TempDir } ;
44use test:: Bencher ;
55
6- use hidefix:: idx:: Index ;
6+ use hidefix:: idx:: { DatasetD , Index } ;
77
88mod 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