Skip to content

Commit 36a0449

Browse files
committed
Introduce benchmarks for npy/npz readers
1 parent 6f196ed commit 36a0449

File tree

3 files changed

+19
-2
lines changed

3 files changed

+19
-2
lines changed

hftbacktest/Cargo.toml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,11 @@ hftbacktest-derive = { path = "../hftbacktest-derive", optional = true, version
5454
[dev-dependencies]
5555
tracing-subscriber = { version = "0.3.18", features = [] }
5656
clap = { version = "4.5.4", features = ["derive"] }
57+
criterion = { version = "0.5", features = ["html_reports"] }
58+
59+
[[bench]]
60+
name = "formats"
61+
harness = false
5762

5863
[package.metadata.docs.rs]
5964
all-features = true

hftbacktest/src/backtest/data/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use std::{
1010
slice::SliceIndex,
1111
};
1212

13-
pub use npy::{read_npy_file, read_npz_file, write_npy, Field, NpyDTyped, NpyHeader};
13+
pub use npy::{read_npy_file, read_npz_file, write_npy, write_npz, Field, NpyDTyped, NpyHeader};
1414
pub use reader::{Cache, DataSource, Reader};
1515

1616
use crate::utils::{AlignedArray, CACHE_LINE_SIZE};

hftbacktest/src/backtest/data/npy/mod.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
use std::{
22
fs::File,
3-
io::{Error, ErrorKind, Read, Write},
3+
io::{Error, ErrorKind, Read, Seek, Write},
44
};
55

6+
use zip::{write::FileOptions, ZipWriter};
7+
68
use crate::backtest::data::{npy::parser::Value, Data, DataPtr, POD};
79

810
mod parser;
@@ -255,6 +257,16 @@ pub fn write_npy<W: Write, T: NpyDTyped>(write: &mut W, data: &[T]) -> std::io::
255257
Ok(())
256258
}
257259

260+
pub fn write_npz<W: Write + Seek, T: NpyDTyped>(write: &mut W, data: &[T]) -> std::io::Result<()> {
261+
let mut archive = ZipWriter::new(write);
262+
263+
archive.start_file::<_, (), _>("data.npy", FileOptions::default())?;
264+
write_npy(&mut archive, data)?;
265+
archive.finish()?;
266+
267+
Ok(())
268+
}
269+
258270
fn vec_as_bytes<T>(vec: &[T]) -> &[u8] {
259271
let len = std::mem::size_of_val(vec);
260272
let ptr = vec.as_ptr() as *const u8;

0 commit comments

Comments
 (0)