Skip to content

Commit d00d935

Browse files
414owentaiki-e
authored andcommitted
Add select benchmark (#2582)
1 parent 03e618b commit d00d935

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

futures-util/benches/select.rs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#![feature(test)]
2+
3+
extern crate test;
4+
use crate::test::Bencher;
5+
6+
use futures::executor::block_on;
7+
use futures::stream::{repeat, select, StreamExt};
8+
9+
#[bench]
10+
fn select_streams(b: &mut Bencher) {
11+
const STREAM_COUNT: usize = 10_000;
12+
13+
b.iter(|| {
14+
let stream1 = repeat(1).take(STREAM_COUNT);
15+
let stream2 = repeat(2).take(STREAM_COUNT);
16+
let stream3 = repeat(3).take(STREAM_COUNT);
17+
let stream4 = repeat(4).take(STREAM_COUNT);
18+
let stream5 = repeat(5).take(STREAM_COUNT);
19+
let stream6 = repeat(6).take(STREAM_COUNT);
20+
let stream7 = repeat(7).take(STREAM_COUNT);
21+
let count = block_on(async {
22+
let count = select(
23+
stream1,
24+
select(
25+
stream2,
26+
select(stream3, select(stream4, select(stream5, select(stream6, stream7)))),
27+
),
28+
)
29+
.count()
30+
.await;
31+
count
32+
});
33+
assert_eq!(count, STREAM_COUNT * 7);
34+
});
35+
}

0 commit comments

Comments
 (0)