#![feature(test)] extern crate test; use test::{black_box, Bencher}; use async_backplane::*; #[bench] fn create_destroy(b: &mut Bencher) { b.iter(|| { let d = Device::new(); black_box(d); }) } #[bench] fn device_monitor_drop(b: &mut Bencher) { b.iter(|| { let d1 = Device::new(); let d2 = Device::new(); d1.link(&d2, LinkMode::Monitor); black_box(d1); black_box(d2); }) } #[bench] fn line_monitor_drop(b: &mut Bencher) { b.iter(|| { let d1 = Device::new(); let d2 = Device::new(); let line = d2.line(); d1.link_line(line, LinkMode::Monitor).unwrap(); black_box(d1); black_box(d2); }) } #[bench] fn device_monitor_drop_notify(b: &mut Bencher) { b.iter(|| { let d1 = Device::new(); let d2 = Device::new(); d1.link(&d2, LinkMode::Monitor); black_box(d2); black_box(d1); }) } #[bench] fn device_monitor_error_notify(b: &mut Bencher) { b.iter(|| { let d1 = Device::new(); let d2 = Device::new(); d1.link(&d2, LinkMode::Monitor); d2.disconnect(Some(Fault::Error)); black_box(d1); }) } #[bench] fn line_monitor_drop_notify(b: &mut Bencher) { b.iter(|| { let d1 = Device::new(); let d2 = Device::new(); let line = d2.line(); d1.link_line(line, LinkMode::Monitor).unwrap(); black_box(d2); black_box(d1); }) } #[bench] fn line_monitor_error_notify(b: &mut Bencher) { b.iter(|| { let d1 = Device::new(); let d2 = Device::new(); let line = d2.line(); d1.link_line(line, LinkMode::Monitor).unwrap(); d2.disconnect(Some(Fault::Error)); black_box(d1); }) } #[bench] fn device_peer_drop_notify(b: &mut Bencher) { b.iter(|| { let d1 = Device::new(); let d2 = Device::new(); d1.link(&d2, LinkMode::Peer); black_box(d1); black_box(d2); }) } #[bench] fn device_peer_error_notify(b: &mut Bencher) { b.iter(|| { let d1 = Device::new(); let d2 = Device::new(); d1.link(&d2, LinkMode::Peer); d2.disconnect(Some(Fault::Error)); black_box(d1); }) } #[bench] fn line_peer_drop_notify(b: &mut Bencher) { b.iter(|| { let d1 = Device::new(); let d2 = Device::new(); let line = d2.line(); d1.link_line(line, LinkMode::Peer).unwrap(); black_box(d1); black_box(d2); }) } #[bench] fn line_peer_error_notify(b: &mut Bencher) { b.iter(|| { let d1 = Device::new(); let d2 = Device::new(); let line = d2.line(); d1.link_line(line, LinkMode::Peer).unwrap(); d2.disconnect(Some(Fault::Error)); black_box(d1); }) }