///|
fn main {
let payload = Bytes::from_array(Array::make(1024, 97))
let wire = @frame.encode_frame(payload)
let iterations = 10000
let start = @bench.monotonic_clock_start()
let mut decoded = 0
for _i = 0; _i < iterations; _i = _i + 1 {
let decoder = @frame.Decoder::new(max_frame_size=2048)
match decoder.feed(wire) {
Ok(frames) => decoded = decoded + frames.length()
Err(_) => abort("benchmark input must decode")
}
}
let elapsed_us = @bench.monotonic_clock_end(start)
let mib = (iterations * payload.length()).to_double() / 1048576.0
println("decoded frames: \{decoded}")
println("payload MiB: \{mib}")
println("elapsed us: \{elapsed_us}")
println("throughput MiB/s: \{mib * 1000000.0 / elapsed_us}")
}