ark_algebra_bench_templates/macros/
mod.rs1#[macro_use]
2mod ec;
3
4#[macro_use]
5mod field;
6
7#[macro_use]
8mod pairing;
9
10#[macro_export]
11macro_rules! bench {
12 (
13 Name = $name:expr,
14 Pairing = $Pairing:ident,
15 G1 = $G1:ident,
16 G2 = $G2:ident,
17 ScalarField = $Fr:ident,
18 G1BaseField = $Fq:ident,
19 G2BaseField = $FqExt:ident,
20 TargetField = $FqTarget:ident,
21 ) => {
22 $crate::ec_bench!($name, $G1);
23 $crate::ec_bench!($name, $G2);
24 $crate::f_bench!(prime, $name, $Fr);
25 $crate::f_bench!(prime, $name, $Fq);
26 $crate::f_bench!(extension, $name, $FqExt);
27 $crate::f_bench!(target, $name, $FqTarget);
28 $crate::pairing_bench!($Pairing);
29
30 paste! {
31 criterion_main!(
32 [<$G1:lower>]::benches,
33 [<$G2:lower>]::benches,
34 [<$Fr:lower>]::benches,
35 [<$Fq:lower>]::benches,
36 [<$FqExt:lower>]::benches,
37 [<$FqTarget:lower>]::benches,
38 pairing::benches
39 );
40 }
41 };
42 (
43 Name = $name:expr,
44 Group = $G:ident,
45 ScalarField = $Fr:ident,
46 BaseField = $Fq:ident,
47 ) => {
48 $crate::ec_bench!($name, $G);
49 $crate::f_bench!(prime, $name, $Fr);
50 $crate::f_bench!(extension, $name, $Fq);
51
52 paste! {
53 criterion_main!(
54 [<$G:lower>]::benches,
55 [<$Fr:lower>]::benches,
56 [<$Fq:lower>]::benches,
57 );
58 }
59 };
60 (
61 Name = $name:expr,
62 Group = $G:ident,
63 ScalarField = $Fr:ident,
64 PrimeBaseField = $Fq:ident,
65 ) => {
66 $crate::ec_bench!($name, $G);
67 $crate::f_bench!(prime, $name, $Fr);
68 $crate::f_bench!(prime, $name, $Fq);
69
70 paste! {
71 criterion_main!(
72 [<$G:lower>]::benches,
73 [<$Fr:lower>]::benches,
74 [<$Fq:lower>]::benches,
75 );
76 }
77 };
78}