mirror of
https://github.com/Blah-IM/blahrs.git
synced 2025-07-01 03:55:33 +00:00
bench: move to blah-types and add for sign/verify
This commit is contained in:
parent
2fe8dfdab7
commit
82f69eb96a
4 changed files with 57 additions and 11 deletions
|
@ -3,10 +3,6 @@ name = "blahd"
|
|||
version = "0.0.0"
|
||||
edition = "2021"
|
||||
|
||||
[[bench]]
|
||||
name = "register-pow"
|
||||
harness = false
|
||||
|
||||
[dependencies]
|
||||
anyhow = "1"
|
||||
axum = { version = "0.7", features = ["ws"] }
|
||||
|
@ -41,7 +37,6 @@ url = { version = "2", features = ["serde"] }
|
|||
blah-types = { path = "../blah-types", features = ["rusqlite"] }
|
||||
|
||||
[dev-dependencies]
|
||||
criterion = "0.5"
|
||||
nix = { version = "0.29", features = ["fs", "process", "signal"] }
|
||||
reqwest = { version = "0.12", features = ["json"] }
|
||||
rstest = { version = "0.22", default-features = false }
|
||||
|
|
|
@ -1,56 +0,0 @@
|
|||
#![expect(clippy::unwrap_used, reason = "allow in benches")]
|
||||
use std::hint::black_box;
|
||||
use std::time::Instant;
|
||||
|
||||
use blah_types::{get_timestamp, PubKey, Signee, UserKey, UserRegisterPayload};
|
||||
use criterion::{criterion_group, criterion_main, Criterion};
|
||||
use ed25519_dalek::SigningKey;
|
||||
use rand::{thread_rng, Rng};
|
||||
use sha2::{Digest, Sha256};
|
||||
|
||||
fn bench_register_pow(c: &mut Criterion) {
|
||||
let rng = &mut thread_rng();
|
||||
|
||||
let id_key_priv = SigningKey::from_bytes(&[0x1A; 32]);
|
||||
let id_key = PubKey::from(id_key_priv.verifying_key());
|
||||
let act_key_priv = SigningKey::from_bytes(&[0x2B; 32]);
|
||||
let act_key = act_key_priv.verifying_key().into();
|
||||
let payload = UserRegisterPayload {
|
||||
id_key: id_key.clone(),
|
||||
server_url: "http://some.example.com".parse().unwrap(),
|
||||
id_url: "http://another.example.com".parse().unwrap(),
|
||||
challenge_nonce: rng.gen(),
|
||||
};
|
||||
let mut signee = Signee {
|
||||
nonce: 0,
|
||||
payload,
|
||||
timestamp: get_timestamp(),
|
||||
user: UserKey { id_key, act_key },
|
||||
};
|
||||
|
||||
c.bench_function("register_pow_iter", |b| {
|
||||
b.iter_custom(|iters| {
|
||||
signee.nonce = rng.gen();
|
||||
|
||||
let inst = Instant::now();
|
||||
for _ in 0..iters {
|
||||
let hash = {
|
||||
let signee = serde_jcs::to_string(&signee).unwrap();
|
||||
let mut h = Sha256::new();
|
||||
h.update(&signee);
|
||||
h.finalize()
|
||||
};
|
||||
let leading_zeros = hash
|
||||
.iter()
|
||||
.position(|&b| b != 0)
|
||||
.map_or(256, |i| i as u32 * 8 + hash[i].leading_zeros());
|
||||
black_box(leading_zeros);
|
||||
signee.nonce = signee.nonce.wrapping_add(1);
|
||||
}
|
||||
inst.elapsed()
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
criterion_group!(benches, bench_register_pow);
|
||||
criterion_main!(benches);
|
Loading…
Add table
Add a link
Reference in a new issue