blob: c8f43d1a04a2d8e6bea819eda84b0d9b00fb089a [file] [log] [blame]
Yuki Okushi226b2522019-09-01 03:46:57 +09001#![feature(test)]
Stjepan Glavina1479e862019-08-12 20:18:51 +02002
3extern crate test;
4
5use futures::channel::oneshot;
6use futures::executor;
7use futures::future::TryFutureExt;
8use test::Bencher;
9
10#[bench]
11fn task_create(b: &mut Bencher) {
12 b.iter(|| {
13 async_task::spawn(async {}, drop, ());
14 });
15}
16
17#[bench]
18fn task_run(b: &mut Bencher) {
19 b.iter(|| {
20 let (task, handle) = async_task::spawn(async {}, drop, ());
21 task.run();
22 executor::block_on(handle).unwrap();
23 });
24}
25
26#[bench]
27fn oneshot_create(b: &mut Bencher) {
28 b.iter(|| {
29 let (tx, _rx) = oneshot::channel::<()>();
30 let _task = Box::new(async move { tx.send(()).map_err(|_| ()) });
31 });
32}
33
34#[bench]
35fn oneshot_run(b: &mut Bencher) {
36 b.iter(|| {
37 let (tx, rx) = oneshot::channel::<()>();
38 let task = Box::new(async move { tx.send(()).map_err(|_| ()) });
39
40 let future = task.and_then(|_| rx.map_err(|_| ()));
41 executor::block_on(future).unwrap();
42 });
43}