use std::time::{Instant, Duration};
use benc0de::{BenParser, BenItem};
fn main() {
let mut reader = BenParser::new();
let bs = "d3:blai-42e4:porti4711e1:rd2:id20:abcdefghij01234567895:token8:aoeusnth6:valuesl6:axje.u6:idhtnmee1:t2:aa1:y1:re".as_bytes();
let now = Instant::now();
let mut x = 0u8;
let mut y = 0isize;
for _ in 0..5_000_000 {
let mut root = reader.parse(bs);
y = y.wrapping_add(root.get("bla").number().unwrap());
y = y.wrapping_add(root.get("port").number().unwrap());
let mut resp = root.get("r");
x = x.wrapping_add(resp.get("id").bytes().unwrap()[0]);
x = x.wrapping_add(resp.get("token").bytes().unwrap()[0]);
for v in resp.get("values").iter_bytes() {
x = x.wrapping_add(v[0]);
}
x = x.wrapping_add(root.get("t").bytes().unwrap()[0]);
x = x.wrapping_add(root.get("y").bytes().unwrap()[0]);
}
let sec = now.elapsed().as_secs_f64();
println!("(x, y) = ({}, {})", x, y);
let gigabyte = (bs.len() as f64 * 5_000_000f64) / 1_000_000_000f64;
println!("Speed: {:.3} GB/s", gigabyte / sec);
}