()
| 115 | |
| 116 | #[test] |
| 117 | fn timing_ark_ops() { |
| 118 | let mut rng = StdRng::seed_from_u64(0u64); |
| 119 | let context = WnafContext::new(4); |
| 120 | let mut group_elem = G1::rand(&mut rng); |
| 121 | let group_elem_affine = group_elem.into_affine(); |
| 122 | let table = context.table(group_elem); |
| 123 | |
| 124 | let mut g1 = G1::rand(&mut rng).into_affine(); |
| 125 | let mut g2 = G2::rand(&mut rng).into_affine(); |
| 126 | let e = Fr::rand(&mut rng); |
| 127 | |
| 128 | let start = Instant::now(); |
| 129 | g1 = (g1 * e).into_affine(); |
| 130 | println!("G1 scalar multiplication time {:?}", start.elapsed()); |
| 131 | |
| 132 | let start = Instant::now(); |
| 133 | g2 = (g2 * e).into_affine(); |
| 134 | println!("G2 scalar multiplication time {:?}", start.elapsed()); |
| 135 | |
| 136 | let start = Instant::now(); |
| 137 | let mut _gt = <Bls12_381 as Pairing>::pairing(g1, g2); |
| 138 | println!("pairing time {:?}", start.elapsed()); |
| 139 | |
| 140 | let start = Instant::now(); |
| 141 | _gt = _gt * e; |
| 142 | println!("GT multiplication time {:?}", start.elapsed()); |
| 143 | |
| 144 | let mut d0 = Duration::default(); |
| 145 | let mut d1 = Duration::default(); |
| 146 | let mut d2 = Duration::default(); |
| 147 | let mut d3 = Duration::default(); |
| 148 | |
| 149 | for _ in 0..100 { |
| 150 | let e = Fr::rand(&mut rng); |
| 151 | |
| 152 | let start = Instant::now(); |
| 153 | let mut temp = group_elem_affine.into_group(); |
| 154 | temp *= e; |
| 155 | d0 += start.elapsed(); |
| 156 | |
| 157 | let start = Instant::now(); |
| 158 | let temp1 = context.mul_with_table(&table, &e).unwrap(); |
| 159 | d1 += start.elapsed(); |
| 160 | |
| 161 | assert_eq!(temp, temp1); |
| 162 | |
| 163 | let start = Instant::now(); |
| 164 | group_elem *= e; |
| 165 | d2 += start.elapsed(); |
| 166 | |
| 167 | let start = Instant::now(); |
| 168 | let _ = group_elem_affine.mul_bigint(e.into_bigint()); |
| 169 | d3 += start.elapsed(); |
| 170 | } |
| 171 | |
| 172 | println!("d0={:?}", d0); |
| 173 | println!("d1={:?}", d1); |
| 174 | println!("d2={:?}", d2); |
nothing calls this directly
no test coverage detected