diff --git a/zerotier-network-hypervisor/Cargo.toml b/zerotier-network-hypervisor/Cargo.toml index 178179299..243591eec 100644 --- a/zerotier-network-hypervisor/Cargo.toml +++ b/zerotier-network-hypervisor/Cargo.toml @@ -28,9 +28,14 @@ serde = { version = "^1", features = ["derive"], default-features = false } rand = "*" serde_json = "*" serde_cbor = "*" +criterion = "0.3" [target."cfg(not(windows))".dependencies] libc = "^0" [target."cfg(windows)".dependencies] winapi = { version = "^0", features = ["ws2tcpip"] } + +[[bench]] +name = "benchmark_identity" +harness = false diff --git a/zerotier-network-hypervisor/benches/benchmark_identity.rs b/zerotier-network-hypervisor/benches/benchmark_identity.rs new file mode 100644 index 000000000..7e1822be7 --- /dev/null +++ b/zerotier-network-hypervisor/benches/benchmark_identity.rs @@ -0,0 +1,13 @@ +use criterion::{criterion_group, criterion_main, Criterion}; +use std::time::Duration; +use zerotier_network_hypervisor::vl1::Identity; + +pub fn criterion_benchmark(c: &mut Criterion) { + let mut group = c.benchmark_group("basic"); + group.measurement_time(Duration::new(30, 0)); + group.bench_function("identity generation", |b| b.iter(|| Identity::generate())); + group.finish(); +} + +criterion_group!(benches, criterion_benchmark); +criterion_main!(benches); diff --git a/zerotier-network-hypervisor/src/vl1/identity.rs b/zerotier-network-hypervisor/src/vl1/identity.rs index 36a71287b..1801e4643 100644 --- a/zerotier-network-hypervisor/src/vl1/identity.rs +++ b/zerotier-network-hypervisor/src/vl1/identity.rs @@ -861,8 +861,6 @@ mod tests { use crate::util::marshalable::Marshalable; use crate::vl1::identity::*; use std::str::FromStr; - use std::time::{Duration, SystemTime}; - #[allow(unused_imports)] use zerotier_core_crypto::hex; #[test] @@ -974,24 +972,4 @@ mod tests { assert!(Identity::from_str(ids.as_str()).unwrap() == id); } } - - #[test] - fn benchmark_generate() { - let mut count = 0; - let run_time = Duration::from_secs(5); - let start = SystemTime::now(); - let mut end; - let mut duration; - loop { - let _id = Identity::generate(); - //println!("{}", _id.to_string()); - end = SystemTime::now(); - duration = end.duration_since(start).unwrap(); - count += 1; - if duration >= run_time { - break; - } - } - println!("benchmark: V1 identity generation: {} ms / identity (average)", (duration.as_millis() as f64) / (count as f64)); - } }