11use ark_ff:: { Field , UniformRand } ;
22use ark_std:: rand:: { rngs:: StdRng , Rng , SeedableRng } ;
3- use ark_test_curves:: secp256k1 :: Fr ;
3+ use ark_test_curves:: bn254 :: Fr ;
44use criterion:: { criterion_group, criterion_main, Criterion } ;
55
6- fn mul_u64_bench ( c : & mut Criterion ) {
6+ fn mul_small_bench ( c : & mut Criterion ) {
77 const SAMPLES : usize = 1000 ;
88 // Use a fixed seed for reproducibility
99 let mut rng = StdRng :: seed_from_u64 ( 0u64 ) ;
1010
1111 let a_s = ( 0 ..SAMPLES )
1212 . map ( |_| Fr :: rand ( & mut rng) )
1313 . collect :: < Vec < _ > > ( ) ;
14- let b_s = ( 0 ..SAMPLES )
14+
15+ let b_u64_s = ( 0 ..SAMPLES )
1516 . map ( |_| rng. gen :: < u64 > ( ) )
1617 . collect :: < Vec < _ > > ( ) ;
1718 // Convert u64 to Fr for standard multiplication benchmark
18- let b_fr_s = b_s. iter ( ) . map ( |& b| Fr :: from ( b) ) . collect :: < Vec < _ > > ( ) ;
19+ let b_fr_s = b_u64_s. iter ( ) . map ( |& b| Fr :: from ( b) ) . collect :: < Vec < _ > > ( ) ;
20+
21+ let b_i64_s = ( 0 ..SAMPLES )
22+ . map ( |_| rng. gen :: < i64 > ( ) )
23+ . collect :: < Vec < _ > > ( ) ;
24+
25+ let b_u128_s = ( 0 ..SAMPLES )
26+ . map ( |_| rng. gen :: < u128 > ( ) )
27+ . collect :: < Vec < _ > > ( ) ;
28+
29+ let b_i128_s = ( 0 ..SAMPLES )
30+ . map ( |_| rng. gen :: < i128 > ( ) )
31+ . collect :: < Vec < _ > > ( ) ;
1932
2033 // Generate another set of random Fr elements for addition
2134 let c_s = ( 0 ..SAMPLES )
@@ -29,7 +42,31 @@ fn mul_u64_bench(c: &mut Criterion) {
2942 bench. iter ( || {
3043 i = ( i + 1 ) % SAMPLES ;
3144 // Make sure the computation is not optimized away
32- criterion:: black_box ( a_s[ i] . mul_u64 ( b_s[ i] ) )
45+ criterion:: black_box ( a_s[ i] . mul_u64 ( b_u64_s[ i] ) )
46+ } )
47+ } ) ;
48+
49+ group. bench_function ( "mul_i64" , |bench| {
50+ let mut i = 0 ;
51+ bench. iter ( || {
52+ i = ( i + 1 ) % SAMPLES ;
53+ criterion:: black_box ( a_s[ i] . mul_i64 ( b_i64_s[ i] ) )
54+ } )
55+ } ) ;
56+
57+ group. bench_function ( "mul_u128" , |bench| {
58+ let mut i = 0 ;
59+ bench. iter ( || {
60+ i = ( i + 1 ) % SAMPLES ;
61+ criterion:: black_box ( a_s[ i] . mul_u128 ( b_u128_s[ i] ) )
62+ } )
63+ } ) ;
64+
65+ group. bench_function ( "mul_i128" , |bench| {
66+ let mut i = 0 ;
67+ bench. iter ( || {
68+ i = ( i + 1 ) % SAMPLES ;
69+ criterion:: black_box ( a_s[ i] . mul_i128 ( b_i128_s[ i] ) )
3370 } )
3471 } ) ;
3572
@@ -63,5 +100,5 @@ fn mul_u64_bench(c: &mut Criterion) {
63100 group. finish ( ) ;
64101}
65102
66- criterion_group ! ( benches, mul_u64_bench ) ;
103+ criterion_group ! ( benches, mul_small_bench ) ;
67104criterion_main ! ( benches) ;
0 commit comments