Skip to content

Commit a6c7842

Browse files
committed
(test) added bench code for large each loop [#166]
Signed-off-by: Ning Sun <[email protected]>
1 parent 6010f6a commit a6c7842

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

benches/bench.rs

+34
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
extern crate handlebars;
33
extern crate serde;
44
extern crate serde_json;
5+
#[macro_use]
6+
extern crate serde_derive;
7+
58
extern crate test;
69

710
use 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..10000)
93+
.into_iter()
94+
.map(|i| DataWrapper { v: format!("n={}", i) })
95+
.collect();
96+
let dummy: Vec<DataWrapper> = (1..10000)
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+
}

0 commit comments

Comments
 (0)