@@ -2,141 +2,151 @@ use criterion::*;
2
2
use futures:: executor;
3
3
4
4
fn bench_stream_iter ( c : & mut Criterion ) {
5
- executor:: block_on ( async {
6
5
let mut group = c. benchmark_group ( "stream::iter" ) ;
7
6
8
7
group. bench_function ( "futures" , |b| {
9
- b. iter ( move || async {
10
- use futures:: stream:: { iter, StreamExt } ;
11
- let mut stream = iter ( 1 ..=1000 ) ;
12
- while let Some ( item) = stream. next ( ) . await {
13
- black_box ( item) ;
14
- }
8
+ b. iter ( || {
9
+ executor:: block_on ( async {
10
+ use futures:: stream:: { iter, StreamExt } ;
11
+ let mut stream = iter ( 1 ..=1000 ) ;
12
+ while let Some ( item) = stream. next ( ) . await {
13
+ black_box ( item) ;
14
+ }
15
+ } )
15
16
} )
16
17
} ) ;
17
18
group. bench_function ( "async_combinators" , |b| {
18
- b. iter ( move || async {
19
- use futures:: stream:: StreamExt ;
20
- use futures_async_combinators:: stream:: iter;
21
- let mut stream = iter ( 1 ..=1000 ) ;
22
- while let Some ( item) = stream. next ( ) . await {
23
- black_box ( item) ;
24
- }
19
+ b. iter ( || {
20
+ executor:: block_on ( async {
21
+ use futures:: stream:: StreamExt ;
22
+ use futures_async_combinators:: stream:: iter;
23
+ let mut stream = iter ( 1 ..=1000 ) ;
24
+ while let Some ( item) = stream. next ( ) . await {
25
+ black_box ( item) ;
26
+ }
27
+ } )
25
28
} )
26
29
} ) ;
27
30
28
31
group. finish ( ) ;
29
- } ) ;
30
32
}
31
33
32
34
fn bench_stream_next ( c : & mut Criterion ) {
33
- executor:: block_on ( async {
34
35
let mut group = c. benchmark_group ( "stream::next" ) ;
35
36
36
37
group. bench_function ( "futures" , |b| {
37
- b. iter ( move || async {
38
- use futures:: stream:: { iter, StreamExt } ;
39
- let mut stream = iter ( 1 ..=1000 ) ;
40
- while let Some ( item) = stream. next ( ) . await {
41
- black_box ( item) ;
42
- }
38
+ b. iter ( || {
39
+ executor:: block_on ( async {
40
+ use futures:: stream:: { iter, StreamExt } ;
41
+ let mut stream = iter ( 1 ..=1000 ) ;
42
+ while let Some ( item) = stream. next ( ) . await {
43
+ black_box ( item) ;
44
+ }
45
+ } )
43
46
} )
44
47
} ) ;
45
48
group. bench_function ( "async_combinators" , |b| {
46
- b. iter ( move || async {
47
- use futures:: stream:: iter;
48
- use futures_async_combinators:: stream:: next;
49
- let mut stream = iter ( 1 ..=1000 ) ;
50
- while let Some ( item) = next ( & mut stream) . await {
51
- black_box ( item) ;
52
- }
49
+ b. iter ( || {
50
+ executor:: block_on ( async {
51
+ use futures:: stream:: iter;
52
+ use futures_async_combinators:: stream:: next;
53
+ let mut stream = iter ( 1 ..=1000 ) ;
54
+ while let Some ( item) = next ( & mut stream) . await {
55
+ black_box ( item) ;
56
+ }
57
+ } )
53
58
} )
54
59
} ) ;
55
60
56
61
group. finish ( ) ;
57
- } ) ;
58
62
}
59
63
60
64
fn bench_stream_collect ( c : & mut Criterion ) {
61
- executor:: block_on ( async {
62
- let mut group = c. benchmark_group ( "stream::collect" ) ;
65
+ let mut group = c. benchmark_group ( "stream::collect" ) ;
63
66
64
- group. bench_function ( "futures" , |b| {
65
- b. iter ( move || async {
67
+ group. bench_function ( "futures" , |b| {
68
+ b. iter ( || {
69
+ executor:: block_on ( async {
66
70
use futures:: stream:: { iter, StreamExt } ;
67
71
let stream = iter ( 1 ..=1000 ) ;
68
72
let vec: Vec < _ > = stream. collect ( ) . await ;
69
- black_box ( vec)
73
+ black_box ( vec) ;
70
74
} )
71
- } ) ;
72
- group. bench_function ( "async_combinators" , |b| {
73
- b. iter ( move || async {
75
+ } )
76
+ } ) ;
77
+ group. bench_function ( "async_combinators" , |b| {
78
+ b. iter ( || {
79
+ executor:: block_on ( async {
74
80
use futures:: stream:: iter;
75
81
use futures_async_combinators:: stream:: collect;
76
82
let stream = iter ( 1 ..=1000 ) ;
77
83
let vec: Vec < _ > = collect ( stream) . await ;
78
- black_box ( vec)
84
+ black_box ( vec) ;
79
85
} )
80
- } ) ;
81
-
82
- group. finish ( ) ;
86
+ } )
83
87
} ) ;
88
+
89
+ group. finish ( ) ;
84
90
}
85
91
86
92
fn bench_stream_map ( c : & mut Criterion ) {
87
- executor:: block_on ( async {
88
93
let mut group = c. benchmark_group ( "stream::map" ) ;
89
94
90
95
group. bench_function ( "futures" , |b| {
91
- b. iter ( move || async {
92
- use futures:: stream:: { iter, StreamExt } ;
93
- let stream = iter ( 1 ..=1000 ) ;
94
- let stream = stream. map ( |x| x + 42 ) ;
95
- let vec: Vec < _ > = stream. collect ( ) . await ;
96
- black_box ( vec)
96
+ b. iter ( || {
97
+ executor:: block_on ( async {
98
+ use futures:: stream:: { iter, StreamExt } ;
99
+ let stream = iter ( 1 ..=1000 ) ;
100
+ let stream = stream. map ( |x| x + 42 ) ;
101
+ let vec: Vec < _ > = stream. collect ( ) . await ;
102
+ black_box ( vec) ;
103
+ } )
97
104
} )
98
105
} ) ;
99
106
group. bench_function ( "async_combinators" , |b| {
100
- b. iter ( move || async {
101
- use futures:: stream:: { iter, StreamExt } ;
102
- use futures_async_combinators:: stream:: map;
103
- let stream = iter ( 1 ..=1000 ) ;
104
- let stream = map ( stream, |x| x + 42 ) ;
105
- let vec: Vec < _ > = stream. collect ( ) . await ;
106
- black_box ( vec)
107
+ b. iter ( || {
108
+ executor:: block_on ( async {
109
+ use futures:: stream:: { iter, StreamExt } ;
110
+ use futures_async_combinators:: stream:: map;
111
+ let stream = iter ( 1 ..=1000 ) ;
112
+ let stream = map ( stream, |x| x + 42 ) ;
113
+ let vec: Vec < _ > = stream. collect ( ) . await ;
114
+ black_box ( vec) ;
115
+ } )
107
116
} )
108
117
} ) ;
109
118
110
119
group. finish ( ) ;
111
- } ) ;
112
120
}
113
121
114
122
fn bench_stream_fold ( c : & mut Criterion ) {
115
- executor:: block_on ( async {
116
123
let mut group = c. benchmark_group ( "stream::fold" ) ;
117
124
118
125
group. bench_function ( "futures" , |b| {
119
- b. iter ( move || async {
120
- use futures:: stream:: { iter, StreamExt } ;
121
- use futures_async_combinators:: future:: ready;
122
- let stream = iter ( 1 ..=1000 ) ;
123
- let acc = stream. fold ( 0 , |acc, x| ready ( acc + x) ) ;
124
- black_box ( acc) . await
126
+ b. iter ( || {
127
+ executor:: block_on ( async {
128
+ use futures:: stream:: { iter, StreamExt } ;
129
+ use futures_async_combinators:: future:: ready;
130
+ let stream = iter ( 1 ..=1000 ) ;
131
+ let acc = stream. fold ( 0 , |acc, x| ready ( acc + x) ) ;
132
+ black_box ( acc) . await ;
133
+ } )
125
134
} )
126
135
} ) ;
127
136
group. bench_function ( "async_combinators" , |b| {
128
- b. iter ( move || async {
129
- use futures:: stream:: iter;
130
- use futures_async_combinators:: future:: ready;
131
- use futures_async_combinators:: stream:: fold;
132
- let stream = iter ( 1 ..=1000 ) ;
133
- let acc = fold ( stream, 0 , |acc, x| ready ( acc + x) ) ;
134
- black_box ( acc) . await
137
+ b. iter ( || {
138
+ executor:: block_on ( async {
139
+ use futures:: stream:: iter;
140
+ use futures_async_combinators:: future:: ready;
141
+ use futures_async_combinators:: stream:: fold;
142
+ let stream = iter ( 1 ..=1000 ) ;
143
+ let acc = fold ( stream, 0 , |acc, x| ready ( acc + x) ) ;
144
+ black_box ( acc) . await ;
145
+ } )
135
146
} )
136
147
} ) ;
137
148
138
149
group. finish ( ) ;
139
- } ) ;
140
150
}
141
151
142
152
criterion_group ! (
0 commit comments