mirror of
https://github.com/tokio-rs/tokio.git
synced 2025-09-28 12:10:37 +00:00
58 lines
1.4 KiB
Rust
58 lines
1.4 KiB
Rust
// 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();
|
|
});
|
|
}
|