| // Measure cost of different operations |
| // to get a sense of performance tradeoffs |
| #![feature(test)] |
| |
| extern crate test; |
| extern crate mio; |
| |
| use test::Bencher; |
| |
| use mio::tcp::TcpListener; |
| use mio::{Token, Ready, PollOpt}; |
| |
| |
| #[bench] |
| fn mio_register_deregister(b: &mut Bencher) { |
| let addr = "127.0.0.1:0".parse().unwrap(); |
| // Setup the server socket |
| let sock = TcpListener::bind(&addr).unwrap(); |
| let poll = mio::Poll::new().unwrap(); |
| |
| const CLIENT: Token = Token(1); |
| |
| b.iter(|| { |
| poll.register(&sock, CLIENT, Ready::readable(), |
| PollOpt::edge()).unwrap(); |
| poll.deregister(&sock).unwrap(); |
| }); |
| } |
| |
| #[bench] |
| fn mio_reregister(b: &mut Bencher) { |
| let addr = "127.0.0.1:0".parse().unwrap(); |
| // Setup the server socket |
| let sock = TcpListener::bind(&addr).unwrap(); |
| let poll = mio::Poll::new().unwrap(); |
| |
| const CLIENT: Token = Token(1); |
| poll.register(&sock, CLIENT, Ready::readable(), |
| PollOpt::edge()).unwrap(); |
| |
| b.iter(|| { |
| poll.reregister(&sock, CLIENT, Ready::readable(), |
| PollOpt::edge()).unwrap(); |
| }); |
| poll.deregister(&sock).unwrap(); |
| } |
| |
| #[bench] |
| fn mio_poll(b: &mut Bencher) { |
| let poll = mio::Poll::new().unwrap(); |
| let timeout = std::time::Duration::new(0, 0); |
| let mut events = mio::Events::with_capacity(1024); |
| |
| b.iter(|| { |
| poll.poll(&mut events, Some(timeout)).unwrap(); |
| }); |
| } |