From e7fde0733b25b9e404743b1a49e06b12a0371cb5 Mon Sep 17 00:00:00 2001 From: Dirkjan Ochtman Date: Wed, 14 Nov 2018 15:57:22 +0100 Subject: Move escaping benchmarks into askama_escape crate --- askama_escape/Cargo.toml | 7 ++++ askama_escape/benches/all.rs | 78 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 askama_escape/benches/all.rs (limited to 'askama_escape') diff --git a/askama_escape/Cargo.toml b/askama_escape/Cargo.toml index 4df2a5f..ee84891 100644 --- a/askama_escape/Cargo.toml +++ b/askama_escape/Cargo.toml @@ -14,3 +14,10 @@ workspace = ".." appveyor = { repository = "djc/askama" } maintenance = { status = "actively-developed" } travis-ci = { repository = "djc/askama" } + +[dev-dependencies] +criterion = "0.2" + +[[bench]] +name = "all" +harness = false diff --git a/askama_escape/benches/all.rs b/askama_escape/benches/all.rs new file mode 100644 index 0000000..e7dc7ed --- /dev/null +++ b/askama_escape/benches/all.rs @@ -0,0 +1,78 @@ +extern crate askama_escape; +#[macro_use] +extern crate criterion; + +use askama_escape::MarkupDisplay; +use criterion::Criterion; + +criterion_main!(benches); +criterion_group!(benches, functions); + +fn functions(c: &mut Criterion) { + c.bench_function("Escaping", escaping); +} + +fn escaping(b: &mut criterion::Bencher) { + let string_long = r#" + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris consequat tellus sit + amet ornare fermentum. Etiam nec erat ante. In at metus a orci mollis scelerisque. + Sed eget ultrices turpis, at sollicitudin erat. Integer hendrerit nec magna quis + venenatis. Vivamus non dolor hendrerit, vulputate velit sed, varius nunc. Quisque + in pharetra mi. Sed ullamcorper nibh malesuada commodo porttitor. Ut scelerisque + sodales felis quis dignissim. Morbi aliquam finibus justo, sit amet consectetur + mauris efficitur sit amet. Donec posuere turpis felis, eu lacinia magna accumsan + quis. Fusce egestas lacus vel fermentum tincidunt. Phasellus a nulla eget lectus + placerat commodo at eget nisl. Fusce cursus dui quis purus accumsan auctor. + Donec iaculis felis quis metus consectetur porttitor. +

+ Etiam nibh mi, accumsan quis purus sed, posuere fermentum lorem. In pulvinar porta + maximus. Fusce tincidunt lacinia tellus sit amet tincidunt. Aliquam lacus est, pulvinar + non metus a, facilisis ultrices quam. Nulla feugiat leo in cursus eleifend. Suspendisse + eget nisi ac justo sagittis interdum id a ipsum. Nulla mauris justo, scelerisque ac + rutrum vitae, consequat vel ex. +

+

+ Sed sollicitudin sem mauris, at rutrum nibh egestas vel. Ut eu nisi tellus. Praesent dignissim + orci elementum, mattis turpis eget, maximus ante. Suspendisse luctus eu felis a tempor. Morbi + ac risus vitae sem molestie ullamcorper. Curabitur ligula augue, sollicitudin quis maximus vel, + facilisis sed nibh. Aenean auctor magna sem, id rutrum metus convallis quis. Nullam non arcu + dictum, lobortis erat quis, rhoncus est. Suspendisse venenatis, mi sed venenatis vehicula, + tortor dolor egestas lectus, et efficitur turpis odio non augue. Integer velit sapien, dictum + non egestas vitae, hendrerit sed quam. Phasellus a nunc eu erat varius imperdiet. Etiam id + sollicitudin turpis, vitae molestie orci. Quisque ornare magna quis metus rhoncus commodo. + Phasellus non mauris velit. +

+

+ Etiam dictum tellus ipsum, nec varius quam ornare vel. Cras vehicula diam nec sollicitudin + ultricies. Pellentesque rhoncus sagittis nisl id facilisis. Nunc viverra convallis risus ut + luctus. Aliquam vestibulum efficitur massa, id tempus nisi posuere a. Aliquam scelerisque + elit justo. Nullam a ante felis. Cras vitae lorem eu nisi feugiat hendrerit. Maecenas vitae + suscipit leo, lacinia dignissim lacus. Sed eget volutpat mi. In eu bibendum neque. Pellentesque + finibus velit a fermentum rhoncus. Maecenas leo purus, eleifend eu lacus a, condimentum sagittis + justo. +

"#; + let string_short = "Lorem ipsum dolor sit amet,bar&foo\"bar\\foo/bar"; + let empty = ""; + let no_escape = "Lorem ipsum dolor sit amet,"; + let no_escape_long = r#" +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin scelerisque eu urna in aliquet. +Phasellus ac nulla a urna sagittis consequat id quis est. Nullam eu ex eget erat accumsan dictum +ac lobortis urna. Etiam fermentum ut quam at dignissim. Curabitur vestibulum luctus tellus, sit +amet lobortis augue tempor faucibus. Nullam sed felis eget odio elementum euismod in sit amet massa. +Vestibulum sagittis purus sit amet eros auctor, sit amet pharetra purus dapibus. Donec ornare metus +vel dictum porta. Etiam ut nisl nisi. Nullam rutrum porttitor mi. Donec aliquam ac ipsum eget +hendrerit. Cras faucibus, eros ut pharetra imperdiet, est tellus aliquet felis, eget convallis +lacus ipsum eget quam. Vivamus orci lorem, maximus ac mi eget, bibendum vulputate massa. In +vestibulum dui hendrerit, vestibulum lacus sit amet, posuere erat. Vivamus euismod massa diam, +vulputate euismod lectus vestibulum nec. Donec sit amet massa magna. Nunc ipsum nulla, euismod +quis lacus at, gravida maximus elit. Duis tristique, nisl nullam. + "#; + + b.iter(|| { + format!("{}", MarkupDisplay::from(string_long)); + format!("{}", MarkupDisplay::from(string_short)); + format!("{}", MarkupDisplay::from(empty)); + format!("{}", MarkupDisplay::from(no_escape)); + format!("{}", MarkupDisplay::from(no_escape_long)); + }); +} -- cgit