@@ -620,17 +620,15 @@ mod benchmarks {
620
620
}
621
621
}
622
622
623
- fn generarate_sha_r1cs (
623
+ fn generarate_sha_r1cs < E : Engine > (
624
624
len : usize ,
625
625
) -> (
626
- R1CSShape < Bn256EngineKZG > ,
627
- CommitmentKey < Bn256EngineKZG > ,
628
- R1CSWitness < Bn256EngineKZG > ,
626
+ R1CSShape < E > ,
627
+ CommitmentKey < E > ,
628
+ R1CSWitness < E > ,
629
629
Vec < u8 > ,
630
- Vec < < Bn256EngineKZG as Engine > :: Scalar > ,
630
+ Vec < E :: Scalar > ,
631
631
) {
632
- type E = Bn256EngineKZG ;
633
-
634
632
let circuit = Sha256Circuit :: < E > {
635
633
preimage : vec ! [ 0u8 ; len] ,
636
634
_p : Default :: default ( ) ,
@@ -652,7 +650,8 @@ mod benchmarks {
652
650
. iter ( )
653
651
. map ( |e| {
654
652
// map field element to u8
655
- e. to_repr ( ) [ 0 ] as u8
653
+ // this assumes little-endian representation
654
+ e. to_repr ( ) . as_ref ( ) [ 0 ] as u8
656
655
} )
657
656
. collect :: < Vec < _ > > ( ) ;
658
657
@@ -664,17 +663,15 @@ mod benchmarks {
664
663
( S , ck, W , w, X )
665
664
}
666
665
667
- fn bench_nifs_inner < T : Integer + Into < u64 > + Copy + Sync + ToPrimitive > (
666
+ fn bench_nifs_inner < E : Engine , T : Integer + Into < u64 > + Copy + Sync + ToPrimitive > (
668
667
c : & mut Criterion ,
669
668
name : & str ,
670
- S : & R1CSShape < Bn256EngineKZG > ,
671
- ck : & CommitmentKey < Bn256EngineKZG > ,
672
- W : & R1CSWitness < Bn256EngineKZG > ,
669
+ S : & R1CSShape < E > ,
670
+ ck : & CommitmentKey < E > ,
671
+ W : & R1CSWitness < E > ,
673
672
w : & [ T ] ,
674
- x : & [ < Bn256EngineKZG as Engine > :: Scalar ] ,
673
+ x : & [ E :: Scalar ] ,
675
674
) {
676
- type E = Bn256EngineKZG ;
677
-
678
675
let num_cons = S . num_cons ;
679
676
680
677
// generate a default running instance
@@ -685,14 +682,14 @@ mod benchmarks {
685
682
assert ! ( res. is_ok( ) ) ;
686
683
687
684
// generate default values
688
- let pp_digest = < E as Engine > :: Scalar :: ZERO ;
685
+ let pp_digest = E :: Scalar :: ZERO ;
689
686
let ro_consts = RO2Constants :: < E > :: default ( ) ;
690
687
691
688
// produce an NIFS with (W, U) as the first incoming witness-instance pair
692
689
c. bench_function ( & format ! ( "neutron_nifs_{name}_{num_cons}" ) , |b| {
693
690
b. iter ( || {
694
691
// commit with the specialized method
695
- let comm_W = < E as Engine > :: CE :: commit_small ( ck, & w, & W . r_W ) ;
692
+ let comm_W = E :: CE :: commit_small ( ck, & w, & W . r_W ) ;
696
693
697
694
// make an R1CS instance
698
695
let U = R1CSInstance :: new ( & S , & comm_W, & x) . unwrap ( ) ;
@@ -723,19 +720,21 @@ mod benchmarks {
723
720
724
721
#[ test]
725
722
fn bench_nifs_simple ( ) {
726
- let mut criterion = Criterion :: default ( ) ;
727
723
type E = Bn256EngineKZG ;
728
724
725
+ let mut criterion = Criterion :: default ( ) ;
729
726
let num_cons = 1024 * 1024 ;
730
727
let ( S , ck, W , w, x) = generate_sample_r1cs :: < E > ( num_cons) ; // W is R1CSWitness, w is a vector of u8, x is a vector of field elements
731
728
bench_nifs_inner ( & mut criterion, & "simple" , & S , & ck, & W , & w, & x) ;
732
729
}
733
730
734
731
#[ test]
735
732
fn bench_nifs_sha256 ( ) {
733
+ type E = Bn256EngineKZG ;
734
+
736
735
let mut criterion = Criterion :: default ( ) ;
737
736
for len in [ 1024 , 2048 ] . iter ( ) {
738
- let ( S , ck, W , w, x) = generarate_sha_r1cs ( * len) ;
737
+ let ( S , ck, W , w, x) = generarate_sha_r1cs :: < E > ( * len) ;
739
738
bench_nifs_inner ( & mut criterion, & "sha256" , & S , & ck, & W , & w, & x) ;
740
739
}
741
740
}
0 commit comments