blob: d4ffc96a19021a13aa2ef069c7488ddd66d89048 [file] [log] [blame] [edit]
use std::fs;
use bencher::{benchmark_group, benchmark_main, Bencher};
#[cfg(unix)]
const TEXT_PATH: &str = "benches/data/vgilante.txt";
#[cfg(windows)]
const TEXT_PATH: &str = r"benches\data\vgilante.txt";
macro_rules! benchmark_impl {
($g:ident, $f:ident, $f_to_string:ident, $f_to_writer:ident) => {
fn $f(bencher: &mut Bencher) {
let text = fs::read_to_string(TEXT_PATH).unwrap();
let length = text.len();
bencher.iter(|| html_escape::$f(text.as_str()));
bencher.bytes = length as u64;
}
fn $f_to_string(bencher: &mut Bencher) {
let text = fs::read_to_string(TEXT_PATH).unwrap();
let length = text.len();
bencher.iter(|| {
let mut s = String::new();
html_escape::$f_to_string(text.as_str(), &mut s);
s
});
bencher.bytes = length as u64;
}
fn $f_to_writer(bencher: &mut Bencher) {
let text = fs::read_to_string(TEXT_PATH).unwrap();
let length = text.len();
bencher.iter(|| {
let mut v = Vec::new();
html_escape::$f_to_writer(text.as_str(), &mut v).unwrap();
v
});
bencher.bytes = length as u64;
}
benchmark_group!($g, $f, $f_to_string, $f_to_writer);
};
}
benchmark_impl!(
text_minimal,
encode_text_minimal,
encode_text_minimal_to_string,
encode_text_minimal_to_writer
);
benchmark_impl!(text, encode_text, encode_text_to_string, encode_text_to_writer);
benchmark_impl!(
double_quoted_attribute,
encode_double_quoted_attribute,
encode_double_quoted_attribute_to_string,
encode_double_quoted_attribute_to_writer
);
benchmark_impl!(
single_quoted_attribute,
encode_single_quoted_attribute,
encode_single_quoted_attribute_to_string,
encode_single_quoted_attribute_to_writer
);
benchmark_impl!(
quoted_attribute,
encode_quoted_attribute,
encode_quoted_attribute_to_string,
encode_quoted_attribute_to_writer
);
benchmark_impl!(
unquoted_attribute,
encode_unquoted_attribute,
encode_unquoted_attribute_to_string,
encode_unquoted_attribute_to_writer
);
benchmark_impl!(safe, encode_safe, encode_safe_to_string, encode_safe_to_writer);
benchmark_impl!(script, encode_script, encode_script_to_string, encode_script_to_writer);
benchmark_impl!(
script_single_quoted_text,
encode_script_single_quoted_text,
encode_script_single_quoted_text_to_string,
encode_script_single_quoted_text_to_writer
);
benchmark_impl!(
script_double_quoted_text,
encode_script_double_quoted_text,
encode_script_double_quoted_text_to_string,
encode_script_double_quoted_text_to_writer
);
benchmark_impl!(
script_quoted_text,
encode_script_quoted_text,
encode_script_quoted_text_to_string,
encode_script_quoted_text_to_writer
);
benchmark_impl!(style, encode_style, encode_style_to_string, encode_style_to_writer);
benchmark_impl!(
style_single_quoted_text,
encode_style_single_quoted_text,
encode_style_single_quoted_text_to_string,
encode_style_single_quoted_text_to_writer
);
benchmark_impl!(
style_double_quoted_text,
encode_style_double_quoted_text,
encode_style_double_quoted_text_to_string,
encode_style_double_quoted_text_to_writer
);
benchmark_impl!(
style_quoted_text,
encode_style_quoted_text,
encode_style_quoted_text_to_string,
encode_style_quoted_text_to_writer
);
benchmark_main!(
text_minimal,
text,
double_quoted_attribute,
single_quoted_attribute,
quoted_attribute,
unquoted_attribute,
safe,
script,
script_single_quoted_text,
script_double_quoted_text,
script_quoted_text,
style,
style_single_quoted_text,
style_double_quoted_text,
style_quoted_text,
);