mirror of
https://github.com/tokio-rs/tokio.git
synced 2025-10-01 12:20:39 +00:00
Add poll_ready and constructor benchmarks for tokio-sync
This commit is contained in:
parent
ec22fb9843
commit
49774f6af1
@ -6,10 +6,24 @@ extern crate test;
|
|||||||
|
|
||||||
mod tokio {
|
mod tokio {
|
||||||
use tokio_sync::mpsc::*;
|
use tokio_sync::mpsc::*;
|
||||||
use futures::{Async, Stream, Sink};
|
use futures::{future, Async, Future, Stream, Sink};
|
||||||
use test::{self, Bencher};
|
use test::{self, Bencher};
|
||||||
use std::thread;
|
use std::thread;
|
||||||
|
|
||||||
|
#[bench]
|
||||||
|
fn bounded_new(b: &mut Bencher) {
|
||||||
|
b.iter(|| {
|
||||||
|
let _ = test::black_box(&channel::<i32>(1_000));
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
#[bench]
|
||||||
|
fn unbounded_new(b: &mut Bencher) {
|
||||||
|
b.iter(|| {
|
||||||
|
let _ = test::black_box(&unbounded_channel::<i32>());
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
#[bench]
|
#[bench]
|
||||||
fn send_one_message(b: &mut Bencher) {
|
fn send_one_message(b: &mut Bencher) {
|
||||||
b.iter(|| {
|
b.iter(|| {
|
||||||
@ -24,7 +38,56 @@ mod tokio {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[bench]
|
#[bench]
|
||||||
fn unbounded_uncontended_1(b: &mut Bencher) {
|
fn bounded_rx_not_ready(b: &mut Bencher) {
|
||||||
|
let (_tx, mut rx) = channel::<i32>(1_000);
|
||||||
|
b.iter(|| {
|
||||||
|
future::lazy(|| {
|
||||||
|
assert!(rx.poll().unwrap().is_not_ready());
|
||||||
|
|
||||||
|
Ok::<_, ()>(())
|
||||||
|
}).wait().unwrap();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
#[bench]
|
||||||
|
fn bounded_tx_poll_ready(b: &mut Bencher) {
|
||||||
|
let (mut tx, rx) = channel::<i32>(1);
|
||||||
|
b.iter(|| {
|
||||||
|
future::lazy(|| {
|
||||||
|
assert!(tx.poll_ready().unwrap().is_ready());
|
||||||
|
|
||||||
|
Ok::<_, ()>(())
|
||||||
|
}).wait().unwrap();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
#[bench]
|
||||||
|
fn bounded_tx_poll_not_ready(b: &mut Bencher) {
|
||||||
|
let (mut tx, rx) = channel::<i32>(1);
|
||||||
|
tx.try_send(1).unwrap();
|
||||||
|
b.iter(|| {
|
||||||
|
future::lazy(|| {
|
||||||
|
assert!(tx.poll_ready().unwrap().is_not_ready());
|
||||||
|
|
||||||
|
Ok::<_, ()>(())
|
||||||
|
}).wait().unwrap();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
#[bench]
|
||||||
|
fn unbounded_rx_not_ready(b: &mut Bencher) {
|
||||||
|
let (_tx, mut rx) = unbounded_channel::<i32>();
|
||||||
|
b.iter(|| {
|
||||||
|
future::lazy(|| {
|
||||||
|
assert!(rx.poll().unwrap().is_not_ready());
|
||||||
|
|
||||||
|
Ok::<_, ()>(())
|
||||||
|
}).wait().unwrap();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
#[bench]
|
||||||
|
fn bounded_uncontended_1(b: &mut Bencher) {
|
||||||
b.iter(|| {
|
b.iter(|| {
|
||||||
let (mut tx, mut rx) = channel(1_000);
|
let (mut tx, mut rx) = channel(1_000);
|
||||||
|
|
||||||
@ -37,7 +100,7 @@ mod tokio {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[bench]
|
#[bench]
|
||||||
fn unbounded_uncontended_2(b: &mut Bencher) {
|
fn bounded_uncontended_2(b: &mut Bencher) {
|
||||||
b.iter(|| {
|
b.iter(|| {
|
||||||
let (mut tx, mut rx) = channel(1000);
|
let (mut tx, mut rx) = channel(1000);
|
||||||
|
|
||||||
@ -143,11 +206,25 @@ mod tokio {
|
|||||||
}
|
}
|
||||||
|
|
||||||
mod legacy {
|
mod legacy {
|
||||||
use futures::{Async, Stream, Sink};
|
use futures::{future, Async, Future, Stream, Sink};
|
||||||
use futures::sync::mpsc::*;
|
use futures::sync::mpsc::*;
|
||||||
use test::{self, Bencher};
|
use test::{self, Bencher};
|
||||||
use std::thread;
|
use std::thread;
|
||||||
|
|
||||||
|
#[bench]
|
||||||
|
fn bounded_new(b: &mut Bencher) {
|
||||||
|
b.iter(|| {
|
||||||
|
let _ = test::black_box(&channel::<i32>(1_000));
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
#[bench]
|
||||||
|
fn unbounded_new(b: &mut Bencher) {
|
||||||
|
b.iter(|| {
|
||||||
|
let _ = test::black_box(&unbounded::<i32>());
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
#[bench]
|
#[bench]
|
||||||
fn send_one_message(b: &mut Bencher) {
|
fn send_one_message(b: &mut Bencher) {
|
||||||
b.iter(|| {
|
b.iter(|| {
|
||||||
@ -161,6 +238,55 @@ mod legacy {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[bench]
|
||||||
|
fn bounded_rx_not_ready(b: &mut Bencher) {
|
||||||
|
let (_tx, mut rx) = channel::<i32>(1_000);
|
||||||
|
b.iter(|| {
|
||||||
|
future::lazy(|| {
|
||||||
|
assert!(rx.poll().unwrap().is_not_ready());
|
||||||
|
|
||||||
|
Ok::<_, ()>(())
|
||||||
|
}).wait().unwrap();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
#[bench]
|
||||||
|
fn bounded_tx_poll_ready(b: &mut Bencher) {
|
||||||
|
let (mut tx, rx) = channel::<i32>(0);
|
||||||
|
b.iter(|| {
|
||||||
|
future::lazy(|| {
|
||||||
|
assert!(tx.poll_ready().unwrap().is_ready());
|
||||||
|
|
||||||
|
Ok::<_, ()>(())
|
||||||
|
}).wait().unwrap();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
#[bench]
|
||||||
|
fn bounded_tx_poll_not_ready(b: &mut Bencher) {
|
||||||
|
let (mut tx, rx) = channel::<i32>(0);
|
||||||
|
tx.try_send(1).unwrap();
|
||||||
|
b.iter(|| {
|
||||||
|
future::lazy(|| {
|
||||||
|
assert!(tx.poll_ready().unwrap().is_not_ready());
|
||||||
|
|
||||||
|
Ok::<_, ()>(())
|
||||||
|
}).wait().unwrap();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
#[bench]
|
||||||
|
fn unbounded_rx_not_ready(b: &mut Bencher) {
|
||||||
|
let (_tx, mut rx) = unbounded::<i32>();
|
||||||
|
b.iter(|| {
|
||||||
|
future::lazy(|| {
|
||||||
|
assert!(rx.poll().unwrap().is_not_ready());
|
||||||
|
|
||||||
|
Ok::<_, ()>(())
|
||||||
|
}).wait().unwrap();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
#[bench]
|
#[bench]
|
||||||
fn unbounded_uncontended_1(b: &mut Bencher) {
|
fn unbounded_uncontended_1(b: &mut Bencher) {
|
||||||
b.iter(|| {
|
b.iter(|| {
|
||||||
|
@ -9,6 +9,13 @@ mod tokio {
|
|||||||
use tokio_sync::oneshot;
|
use tokio_sync::oneshot;
|
||||||
use test::{Bencher};
|
use test::{Bencher};
|
||||||
|
|
||||||
|
#[bench]
|
||||||
|
fn new(b: &mut Bencher) {
|
||||||
|
b.iter(|| {
|
||||||
|
let _ = ::test::black_box(&oneshot::channel::<i32>());
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
#[bench]
|
#[bench]
|
||||||
fn same_thread_send_recv(b: &mut Bencher) {
|
fn same_thread_send_recv(b: &mut Bencher) {
|
||||||
b.iter(|| {
|
b.iter(|| {
|
||||||
@ -113,6 +120,13 @@ mod legacy {
|
|||||||
use futures::sync::oneshot;
|
use futures::sync::oneshot;
|
||||||
use test::{Bencher};
|
use test::{Bencher};
|
||||||
|
|
||||||
|
#[bench]
|
||||||
|
fn new(b: &mut Bencher) {
|
||||||
|
b.iter(|| {
|
||||||
|
let _ = ::test::black_box(&oneshot::channel::<i32>());
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
#[bench]
|
#[bench]
|
||||||
fn same_thread_send_recv(b: &mut Bencher) {
|
fn same_thread_send_recv(b: &mut Bencher) {
|
||||||
b.iter(|| {
|
b.iter(|| {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user