focus benches on formatting and parsing

This commit is contained in:
KodrAus 2021-11-01 07:13:46 +10:00
parent b32f3728f8
commit 69b9014747
8 changed files with 80 additions and 177 deletions

View File

@ -6,61 +6,61 @@ use test::Bencher;
use uuid::Uuid;
#[bench]
fn bench_hyphen(b: &mut Bencher) {
fn hyphenated(b: &mut Bencher) {
let uuid = Uuid::parse_str("F9168C5E-CEB2-4faa-B6BF-329BF39FA1E4").unwrap();
b.iter(|| {
let mut buffer = [0_u8; 36];
write!(&mut buffer as &mut [_], "{:x}", uuid.to_hyphenated()).unwrap();
test::black_box(buffer);
buffer
});
}
#[bench]
fn bench_simple(b: &mut Bencher) {
fn simple(b: &mut Bencher) {
let uuid = Uuid::parse_str("F9168C5E-CEB2-4faa-B6BF-329BF39FA1E4").unwrap();
b.iter(|| {
let mut buffer = [0_u8; 32];
write!(&mut buffer as &mut [_], "{:x}", uuid.to_simple()).unwrap();
test::black_box(buffer);
buffer
})
}
#[bench]
fn bench_urn(b: &mut Bencher) {
fn urn(b: &mut Bencher) {
let uuid = Uuid::parse_str("F9168C5E-CEB2-4faa-B6BF-329BF39FA1E4").unwrap();
b.iter(|| {
let mut buffer = [0_u8; 36 + 9];
write!(&mut buffer as &mut [_], "{:x}", uuid.to_urn()).unwrap();
test::black_box(buffer);
buffer
})
}
#[bench]
fn bench_encode_hyphen(b: &mut Bencher) {
fn encode_hyphen(b: &mut Bencher) {
let uuid = Uuid::parse_str("F9168C5E-CEB2-4faa-B6BF-329BF39FA1E4").unwrap();
b.iter(|| {
let mut buffer = [0_u8; 36];
uuid.to_hyphenated().encode_lower(&mut buffer);
test::black_box(buffer);
buffer
});
}
#[bench]
fn bench_encode_simple(b: &mut Bencher) {
fn encode_simple(b: &mut Bencher) {
let uuid = Uuid::parse_str("F9168C5E-CEB2-4faa-B6BF-329BF39FA1E4").unwrap();
b.iter(|| {
let mut buffer = [0_u8; 32];
uuid.to_simple().encode_lower(&mut buffer);
test::black_box(buffer);
buffer
})
}
#[bench]
fn bench_encode_urn(b: &mut Bencher) {
fn encode_urn(b: &mut Bencher) {
let uuid = Uuid::parse_str("F9168C5E-CEB2-4faa-B6BF-329BF39FA1E4").unwrap();
b.iter(|| {
let mut buffer = [0_u8; 36 + 9];
uuid.to_urn().encode_lower(&mut buffer);
test::black_box(buffer);
buffer
})
}

View File

@ -1,58 +0,0 @@
#![feature(test)]
extern crate test;
use test::Bencher;
use uuid::Uuid;
#[bench]
fn bench_parse_invalid_strings(b: &mut Bencher) {
b.iter(|| {
let _ = Uuid::parse_str("");
let _ = Uuid::parse_str("!");
let _ = Uuid::parse_str("F9168C5E-CEB2-4faa-B6BF-329BF39FA1E45");
let _ = Uuid::parse_str("F9168C5E-CEB2-4faa-BBF-329BF39FA1E4");
let _ = Uuid::parse_str("F9168C5E-CEB2-4faa-BGBF-329BF39FA1E4");
let _ = Uuid::parse_str("F9168C5E-CEB2-4faa-B6BFF329BF39FA1E4");
let _ = Uuid::parse_str("F9168C5E-CEB2-4faa");
let _ = Uuid::parse_str("F9168C5E-CEB2-4faaXB6BFF329BF39FA1E4");
let _ = Uuid::parse_str("F9168C5E-CEB-24fa-eB6BFF32-BF39FA1E4");
let _ = Uuid::parse_str("01020304-1112-2122-3132-41424344");
let _ = Uuid::parse_str("67e5504410b1426f9247bb680e5fe0c88");
let _ = Uuid::parse_str("67e5504410b1426f9247bb680e5fe0cg8");
let _ = Uuid::parse_str("67e5504410b1426%9247bb680e5fe0c8");
// Test error reporting
let _ = Uuid::parse_str("67e5504410b1426f9247bb680e5fe0c");
let _ = Uuid::parse_str("67e550X410b1426f9247bb680e5fe0cd");
let _ = Uuid::parse_str("67e550-4105b1426f9247bb680e5fe0c");
let _ = Uuid::parse_str("F9168C5E-CEB2-4faa-B6BF1-02BF39FA1E4");
});
}
#[bench]
fn bench_parse_invalid_len(b: &mut Bencher) {
b.iter(|| {
let _ = Uuid::parse_str("F9168C5E-CEB2-4faa-BBF-329BF39FA1E4");
})
}
#[bench]
fn bench_parse_invalid_character(b: &mut Bencher) {
b.iter(|| {
let _ = Uuid::parse_str("F9168C5E-CEB2-4faa-BGBF-329BF39FA1E4");
})
}
#[bench]
fn bench_parse_invalid_group_len(b: &mut Bencher) {
b.iter(|| {
let _ = Uuid::parse_str("01020304-1112-2122-3132-41424344");
});
}
#[bench]
fn bench_parse_invalid_groups(b: &mut Bencher) {
b.iter(|| {
let _ = Uuid::parse_str("F9168C5E-CEB2-4faa-B6BFF329BF39FA1E4");
});
}

View File

@ -1,4 +0,0 @@
#![feature(test)]
#[cfg(feature = "slog")]
pub mod slog_support;

68
benches/parse_str.rs Normal file
View File

@ -0,0 +1,68 @@
#![feature(test)]
extern crate test;
use test::Bencher;
use uuid::Uuid;
#[bench]
fn parse_nil(b: &mut Bencher) {
b.iter(|| {
Uuid::parse_str("00000000000000000000000000000000")
});
}
#[bench]
fn parse_nil_hyphenated(b: &mut Bencher) {
b.iter(|| {
Uuid::parse_str("00000000-0000-0000-0000-000000000000")
});
}
#[bench]
fn parse_random(b: &mut Bencher) {
b.iter(|| {
Uuid::parse_str("67e5504410b1426f9247bb680e5fe0c8")
});
}
#[bench]
fn parse_random_hyphenated(b: &mut Bencher) {
b.iter(|| {
Uuid::parse_str("67e55044-10b1-426f-9247-bb680e5fe0c8")
});
}
#[bench]
fn parse_urn(b: &mut Bencher) {
b.iter(|| {
Uuid::parse_str("urn:uuid:67e55044-10b1-426f-9247-bb680e5fe0c8")
});
}
#[bench]
fn parse_invalid_len(b: &mut Bencher) {
b.iter(|| {
Uuid::parse_str("F9168C5E-CEB2-4faa-BBF-329BF39FA1E4")
})
}
#[bench]
fn parse_invalid_character(b: &mut Bencher) {
b.iter(|| {
Uuid::parse_str("F9168C5E-CEB2-4faa-BGBF-329BF39FA1E4")
})
}
#[bench]
fn parse_invalid_group_len(b: &mut Bencher) {
b.iter(|| {
Uuid::parse_str("01020304-1112-2122-3132-41424344")
});
}
#[bench]
fn parse_invalid_groups(b: &mut Bencher) {
b.iter(|| {
Uuid::parse_str("F9168C5E-CEB2-4faa-B6BFF329BF39FA1E4")
});
}

View File

@ -1,48 +0,0 @@
#![cfg(feature = "serde")]
#![feature(test)]
use bincode;
use serde_json;
extern crate test;
use test::Bencher;
use uuid::Uuid;
#[bench]
fn bench_json_encode(b: &mut Bencher) {
let uuid = Uuid::parse_str("F9168C5E-CEB2-4faa-B6BF-329BF39FA1E4").unwrap();
let mut buffer = [0_u8; 38];
b.iter(|| {
serde_json::to_writer(&mut buffer as &mut [u8], &uuid).unwrap();
test::black_box(buffer);
});
b.bytes = buffer.len() as u64;
}
#[bench]
fn bench_json_decode(b: &mut Bencher) {
let s = "\"F9168C5E-CEB2-4faa-B6BF-329BF39FA1E4\"";
b.iter(|| serde_json::from_str::<Uuid>(s).unwrap());
b.bytes = s.len() as u64;
}
#[bench]
fn bench_bincode_encode(b: &mut Bencher) {
let uuid = Uuid::parse_str("F9168C5E-CEB2-4faa-B6BF-329BF39FA1E4").unwrap();
let mut buffer = [0_u8; 24];
b.iter(|| {
bincode::serialize_into(&mut buffer as &mut [u8], &uuid).unwrap();
test::black_box(buffer);
});
b.bytes = buffer.len() as u64;
}
#[bench]
fn bench_bincode_decode(b: &mut Bencher) {
let bytes = [
16, 0, 0, 0, 0, 0, 0, 0, 249, 22, 140, 94, 206, 178, 79, 170, 182, 191,
50, 155, 243, 159, 161, 228,
];
b.iter(|| bincode::deserialize::<Uuid>(&bytes).unwrap());
b.bytes = bytes.len() as u64;
}

View File

@ -1 +0,0 @@
pub mod parse_str;

View File

@ -1,15 +0,0 @@
extern crate test;
#[bench]
#[cfg(feature = "slog")]
pub fn bench_log_discard_kv(b: &mut test::Bencher) {
let u1 =
uuid::Uuid::parse_str("F9168C5E-CEB2-4FAB-B6BF-329BF39FA1E4").unwrap();
let root =
slog::Logger::root(::slog::Drain::fuse(::slog::Discard), slog::o!());
b.iter(|| {
#[cfg(feature = "slog")]
slog::crit!(root, "test"; "u1" => u1);
});
}

View File

@ -1,39 +0,0 @@
#![feature(test)]
extern crate test;
use test::Bencher;
use uuid::Uuid;
#[bench]
fn bench_parse_valid_strings(b: &mut Bencher) {
b.iter(|| {
// Valid
let _ = Uuid::parse_str("00000000000000000000000000000000");
let _ = Uuid::parse_str("67e55044-10b1-426f-9247-bb680e5fe0c8");
let _ = Uuid::parse_str("67e55044-10b1-426f-9247-bb680e5fe0c8");
let _ = Uuid::parse_str("F9168C5E-CEB2-4faa-B6BF-329BF39FA1E4");
let _ = Uuid::parse_str("67e5504410b1426f9247bb680e5fe0c8");
let _ = Uuid::parse_str("01020304-1112-2122-3132-414243444546");
let _ =
Uuid::parse_str("urn:uuid:67e55044-10b1-426f-9247-bb680e5fe0c8");
// Nil
let _ = Uuid::parse_str("00000000000000000000000000000000");
let _ = Uuid::parse_str("00000000-0000-0000-0000-000000000000");
});
}
#[bench]
fn bench_valid_hyphenated(b: &mut Bencher) {
b.iter(|| {
let _ = Uuid::parse_str("67e55044-10b1-426f-9247-bb680e5fe0c8");
});
}
#[bench]
fn bench_valid_short(b: &mut Bencher) {
b.iter(|| {
let _ = Uuid::parse_str("67e5504410b1426f9247bb680e5fe0c8");
});
}