35 lines
1,019 B
Rust
35 lines
1,019 B
Rust
#![feature(test)]
|
|
|
|
extern crate test;
|
|
use crate::test::Bencher;
|
|
|
|
use futures::executor::block_on;
|
|
use futures::stream::{repeat, select, StreamExt};
|
|
|
|
#[bench]
|
|
fn select_streams(b: &mut Bencher) {
|
|
const STREAM_COUNT: usize = 10_000;
|
|
|
|
b.iter(|| {
|
|
let stream1 = repeat(1).take(STREAM_COUNT);
|
|
let stream2 = repeat(2).take(STREAM_COUNT);
|
|
let stream3 = repeat(3).take(STREAM_COUNT);
|
|
let stream4 = repeat(4).take(STREAM_COUNT);
|
|
let stream5 = repeat(5).take(STREAM_COUNT);
|
|
let stream6 = repeat(6).take(STREAM_COUNT);
|
|
let stream7 = repeat(7).take(STREAM_COUNT);
|
|
let count = block_on(async {
|
|
let count = select(
|
|
stream1,
|
|
select(
|
|
stream2,
|
|
select(stream3, select(stream4, select(stream5, select(stream6, stream7)))),
|
|
),
|
|
)
|
|
.count()
|
|
.await;
|
|
count
|
|
});
|
|
assert_eq!(count, STREAM_COUNT * 7);
|
|
});
|
|
}
|