File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 22extern crate handlebars;
33extern crate serde;
44extern crate serde_json;
5+ #[ macro_use]
6+ extern crate serde_derive;
7+
58extern crate test;
69
710use std:: collections:: BTreeMap ;
@@ -66,3 +69,34 @@ fn render_template(b: &mut test::Bencher) {
6669 let data = make_data ( ) ;
6770 b. iter ( || handlebars. render ( "table" , & data) . ok ( ) . unwrap ( ) )
6871}
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