mirror of
https://github.com/tokio-rs/tokio.git
synced 2025-09-28 12:10:37 +00:00

Some of the benchhmarks were broken and/or using deprecated APIs. This patch updates the benches and requires them all to compile without warnings in order to pass CI.
59 lines
1.4 KiB
Rust
59 lines
1.4 KiB
Rust
// Measure cost of different operations
|
|
// to get a sense of performance tradeoffs
|
|
#![feature(test)]
|
|
#![deny(warnings)]
|
|
|
|
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();
|
|
});
|
|
}
|