diff options
author | Jesse Luehrs <doy@tozt.net> | 2023-03-09 00:43:35 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2023-03-09 00:43:35 -0500 |
commit | 6f42a2abdcb772615534d74eec26080e4b2043ec (patch) | |
tree | b15ea042bc4dc22d5fff48ad1188f7f8a6a3ef72 | |
parent | 68c36be2e26813a2a3d7210ae82824de06b3d3ee (diff) | |
download | vt100-rust-6f42a2abdcb772615534d74eec26080e4b2043ec.tar.gz vt100-rust-6f42a2abdcb772615534d74eec26080e4b2043ec.zip |
add a few more benchmarks
-rw-r--r-- | examples/process_cb.rs | 36 | ||||
-rw-r--r-- | examples/process_cb_bb.rs | 52 |
2 files changed, 88 insertions, 0 deletions
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<Item = Vec<u8>> { + (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<u8>]) { + let mut parser = vt100::Parser::default(); + for frame in frames { + parser.process_cb(frame, &mut Callbacks); + } +} + +fn main() { + let frames: Vec<Vec<u8>> = 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<Item = Vec<u8>> { + (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<u8>]) { + let mut parser = vt100::Parser::default(); + for frame in frames { + parser.process_cb(frame, &mut Callbacks); + } +} + +fn main() { + let frames: Vec<Vec<u8>> = 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"); +} |