Skip to content

Instantly share code, notes, and snippets.

@mratsim
Created February 10, 2021 15:31
Show Gist options
  • Save mratsim/b75ee54b27847904d3097bb83c2a0e02 to your computer and use it in GitHub Desktop.
Save mratsim/b75ee54b27847904d3097bb83c2a0e02 to your computer and use it in GitHub Desktop.
GMP vs Assembly for ZKP
$ ./bin/bls12_test.exe -m gmp_mont
JIT 1
ctest:module=size
ctest:module=naive
i=0 curve=BLS12_381
G1
G2
GT
G1::mulCT 656.335Kclk
G1::mul 584.777Kclk
G1::add 3.430Kclk
G1::dbl 2.554Kclk
G2::mulCT 1.528Mclk
G2::mul 1.262Mclk
G2::add 10.803Kclk
G2::dbl 6.506Kclk
GT::pow 2.159Mclk
G1::setStr chk 833.124Kclk
G1::setStr 3.587Kclk
G2::setStr chk 2.215Mclk
G2::setStr 7.897Kclk
hashAndMapToG1 902.709Kclk
hashAndMapToG2 1.857Mclk
Fp::add 18.72 clk
Fp::sub 17.19 clk
Fp::neg 13.85 clk
Fp::mul 273.88 clk
Fp::sqr 296.81 clk
Fp::inv 71.222Kclk
Fp::pow 153.802Kclk
Fr::add 14.25 clk
Fr::sub 13.68 clk
Fr::neg 10.01 clk
Fr::mul 144.30 clk
Fr::sqr 146.73 clk
Fr::inv 42.618Kclk
Fr::pow 53.826Kclk
Fp2::add 41.68 clk
Fp2::sub 39.58 clk
Fp2::neg 28.53 clk
Fp2::mul 1.013Kclk
Fp2::mul_xi 56.68 clk
Fp2::sqr 655.10 clk
Fp2::inv 71.707Kclk
FpDbl::addPre 22.53 clk
FpDbl::subPre 29.29 clk
FpDbl::add 34.07 clk
FpDbl::sub 29.63 clk
FpDbl::mulPre 196.91 clk
FpDbl::sqrPre 196.53 clk
FpDbl::mod 129.81 clk
Fp2Dbl::mulPre 714.67 clk
Fp2Dbl::sqrPre 446.13 clk
GT::add 311.32 clk
GT::mul 20.236Kclk
GT::sqr 14.768Kclk
GT::inv 102.425Kclk
FpDbl::mulPre 196.62 clk
pairing 6.391Mclk
millerLoop 2.818Mclk
finalExp 3.549Mclk
precomputeG2 717.575Kclk
precomputedML 2.059Mclk
millerLoopVec 14.228Mclk
ctest:module=finalExp
finalExp 3.522Mclk
ctest:module=mul_012
ctest:module=pairing
ctest:module=multi
BN254
calcBN1 203.154Kclk
naiveG2 49.883Kclk
calcBN2 384.732Kclk
naiveG2 247.231Kclk
BLS12_381
calcBN1 398.460Kclk
naiveG1 165.326Kclk
calcBN2 818.166Kclk
naiveG2 561.403Kclk
ctest:module=deserialize
verifyOrder(1)
deserializeG1 1.103Mclk
deserializeG2 2.874Mclk
verifyOrder(0)
deserializeG1 239.271Kclk
deserializeG2 586.866Kclk
ctest:module=verifyG1
ctest:module=verifyG2
ctest:name=bls12_test, module=9, total=3727, ok=3727, ng=0, exception=0
$ ./bin/bls12_test.exe -m xbyak
JIT 1
ctest:module=size
ctest:module=naive
i=0 curve=BLS12_381
G1
G2
GT
G1::mulCT 214.983Kclk
G1::mul 202.813Kclk
G1::add 1.176Kclk
G1::dbl 894.20 clk
G2::mulCT 459.182Kclk
G2::mul 400.215Kclk
G2::add 3.389Kclk
G2::dbl 2.087Kclk
GT::pow 711.686Kclk
G1::setStr chk 280.071Kclk
G1::setStr 2.908Kclk
G2::setStr chk 691.112Kclk
G2::setStr 6.039Kclk
hashAndMapToG1 407.026Kclk
hashAndMapToG2 742.675Kclk
Fp::add 14.26 clk
Fp::sub 9.76 clk
Fp::neg 8.46 clk
Fp::mul 97.05 clk
Fp::sqr 94.63 clk
Fp::inv 12.921Kclk
Fp::pow 52.588Kclk
Fr::add 10.77 clk
Fr::sub 9.95 clk
Fr::neg 6.93 clk
Fr::mul 56.70 clk
Fr::sqr 57.59 clk
Fr::inv 6.574Kclk
Fr::pow 20.923Kclk
Fp2::add 20.01 clk
Fp2::sub 15.38 clk
Fp2::neg 14.62 clk
Fp2::mul 304.68 clk
Fp2::mul_xi 23.23 clk
Fp2::sqr 207.05 clk
Fp2::inv 13.361Kclk
FpDbl::addPre 10.33 clk
FpDbl::subPre 10.10 clk
FpDbl::add 16.78 clk
FpDbl::sub 11.34 clk
FpDbl::mulPre 49.28 clk
FpDbl::sqrPre 42.42 clk
FpDbl::mod 54.77 clk
Fp2Dbl::mulPre 195.86 clk
Fp2Dbl::sqrPre 118.05 clk
GT::add 122.02 clk
GT::mul 6.640Kclk
GT::sqr 4.819Kclk
GT::inv 16.343Kclk
FpDbl::mulPre 49.26 clk
pairing 2.019Mclk
millerLoop 846.856Kclk
finalExp 1.147Mclk
precomputeG2 199.628Kclk
precomputedML 626.460Kclk
millerLoopVec 4.431Mclk
ctest:module=finalExp
finalExp 1.137Mclk
ctest:module=mul_012
ctest:module=pairing
ctest:module=multi
BN254
calcBN1 125.702Kclk
naiveG2 26.556Kclk
calcBN2 243.306Kclk
naiveG2 155.480Kclk
BLS12_381
calcBN1 209.751Kclk
naiveG1 60.126Kclk
calcBN2 450.469Kclk
naiveG2 272.782Kclk
ctest:module=deserialize
verifyOrder(1)
deserializeG1 423.109Kclk
deserializeG2 1.001Mclk
verifyOrder(0)
deserializeG1 139.493Kclk
deserializeG2 300.778Kclk
ctest:module=verifyG1
ctest:module=verifyG2
ctest:name=bls12_test, module=9, total=3727, ok=3727, ng=0, exception=0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment