mirror of
https://github.com/uuid-rs/uuid.git
synced 2025-09-30 22:40:52 +00:00
focus benches on formatting and parsing
This commit is contained in:
parent
b32f3728f8
commit
69b9014747
@ -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
|
||||
})
|
||||
}
|
||||
|
@ -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");
|
||||
});
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
#![feature(test)]
|
||||
|
||||
#[cfg(feature = "slog")]
|
||||
pub mod slog_support;
|
68
benches/parse_str.rs
Normal file
68
benches/parse_str.rs
Normal 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")
|
||||
});
|
||||
}
|
@ -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;
|
||||
}
|
@ -1 +0,0 @@
|
||||
pub mod parse_str;
|
@ -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);
|
||||
});
|
||||
}
|
@ -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");
|
||||
});
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user