161 lines
3.7 KiB
Rust
161 lines
3.7 KiB
Rust
#![cfg(nightly)]
|
|
#![feature(test)]
|
|
|
|
extern crate test;
|
|
|
|
use std::cmp::Ordering;
|
|
|
|
use test::Bencher;
|
|
|
|
use hickory_proto::rr::*;
|
|
|
|
#[bench]
|
|
fn name_cmp_short(b: &mut Bencher) {
|
|
let name1 = Name::from_ascii("com").unwrap();
|
|
let name2 = Name::from_ascii("COM").unwrap();
|
|
|
|
b.iter(|| {
|
|
assert_eq!(name1.cmp(&name2), Ordering::Equal);
|
|
});
|
|
}
|
|
|
|
#[bench]
|
|
fn name_cmp_short_not_eq(b: &mut Bencher) {
|
|
let name1 = Name::from_ascii("com").unwrap();
|
|
let name2 = Name::from_ascii("COM").unwrap();
|
|
|
|
b.iter(|| {
|
|
assert_ne!(name1.cmp_case(&name2), Ordering::Equal);
|
|
});
|
|
}
|
|
|
|
#[bench]
|
|
fn name_cmp_short_case(b: &mut Bencher) {
|
|
let name1 = Name::from_ascii("com").unwrap();
|
|
let name2 = Name::from_ascii("com").unwrap();
|
|
|
|
b.iter(|| {
|
|
assert_eq!(name1.cmp_case(&name2), Ordering::Equal);
|
|
});
|
|
}
|
|
|
|
#[bench]
|
|
fn name_cmp_medium(b: &mut Bencher) {
|
|
let name1 = Name::from_ascii("www.example.com").unwrap();
|
|
let name2 = Name::from_ascii("www.EXAMPLE.com").unwrap();
|
|
|
|
b.iter(|| {
|
|
assert_eq!(name1.cmp(&name2), Ordering::Equal);
|
|
});
|
|
}
|
|
|
|
#[bench]
|
|
fn name_cmp_medium_not_eq(b: &mut Bencher) {
|
|
let name1 = Name::from_ascii("www.example.com").unwrap();
|
|
let name2 = Name::from_ascii("www.EXAMPLE.com").unwrap();
|
|
|
|
b.iter(|| {
|
|
assert_ne!(name1.cmp_case(&name2), Ordering::Equal);
|
|
});
|
|
}
|
|
|
|
#[bench]
|
|
fn name_cmp_medium_case(b: &mut Bencher) {
|
|
let name1 = Name::from_ascii("www.example.com").unwrap();
|
|
let name2 = Name::from_ascii("www.example.com").unwrap();
|
|
|
|
b.iter(|| {
|
|
assert_eq!(name1.cmp_case(&name2), Ordering::Equal);
|
|
});
|
|
}
|
|
|
|
#[bench]
|
|
fn name_cmp_long(b: &mut Bencher) {
|
|
let name1 = Name::from_ascii("a.crazy.really.long.example.com").unwrap();
|
|
let name2 = Name::from_ascii("a.crazy.really.long.EXAMPLE.com").unwrap();
|
|
|
|
b.iter(|| {
|
|
assert_eq!(name1.cmp(&name2), Ordering::Equal);
|
|
});
|
|
}
|
|
|
|
#[bench]
|
|
fn name_cmp_long_not_eq(b: &mut Bencher) {
|
|
let name1 = Name::from_ascii("a.crazy.really.long.example.com").unwrap();
|
|
let name2 = Name::from_ascii("a.crazy.really.long.EXAMPLE.com").unwrap();
|
|
|
|
b.iter(|| {
|
|
assert_ne!(name1.cmp_case(&name2), Ordering::Equal);
|
|
});
|
|
}
|
|
|
|
#[bench]
|
|
fn name_cmp_long_case(b: &mut Bencher) {
|
|
let name1 = Name::from_ascii("a.crazy.really.long.example.com").unwrap();
|
|
let name2 = Name::from_ascii("a.crazy.really.long.example.com").unwrap();
|
|
|
|
b.iter(|| {
|
|
assert_eq!(name1.cmp_case(&name2), Ordering::Equal);
|
|
});
|
|
}
|
|
|
|
#[bench]
|
|
fn name_to_lower_short(b: &mut Bencher) {
|
|
let name1 = Name::from_ascii("COM").unwrap();
|
|
|
|
b.iter(|| {
|
|
let lower = name1.to_lowercase();
|
|
assert_eq!(lower.num_labels(), 1);
|
|
});
|
|
}
|
|
|
|
#[bench]
|
|
fn name_to_lower_medium(b: &mut Bencher) {
|
|
let name1 = Name::from_ascii("example.COM").unwrap();
|
|
|
|
b.iter(|| {
|
|
let lower = name1.to_lowercase();
|
|
assert_eq!(lower.num_labels(), 2);
|
|
});
|
|
}
|
|
|
|
#[bench]
|
|
fn name_to_lower_long(b: &mut Bencher) {
|
|
let name1 = Name::from_ascii("www.EXAMPLE.com").unwrap();
|
|
|
|
b.iter(|| {
|
|
let lower = name1.to_lowercase();
|
|
assert_eq!(lower.num_labels(), 3);
|
|
});
|
|
}
|
|
|
|
#[bench]
|
|
fn name_no_lower_short(b: &mut Bencher) {
|
|
let name1 = Name::from_ascii("com").unwrap();
|
|
|
|
b.iter(|| {
|
|
let lower = name1.to_lowercase();
|
|
assert_eq!(lower.num_labels(), 1);
|
|
});
|
|
}
|
|
|
|
#[bench]
|
|
fn name_no_lower_medium(b: &mut Bencher) {
|
|
let name1 = Name::from_ascii("example.com").unwrap();
|
|
|
|
b.iter(|| {
|
|
let lower = name1.to_lowercase();
|
|
assert_eq!(lower.num_labels(), 2);
|
|
});
|
|
}
|
|
|
|
#[bench]
|
|
fn name_no_lower_long(b: &mut Bencher) {
|
|
let name1 = Name::from_ascii("www.example.com").unwrap();
|
|
|
|
b.iter(|| {
|
|
let lower = name1.to_lowercase();
|
|
assert_eq!(lower.num_labels(), 3);
|
|
});
|
|
}
|