@@ -4,6 +4,7 @@ use elastic_elgamal::{
44 group:: { Curve25519Subgroup , Generic , Group , Ristretto } ,
55} ;
66use rand_chacha:: ChaChaRng ;
7+ use yab:: { BenchmarkId , captures} ;
78
89trait BenchmarkedGroup : Group {
910 const NAME : & ' static str ;
@@ -23,51 +24,42 @@ impl BenchmarkedGroup for Generic<k256::Secp256k1> {
2324
2425fn bench_group < G : BenchmarkedGroup > ( bencher : & mut yab:: Bencher ) {
2526 let group = G :: NAME ;
26- bencher. bench_with_capture ( format ! ( "{group}/encrypt" ) , |capture| {
27- let mut rng = ChaChaRng :: from_seed ( [ 5 ; 32 ] ) ;
28- let keypair: Keypair < G > = Keypair :: generate ( & mut rng) ;
29- let message = G :: generate_scalar ( & mut rng) ;
30- capture. measure ( || keypair. public ( ) . encrypt ( message, & mut rng) ) ;
31- } ) ;
32-
33- bencher. bench_with_capture ( format ! ( "{group}/decrypt" ) , |capture| {
34- let mut rng = ChaChaRng :: from_seed ( [ 5 ; 32 ] ) ;
35- let keypair: Keypair < G > = Keypair :: generate ( & mut rng) ;
36- let message = G :: generate_scalar ( & mut rng) ;
37- let ciphertext = keypair. public ( ) . encrypt ( message, & mut rng) ;
38- capture. measure ( || keypair. secret ( ) . decrypt_to_element ( ciphertext) ) ;
39- } ) ;
40-
41- bencher. bench_with_capture ( format ! ( "{group}/zero_prove" ) , |capture| {
42- let mut rng = ChaChaRng :: from_seed ( [ 5 ; 32 ] ) ;
43- let keypair: Keypair < G > = Keypair :: generate ( & mut rng) ;
44- capture. measure ( || keypair. public ( ) . encrypt_zero ( & mut rng) ) ;
45- } ) ;
46-
47- bencher. bench_with_capture ( format ! ( "{group}/zero_verify" ) , |capture| {
48- let mut rng = ChaChaRng :: from_seed ( [ 5 ; 32 ] ) ;
49- let keypair: Keypair < G > = Keypair :: generate ( & mut rng) ;
50- let ( ciphertext, proof) = keypair. public ( ) . encrypt_zero ( & mut rng) ;
51- capture
52- . measure ( || keypair. public ( ) . verify_zero ( ciphertext, & proof) )
53- . unwrap ( ) ;
54- } ) ;
55-
56- for val in [ false , true ] {
57- bencher. bench_with_capture ( format ! ( "{group}/bool_prove/{val}" ) , |capture| {
27+ bencher. bench_with_captures (
28+ group,
29+ captures ! ( |[ encrypt, decrypt] | {
5830 let mut rng = ChaChaRng :: from_seed( [ 5 ; 32 ] ) ;
5931 let keypair: Keypair <G > = Keypair :: generate( & mut rng) ;
60- capture. measure ( || keypair. public ( ) . encrypt_bool ( val, & mut rng) ) ;
61- } ) ;
32+ let message = G :: generate_scalar( & mut rng) ;
33+ let ciphertext = encrypt. measure( || keypair. public( ) . encrypt( message, & mut rng) ) ;
34+ decrypt. measure( || keypair. secret( ) . decrypt_to_element( ciphertext) ) ;
35+ } ) ,
36+ ) ;
6237
63- bencher. bench_with_capture ( format ! ( "{group}/bool_verify/{val}" ) , |capture| {
38+ bencher. bench_with_captures (
39+ format ! ( "{group}/zero" ) ,
40+ captures ! ( |[ prove, verify] | {
6441 let mut rng = ChaChaRng :: from_seed( [ 5 ; 32 ] ) ;
6542 let keypair: Keypair <G > = Keypair :: generate( & mut rng) ;
66- let ( ciphertext, proof) = keypair. public ( ) . encrypt_bool ( val, & mut rng) ;
67- capture
68- . measure ( || keypair. public ( ) . verify_bool ( ciphertext, & proof) )
69- . unwrap ( ) ;
70- } ) ;
43+ let ( ciphertext, proof) = prove. measure( || keypair. public( ) . encrypt_zero( & mut rng) ) ;
44+ verify
45+ . measure( || keypair. public( ) . verify_zero( ciphertext, & proof) )
46+ . unwrap( )
47+ } ) ,
48+ ) ;
49+
50+ for val in [ false , true ] {
51+ bencher. bench_with_captures (
52+ BenchmarkId :: new ( format ! ( "{group}/bool" ) , val) ,
53+ captures ! ( |[ prove, verify] | {
54+ let mut rng = ChaChaRng :: from_seed( [ 5 ; 32 ] ) ;
55+ let keypair: Keypair <G > = Keypair :: generate( & mut rng) ;
56+ let ( ciphertext, proof) =
57+ prove. measure( || keypair. public( ) . encrypt_bool( val, & mut rng) ) ;
58+ verify
59+ . measure( || keypair. public( ) . verify_bool( ciphertext, & proof) )
60+ . unwrap( ) ;
61+ } ) ,
62+ ) ;
7163 }
7264}
7365
0 commit comments