diff options
Diffstat (limited to 'benches/bench.rs')
-rw-r--r-- | benches/bench.rs | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/benches/bench.rs b/benches/bench.rs new file mode 100644 index 0000000..6fd7935 --- /dev/null +++ b/benches/bench.rs @@ -0,0 +1,43 @@ +#![feature(async_await, test)] + +extern crate test; + +use futures::channel::oneshot; +use futures::executor; +use futures::future::TryFutureExt; +use test::Bencher; + +#[bench] +fn task_create(b: &mut Bencher) { + b.iter(|| { + async_task::spawn(async {}, drop, ()); + }); +} + +#[bench] +fn task_run(b: &mut Bencher) { + b.iter(|| { + let (task, handle) = async_task::spawn(async {}, drop, ()); + task.run(); + executor::block_on(handle).unwrap(); + }); +} + +#[bench] +fn oneshot_create(b: &mut Bencher) { + b.iter(|| { + let (tx, _rx) = oneshot::channel::<()>(); + let _task = Box::new(async move { tx.send(()).map_err(|_| ()) }); + }); +} + +#[bench] +fn oneshot_run(b: &mut Bencher) { + b.iter(|| { + let (tx, rx) = oneshot::channel::<()>(); + let task = Box::new(async move { tx.send(()).map_err(|_| ()) }); + + let future = task.and_then(|_| rx.map_err(|_| ())); + executor::block_on(future).unwrap(); + }); +} |