Skip to content

Commit f95940a

Browse files
authored
Merge pull request #241 from rubdos/bench-refactor
Refactor k-shuffle benchmark
2 parents 8e032e6 + 4fde6f3 commit f95940a

File tree

1 file changed

+64
-100
lines changed

1 file changed

+64
-100
lines changed

benches/r1cs.rs

Lines changed: 64 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ impl KShuffleGadget {
144144
.map(|v| prover.commit(*v, Scalar::random(&mut blinding_rng)))
145145
.unzip();
146146

147-
let cs = prover.finalize_inputs();
147+
let mut cs = prover.finalize_inputs();
148148

149149
Self::fill_cs(&mut cs, &input_vars, &output_vars);
150150

@@ -178,127 +178,91 @@ impl KShuffleGadget {
178178
.map(|commitment| verifier.commit(*commitment))
179179
.collect();
180180

181-
let cs = verifier.finalize_inputs();
181+
let mut cs = verifier.finalize_inputs();
182182

183183
Self::fill_cs(&mut cs, &input_vars, &output_vars);
184184

185185
cs.verify(proof)
186186
}
187187
}
188188

189-
fn kshuffle_prove_helper(k: usize, c: &mut Criterion) {
190-
let label = format!("{}-shuffle proof creation", k);
191-
192-
c.bench_function(&label, move |b| {
193-
// Generate inputs and outputs to kshuffle
194-
let mut rng = rand::thread_rng();
195-
let (min, max) = (0u64, std::u64::MAX);
196-
let input: Vec<Scalar> = (0..k)
197-
.map(|_| Scalar::from(rng.gen_range(min, max)))
198-
.collect();
199-
let mut output = input.clone();
200-
rand::thread_rng().shuffle(&mut output);
201-
202-
// Make kshuffle proof
203-
let pc_gens = PedersenGens::default();
204-
let bp_gens = BulletproofGens::new(128, 1);
205-
b.iter(|| {
206-
let mut prover_transcript = Transcript::new(b"ShuffleTest");
207-
KShuffleGadget::prove(&pc_gens, &bp_gens, &mut prover_transcript, &input, &output)
208-
.unwrap();
209-
})
210-
});
211-
}
212-
213-
fn kshuffle_prove_8(c: &mut Criterion) {
214-
kshuffle_prove_helper(8, c);
215-
}
216-
fn kshuffle_prove_16(c: &mut Criterion) {
217-
kshuffle_prove_helper(16, c);
218-
}
219-
fn kshuffle_prove_32(c: &mut Criterion) {
220-
kshuffle_prove_helper(32, c);
221-
}
222-
fn kshuffle_prove_64(c: &mut Criterion) {
223-
kshuffle_prove_helper(64, c);
224-
}
225-
fn kshuffle_prove_17(c: &mut Criterion) {
226-
kshuffle_prove_helper(17, c);
189+
fn bench_kshuffle_prove(c: &mut Criterion) {
190+
c.bench_function_over_inputs(
191+
"k-shuffle proof creation",
192+
move |b, k| {
193+
// Generate inputs and outputs to kshuffle
194+
let mut rng = rand::thread_rng();
195+
let (min, max) = (0u64, std::u64::MAX);
196+
let input: Vec<Scalar> = (0..*k)
197+
.map(|_| Scalar::from(rng.gen_range(min, max)))
198+
.collect();
199+
let mut output = input.clone();
200+
rand::thread_rng().shuffle(&mut output);
201+
202+
// Make kshuffle proof
203+
let pc_gens = PedersenGens::default();
204+
let bp_gens = BulletproofGens::new(128, 1);
205+
b.iter(|| {
206+
let mut prover_transcript = Transcript::new(b"ShuffleTest");
207+
KShuffleGadget::prove(&pc_gens, &bp_gens, &mut prover_transcript, &input, &output)
208+
.unwrap();
209+
})
210+
},
211+
vec![8, 16, 32, 64, 17],
212+
);
227213
}
228214

229215
criterion_group! {
230216
name = kshuffle_prove;
231217
config = Criterion::default();
232218
targets =
233-
kshuffle_prove_8,
234-
kshuffle_prove_16,
235-
kshuffle_prove_32,
236-
kshuffle_prove_64,
237-
kshuffle_prove_17,
219+
bench_kshuffle_prove,
238220
}
239221

240-
fn kshuffle_verify_helper(k: usize, c: &mut Criterion) {
241-
let label = format!("{}-shuffle proof verification", k);
242-
243-
c.bench_function(&label, move |b| {
244-
// Generate inputs and outputs to kshuffle
245-
let mut rng = rand::thread_rng();
246-
let (min, max) = (0u64, std::u64::MAX);
247-
let input: Vec<Scalar> = (0..k)
248-
.map(|_| Scalar::from(rng.gen_range(min, max)))
249-
.collect();
250-
let mut output = input.clone();
251-
rand::thread_rng().shuffle(&mut output);
252-
253-
// Make kshuffle proof
254-
let pc_gens = PedersenGens::default();
255-
let bp_gens = BulletproofGens::new(128, 1);
256-
let mut prover_transcript = Transcript::new(b"ShuffleTest");
257-
let (proof, in_commitments, out_commitments) =
258-
KShuffleGadget::prove(&pc_gens, &bp_gens, &mut prover_transcript, &input, &output)
222+
fn bench_kshuffle_verify(c: &mut Criterion) {
223+
c.bench_function_over_inputs(
224+
"k-shuffle proof verification",
225+
move |b, k| {
226+
// Generate inputs and outputs to kshuffle
227+
let mut rng = rand::thread_rng();
228+
let (min, max) = (0u64, std::u64::MAX);
229+
let input: Vec<Scalar> = (0..*k)
230+
.map(|_| Scalar::from(rng.gen_range(min, max)))
231+
.collect();
232+
let mut output = input.clone();
233+
rand::thread_rng().shuffle(&mut output);
234+
235+
// Make kshuffle proof
236+
let pc_gens = PedersenGens::default();
237+
let bp_gens = BulletproofGens::new(128, 1);
238+
let mut prover_transcript = Transcript::new(b"ShuffleTest");
239+
let (proof, in_commitments, out_commitments) =
240+
KShuffleGadget::prove(&pc_gens, &bp_gens, &mut prover_transcript, &input, &output)
241+
.unwrap();
242+
243+
// Verify kshuffle proof
244+
b.iter(|| {
245+
let mut verifier_transcript = Transcript::new(b"ShuffleTest");
246+
KShuffleGadget::verify(
247+
&pc_gens,
248+
&bp_gens,
249+
&mut verifier_transcript,
250+
&proof,
251+
&in_commitments,
252+
&out_commitments,
253+
)
259254
.unwrap();
260-
261-
// Verify kshuffle proof
262-
b.iter(|| {
263-
let mut verifier_transcript = Transcript::new(b"ShuffleTest");
264-
KShuffleGadget::verify(
265-
&pc_gens,
266-
&bp_gens,
267-
&mut verifier_transcript,
268-
&proof,
269-
&in_commitments,
270-
&out_commitments,
271-
)
272-
.unwrap();
273-
})
274-
});
275-
}
276-
277-
fn kshuffle_verify_8(c: &mut Criterion) {
278-
kshuffle_verify_helper(8, c);
279-
}
280-
fn kshuffle_verify_16(c: &mut Criterion) {
281-
kshuffle_verify_helper(16, c);
282-
}
283-
fn kshuffle_verify_32(c: &mut Criterion) {
284-
kshuffle_verify_helper(32, c);
285-
}
286-
fn kshuffle_verify_64(c: &mut Criterion) {
287-
kshuffle_verify_helper(64, c);
288-
}
289-
fn kshuffle_verify_17(c: &mut Criterion) {
290-
kshuffle_verify_helper(17, c);
255+
})
256+
},
257+
vec![8, 16, 32, 64, 17],
258+
);
291259
}
292260

293261
criterion_group! {
294262
name = kshuffle_verify;
295263
config = Criterion::default();
296264
targets =
297-
kshuffle_verify_8,
298-
kshuffle_verify_16,
299-
kshuffle_verify_32,
300-
kshuffle_verify_64,
301-
kshuffle_verify_17,
265+
bench_kshuffle_verify,
302266
}
303267

304268
criterion_main!(kshuffle_prove, kshuffle_verify);

0 commit comments

Comments
 (0)