Skip to content

Commit

Permalink
Add simple benchmarking tests
Browse files Browse the repository at this point in the history
  • Loading branch information
AlvinHon committed Jan 5, 2025
1 parent 0ff21e6 commit 4901e6f
Show file tree
Hide file tree
Showing 2 changed files with 88 additions and 1 deletion.
7 changes: 6 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,9 @@ ark-std = "0.5"
gs-ppe = { git = "https://github.com/AlvinHon/gs-ppe"}

[dev-dependencies]
ark-bls12-381 = "0.5"
ark-bls12-381 = "0.5"
criterion = "0.5"

[[bench]]
name = "bench"
harness = false
82 changes: 82 additions & 0 deletions benches/bench.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
use criterion::{criterion_group, criterion_main, Criterion};

use ark_bls12_381::Bls12_381 as E;
use ark_ec::pairing::Pairing;
use ark_std::{test_rng, UniformRand};
use commuting_signature::{Params, Signer};

type Fr = <E as Pairing>::ScalarField;

criterion_group!(
benches,
bench_sign,
bench_verify,
bench_verify_ciphertexts,
bench_sign_on_ciphertexts
);

criterion_main!(benches);

pub fn bench_sign(c: &mut Criterion) {
let rng = &mut test_rng();

let params = Params::<E>::rand(rng);
let signer = Signer::rand(rng);
let value = Fr::rand(rng);

c.bench_function("sign", |b| {
b.iter(|| {
signer.sign(rng, &params, value);
})
});
}

pub fn bench_verify(c: &mut Criterion) {
let rng = &mut test_rng();

let params = Params::<E>::rand(rng);
let signer = Signer::rand(rng);
let verifier = signer.verifier(&params);
let value = Fr::rand(rng);

let (message, signature, _) = signer.sign(rng, &params, value);

c.bench_function("verify", |b| {
b.iter(|| {
verifier.verify(&params, &message, &signature);
})
});
}

pub fn bench_verify_ciphertexts(c: &mut Criterion) {
let rng = &mut test_rng();

let params = Params::<E>::rand(rng);
let signer = Signer::rand(rng);
let verifier = signer.verifier(&params);
let value = Fr::rand(rng);

let (_, _, ciphertexts) = signer.sign(rng, &params, value);

c.bench_function("verify_ciphertexts", |b| {
b.iter(|| {
verifier.verify_ciphertexts(&params, &ciphertexts);
})
});
}

pub fn bench_sign_on_ciphertexts(c: &mut Criterion) {
let rng = &mut test_rng();

let params = Params::<E>::rand(rng);
let signer = Signer::rand(rng);
let value = Fr::rand(rng);

let (_, _, ciphertexts) = signer.sign(rng, &params, value);

c.bench_function("sign_on_ciphertexts", |b| {
b.iter(|| {
signer.sign_on_ciphertexts(rng, &params, &ciphertexts);
})
});
}

0 comments on commit 4901e6f

Please sign in to comment.