use criterion::{black_box, criterion_group, criterion_main, Criterion};
use tetsy_libp2p_core::{identity, PeerId};
fn from_bytes(c: &mut Criterion) {
let peer_id_bytes = identity::Keypair::generate_ed25519()
.public()
.into_peer_id()
.to_bytes();
c.bench_function("from_bytes", |b| {
b.iter(|| {
black_box(PeerId::from_bytes(&peer_id_bytes).unwrap());
})
});
}
fn clone(c: &mut Criterion) {
let peer_id = identity::Keypair::generate_ed25519()
.public()
.into_peer_id();
c.bench_function("clone", |b| {
b.iter(|| {
black_box(peer_id.clone());
})
});
}
fn sort_vec(c: &mut Criterion) {
let peer_ids: Vec<_> = (0..100)
.map(|_| {
identity::Keypair::generate_ed25519()
.public()
.into_peer_id()
})
.collect();
c.bench_function("sort_vec", |b| {
b.iter(|| {
let mut peer_ids = peer_ids.clone();
peer_ids.sort_unstable();
black_box(peer_ids);
})
});
}
criterion_group!(peer_id, from_bytes, clone, sort_vec);
criterion_main!(peer_id);