Closed mratsim closed 4 months ago
This adds a benchmark for BN254 precompiles and support for SHA256 precompile.
Bench on Ryzen 7840U
CC=clang nimble bench_eth_evm_precompiles
-------------------------------------------------------------------------------------------------------------------------------- SHA256 - 32 bytes 72 gas 2117.65 MGas/s 29411764.706 ops/s 34 ns/op 114 CPU cycles (approx) SHA256 - 64 bytes 84 gas 1714.29 MGas/s 20408163.265 ops/s 49 ns/op 161 CPU cycles (approx) SHA256 - 96 bytes 96 gas 1959.18 MGas/s 20408163.265 ops/s 49 ns/op 163 CPU cycles (approx) SHA256 - 128 bytes 108 gas 1459.46 MGas/s 13513513.514 ops/s 74 ns/op 245 CPU cycles (approx) SHA256 - 160 bytes 120 gas 1600.00 MGas/s 13333333.333 ops/s 75 ns/op 247 CPU cycles (approx) SHA256 - 192 bytes 132 gas 1333.33 MGas/s 10101010.101 ops/s 99 ns/op 326 CPU cycles (approx) SHA256 - 224 bytes 144 gas 1425.74 MGas/s 9900990.099 ops/s 101 ns/op 333 CPU cycles (approx) SHA256 - 256 bytes 156 gas 1200.00 MGas/s 7692307.692 ops/s 130 ns/op 429 CPU cycles (approx) -------------------------------------------------------------------------------------------------------------------------------- BN254_G1ADD 150 gas 92.88 MGas/s 619195.046 ops/s 1615 ns/op 5321 CPU cycles (approx) BN254_G1MUL 6000 gas 234.48 MGas/s 39079.292 ops/s 25589 ns/op 84284 CPU cycles (approx) -------------------------------------------------------------------------------------------------------------------------------- BN254_PAIRINGCHECK 1 79000 gas 202.61 MGas/s 2564.648 ops/s 389917 ns/op 1284241 CPU cycles (approx) BN254_PAIRINGCHECK 2 113000 gas 205.44 MGas/s 1818.066 ops/s 550035 ns/op 1811617 CPU cycles (approx) BN254_PAIRINGCHECK 3 147000 gas 205.72 MGas/s 1399.443 ops/s 714570 ns/op 2353553 CPU cycles (approx) BN254_PAIRINGCHECK 4 181000 gas 207.10 MGas/s 1144.199 ops/s 873974 ns/op 2878570 CPU cycles (approx) BN254_PAIRINGCHECK 5 215000 gas 205.83 MGas/s 957.353 ops/s 1044547 ns/op 3440385 CPU cycles (approx) BN254_PAIRINGCHECK 6 249000 gas 208.77 MGas/s 838.437 ops/s 1192696 ns/op 3928333 CPU cycles (approx) BN254_PAIRINGCHECK 7 283000 gas 183.55 MGas/s 648.591 ops/s 1541804 ns/op 5078185 CPU cycles (approx) BN254_PAIRINGCHECK 8 317000 gas 205.62 MGas/s 648.647 ops/s 1541670 ns/op 5077739 CPU cycles (approx) -------------------------------------------------------------------------------------------------------------------------------- BLS12_G1ADD 500 gas 172.06 MGas/s 344115.623 ops/s 2906 ns/op 9572 CPU cycles (approx) BLS12_G2ADD 800 gas 203.30 MGas/s 254129.606 ops/s 3935 ns/op 12960 CPU cycles (approx) BLS12_G1MUL 12000 gas 146.57 MGas/s 12214.486 ops/s 81870 ns/op 269654 CPU cycles (approx) BLS12_G2MUL 45000 gas 349.88 MGas/s 7775.022 ops/s 128617 ns/op 423623 CPU cycles (approx) BLS12_MAP_FP_TO_G1 5500 gas 162.56 MGas/s 29556.068 ops/s 33834 ns/op 111439 CPU cycles (approx) BLS12_MAP_FP2_TO_G2 75000 gas 702.31 MGas/s 9364.173 ops/s 106790 ns/op 351733 CPU cycles (approx) -------------------------------------------------------------------------------------------------------------------------------- BLS12_PAIRINGCHECK 1 108000 gas 234.83 MGas/s 2174.390 ops/s 459899 ns/op 1514739 CPU cycles (approx) BLS12_PAIRINGCHECK 2 151000 gas 242.23 MGas/s 1604.145 ops/s 623385 ns/op 2053210 CPU cycles (approx) BLS12_PAIRINGCHECK 3 194000 gas 242.44 MGas/s 1249.711 ops/s 800185 ns/op 2635535 CPU cycles (approx) BLS12_PAIRINGCHECK 4 237000 gas 243.68 MGas/s 1028.169 ops/s 972603 ns/op 3203422 CPU cycles (approx) BLS12_PAIRINGCHECK 5 280000 gas 243.03 MGas/s 867.957 ops/s 1152131 ns/op 3794722 CPU cycles (approx) BLS12_PAIRINGCHECK 6 323000 gas 203.64 MGas/s 630.460 ops/s 1586144 ns/op 5224160 CPU cycles (approx) BLS12_PAIRINGCHECK 7 366000 gas 223.21 MGas/s 609.866 ops/s 1639704 ns/op 5400588 CPU cycles (approx) BLS12_PAIRINGCHECK 8 409000 gas 223.22 MGas/s 545.768 ops/s 1832279 ns/op 6034865 CPU cycles (approx) -------------------------------------------------------------------------------------------------------------------------------- BLS12_G1MSM 2 21312 gas 120.53 MGas/s 5655.469 ops/s 176820 ns/op 582377 CPU cycles (approx) BLS12_G1MSM 4 30768 gas 101.18 MGas/s 3288.392 ops/s 304100 ns/op 1001592 CPU cycles (approx) BLS12_G1MSM 8 43488 gas 82.00 MGas/s 1885.558 ops/s 530347 ns/op 1746772 CPU cycles (approx) BLS12_G1MSM 16 64128 gas 67.17 MGas/s 1047.452 ops/s 954698 ns/op 3144454 CPU cycles (approx) BLS12_G1MSM 32 103296 gas 58.75 MGas/s 568.737 ops/s 1758282 ns/op 5791189 CPU cycles (approx) BLS12_G1MSM 64 170496 gas 51.16 MGas/s 300.083 ops/s 3332407 ns/op 10975839 CPU cycles (approx) BLS12_G1MSM 128 267264 gas 42.32 MGas/s 158.335 ops/s 6315731 ns/op 20801919 CPU cycles (approx) -------------------------------------------------------------------------------------------------------------------------------- BLS12_G2MSM 2 79920 gas 273.26 MGas/s 3419.224 ops/s 292464 ns/op 963266 CPU cycles (approx) BLS12_G2MSM 4 115380 gas 166.78 MGas/s 1445.473 ops/s 691815 ns/op 2278600 CPU cycles (approx) BLS12_G2MSM 8 163080 gas 176.59 MGas/s 1082.859 ops/s 923481 ns/op 3041633 CPU cycles (approx) BLS12_G2MSM 16 240480 gas 151.50 MGas/s 630.007 ops/s 1587285 ns/op 5227985 CPU cycles (approx) BLS12_G2MSM 32 387360 gas 137.60 MGas/s 355.231 ops/s 2815073 ns/op 9271911 CPU cycles (approx) BLS12_G2MSM 64 639360 gas 118.29 MGas/s 185.020 ops/s 5404829 ns/op 17801714 CPU cycles (approx) BLS12_G2MSM 128 1002240 gas 102.00 MGas/s 101.775 ops/s 9825581 ns/op 32362139 CPU cycles (approx) --------------------------------------------------------------------------------------------------------------------------------
This adds a benchmark for BN254 precompiles and support for SHA256 precompile.
Bench on Ryzen 7840U