mirror of
https://git.proxmox.com/git/rustc
synced 2025-08-17 06:34:22 +00:00
149 lines
3.8 KiB
Rust
149 lines
3.8 KiB
Rust
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,
|
|
);
|