Skip to content

Commit 87a86c2

Browse files
committed
Bench boxed boxed
1 parent 9f03c50 commit 87a86c2

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

benches/boxed_boxed.rs

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
#![feature(test)]
2+
3+
extern crate test;
4+
extern crate futures;
5+
6+
use test::Bencher;
7+
8+
use futures::Async;
9+
use futures::stream;
10+
use futures::stream::Stream;
11+
12+
13+
fn drain<S : Stream<Item=u32, Error=()>>(mut s: S) {
14+
loop {
15+
match s.poll() {
16+
Ok(Async::Ready(Some(i))) => { test::black_box(i); },
17+
Ok(Async::Ready(None)) => return,
18+
_ => unreachable!(),
19+
}
20+
}
21+
}
22+
23+
#[bench]
24+
fn plain(b: &mut Bencher) {
25+
b.iter(|| {
26+
drain(stream::iter::<_, _, ()>((0..1000).map(Ok)));
27+
})
28+
}
29+
30+
#[bench]
31+
fn boxed(b: &mut Bencher) {
32+
b.iter(|| {
33+
drain(stream::iter::<_, _, ()>((0..1000).map(Ok)).boxed());
34+
})
35+
}
36+
37+
#[bench]
38+
fn boxed_boxed(b: &mut Bencher) {
39+
b.iter(|| {
40+
drain(stream::iter::<_, _, ()>((0..1000).map(Ok)).boxed().boxed());
41+
})
42+
}
43+
44+
#[bench]
45+
fn boxed_boxed_boxed(b: &mut Bencher) {
46+
b.iter(|| {
47+
drain(stream::iter::<_, _, ()>((0..1000).map(Ok)).boxed().boxed().boxed());
48+
})
49+
}

0 commit comments

Comments
 (0)