File tree 1 file changed +49
-0
lines changed
1 file changed +49
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments