Skip to content

Commit

Permalink
(test) added bench code for large each loop [#166]
Browse files Browse the repository at this point in the history
Signed-off-by: Ning Sun <sunng@about.me>
  • Loading branch information
sunng87 committed Jul 9, 2017
1 parent 6010f6a commit b2354be
Showing 1 changed file with 34 additions and 0 deletions.
34 changes: 34 additions & 0 deletions benches/bench.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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<DataWrapper>,
dummy: Vec<DataWrapper>,
}

#[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<DataWrapper> = (1..1000)
.into_iter()
.map(|i| DataWrapper { v: format!("n={}", i) })
.collect();
let dummy: Vec<DataWrapper> = (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());
}

0 comments on commit b2354be

Please sign in to comment.