mirror of
https://github.com/Blah-IM/blahrs.git
synced 2025-04-30 16:21:10 +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
Cargo.lock
generated
3
Cargo.lock
generated
|
@ -271,6 +271,7 @@ version = "0.0.0"
|
|||
dependencies = [
|
||||
"bitflags",
|
||||
"bitflags_serde_shim",
|
||||
"criterion",
|
||||
"ed25519-dalek",
|
||||
"expect-test",
|
||||
"hex",
|
||||
|
@ -281,6 +282,7 @@ dependencies = [
|
|||
"serde_jcs",
|
||||
"serde_json",
|
||||
"serde_with",
|
||||
"sha2",
|
||||
"thiserror",
|
||||
"url",
|
||||
]
|
||||
|
@ -311,7 +313,6 @@ dependencies = [
|
|||
"axum-extra",
|
||||
"blah-types",
|
||||
"clap",
|
||||
"criterion",
|
||||
"ed25519-dalek",
|
||||
"futures-util",
|
||||
"hex",
|
||||
|
|
|
@ -3,6 +3,10 @@ name = "blah-types"
|
|||
version = "0.0.0"
|
||||
edition = "2021"
|
||||
|
||||
[[bench]]
|
||||
name = "crypto_ops"
|
||||
harness = false
|
||||
|
||||
[dependencies]
|
||||
bitflags = "2"
|
||||
bitflags_serde_shim = "0.2"
|
||||
|
@ -19,7 +23,10 @@ thiserror = "1"
|
|||
url = { version = "2", features = ["serde"] }
|
||||
|
||||
[dev-dependencies]
|
||||
criterion = "0.5"
|
||||
ed25519-dalek = { version = "2", features = ["rand_core"] }
|
||||
expect-test = "1"
|
||||
sha2 = "0.10"
|
||||
|
||||
[lints]
|
||||
workspace = true
|
||||
|
|
|
@ -2,19 +2,25 @@
|
|||
use std::hint::black_box;
|
||||
use std::time::Instant;
|
||||
|
||||
use blah_types::{get_timestamp, PubKey, Signee, UserKey, UserRegisterPayload};
|
||||
use blah_types::{
|
||||
get_timestamp, ChatPayload, Id, PubKey, SignExt, Signee, UserKey, UserRegisterPayload,
|
||||
};
|
||||
use criterion::{criterion_group, criterion_main, Criterion};
|
||||
use ed25519_dalek::SigningKey;
|
||||
use rand::{thread_rng, Rng};
|
||||
use rand::rngs::mock::StepRng;
|
||||
use rand::rngs::StdRng;
|
||||
use rand::{Rng, SeedableRng};
|
||||
use sha2::{Digest, Sha256};
|
||||
|
||||
const SEED: u64 = 0xDEAD_BEEF_BEEF_DEAD;
|
||||
|
||||
fn bench_register_pow(c: &mut Criterion) {
|
||||
let rng = &mut thread_rng();
|
||||
let rng = &mut StdRng::seed_from_u64(SEED);
|
||||
|
||||
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 act_key = PubKey::from(act_key_priv.verifying_key());
|
||||
let payload = UserRegisterPayload {
|
||||
id_key: id_key.clone(),
|
||||
server_url: "http://some.example.com".parse().unwrap(),
|
||||
|
@ -52,5 +58,42 @@ fn bench_register_pow(c: &mut Criterion) {
|
|||
});
|
||||
}
|
||||
|
||||
criterion_group!(benches, bench_register_pow);
|
||||
fn avg_msg() -> ChatPayload {
|
||||
// The average text message length is 50.88 bytes (UTF-8), according to
|
||||
// the last 1 year data from <https://t.me/nixos_zhcn>
|
||||
ChatPayload {
|
||||
rich_text: "🤔️ average length message! 平均长度消息".into(),
|
||||
room: Id(1_234_567_890_000 << 16 | 0xDEAD),
|
||||
}
|
||||
}
|
||||
|
||||
fn bench_msg_sign_verify(c: &mut Criterion) {
|
||||
let rng = &mut StdRng::seed_from_u64(SEED);
|
||||
|
||||
let id_key_priv = SigningKey::generate(rng);
|
||||
let act_key_priv = SigningKey::generate(rng);
|
||||
let id_key = PubKey::from(id_key_priv.verifying_key());
|
||||
let timestamp = 1_727_045_943 << 16; // The time when I writing this code.
|
||||
|
||||
let msg = avg_msg();
|
||||
c.bench_function("msg-sign", |b| {
|
||||
let seq_rng = &mut StepRng::new(1, 1);
|
||||
b.iter(|| {
|
||||
black_box(msg.clone())
|
||||
.sign_msg_with(&id_key, &act_key_priv, timestamp, seq_rng)
|
||||
.unwrap()
|
||||
})
|
||||
});
|
||||
|
||||
let signed = msg
|
||||
.sign_msg_with(&id_key, &act_key_priv, timestamp, rng)
|
||||
.unwrap();
|
||||
|
||||
c.bench_function("msg-verify", |b| {
|
||||
b.iter(|| black_box(&signed).verify().unwrap());
|
||||
});
|
||||
}
|
||||
|
||||
criterion_group!(benches, bench_register_pow, bench_msg_sign_verify);
|
||||
|
||||
criterion_main!(benches);
|
|
@ -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 }
|
||||
|
|
Loading…
Add table
Reference in a new issue