Skip to content

Commit 4639ab1

Browse files
committed
Benchmark random scalar generation compared to prev version
Signed-off-by: Denis Varlakov <denis@dfns.co>
1 parent b9752e2 commit 4639ab1

File tree

3 files changed

+87
-6
lines changed

3 files changed

+87
-6
lines changed

Cargo.lock

+53-6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/Cargo.toml

+6
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ publish = false
1010
generic-ec = { path = "../generic-ec", default-features = false, features = ["all-curves", "serde"] }
1111
generic-ec-zkp = { path = "../generic-ec-zkp", default-features = false, features = ["serde", "udigest"] }
1212

13+
generic-ec-v04 = { package = "generic-ec", version = "0.4.5", default-features = false, features = ["all-curves"] }
14+
1315
plotters = "0.3"
1416
anyhow = "1"
1517
regex = "1.10"
@@ -37,3 +39,7 @@ default = ["generic-ec/std"]
3739
name = "multiscalar"
3840
harness = false
3941

42+
[[bench]]
43+
name = "random"
44+
harness = false
45+

tests/benches/random.rs

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
use generic_ec::curves;
2+
use generic_ec_v04::curves as curves_v04;
3+
4+
criterion::criterion_main!(benches);
5+
criterion::criterion_group!(benches, random);
6+
7+
fn random(c: &mut criterion::Criterion) {
8+
let mut rng = rand_dev::DevRng::new();
9+
10+
random_for_curve::<curves::Secp256k1, curves_v04::Secp256k1>(c, &mut rng, "secp256k1");
11+
random_for_curve::<curves::Secp256r1, curves_v04::Secp256r1>(c, &mut rng, "secp256r1");
12+
random_for_curve::<curves::Stark, curves_v04::Stark>(c, &mut rng, "stark");
13+
random_for_curve::<curves::Ed25519, curves_v04::Ed25519>(c, &mut rng, "ed25519");
14+
}
15+
16+
fn random_for_curve<E: generic_ec::Curve, E04: generic_ec_v04::Curve>(
17+
c: &mut criterion::Criterion,
18+
rng: &mut impl rand::RngCore,
19+
curve_name: &str,
20+
) {
21+
let mut g = c.benchmark_group(format!("random/{curve_name}"));
22+
g.bench_function("v04", |b| {
23+
b.iter(|| generic_ec_v04::Scalar::<E04>::random(rng))
24+
});
25+
g.bench_function("latest", |b| {
26+
b.iter(|| generic_ec::Scalar::<E>::random(rng))
27+
});
28+
}

0 commit comments

Comments
 (0)