Skip to content

Commit b8751b6

Browse files
guorong009brech1
andauthored
feat: use criterion for benchmarks (#25)
Co-authored-by: Brechy <brechy.web3@gmail.com>
1 parent ccbeafb commit b8751b6

File tree

15 files changed

+232
-155
lines changed

15 files changed

+232
-155
lines changed

.github/workflows/rust_benchmarks_parallel.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,17 @@ jobs:
6363
- name: Install nightly-2024-08-01 with rust-src for Powdr
6464
run: rustup toolchain install nightly-2024-08-01 --component rust-src
6565

66+
- name: Format
67+
run: cargo fmt --all -- --check
68+
6669
- name: Build full workspace (release)
6770
env:
6871
GITHUB_TOKEN: ${{ secrets.GH_PAT }} # for ACIR (required by protoc-prebuilt)
6972
run: cargo build --release --workspace
7073

74+
- name: Clippy
75+
run: cargo clippy --workspace --all-targets --all-features
76+
7177
detect-crates:
7278
needs: prepare-cache
7379
runs-on: macos-latest
@@ -189,6 +195,11 @@ jobs:
189195
if: ${{ contains(matrix.crate, 'powdr') }}
190196
run: rustup toolchain install nightly-2024-08-01 --component rust-src
191197

198+
- name: Install Nargo
199+
uses: noir-lang/noirup@v0.1.4
200+
with:
201+
toolchain: stable
202+
192203
- name: Run benches in ${{ matrix.crate }}
193204
run: |
194205
cd ${{ matrix.crate }}

.github/workflows/rust_benchmarks_serial.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,17 @@ jobs:
4848
- name: Install nightly-2024-08-01 with rust-src for Powdr
4949
run: rustup toolchain install nightly-2024-08-01 --component rust-src
5050

51+
- name: Format
52+
run: cargo fmt --all -- --check
53+
5154
- name: Build full workspace (release)
5255
env:
5356
GITHUB_TOKEN: ${{ secrets.GH_PAT }} # for ACIR (required by protoc-prebuilt)
5457
run: cargo build --release --workspace
5558

59+
- name: Clippy
60+
run: cargo clippy --workspace --all-targets --all-features
61+
5662
# ────────────────── 2. Rust workspace benchmarks ──────────────────
5763
bench-workspace:
5864
needs: prepare-cache
@@ -91,6 +97,11 @@ jobs:
9197
- name: Install nightly-2024-08-01 with rust-src for Powdr
9298
run: rustup toolchain install nightly-2024-08-01 --component rust-src
9399

100+
- name: Install Nargo
101+
uses: noir-lang/noirup@v0.1.4
102+
with:
103+
toolchain: stable
104+
94105
- name: Run workspace benchmarks
95106
run: cargo bench
96107

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

binius/src/bin/measure_lookup.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ fn benchmark_sha2(num_bytes: usize) -> Result<SubMetrics, Error> {
2424
metrics.preprocessing_peak_memory = peak_memory;
2525

2626
let mut buffer: Vec<u8> = Vec::new();
27-
let _ = constraint_system
27+
constraint_system
2828
.serialize(&mut buffer, binius_utils::SerializationMode::CanonicalTower)
2929
.expect("Failed to serialize constraint system");
3030
metrics.preprocessing_size = buffer.len();

binius/src/bin/measure_no_lookup.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ fn benchmark_sha2(num_bytes: usize) -> Result<SubMetrics, Error> {
2424
metrics.preprocessing_peak_memory = peak_memory;
2525

2626
let mut buffer: Vec<u8> = Vec::new();
27-
let _ = constraint_system
27+
constraint_system
2828
.serialize(&mut buffer, binius_utils::SerializationMode::CanonicalTower)
2929
.expect("Failed to serialize constraint system");
3030
metrics.preprocessing_size = buffer.len();

plonky2/src/bin/measure.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ fn main() {
1919
fn benchmark_sha2(num_bytes: usize) -> SubMetrics {
2020
let mut metrics = SubMetrics::new(num_bytes);
2121

22-
let ((data, pw), peak_memory) = measure_peak_memory(|| sha256_no_lookup_prepare());
22+
let ((data, pw), peak_memory) = measure_peak_memory(sha256_no_lookup_prepare);
2323
metrics.preprocessing_peak_memory = peak_memory;
2424

2525
let gate_serializer = U32GateSerializer;

plonky2/src/circuit.rs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -421,8 +421,8 @@ mod tests {
421421
#[test]
422422
fn test_sha256() -> Result<()> {
423423
let mut msg = vec![0; 128_usize];
424-
for i in 0..127 {
425-
msg[i] = i as u8;
424+
for (i, byte) in msg.iter_mut().enumerate().take(127) {
425+
*byte = i as u8;
426426
}
427427

428428
let msg_bits = array_to_bits(&msg);
@@ -434,15 +434,15 @@ mod tests {
434434
let targets = make_circuits(&mut builder, len as u64);
435435
let mut pw = PartialWitness::new();
436436

437-
for i in 0..len {
438-
pw.set_bool_target(targets.message[i], msg_bits[i])?;
437+
for (target, &bit) in targets.message.iter().zip(msg_bits.iter()).take(len) {
438+
pw.set_bool_target(*target, bit)?;
439439
}
440440

441-
for i in 0..EXPECTED_RES.len() {
442-
if EXPECTED_RES[i] == 1 {
443-
builder.assert_one(targets.digest[i].target);
441+
for (&expected, digest) in EXPECTED_RES.iter().zip(targets.digest.iter()) {
442+
if expected == 1 {
443+
builder.assert_one(digest.target);
444444
} else {
445-
builder.assert_zero(targets.digest[i].target);
445+
builder.assert_zero(digest.target);
446446
}
447447
}
448448

@@ -464,8 +464,8 @@ mod tests {
464464
#[should_panic]
465465
fn test_sha256_failure() {
466466
let mut msg = vec![0; 128_usize];
467-
for i in 0..127 {
468-
msg[i] = i as u8;
467+
for (i, byte) in msg.iter_mut().enumerate().take(127) {
468+
*byte = i as u8;
469469
}
470470

471471
let msg_bits = array_to_bits(&msg);
@@ -477,18 +477,18 @@ mod tests {
477477
let targets = make_circuits(&mut builder, len as u64);
478478
let mut pw = PartialWitness::new();
479479

480-
for i in 0..len {
481-
pw.set_bool_target(targets.message[i], msg_bits[i]).unwrap();
480+
for (target, &bit) in targets.message.iter().zip(msg_bits.iter()).take(len) {
481+
pw.set_bool_target(*target, bit).unwrap();
482482
}
483483

484484
let mut rng = rand::thread_rng();
485485
let rnd = rng.gen_range(0..256);
486-
for i in 0..EXPECTED_RES.len() {
487-
let b = (i == rnd && EXPECTED_RES[i] != 1) || (i != rnd && EXPECTED_RES[i] == 1);
486+
for (i, (&expected, digest)) in EXPECTED_RES.iter().zip(targets.digest.iter()).enumerate() {
487+
let b = (i == rnd && expected != 1) || (i != rnd && expected == 1);
488488
if b {
489-
builder.assert_one(targets.digest[i].target);
489+
builder.assert_one(digest.target);
490490
} else {
491-
builder.assert_zero(targets.digest[i].target);
491+
builder.assert_zero(digest.target);
492492
}
493493
}
494494

plonky3-powdr/src/bin/measure.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ fn main() {
1313
fn benchmark_sha2(num_bytes: usize) -> SubMetrics {
1414
let mut metrics = SubMetrics::new(num_bytes);
1515

16-
let (mut pipeline, peak_memory) = measure_peak_memory(|| prepare_pipeline());
16+
let (mut pipeline, peak_memory) = measure_peak_memory(prepare_pipeline);
1717
metrics.preprocessing_peak_memory = peak_memory;
1818
println!(
1919
"Preprocessing peak memory: {} GB",

provekit/Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@ edition = "2024"
66
[dependencies]
77
rand = { workspace = true }
88
utils = { workspace = true }
9+
criterion = { workspace = true }
910
noir-r1cs = { git = "https://github.com/worldfnd/ProveKit", branch = "main" }
1011

1112
[[bench]]
12-
name = "provekit"
13+
name = "prove_verify"
1314
harness = false

provekit/README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# ProveKit SHA256 Benchmark
2+
3+
This benchmark code is using the ProveKit of World Foundation(https://github.com/worldfnd/ProveKit).
4+
5+
6+
## Benchmarking
7+
8+
```bash
9+
cargo bench
10+
```

0 commit comments

Comments
 (0)