aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2023-03-09 00:43:35 -0500
committerJesse Luehrs <doy@tozt.net>2023-03-09 00:43:35 -0500
commit6f42a2abdcb772615534d74eec26080e4b2043ec (patch)
treeb15ea042bc4dc22d5fff48ad1188f7f8a6a3ef72
parent68c36be2e26813a2a3d7210ae82824de06b3d3ee (diff)
downloadvt100-rust-6f42a2abdcb772615534d74eec26080e4b2043ec.tar.gz
vt100-rust-6f42a2abdcb772615534d74eec26080e4b2043ec.zip
add a few more benchmarks
-rw-r--r--examples/process_cb.rs36
-rw-r--r--examples/process_cb_bb.rs52
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");
+}