Skip to content

Commit e611aa3

Browse files
committed
Add filters benchmark
1 parent a9166d3 commit e611aa3

File tree

2 files changed

+162
-0
lines changed

2 files changed

+162
-0
lines changed

rinja_derive_standalone/Cargo.toml

+5
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@ name = "derive-template"
2020
harness = false
2121
required-features = ["__standalone"]
2222

23+
[[bench]]
24+
name = "filters"
25+
harness = false
26+
required-features = ["__standalone"]
27+
2328
[dependencies]
2429
parser = { package = "rinja_parser", version = "=0.3.5", path = "../rinja_parser" }
2530

+157
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
use criterion::{BatchSize, Criterion, criterion_group, criterion_main};
2+
use quote::quote;
3+
4+
criterion_main!(benches);
5+
criterion_group!(
6+
benches,
7+
noop,
8+
no_filters,
9+
few_filters,
10+
all_filters,
11+
some_filters_twice,
12+
);
13+
14+
fn noop(c: &mut Criterion) {
15+
let ts = quote! {
16+
#[derive(Template)]
17+
#[template(source = "", ext = "html")]
18+
struct Hello;
19+
};
20+
c.bench_function("noop", |b| {
21+
b.iter_batched(
22+
|| ts.clone(),
23+
rinja_derive_standalone::derive_template,
24+
BatchSize::LargeInput,
25+
);
26+
});
27+
}
28+
29+
fn no_filters(c: &mut Criterion) {
30+
let ts = quote! {
31+
#[derive(Template)]
32+
#[template(
33+
source = "\
34+
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod \
35+
tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At \
36+
vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, \
37+
no sea takimata sanctus est Lorem ipsum dolor sit amet.\
38+
",
39+
ext = "html"
40+
)]
41+
struct Hello;
42+
};
43+
c.bench_function("no_filters", |b| {
44+
b.iter_batched(
45+
|| ts.clone(),
46+
rinja_derive_standalone::derive_template,
47+
BatchSize::LargeInput,
48+
);
49+
});
50+
}
51+
52+
fn few_filters(c: &mut Criterion) {
53+
let ts = quote! {
54+
#[derive(Template)]
55+
#[template(
56+
source = "\
57+
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod \
58+
tempor invidunt ut labore et dolore {{ user | upper }} erat, sed diam voluptua. At \
59+
vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, \
60+
no sea takimata sanctus est {{ user | uppercase | safe }} ipsum dolor sit amet.\
61+
",
62+
ext = "html"
63+
)]
64+
struct Hello<'a> {
65+
user: &'a str
66+
}
67+
};
68+
c.bench_function("few_filters", |b| {
69+
b.iter_batched(
70+
|| ts.clone(),
71+
rinja_derive_standalone::derive_template,
72+
BatchSize::LargeInput,
73+
);
74+
});
75+
}
76+
77+
fn all_filters(c: &mut Criterion) {
78+
let ts = quote! {
79+
#[derive(Template)]
80+
#[template(
81+
source = "\
82+
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, {{ user | capitalize }} \
83+
sed diam nonumy eirmod tempor invidunt ut labore et dolore {{ user | center(10) }} \
84+
magna aliquyam erat, sed diam voluptua. At vero eos et accusam {{ user | deref }} \
85+
et justo duo dolores et ea rebum. Stet clita kasd gubergren, {{ user | escape }} \
86+
no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem {{ user | e }} \
87+
ipsum dolor sit amet, consetetur sadipscing elitr, sed {{ user | filesizeformat }} \
88+
diam nonumy eirmod tempor invidunt ut labore et dolore {{ user | fmt(\":?\") }} \
89+
magna aliquyam erat, sed diam voluptua. At vero eos {{ \"{:?}\" | format(user) }} \
90+
et accusam et justo duo dolores et ea rebum. Stet clita {{ user | indent(10) }} \
91+
kasd gubergren, no sea takimata sanctus {{ [user, user, user] | join(\", \") }} \
92+
est orem ipsum dolor sit amet. Lorem ipsum dolor sit {{ user | linebreaks }} \
93+
amet, consetetur sadipscing elitr, sed diam nonumy {{ user | linebreaksbr }} \
94+
eirmod tempor invidunt ut labore et dolore magna {{ user | paragraphbreaks }} \
95+
aliquyam erat, sed diam voluptua. At vero eos et accusam et {{ user | lower }} \
96+
justo duo dolores et ea rebum. Stet clita kasd gubergren, {{ user | lowercase }} \
97+
no sea takimata sanctus est Lorem ipsum dolor sit amet {{ user | pluralize}}.\n\
98+
\n\
99+
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam {{ user | ref }} \
100+
nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam {{ user | safe }} \
101+
erat, sed diam voluptua. At vero eos et accusam et justo duo {{ user | title }} \
102+
dolores et ea rebum. Stet clita kasd gubergren, no sea takimata {{ user | trim }} \
103+
sanctus est Lorem ipsum dolor sit amet. Lorem ipsum {{ user | truncate(10) }} \
104+
dolor sit amet, consetetur sadipscing elitr, sed diam nonumy {{ user | upper }} \
105+
eirmod tempor invidunt ut labore et dolore magna aliquyam {{ user | uppercase }} \
106+
erat, sed diam voluptua. At vero eos et accusam et justo {{ user | urlencode }} \
107+
duo dolores et ea rebum. Stet clita kasd gubergren, {{ user | urlencode_strict }} \
108+
no sea takimata sanctus est Lorem ipsum {{ [user, user, user] | join(\", \") }} \
109+
dolor sit amet. Lorem ipsum dolor sit amet, consetetur {{ user | wordcount }} \
110+
sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut {{ user | custom }} \
111+
labore et dolore magna aliquyam erat, sed diam {{ user | also_custom(42) }} \
112+
voluptua. At vero eos et accusam et justo duo {{ user | even::<More>(custom) }} \
113+
dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est \
114+
Lorem ipsum dolor sit amet.\
115+
",
116+
ext = "html"
117+
)]
118+
struct Hello<'a> {
119+
user: &'a str
120+
}
121+
};
122+
c.bench_function("all_filters", |b| {
123+
b.iter_batched(
124+
|| ts.clone(),
125+
rinja_derive_standalone::derive_template,
126+
BatchSize::LargeInput,
127+
);
128+
});
129+
}
130+
131+
fn some_filters_twice(c: &mut Criterion) {
132+
let ts = quote! {
133+
#[derive(Template)]
134+
#[template(
135+
source = "\
136+
Lorem ipsum dolor sit amet, consetetur {{ user | capitalize | center(10) }} \
137+
sadipscing elitr, sed diam nonumy eirmod tempor {{ user | center(10) | deref }} \
138+
invidunt ut labore et dolore magna aliquyam erat, {{ user | deref | escape }} \
139+
sed diam voluptua. At vero eos et accusam et justo duo {{ user | escape | e }} \
140+
dolores et ea rebum. Stet clita kasd gubergren, {{ user | e | filesizeformat }} \
141+
no sea takimata sanctus est Lorem ipsum {{ user | filesizeformat | fmt(\":?\") }}\
142+
Lorem ipsum dolor sit amet.\
143+
",
144+
ext = "html"
145+
)]
146+
struct Hello<'a> {
147+
user: &'a str
148+
}
149+
};
150+
c.bench_function("some_filters_twice", |b| {
151+
b.iter_batched(
152+
|| ts.clone(),
153+
rinja_derive_standalone::derive_template,
154+
BatchSize::LargeInput,
155+
);
156+
});
157+
}

0 commit comments

Comments
 (0)