ark_algebra_bench_templates/macros/
mod.rs

1#[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}