From b2354be80a0a6c958b1f2feb4abd6900a47635ec Mon Sep 17 00:00:00 2001 From: Ning Sun Date: Sun, 9 Jul 2017 11:32:31 +0800 Subject: [PATCH] (test) added bench code for large each loop [#166] Signed-off-by: Ning Sun --- benches/bench.rs | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/benches/bench.rs b/benches/bench.rs index fc162d41a..fb4c3b816 100644 --- a/benches/bench.rs +++ b/benches/bench.rs @@ -2,6 +2,9 @@ extern crate handlebars; extern crate serde; extern crate serde_json; +#[macro_use] +extern crate serde_derive; + extern crate test; use std::collections::BTreeMap; @@ -66,3 +69,34 @@ fn render_template(b: &mut test::Bencher) { let data = make_data(); b.iter(|| handlebars.render("table", &data).ok().unwrap()) } + +#[derive(Serialize)] +struct DataWrapper { + v: String, +} + +#[derive(Serialize)] +struct RowWrapper { + real: Vec, + dummy: Vec, +} + +#[bench] +fn large_loop_helper(b: &mut test::Bencher) { + let mut handlebars = Handlebars::new(); + handlebars + .register_template_string("test", "BEFORE\n{{#each real}}{{this.v}}{{/each}}AFTER") + .ok() + .expect("Invalid template format"); + + let real: Vec = (1..1000) + .into_iter() + .map(|i| DataWrapper { v: format!("n={}", i) }) + .collect(); + let dummy: Vec = (1..1000) + .into_iter() + .map(|i| DataWrapper { v: format!("n={}", i) }) + .collect(); + let rows = RowWrapper { real, dummy }; + b.iter(|| handlebars.render("test", &rows).ok().unwrap()); +}