1
0
Fork 0
firefox/third_party/rust/askama/benches/to-json.rs
Daniel Baumann 5e9a113729
Adding upstream version 140.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-25 09:37:52 +02:00

70 lines
1.8 KiB
Rust

use askama::Template;
use criterion::{Criterion, black_box, criterion_group, criterion_main};
criterion_main!(benches);
criterion_group!(benches, functions);
fn functions(c: &mut Criterion) {
c.bench_function("escape JSON", escape_json);
c.bench_function("escape JSON (pretty)", escape_json_pretty);
c.bench_function("escape JSON for HTML", escape_json_for_html);
c.bench_function("escape JSON for HTML (pretty)", escape_json_for_html_pretty);
}
fn escape_json(b: &mut criterion::Bencher<'_>) {
#[derive(Template)]
#[template(ext = "html", source = "{{self.0|json|safe}}")]
struct Tmpl(&'static str);
b.iter(|| {
let mut len = 0;
for &s in black_box(STRINGS) {
len += Tmpl(s).to_string().len();
}
len
});
}
fn escape_json_pretty(b: &mut criterion::Bencher<'_>) {
#[derive(Template)]
#[template(ext = "html", source = "{{self.0|json(2)|safe}}")]
struct Tmpl(&'static str);
b.iter(|| {
let mut len = 0;
for &s in black_box(STRINGS) {
len += Tmpl(s).to_string().len();
}
len
});
}
fn escape_json_for_html(b: &mut criterion::Bencher<'_>) {
#[derive(Template)]
#[template(ext = "html", source = "{{self.0|json}}")]
struct Tmpl(&'static str);
b.iter(|| {
let mut len = 0;
for &s in black_box(STRINGS) {
len += Tmpl(s).to_string().len();
}
len
});
}
fn escape_json_for_html_pretty(b: &mut criterion::Bencher<'_>) {
#[derive(Template)]
#[template(ext = "html", source = "{{self.0|json(2)}}")]
struct Tmpl(&'static str);
b.iter(|| {
let mut len = 0;
for &s in black_box(STRINGS) {
len += Tmpl(s).to_string().len();
}
len
});
}
const STRINGS: &[&str] = include!("strings.inc");