Benchmarks of VM proving times made by Aligned¶
About¶
These benchmarks aim to provide a neutral suite for measuring the efficiency of zkVMs.
The benchmarks test the following programs:
- ✅ Fibonacci
- ✅ Keccak
- ️✅ RSP (Reth Succinct Processor)
The benchmarks are run on the following zkVMs:
You can run this Python notebook yourself to create new plots or analyze the data.
The Githbut repository is available here.
Raw results can be found here.
The full Jupyter notebook can be found here.
GPU Benchmarks on RTX A6000¶
The data was collected on a server with the following specs:
- GPU: NVIDIA RTX A6000 (48GB)
- RAM: 44GB
- OS: Ubuntu 22 LTS
Fibonacci Benchmark¶
In this section, we evaluate the performance of Fibonacci across various provers.
The data is sourced from bench_results/fibo_6_mar_25_A6000.csv
.
For validation, we will display the data sorted by Prover and N.
Data sorted by Prover and N for validation: Prover N Time Minutes 2 Risc0 10000 1.7s 0.03 5 Risc0 100000 5.6s 0.09 8 Risc0 1000000 48.9s 0.81 11 Risc0 10000000 7m45.5s 7.76 0 SP1-AVX2 10000 13.9s 0.23 3 SP1-AVX2 100000 13.3s 0.22 6 SP1-AVX2 1000000 22.8s 0.38 9 SP1-AVX2 10000000 1m46.8s 1.78 1 SP1-AVX2-Groth16 10000 53.1s 0.89 4 SP1-AVX2-Groth16 100000 53.7s 0.90 7 SP1-AVX2-Groth16 1000000 1m9.2s 1.15 10 SP1-AVX2-Groth16 10000000 2m27.1s 2.45
Plot: Log N vs Log Time¶
Time used at biggest sample taken¶
Prover | N (Millions) | Time | |
---|---|---|---|
9 | SP1-AVX2 | 10.00 | 1m46.8s |
10 | SP1-AVX2-Groth16 | 10.00 | 2m27.1s |
11 | Risc0 | 10.00 | 7m45.5s |
Keccak Benchmark¶
In this section we evaluate the performance of Keccak across various provers.
The data is sourced from bench_results/keccak_14_mar_25_A6000.csv
.
For validation, we will display the data sorted by Prover and N.
Data sorted by Prover and N for validation: Prover N Time Minutes 14 Risc0 100 5.1s 0.08 15 Risc0 1000 5.2s 0.09 16 Risc0 10000 5.7s 0.10 17 Risc0 100000 17.6s 0.29 18 Risc0 1000000 1m58.3s 1.97 19 Risc0 10000000 19m10.1s 19.17 0 SP1-AVX2 100 15.3s 0.26 2 SP1-AVX2 1000 15.3s 0.26 4 SP1-AVX2 10000 15.3s 0.26 6 SP1-AVX2 100000 15.9s 0.27 8 SP1-AVX2 1000000 26.3s 0.44 10 SP1-AVX2 10000000 2m11.5s 2.19 12 SP1-AVX2 100000000 19m48.4s 19.81 1 SP1-AVX2-Groth16 100 53.9s 0.90 3 SP1-AVX2-Groth16 1000 53.6s 0.89 5 SP1-AVX2-Groth16 10000 54.3s 0.90 7 SP1-AVX2-Groth16 100000 54.0s 0.90 9 SP1-AVX2-Groth16 1000000 1m4.5s 1.07 11 SP1-AVX2-Groth16 10000000 2m52.1s 2.87 13 SP1-AVX2-Groth16 100000000 20m29.3s 20.49
Plot: Log N vs Log Time¶
KiB hased per second at max sample¶
Prover | KiB/sec | |
---|---|---|
0 | SP1-AVX2 | 82.17 |
1 | SP1-AVX2-Groth16 | 79.44 |
2 | Risc0 | 8.49 |
Time used at 10M and 100M bytes¶
Prover | Bytes (Millions) | Time | |
---|---|---|---|
10 | SP1-AVX2 | 10.00 | 2m11.5s |
11 | SP1-AVX2-Groth16 | 10.00 | 2m52.1s |
19 | Risc0 | 10.00 | 19m10.1s |
Prover | Bytes (Millions) | Time | |
---|---|---|---|
12 | SP1-AVX2 | 100.00 | 19m48.4s |
13 | SP1-AVX2-Groth16 | 100.00 | 20m29.3s |
RSP Benchmark¶
In this section we evaluate the performance of RSP across various provers over blocks with different amounts of Gas.
Notice the cost is not purely lineal, since there can be blocks that require more keccaks and are more expensive to prove than others. For example, the block of 27M gas is cheaper to prove than the one of 18M Gas
The data is sourced from bench_results/rsp_18_mar_25_A6000.csv
.
For validation, we will display the data sorted by Prover and N.
Data sorted by Prover and N for validation: Prover N Time Minutes 1 RSP RISC0 1 6m6.5s 6.11 3 RSP RISC0 3 16m5.2s 16.09 5 RSP RISC0 9 44m28.9s 44.48 7 RSP RISC0 18 77m48.4s 77.81 9 RSP RISC0 27 37m9.0s 37.15 11 RSP RISC0 36 176m32.8s 176.55 0 RSP SP1 1 53.5s 0.89 2 RSP SP1 3 1m50.7s 1.84 4 RSP SP1 9 4m16.2s 4.27 6 RSP SP1 18 7m17.8s 7.30 8 RSP SP1 27 3m32.3s 3.54 10 RSP SP1 36 14m30.1s 14.50
Plot: Block Megagas vs Time¶
Note: The 27Mgas block has fewer transactions than the other blocks, but one of them is a high cpu usage transaction.
Time used for a 36M gas block¶
Prover | Megagas | Time | |
---|---|---|---|
10 | RSP SP1 | 36.00 | 14m30.1s |
11 | RSP RISC0 | 36.00 | 176m32.8s |
CPU Benchmarks on AMD EPYC 8534P 64-Core Processor¶
The data was collected on a server with the following specs:
- CPU: AMD EPYC 8534P 64-Core Processor
- RAM: 576GB
- OS: Ubuntu 24 LTS
Fibonacci Benchmark¶
In this section we evaluate the performance of Fibonacci across various provers.
The data is sourced from bench_results/fibo_5_mar_25_epyc8534p_64c_576gb.csv
.
For validation, we will display the data sorted by Prover and N.
Data sorted by Prover and N for validation: Prover N Time Minutes 0 Pico-AVX512 10000 22.9s 0.38 4 Pico-AVX512 100000 35.5s 0.59 8 Pico-AVX512 1000000 1m46.0s 1.77 12 Pico-AVX512 4000000 5m18.6s 5.31 3 Risc0 10000 10.8s 0.18 7 Risc0 100000 50.9s 0.85 11 Risc0 1000000 7m53.1s 7.89 15 Risc0 4000000 31m2.0s 31.03 1 SP1-AVX512 10000 16.0s 0.27 5 SP1-AVX512 100000 34.0s 0.57 9 SP1-AVX512 1000000 1m42.8s 1.71 13 SP1-AVX512 4000000 5m21.2s 5.35 2 SP1-AVX512-Groth16 10000 1m18.5s 1.31 6 SP1-AVX512-Groth16 100000 1m36.4s 1.61 10 SP1-AVX512-Groth16 1000000 2m45.8s 2.76 14 SP1-AVX512-Groth16 4000000 6m29.4s 6.49
Plot: Log N vs Log Time¶
Time used at biggest sample taken¶
Prover | N | Time | |
---|---|---|---|
12 | Pico-AVX512 | 4.00 | 5m18.6s |
13 | SP1-AVX512 | 4.00 | 5m21.2s |
14 | SP1-AVX512-Groth16 | 4.00 | 6m29.4s |
15 | Risc0 | 4.00 | 31m2.0s |
Keccak Benchmark¶
In this section we evaluate the performance of Keccak across various provers.
The data is sourced from bench_results/keccak_18_mar_25_epyc8534p_64c_576gb.csv
.
For validation, we will display the data sorted by Prover and N.
Data sorted by Prover and N for validation: Prover N Time Minutes 0 Pico-AVX512 Groth16 100 29.0s 0.48 3 Pico-AVX512 Groth16 1000 29.1s 0.49 6 Pico-AVX512 Groth16 10000 29.9s 0.50 9 Pico-AVX512 Groth16 100000 39.7s 0.66 12 Pico-AVX512 Groth16 1000000 1m45.3s 1.75 15 Pico-AVX512 Groth16 10000000 12m20.4s 12.34 18 Risc0 100 33.4s 0.56 19 Risc0 1000 34.3s 0.57 20 Risc0 10000 44.2s 0.74 21 Risc0 100000 2m20.1s 2.33 22 Risc0 1000000 16m47.0s 16.78 23 Risc0 10000000 158m15.4s 158.26 1 SP1-AVX512 100 53.8s 0.90 4 SP1-AVX512 1000 54.1s 0.90 7 SP1-AVX512 10000 54.6s 0.91 10 SP1-AVX512 100000 1m3.3s 1.05 13 SP1-AVX512 1000000 2m23.3s 2.39 16 SP1-AVX512 10000000 19m53.3s 19.89 2 SP1-AVX512-Groth16 100 1m56.0s 1.93 5 SP1-AVX512-Groth16 1000 1m56.8s 1.95 8 SP1-AVX512-Groth16 10000 1m56.3s 1.94 11 SP1-AVX512-Groth16 100000 2m6.0s 2.10 14 SP1-AVX512-Groth16 1000000 3m28.4s 3.47 17 SP1-AVX512-Groth16 10000000 21m6.0s 21.10
Plot: Log N vs Log Time¶
KiB hased per second at max sample¶
Prover | KiB/sec | |
---|---|---|
0 | Pico-AVX512 Groth16 | 13.19 |
1 | SP1-AVX512 | 8.18 |
2 | SP1-AVX512-Groth16 | 7.71 |
3 | Risc0 | 1.03 |
Time used at 100K bytes and 10M bytes¶
Prover | Bytes (Millions) | Time | |
---|---|---|---|
9 | Pico-AVX512 Groth16 | 0.10 | 39.7s |
10 | SP1-AVX512 | 0.10 | 1m3.3s |
11 | SP1-AVX512-Groth16 | 0.10 | 2m6.0s |
21 | Risc0 | 0.10 | 2m20.1s |
Prover | Bytes (Millions) | Time | |
---|---|---|---|
15 | Pico-AVX512 Groth16 | 10.00 | 12m20.4s |
16 | SP1-AVX512 | 10.00 | 19m53.3s |
17 | SP1-AVX512-Groth16 | 10.00 | 21m6.0s |
23 | Risc0 | 10.00 | 158m15.4s |
Appendix¶
RSP using different modes of SP1¶
The following plot shows the difference between the Core, Compressed and Groth16 mode of SP1
The data is sourced from bench_results/rsp_sp1_modes_13_mar_25_A6000.csv
For validation, we will display the data sorted by Prover and N.
Data sorted by Prover and N for validation: Prover N Time Minutes 0 RSP SP1-Compressed 1 54.5s 0.91 3 RSP SP1-Compressed 3 1m52.0s 1.87 6 RSP SP1-Compressed 9 4m18.3s 4.31 9 RSP SP1-Compressed 18 7m16.8s 7.28 12 RSP SP1-Compressed 27 3m32.8s 3.55 15 RSP SP1-Compressed 36 14m31.9s 14.53 2 RSP SP1-Core 1 52.9s 0.88 5 RSP SP1-Core 3 1m48.1s 1.80 8 RSP SP1-Core 9 4m12.8s 4.21 11 RSP SP1-Core 18 7m12.0s 7.20 14 RSP SP1-Core 27 3m26.9s 3.45 17 RSP SP1-Core 36 14m42.2s 14.70 1 RSP SP1-Groth16 1 1m32.7s 1.55 4 RSP SP1-Groth16 3 2m30.0s 2.50 7 RSP SP1-Groth16 9 4m56.4s 4.94 10 RSP SP1-Groth16 18 7m56.9s 7.95 13 RSP SP1-Groth16 27 4m11.8s 4.20 16 RSP SP1-Groth16 36 15m16.2s 15.27
Plot: Block Megagas vs Time for SP1 different modes¶
Time used for a 36M gas block¶
Prover | Megagas | Time | |
---|---|---|---|
15 | RSP SP1-Compressed | 36.00 | 14m31.9s |
16 | RSP SP1-Groth16 | 36.00 | 15m16.2s |
17 | RSP SP1-Core | 36.00 | 14m42.2s |
Plot: Block Megagas vs Proof Size¶
Proof size for a 36M gas block¶
Prover | Megagas | Size (KB)) | |
---|---|---|---|
15 | RSP SP1-Compressed | 36 | 1477.24 |
16 | RSP SP1-Groth16 | 36 | 1.45 |
17 | RSP SP1-Core | 36 | 824087.79 |