diff options
Diffstat (limited to 'testing/benches')
-rw-r--r-- | testing/benches/all.rs | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/testing/benches/all.rs b/testing/benches/all.rs new file mode 100644 index 0000000..862bd06 --- /dev/null +++ b/testing/benches/all.rs @@ -0,0 +1,59 @@ +#[macro_use] +extern crate askama; +#[macro_use] +extern crate criterion; + +use askama::Template; +use criterion::Criterion; + +criterion_main!(benches); +criterion_group!(benches, functions); + +fn functions(c: &mut Criterion) { + c.bench_function("Big table", |b| big_table(b, &100)); + c.bench_function("Teams", |b| teams(b)); +} + +fn big_table(b: &mut criterion::Bencher, size: &usize) { + let mut table = Vec::with_capacity(*size); + for _ in 0..*size { + let mut inner = Vec::with_capacity(*size); + for i in 0..*size { + inner.push(i); + } + table.push(inner); + } + let ctx = BigTable { table }; + b.iter(|| ctx.render().unwrap()); +} + +#[derive(Template)] +#[template(path = "big-table.html")] +struct BigTable { + table: Vec<Vec<usize>>, +} + +fn teams(b: &mut criterion::Bencher) { + let teams = Teams { + year: 2015, + teams: vec![ + Team { name: "Jiangsu".into(), score: 43 }, + Team { name: "Beijing".into(), score: 27 }, + Team { name: "Guangzhou".into(), score: 22 }, + Team { name: "Shandong".into(), score: 12 }, + ], + }; + b.iter(|| teams.render().unwrap()); +} + +#[derive(Template)] +#[template(path = "teams.html")] +struct Teams { + year: u16, + teams: Vec<Team>, +} + +struct Team { + name: String, + score: u8, +} |