Skip to content

Instantly share code, notes, and snippets.

@huitseeker
Created January 13, 2024 20:30
Show Gist options
  • Save huitseeker/cad65b7125f1cc78791ad0d8f2899bc5 to your computer and use it in GitHub Desktop.
Save huitseeker/cad65b7125f1cc78791ad0d8f2899bc5 to your computer and use it in GitHub Desktop.
# Benchmarks
## Table of Contents
- [Benchmark Results](#benchmark-results)
- [CompressedSNARK](#compressedsnark)
- [CompressedSNARK-Commitments](#compressedsnark-commitments)
- [CompressedSNARKSuperNova-1circuit](#compressedsnarksupernova-1circuit)
- [CompressedSNARKSuperNova-2circuit](#compressedsnarksupernova-2circuit)
- [CompressedSNARKSuperNova-Commitments-2circuit](#compressedsnarksupernova-commitments-2circuit)
- [RecursiveSNARK](#recursivesnark)
- [RecursiveSNARKSuperNova-1circuit](#recursivesnarksupernova-1circuit)
- [RecursiveSNARKSuperNova-2circuit](#recursivesnarksupernova-2circuit)
## Benchmark Results
### CompressedSNARK
| | `curve-cycle=Pasta` | `curve-cycle=Grumpkin` |
|:-------------------------------------|:-----------------------------|:--------------------------------- |
| **`Prove-StepCircuitSize-0`** | `348.77 ms` (✅ **1.00x**) | `430.32 ms` (❌ *1.23x slower*) |
| **`Verify-StepCircuitSize-0`** | `20.57 ms` (✅ **1.00x**) | `20.50 ms` (✅ **1.00x faster**) |
| **`Prove-StepCircuitSize-6559`** | `367.93 ms` (✅ **1.00x**) | `606.42 ms` (❌ *1.65x slower*) |
| **`Verify-StepCircuitSize-6559`** | `20.62 ms` (✅ **1.00x**) | `28.74 ms` (❌ *1.39x slower*) |
| **`Prove-StepCircuitSize-22943`** | `520.23 ms` (✅ **1.00x**) | `986.39 ms` (❌ *1.90x slower*) |
| **`Verify-StepCircuitSize-22943`** | `28.83 ms` (✅ **1.00x**) | `19.12 ms` (✅ **1.51x faster**) |
| **`Prove-StepCircuitSize-55711`** | `886.99 ms` (✅ **1.00x**) | `1.71 s` (❌ *1.93x slower*) |
| **`Verify-StepCircuitSize-55711`** | `20.04 ms` (✅ **1.00x**) | `25.84 ms` (❌ *1.29x slower*) |
| **`Prove-StepCircuitSize-121247`** | `1.46 s` (✅ **1.00x**) | `3.13 s` (❌ *2.14x slower*) |
| **`Verify-StepCircuitSize-121247`** | `27.96 ms` (✅ **1.00x**) | `37.66 ms` (❌ *1.35x slower*) |
| **`Prove-StepCircuitSize-252319`** | `2.69 s` (✅ **1.00x**) | `5.88 s` (❌ *2.19x slower*) |
| **`Verify-StepCircuitSize-252319`** | `39.55 ms` (✅ **1.00x**) | `54.62 ms` (❌ *1.38x slower*) |
| **`Prove-StepCircuitSize-514463`** | `5.14 s` (✅ **1.00x**) | `11.42 s` (❌ *2.22x slower*) |
| **`Verify-StepCircuitSize-514463`** | `62.26 ms` (✅ **1.00x**) | `98.22 ms` (❌ *1.58x slower*) |
| **`Prove-StepCircuitSize-1038751`** | `9.87 s` (✅ **1.00x**) | `22.49 s` (❌ *2.28x slower*) |
| **`Verify-StepCircuitSize-1038751`** | `106.30 ms` (✅ **1.00x**) | `185.64 ms` (❌ *1.75x slower*) |
### CompressedSNARK-Commitments
| | `curve-cycle=Pasta` | `curve-cycle=Grumpkin` |
|:------------------------------------|:-----------------------------|:-------------------------------- |
| **`Prove-StepCircuitSize-0`** | `2.87 s` (✅ **1.00x**) | `3.38 s` (❌ *1.18x slower*) |
| **`Verify-StepCircuitSize-0`** | `23.33 ms` (✅ **1.00x**) | `22.63 ms` (✅ **1.03x faster**) |
| **`Prove-StepCircuitSize-6559`** | `5.54 s` (✅ **1.00x**) | `6.07 s` (✅ **1.10x slower**) |
| **`Verify-StepCircuitSize-6559`** | `26.83 ms` (✅ **1.00x**) | `25.27 ms` (✅ **1.06x faster**) |
| **`Prove-StepCircuitSize-22943`** | `4.89 s` (✅ **1.00x**) | `5.57 s` (❌ *1.14x slower*) |
| **`Verify-StepCircuitSize-22943`** | `26.47 ms` (✅ **1.00x**) | `25.45 ms` (✅ **1.04x faster**) |
| **`Prove-StepCircuitSize-55711`** | `9.50 s` (✅ **1.00x**) | `10.65 s` (❌ *1.12x slower*) |
| **`Verify-StepCircuitSize-55711`** | `41.61 ms` (✅ **1.00x**) | `38.42 ms` (✅ **1.08x faster**) |
| **`Prove-StepCircuitSize-121247`** | `7.12 s` (✅ **1.00x**) | `8.09 s` (❌ *1.14x slower*) |
| **`Verify-StepCircuitSize-121247`** | `41.17 ms` (✅ **1.00x**) | `38.98 ms` (✅ **1.06x faster**) |
| **`Prove-StepCircuitSize-252319`** | `13.93 s` (✅ **1.00x**) | `15.26 s` (✅ **1.10x slower**) |
| **`Verify-StepCircuitSize-252319`** | `74.33 ms` (✅ **1.00x**) | `71.78 ms` (✅ **1.04x faster**) |
### CompressedSNARKSuperNova-1circuit
| | `curve-cycle=Pasta` | `curve-cycle=Grumpkin` |
|:-------------------------------------|:-----------------------------|:--------------------------------- |
| **`Prove-StepCircuitSize-0`** | `386.84 ms` (✅ **1.00x**) | `446.40 ms` (❌ *1.15x slower*) |
| **`Verify-StepCircuitSize-0`** | `29.08 ms` (✅ **1.00x**) | `29.02 ms` (✅ **1.00x faster**) |
| **`Prove-StepCircuitSize-6540`** | `383.31 ms` (✅ **1.00x**) | `638.00 ms` (❌ *1.66x slower*) |
| **`Verify-StepCircuitSize-6540`** | `29.31 ms` (✅ **1.00x**) | `36.34 ms` (❌ *1.24x slower*) |
| **`Prove-StepCircuitSize-22924`** | `554.69 ms` (✅ **1.00x**) | `1.02 s` (❌ *1.84x slower*) |
| **`Verify-StepCircuitSize-22924`** | `36.36 ms` (✅ **1.00x**) | `26.88 ms` (✅ **1.35x faster**) |
| **`Prove-StepCircuitSize-55692`** | `887.91 ms` (✅ **1.00x**) | `1.74 s` (❌ *1.96x slower*) |
| **`Verify-StepCircuitSize-55692`** | `27.36 ms` (✅ **1.00x**) | `32.95 ms` (❌ *1.20x slower*) |
| **`Prove-StepCircuitSize-121228`** | `1.52 s` (✅ **1.00x**) | `3.13 s` (❌ *2.06x slower*) |
| **`Verify-StepCircuitSize-121228`** | `33.83 ms` (✅ **1.00x**) | `43.58 ms` (❌ *1.29x slower*) |
| **`Prove-StepCircuitSize-252300`** | `2.75 s` (✅ **1.00x**) | `6.00 s` (❌ *2.19x slower*) |
| **`Verify-StepCircuitSize-252300`** | `45.02 ms` (✅ **1.00x**) | `63.26 ms` (❌ *1.41x slower*) |
| **`Prove-StepCircuitSize-514444`** | `5.10 s` (✅ **1.00x**) | `11.63 s` (❌ *2.28x slower*) |
| **`Verify-StepCircuitSize-514444`** | `67.50 ms` (✅ **1.00x**) | `107.32 ms` (❌ *1.59x slower*) |
| **`Prove-StepCircuitSize-1038732`** | `9.81 s` (✅ **1.00x**) | `22.74 s` (❌ *2.32x slower*) |
| **`Verify-StepCircuitSize-1038732`** | `114.65 ms` (✅ **1.00x**) | `195.35 ms` (❌ *1.70x slower*) |
### CompressedSNARKSuperNova-2circuit
| | `curve-cycle=Pasta` | `curve-cycle=Grumpkin` |
|:-------------------------------------|:-----------------------------|:--------------------------------- |
| **`Prove-StepCircuitSize-0`** | `386.30 ms` (✅ **1.00x**) | `455.80 ms` (❌ *1.18x slower*) |
| **`Verify-StepCircuitSize-0`** | `29.81 ms` (✅ **1.00x**) | `29.54 ms` (✅ **1.01x faster**) |
| **`Prove-StepCircuitSize-6540`** | `393.51 ms` (✅ **1.00x**) | `637.21 ms` (❌ *1.62x slower*) |
| **`Verify-StepCircuitSize-6540`** | `30.12 ms` (✅ **1.00x**) | `37.63 ms` (❌ *1.25x slower*) |
| **`Prove-StepCircuitSize-22924`** | `553.79 ms` (✅ **1.00x**) | `1.03 s` (❌ *1.87x slower*) |
| **`Verify-StepCircuitSize-22924`** | `37.71 ms` (✅ **1.00x**) | `29.79 ms` (✅ **1.27x faster**) |
| **`Prove-StepCircuitSize-55692`** | `877.94 ms` (✅ **1.00x**) | `1.81 s` (❌ *2.06x slower*) |
| **`Verify-StepCircuitSize-55692`** | `30.72 ms` (✅ **1.00x**) | `37.47 ms` (❌ *1.22x slower*) |
| **`Prove-StepCircuitSize-121228`** | `1.51 s` (✅ **1.00x**) | `3.26 s` (❌ *2.16x slower*) |
| **`Verify-StepCircuitSize-121228`** | `39.59 ms` (✅ **1.00x**) | `49.77 ms` (❌ *1.26x slower*) |
| **`Prove-StepCircuitSize-252300`** | `2.78 s` (✅ **1.00x**) | `6.07 s` (❌ *2.18x slower*) |
| **`Verify-StepCircuitSize-252300`** | `52.46 ms` (✅ **1.00x**) | `73.63 ms` (❌ *1.40x slower*) |
| **`Prove-StepCircuitSize-514444`** | `5.27 s` (✅ **1.00x**) | `11.70 s` (❌ *2.22x slower*) |
| **`Verify-StepCircuitSize-514444`** | `82.57 ms` (✅ **1.00x**) | `134.28 ms` (❌ *1.63x slower*) |
| **`Prove-StepCircuitSize-1038732`** | `9.88 s` (✅ **1.00x**) | `23.43 s` (❌ *2.37x slower*) |
| **`Verify-StepCircuitSize-1038732`** | `147.19 ms` (✅ **1.00x**) | `246.57 ms` (❌ *1.68x slower*) |
### CompressedSNARKSuperNova-Commitments-2circuit
| | `curve-cycle=Pasta` | `curve-cycle=Grumpkin` |
|:-------------------------------------|:-----------------------------|:--------------------------------- |
| **`Prove-StepCircuitSize-0`** | `5.39 s` (✅ **1.00x**) | `6.17 s` (❌ *1.14x slower*) |
| **`Verify-StepCircuitSize-0`** | `48.78 ms` (✅ **1.00x**) | `46.47 ms` (✅ **1.05x faster**) |
| **`Prove-StepCircuitSize-6540`** | `9.51 s` (✅ **1.00x**) | `10.33 s` (✅ **1.09x slower**) |
| **`Verify-StepCircuitSize-6540`** | `57.97 ms` (✅ **1.00x**) | `55.47 ms` (✅ **1.05x faster**) |
| **`Prove-StepCircuitSize-22924`** | `8.39 s` (✅ **1.00x**) | `9.32 s` (✅ **1.11x slower**) |
| **`Verify-StepCircuitSize-22924`** | `58.40 ms` (✅ **1.00x**) | `55.63 ms` (✅ **1.05x faster**) |
| **`Prove-StepCircuitSize-55692`** | `15.12 s` (✅ **1.00x**) | `16.57 s` (✅ **1.10x slower**) |
| **`Verify-StepCircuitSize-55692`** | `73.42 ms` (✅ **1.00x**) | `68.47 ms` (✅ **1.07x faster**) |
| **`Prove-StepCircuitSize-121228`** | `10.13 s` (✅ **1.00x**) | `11.78 s` (❌ *1.16x slower*) |
| **`Verify-StepCircuitSize-121228`** | `74.25 ms` (✅ **1.00x**) | `68.44 ms` (✅ **1.08x faster**) |
| **`Prove-StepCircuitSize-252300`** | `19.35 s` (✅ **1.00x**) | `21.55 s` (❌ *1.11x slower*) |
| **`Verify-StepCircuitSize-252300`** | `106.53 ms` (✅ **1.00x**) | `100.84 ms` (✅ **1.06x faster**) |
| **`Prove-StepCircuitSize-514444`** | `36.97 s` (✅ **1.00x**) | `40.13 s` (✅ **1.09x slower**) |
| **`Verify-StepCircuitSize-514444`** | `170.73 ms` (✅ **1.00x**) | `162.33 ms` (✅ **1.05x faster**) |
| **`Prove-StepCircuitSize-1038732`** | `71.42 s` (✅ **1.00x**) | `77.24 s` (✅ **1.08x slower**) |
| **`Verify-StepCircuitSize-1038732`** | `297.00 ms` (✅ **1.00x**) | `280.31 ms` (✅ **1.06x faster**) |
### RecursiveSNARK
| | `curve-cycle=Pasta` | `curve-cycle=Grumpkin` |
|:-------------------------------------|:-----------------------------|:--------------------------------- |
| **`Prove-StepCircuitSize-0`** | `37.14 ms` (✅ **1.00x**) | `28.64 ms` (✅ **1.30x faster**) |
| **`Verify-StepCircuitSize-0`** | `15.90 ms` (✅ **1.00x**) | `16.55 ms` (✅ **1.04x slower**) |
| **`Prove-StepCircuitSize-6559`** | `43.38 ms` (✅ **1.00x**) | `36.71 ms` (✅ **1.18x faster**) |
| **`Verify-StepCircuitSize-6559`** | `20.56 ms` (✅ **1.00x**) | `21.33 ms` (✅ **1.04x slower**) |
| **`Prove-StepCircuitSize-22943`** | `59.44 ms` (✅ **1.00x**) | `53.72 ms` (✅ **1.11x faster**) |
| **`Verify-StepCircuitSize-22943`** | `32.63 ms` (✅ **1.00x**) | `33.49 ms` (✅ **1.03x slower**) |
| **`Prove-StepCircuitSize-55711`** | `72.48 ms` (✅ **1.00x**) | `43.64 ms` (✅ **1.66x faster**) |
| **`Verify-StepCircuitSize-55711`** | `34.33 ms` (✅ **1.00x**) | `19.48 ms` (✅ **1.76x faster**) |
| **`Prove-StepCircuitSize-121247`** | `58.92 ms` (✅ **1.00x**) | `55.99 ms` (✅ **1.05x faster**) |
| **`Verify-StepCircuitSize-121247`** | `21.80 ms` (✅ **1.00x**) | `23.47 ms` (✅ **1.08x slower**) |
| **`Prove-StepCircuitSize-252319`** | `82.62 ms` (✅ **1.00x**) | `73.86 ms` (✅ **1.12x faster**) |
| **`Verify-StepCircuitSize-252319`** | `33.35 ms` (✅ **1.00x**) | `31.68 ms` (✅ **1.05x faster**) |
| **`Prove-StepCircuitSize-514463`** | `105.16 ms` (✅ **1.00x**) | `100.76 ms` (✅ **1.04x faster**) |
| **`Verify-StepCircuitSize-514463`** | `42.63 ms` (✅ **1.00x**) | `41.01 ms` (✅ **1.04x faster**) |
| **`Prove-StepCircuitSize-1038751`** | `167.04 ms` (✅ **1.00x**) | `164.66 ms` (✅ **1.01x faster**) |
| **`Verify-StepCircuitSize-1038751`** | `81.63 ms` (✅ **1.00x**) | `81.64 ms` (✅ **1.00x slower**) |
### RecursiveSNARKSuperNova-1circuit
| | `curve-cycle=Pasta` | `curve-cycle=Grumpkin` |
|:-------------------------------------|:-----------------------------|:--------------------------------- |
| **`Prove-StepCircuitSize-0`** | `39.01 ms` (✅ **1.00x**) | `30.59 ms` (✅ **1.28x faster**) |
| **`Verify-StepCircuitSize-0`** | `18.66 ms` (✅ **1.00x**) | `19.14 ms` (✅ **1.03x slower**) |
| **`Prove-StepCircuitSize-6540`** | `45.81 ms` (✅ **1.00x**) | `38.97 ms` (✅ **1.18x faster**) |
| **`Verify-StepCircuitSize-6540`** | `23.52 ms` (✅ **1.00x**) | `24.24 ms` (✅ **1.03x slower**) |
| **`Prove-StepCircuitSize-22924`** | `65.87 ms` (✅ **1.00x**) | `56.42 ms` (✅ **1.17x faster**) |
| **`Verify-StepCircuitSize-22924`** | `35.79 ms` (✅ **1.00x**) | `37.38 ms` (✅ **1.04x slower**) |
| **`Prove-StepCircuitSize-55692`** | `75.20 ms` (✅ **1.00x**) | `45.37 ms` (✅ **1.66x faster**) |
| **`Verify-StepCircuitSize-55692`** | `38.84 ms` (✅ **1.00x**) | `22.44 ms` (✅ **1.73x faster**) |
| **`Prove-StepCircuitSize-121228`** | `64.17 ms` (✅ **1.00x**) | `58.68 ms` (✅ **1.09x faster**) |
| **`Verify-StepCircuitSize-121228`** | `31.00 ms` (✅ **1.00x**) | `30.49 ms` (✅ **1.02x faster**) |
| **`Prove-StepCircuitSize-252300`** | `87.73 ms` (✅ **1.00x**) | `74.21 ms` (✅ **1.18x faster**) |
| **`Verify-StepCircuitSize-252300`** | `48.88 ms` (✅ **1.00x**) | `43.30 ms` (✅ **1.13x faster**) |
| **`Prove-StepCircuitSize-514444`** | `114.79 ms` (✅ **1.00x**) | `103.58 ms` (✅ **1.11x faster**) |
| **`Verify-StepCircuitSize-514444`** | `67.26 ms` (✅ **1.00x**) | `66.60 ms` (✅ **1.01x faster**) |
| **`Prove-StepCircuitSize-1038732`** | `180.49 ms` (✅ **1.00x**) | `174.22 ms` (✅ **1.04x faster**) |
| **`Verify-StepCircuitSize-1038732`** | `123.61 ms` (✅ **1.00x**) | `124.43 ms` (✅ **1.01x slower**) |
### RecursiveSNARKSuperNova-2circuit
| | `curve-cycle=Pasta` | `curve-cycle=Grumpkin` |
|:-------------------------------------|:-----------------------------|:--------------------------------- |
| **`Prove-StepCircuitSize-0`** | `38.71 ms` (✅ **1.00x**) | `30.61 ms` (✅ **1.26x faster**) |
| **`Verify-StepCircuitSize-0`** | `18.73 ms` (✅ **1.00x**) | `19.18 ms` (✅ **1.02x slower**) |
| **`Prove-StepCircuitSize-6540`** | `45.46 ms` (✅ **1.00x**) | `38.61 ms` (✅ **1.18x faster**) |
| **`Verify-StepCircuitSize-6540`** | `23.50 ms` (✅ **1.00x**) | `24.34 ms` (✅ **1.04x slower**) |
| **`Prove-StepCircuitSize-22924`** | `63.35 ms` (✅ **1.00x**) | `55.79 ms` (✅ **1.14x faster**) |
| **`Verify-StepCircuitSize-22924`** | `35.81 ms` (✅ **1.00x**) | `37.56 ms` (✅ **1.05x slower**) |
| **`Prove-StepCircuitSize-55692`** | `74.51 ms` (✅ **1.00x**) | `45.26 ms` (✅ **1.65x faster**) |
| **`Verify-StepCircuitSize-55692`** | `38.74 ms` (✅ **1.00x**) | `22.33 ms` (✅ **1.73x faster**) |
| **`Prove-StepCircuitSize-121228`** | `63.68 ms` (✅ **1.00x**) | `58.75 ms` (✅ **1.08x faster**) |
| **`Verify-StepCircuitSize-121228`** | `30.62 ms` (✅ **1.00x**) | `31.17 ms` (✅ **1.02x slower**) |
| **`Prove-StepCircuitSize-252300`** | `87.72 ms` (✅ **1.00x**) | `73.84 ms` (✅ **1.19x faster**) |
| **`Verify-StepCircuitSize-252300`** | `48.96 ms` (✅ **1.00x**) | `43.14 ms` (✅ **1.13x faster**) |
| **`Prove-StepCircuitSize-514444`** | `115.08 ms` (✅ **1.00x**) | `103.71 ms` (✅ **1.11x faster**) |
| **`Verify-StepCircuitSize-514444`** | `67.81 ms` (✅ **1.00x**) | `66.97 ms` (✅ **1.01x faster**) |
| **`Prove-StepCircuitSize-1038732`** | `180.85 ms` (✅ **1.00x**) | `171.44 ms` (✅ **1.05x faster**) |
| **`Verify-StepCircuitSize-1038732`** | `124.33 ms` (✅ **1.00x**) | `120.19 ms` (✅ **1.03x faster**) |
---
Made with [criterion-table](https://github.com/nu11ptr/criterion-table)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment