From 6f42a2abdcb772615534d74eec26080e4b2043ec Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Thu, 9 Mar 2023 00:43:35 -0500 Subject: add a few more benchmarks --- examples/process_cb.rs | 36 ++++++++++++++++++++++++++++++++ examples/process_cb_bb.rs | 52 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 examples/process_cb.rs create mode 100644 examples/process_cb_bb.rs diff --git a/examples/process_cb.rs b/examples/process_cb.rs new file mode 100644 index 0000000..4926859 --- /dev/null +++ b/examples/process_cb.rs @@ -0,0 +1,36 @@ +use std::io::Read as _; + +struct Callbacks; +impl vt100::Callbacks for Callbacks {} + +fn read_frames() -> impl Iterator> { + (1..=7625).map(|i| { + let mut file = + std::fs::File::open(format!("tests/data/crawl/crawl{i}")) + .unwrap(); + let mut frame = vec![]; + file.read_to_end(&mut frame).unwrap(); + frame + }) +} + +fn process_frames(frames: &[Vec]) { + let mut parser = vt100::Parser::default(); + for frame in frames { + parser.process_cb(frame, &mut Callbacks); + } +} + +fn main() { + let frames: Vec> = read_frames().collect(); + let start = std::time::Instant::now(); + let mut i = 0; + loop { + i += 1; + process_frames(&frames); + if (std::time::Instant::now() - start).as_secs() >= 30 { + break; + } + } + eprintln!("{i} iterations"); +} diff --git a/examples/process_cb_bb.rs b/examples/process_cb_bb.rs new file mode 100644 index 0000000..411b115 --- /dev/null +++ b/examples/process_cb_bb.rs @@ -0,0 +1,52 @@ +use std::io::Read as _; + +struct Callbacks; +impl vt100::Callbacks for Callbacks { + fn audible_bell(&mut self, screen: &mut vt100::Screen) { + std::hint::black_box(screen); + } + + fn visual_bell(&mut self, screen: &mut vt100::Screen) { + std::hint::black_box(screen); + } + + fn resize(&mut self, screen: &mut vt100::Screen, request: (u16, u16)) { + std::hint::black_box((screen, request)); + } + + fn error(&mut self, screen: &mut vt100::Screen) { + std::hint::black_box(screen); + } +} + +fn read_frames() -> impl Iterator> { + (1..=7625).map(|i| { + let mut file = + std::fs::File::open(format!("tests/data/crawl/crawl{i}")) + .unwrap(); + let mut frame = vec![]; + file.read_to_end(&mut frame).unwrap(); + frame + }) +} + +fn process_frames(frames: &[Vec]) { + let mut parser = vt100::Parser::default(); + for frame in frames { + parser.process_cb(frame, &mut Callbacks); + } +} + +fn main() { + let frames: Vec> = read_frames().collect(); + let start = std::time::Instant::now(); + let mut i = 0; + loop { + i += 1; + process_frames(&frames); + if (std::time::Instant::now() - start).as_secs() >= 30 { + break; + } + } + eprintln!("{i} iterations"); +} -- cgit v1.2.3-54-g00ecf