From e97357d282ff3c7eaa64971a282e6af35b8d3cdd Mon Sep 17 00:00:00 2001 From: Sujay Jayakar Date: Fri, 27 Apr 2018 13:37:08 +0530 Subject: [PATCH] Add benchmarks --- benches/bench.rs | 56 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 benches/bench.rs diff --git a/benches/bench.rs b/benches/bench.rs new file mode 100644 index 0000000..ba1c8ba --- /dev/null +++ b/benches/bench.rs @@ -0,0 +1,56 @@ +#![feature(test)] +#![feature(iterator_step_by)] +extern crate unicode_normalization; +extern crate test; + +use test::Bencher; +use unicode_normalization::UnicodeNormalization; + +macro_rules! bench_check { + ($b: ident, $s: expr, $form: ident) => { + let s = $s; + $b.iter(|| s.chars().eq(s.$form())); + } +} + +#[bench] +fn bench_is_nfc_ascii(b: &mut Bencher) { + bench_check!(b, "all types of normalized", nfc); +} + +#[bench] +fn bench_is_nfc_normalized(b: &mut Bencher) { + bench_check!(b, "Introducci\u{00f3}n a Unicode.pdf", nfc); +} + +#[bench] +fn bench_is_nfc_not_normalized(b: &mut Bencher) { + bench_check!(b, "Introduccio\u{0301}n a Unicode.pdf", nfc); +} + +#[bench] +fn bench_is_nfd_ascii(b: &mut Bencher) { + bench_check!(b, "an easy string to check", nfd); +} + +#[bench] +fn bench_is_nfd_normalized(b: &mut Bencher) { + bench_check!(b, "Introduccio\u{0301}n a Unicode.pdf", nfd); +} + +#[bench] +fn bench_is_nfd_not_normalized(b: &mut Bencher) { + bench_check!(b, "Introducci\u{00f3}n a Unicode.pdf", nfd); +} + +#[bench] +fn bench_nfc_ascii(b: &mut Bencher) { + let s = "normalize me please"; + b.iter(|| s.nfc().count()); +} + +#[bench] +fn bench_nfd_ascii(b: &mut Bencher) { + let s = "decompose me entirely"; + b.iter(|| s.nfd().count()); +}