Skip to content

Commit e25468e

Browse files
feat: add generic parser util
1 parent 3c95bad commit e25468e

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

src/main.rs

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
fn main() -> Result<(), Box<dyn std::error::Error>> {
2+
let source = std::env::args().nth(1).expect("missing source");
3+
println!("Parsing data from {} ...", source);
4+
5+
let file = std::fs::File::open(&source)?;
6+
let mut file = std::io::BufReader::new(file);
7+
8+
let iter = dasl::drisl::de::iter_from_reader::<dasl::drisl::Value, _>(&mut file);
9+
let now = std::time::Instant::now();
10+
let mut count = 0;
11+
for (i, el) in iter.enumerate() {
12+
let el = el?;
13+
if i == 0 {
14+
println!("{:?}", el);
15+
}
16+
if i % 100 == 0 {
17+
print!(".");
18+
}
19+
count += 1;
20+
}
21+
println!("\n");
22+
23+
let done = now.elapsed();
24+
25+
let meta = std::fs::metadata(&source)?;
26+
let mbs = meta.len() as f64 / done.as_secs_f64() / 1024. / 1024.;
27+
let values_per_sec = count as f64 / done.as_secs_f64();
28+
29+
println!(
30+
"File '{}' ({:.01}MiB)\nParsed {} values in {}ms\n{:.02} Values/s\n{:.02} MiB/s",
31+
source,
32+
meta.len() as f64 / 1024. / 1024.,
33+
count,
34+
done.as_millis(),
35+
values_per_sec,
36+
mbs,
37+
);
38+
Ok(())
39+
}

0 commit comments

Comments
 (0)