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