File tree 1 file changed +34
-0
lines changed
1 file changed +34
-0
lines changed Original file line number Diff line number Diff line change 2
2
extern crate handlebars;
3
3
extern crate serde;
4
4
extern crate serde_json;
5
+ #[ macro_use]
6
+ extern crate serde_derive;
7
+
5
8
extern crate test;
6
9
7
10
use std:: collections:: BTreeMap ;
@@ -66,3 +69,34 @@ fn render_template(b: &mut test::Bencher) {
66
69
let data = make_data ( ) ;
67
70
b. iter ( || handlebars. render ( "table" , & data) . ok ( ) . unwrap ( ) )
68
71
}
72
+
73
+ #[ derive( Serialize ) ]
74
+ struct DataWrapper {
75
+ v : String ,
76
+ }
77
+
78
+ #[ derive( Serialize ) ]
79
+ struct RowWrapper {
80
+ real : Vec < DataWrapper > ,
81
+ dummy : Vec < DataWrapper > ,
82
+ }
83
+
84
+ #[ bench]
85
+ fn large_loop_helper ( b : & mut test:: Bencher ) {
86
+ let mut handlebars = Handlebars :: new ( ) ;
87
+ handlebars
88
+ . register_template_string ( "test" , "BEFORE\n {{#each real}}{{this.v}}{{/each}}AFTER" )
89
+ . ok ( )
90
+ . expect ( "Invalid template format" ) ;
91
+
92
+ let real: Vec < DataWrapper > = ( 1 ..1000 )
93
+ . into_iter ( )
94
+ . map ( |i| DataWrapper { v : format ! ( "n={}" , i) } )
95
+ . collect ( ) ;
96
+ let dummy: Vec < DataWrapper > = ( 1 ..1000 )
97
+ . into_iter ( )
98
+ . map ( |i| DataWrapper { v : format ! ( "n={}" , i) } )
99
+ . collect ( ) ;
100
+ let rows = RowWrapper { real, dummy } ;
101
+ b. iter ( || handlebars. render ( "test" , & rows) . ok ( ) . unwrap ( ) ) ;
102
+ }
You can’t perform that action at this time.
0 commit comments