Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Benchmark run Intel(R) Xeon(R) W-1390P @ 3.50GHz · x86-64-v3 · full · ef9e82d3

Run Intel(R) Xeon(R) W-1390P @ 3.50GHz · x86-64-v3 · full · ef9e82d3 started 2026-10-08T18:42:23Z on Intel(R) Xeon(R) W-1390P @ 3.50GHz (?, x86_64) and timed commit ef9e82d39fbf06c605e1740360370f0003dc4ca4, built by rustc 1.98.1 (48a229cea 2026-09-01) with RUSTFLAGS -C target-cpu=x86-64-v3 -C target-feature=+pclmulqdq, in the full profile.

1623 benchmarks from run Intel(R) Xeon(R) W-1390P @ 3.50GHz · x86-64-v3 · full · ef9e82d3. Reading a run report explains the values, colours and tags.

Families compared

Each family’s nominal rho, this run’s costs (addition at throughput; hashing, preparation, encoding and decoding batched), the two regimes of Cost in repeated reconciliation for a set of items, a set difference of and a sketch of cells, in which a new item updates cells on average, and the mean time over seeds to find a curve and verify its certificate. Dominance is as defined in Measurement methodology. Additions are 89 to 99% of each rebuilt estimate.

curvesecurityper cellper new itemper party and roundcurve selectiondominated by
rhoaddencodedecodehash + preparesums retained, sums rebuilt, , findverifymeasured methodavailable tools
GF(2^127), 16 bytes
gf2_127(X:S:Z:T) extended accumulators, Pornin's formulas; Pornin x1: hash to addend; output already an addend62.819.5 ns (1.48× the best)22.7 ns (1.81× the best)25.7 ns (1.23× the best)103 ns (1.11× the best)368 ns (1.33× the best)26.7 ms (1.48× the best)16.0 ms170 µsagm+sieveRust (AGM), PARIgf2_127-lambda, gf2_127-w
gf2_127-lambdaincompleteλ-projective (X:L:Z) accumulators; Pornin x1: hash to addend; output already an addend62.817.6 ns (1.34× the best)17.5 ns (1.39× the best)24.0 ns (1.15× the best)92.7 ns (tied for the best, within noise)332 ns (1.20× the best)24.1 ms (1.33× the best)16.0 ms170 µsagm+sieveRust (AGM), PARInone
gf2_127-wincompleteλ-projective, w codec: hashes and decodes to λ-affine; Pornin x1: hash to addend; output already an addend62.817.7 ns (1.34× the best)17.0 ns (1.35× the best)22.6 ns (1.08× the best)92.8 ns (tied for the best, within noise, 1.00×)333 ns (1.20× the best)24.2 ms (1.34× the best)16.0 ms170 µsagm+sieveRust (AGM), PARInone
gf2_127-uunscaled (X:S:Z), w codec, direct addend hashes; Pornin x1: hash to addend; output already an addend62.813.2 ns (best)12.6 ns (best)27.5 ns (1.32× the best)98.0 ns (1.06× the best)277 ns (best)18.1 ms (best)16.0 ms170 µsagm+sieveRust (AGM), PARInone
GF(2^122) = GF(2^61)[u], dense constant, 16 bytes
gf2_122(X:S:Z:T) extended; Pornin x1: hash to addend; output already an addend60.319.9 ns (1.51× the best)22.1 ns (1.76× the best)24.0 ns (1.15× the best)103 ns (1.11× the best)373 ns (1.35× the best)27.2 ms (1.51× the best)18.1 ms126 µsagmRust (AGM), PARIgf2_127-w
gf2_122-lambdaincompleteλ-projective; Pornin x1: hash to addend; output already an addend60.320.2 ns (1.53× the best)17.3 ns (1.37× the best)24.1 ns (1.15× the best)95.0 ns (1.02× the best)370 ns (1.33× the best)27.6 ms (1.53× the best)18.1 ms126 µsagmRust (AGM), PARIgf2_127-w
gf2_122-wincompleteλ-projective, w codec; Pornin x1: hash to addend; output already an addend60.320.5 ns (1.55× the best)21.2 ns (1.69× the best)21.6 ns (1.03× the best)95.2 ns (1.03× the best)374 ns (1.35× the best)28.0 ms (1.55× the best)18.1 ms126 µsagmRust (AGM), PARInone
gf2_122-uunscaled (X:S:Z), w codec; Pornin x1: hash to addend; output already an addend60.314.3 ns (1.08× the best)18.4 ns (1.47× the best)26.0 ns (1.24× the best)99.3 ns (1.07× the best)294 ns (1.06× the best)19.6 ms (1.08× the best)18.1 ms126 µsagmRust (AGM), PARInone
GF(2^122), constant in GF(2^61) (GLS-shaped), 16 bytes
gf2_122-gls(X:S:Z:T) extended; Pornin x1: hash to addend; output already an addend59.819.3 ns (1.46× the best)21.1 ns (1.68× the best)22.7 ns (1.08× the best)101 ns (1.09× the best)363 ns (1.31× the best)26.4 ms (1.46× the best)5.75 ms152 µsagmRust (AGM), PARInone
gf2_122-gls-lambdaincompleteλ-projective; Pornin x1: hash to addend; output already an addend59.820.3 ns (1.53× the best)17.9 ns (1.42× the best)22.6 ns (1.08× the best)95.0 ns (1.03× the best)370 ns (1.33× the best)27.6 ms (1.53× the best)5.75 ms152 µsagmRust (AGM), PARInone
gf2_122-gls-wincompleteλ-projective, w codec; Pornin x1: hash to addend; output already an addend59.820.3 ns (1.54× the best)20.4 ns (1.62× the best)20.9 ns (best)94.6 ns (1.02× the best)370 ns (1.34× the best)27.7 ms (1.53× the best)5.75 ms152 µsagmRust (AGM), PARInone
gf2_122-gls-uunscaled (X:S:Z), w codec; Pornin x1: hash to addend; output already an addend59.813.7 ns (1.04× the best)18.0 ns (1.44× the best)24.7 ns (1.18× the best)97.6 ns (1.05× the best)284 ns (1.02× the best)18.8 ms (1.04× the best)5.75 ms152 µsagmRust (AGM), PARInone
GF(2^109), 14 bytes
gf2_109(X:S:Z:T) extended; Pornin x1: hash to addend; output already an addend53.820.4 ns (1.54× the best)18.2 ns (1.45× the best)26.7 ns (1.28× the best)114 ns (1.23× the best)390 ns (1.41× the best)27.8 ms (1.54× the best)20.7 ms135 µsagm+factorRust (AGM), PARIgf2_109-lambda, gf2_122-gls-lambda, gf2_122-lambda, gf2_127-lambda, gf2_127-w
gf2_109-lambdaincompleteλ-projective; Pornin x1: hash to addend; output already an addend53.818.9 ns (1.43× the best)14.1 ns (1.12× the best)26.5 ns (1.27× the best)105 ns (1.13× the best)361 ns (1.30× the best)25.8 ms (1.43× the best)20.7 ms135 µsagm+factorRust (AGM), PARInone
gf2_109-wincompleteλ-projective, w codec; Pornin x1: hash to addend; output already an addend53.818.9 ns (1.43× the best)21.6 ns (1.72× the best)24.4 ns (1.17× the best)104 ns (1.12× the best)361 ns (1.30× the best)25.9 ms (1.43× the best)20.7 ms135 µsagm+factorRust (AGM), PARIgf2_127-lambda, gf2_127-w
gf2_109-uunscaled (X:S:Z), w codec; Pornin x1: hash to addend; output already an addend53.813.5 ns (1.02× the best)21.9 ns (1.74× the best)27.7 ns (1.33× the best)110 ns (1.18× the best)293 ns (1.06× the best)18.5 ms (1.02× the best)20.7 ms135 µsagm+factorRust (AGM), PARIgf2_127-u
F_p, p = 2^127 − 1, 16 bytes
edwards127a = 1 Edwards, extended += cached62.327.5 ns (2.08× the best)31.9 ns (2.54× the best)541 ns (25.90× the best)1.28 µs (13.78× the best)1.65 µs (5.95× the best)39.4 ms (2.18× the best)1.08 s504 µspari+sievePARIgf2_127, gf2_127-lambda, gf2_127-u, gf2_127-w
weier127short Weierstrass, projective += affine63.358.7 ns (4.45× the best)16.7 ns (1.33× the best)539 ns (25.81× the best)1.17 µs (12.59× the best)1.96 µs (7.08× the best)81.6 ms (4.51× the best)1.27 s278 µspari+sievePARInone
weier127-jacobianincompleteshort Weierstrass, Jacobian += affine63.348.1 ns (3.64× the best)23.6 ns (1.88× the best)542 ns (25.93× the best)1.16 µs (12.50× the best)1.81 µs (6.54× the best)67.2 ms (3.72× the best)1.27 s278 µspari+sievePARInone
F_p, p = 2^107 − 1, 14 bytes
edwards107a = 1 Edwards, extended += cached52.327.6 ns (2.09× the best)35.1 ns (2.80× the best)426 ns (20.37× the best)954 ns (10.30× the best)1.33 µs (4.79× the best)39.0 ms (2.16× the best)Sagegf2_109, gf2_109-lambda, gf2_109-u, gf2_109-w, gf2_122, gf2_122-gls, gf2_122-gls-lambda, gf2_122-gls-u, gf2_122-gls-w, gf2_122-lambda, gf2_122-u, gf2_122-w, gf2_127, gf2_127-lambda, gf2_127-u, gf2_127-w
weier107short Weierstrass, projective += affine53.348.6 ns (3.68× the best)19.4 ns (1.54× the best)422 ns (20.19× the best)902 ns (9.73× the best)1.56 µs (5.63× the best)67.4 ms (3.73× the best)Sagegf2_109, gf2_109-lambda, gf2_122-gls-lambda, gf2_122-gls-u, gf2_122-lambda, gf2_122-u, gf2_127-lambda, gf2_127-u, gf2_127-w
weier107-jacobianincompleteshort Weierstrass, Jacobian += affine53.344.1 ns (3.34× the best)25.5 ns (2.03× the best)421 ns (20.13× the best)894 ns (9.64× the best)1.49 µs (5.39× the best)61.4 ms (3.40× the best)Sagegf2_109, gf2_109-lambda, gf2_109-u, gf2_109-w, gf2_122, gf2_122-gls, gf2_122-gls-lambda, gf2_122-gls-u, gf2_122-gls-w, gf2_122-lambda, gf2_122-u, gf2_122-w, gf2_127, gf2_127-lambda, gf2_127-u, gf2_127-w
F_p, p = 2^128 − 275, 16 bytes
twisted128a = −1 twisted Edwards modulo 2-torsion, extended += cached62.831.1 ns (2.35× the best)22.7 ns (1.81× the best)962 ns (46.04× the best)1.97 µs (21.28× the best)2.39 µs (8.64× the best)45.5 ms (2.52× the best)Sagegf2_127-lambda, gf2_127-u, gf2_127-w
F_{p²}, p = 2^61 − 1, 16 bytes
edwards61x2a = 1 Edwards, signed-x codec, extended += cached59.825.8 ns (1.95× the best)35.0 ns (2.79× the best)441 ns (21.08× the best)741 ns (7.99× the best)1.09 µs (3.94× the best)36.4 ms (2.01× the best)577 ms257 µspari+sievePARIgf2_122, gf2_122-gls, gf2_122-gls-lambda, gf2_122-gls-u, gf2_122-gls-w, gf2_122-lambda, gf2_122-u, gf2_122-w, gf2_127, gf2_127-lambda, gf2_127-u, gf2_127-w
weier61x2short Weierstrass, signed-x codec, projective += affine60.850.6 ns (3.83× the best)15.3 ns (1.22× the best)448 ns (21.43× the best)698 ns (7.53× the best)1.38 µs (5.00× the best)70.0 ms (3.87× the best)639 ms188 µspari+sievePARIgf2_127-u
weier61x2-jacobianincompleteshort Weierstrass, signed-x codec, Jacobian += affine60.850.2 ns (3.80× the best)24.8 ns (1.97× the best)445 ns (21.28× the best)699 ns (7.54× the best)1.38 µs (4.98× the best)69.4 ms (3.84× the best)639 ms188 µspari+sievePARIgf2_127, gf2_127-lambda, gf2_127-u, gf2_127-w
twisted61x2a = −1 Edwards modulo 2-torsion, extended += cached59.824.9 ns (1.89× the best)14.9 ns (1.19× the best)450 ns (21.55× the best)719 ns (7.75× the best)1.06 µs (3.81× the best)35.2 ms (1.95× the best)1.28 s318 µspari+sievePARIgf2_127-u
F_{p²}, p = 2^64 − 59, 16 bytes
twisted64x2a = −1 Edwards modulo 2-torsion, extended += cached62.833.3 ns (2.52× the best)22.6 ns (1.80× the best)647 ns (30.96× the best)1.01 µs (10.92× the best)1.46 µs (5.28× the best)47.1 ms (2.60× the best)2.20 s552 µspari+sievePARIgf2_127-lambda, gf2_127-u, gf2_127-w
F_{p²}, p = 2^64 − 2^32 + 1, 16 bytes
twisted-goldilocks2a = −1 Edwards modulo 2-torsion, extended += cached62.828.7 ns (2.18× the best)22.9 ns (1.83× the best)1.92 µs (92.00× the best)2.25 µs (24.24× the best)2.64 µs (9.51× the best)43.9 ms (2.43× the best)2.02 s767 µspari+sievePARIgf2_127-lambda, gf2_127-u, gf2_127-w

bold: the best of its column; italic, dotted: tied with the best within the confidence intervals; shading: ratio to the best, pale yellow at 1× to purple at 16× or more; grey: baseline, not compared.

Machine

Intel(R) Xeon(R) W-1390P @ 3.50GHz · x86-64-v3 · full · ef9e82d3
CPUIntel(R) Xeon(R) W-1390P @ 3.50GHz, 16 cores, 126 GiB
OS? (Linux 6.18.48, x86_64)
rustcrustc 1.98.1 (48a229cea 2026-09-01)
RUSTFLAGS-C target-cpu=x86-64-v3 -C target-feature=+pclmulqdq
field backend featuresavx2, pclmulqdq, sse4.1
commitef9e82d39fbf06c605e1740360370f0003dc4ca4
suitescompare compare107 compare109 compare122 compare_fp2 group riblt agm sieve curvegen
profilefull
criterion arguments–warm-up-time 3 –measurement-time 5 –sample-size 100 –nresamples 100000
run2026-10-08T18:42:23Z .. 2026-10-08T23:22:43Z

Load averages by phase while the run timed (Measurement methodology).

phaseseconds1-minute average, meanrunnable, meanrunnable, most
idle before251.320.000.0
compare6601.301.263.0
compare1072601.391.273.0
compare1092601.451.133.0
compare1224001.121.122.0
compare_fp25701.081.102.0
group37301.251.2220.0
group wide30551.251.1718.0
riblt mapping3451.151.073.0
riblt plan251.031.202.0
riblt66601.161.1316.0
agm851.161.062.0
sieve2401.091.5216.0
curvegen901.041.112.0
curvegen searches3651.081.153.0
idle after300.830.000.0

Group benchmark plan

Which families the group suite’s second pass timed. Its first pass timed every family’s core rows; from them and the comparison maps, bench-run chose the families whose modeled insertion at was within 50% of the cheapest (lead) and, if none of them was over a field of odd characteristic, the cheapest that was (contrast). The second pass added the batch sweep, subtraction, equality on pure cells and the hashes of IDs (The group plan).

familyrole
binary-u.127lead
binary-u.122-glslead
binary-u.109lead
binary-u.122lead
binary-lambda.127lead
binary-w.127lead
binary-lambda.109lead
binary-w.109lead
binary.122-glslead
binary.127lead
binary-lambda.122lead
binary-lambda.122-glslead
binary-w.122-glslead
binary.122lead
binary-w.122lead
binary.109lead
twisted.61x2contrast

RIBLT benchmark plan

Which RIBLT benchmarks this run generated. Before the RIBLT suite ran, bench-run chose from this run’s group and hash-to-curve results, for each family below, the hash its RIBLT benchmarks use and their scope: every sweep (full), each axis’s endpoints and middle (buffer), or one point of each benchmark (spot); and for full and buffer scope, the field whose projection hashes the family’s IDs cheapest and the one whose projection seeds mappings cheapest, under which it also encodes and peels cells keyed by IDs. The plan records what was measured, not a result; the XOR checksums and ristretto255 are timed in full regardless (The RIBLT plan).

familyhashscopeprojectionmapping projection
binary-lambda.109pornin-addendbuffergf2_127gf2_127
binary-lambda.122pornin-addendbuffergf2_127gf2_127
binary-lambda.122-glspornin-addendbuffergf2_127gf2_127
binary-lambda.127pornin-addendfullgf2_127gf2_127
binary-u.109pornin-addendfullgf2_127gf2_127
binary-u.122pornin-addendfullgf2_127gf2_127
binary-u.122-glspornin-addendfullgf2_127gf2_127
binary-u.127pornin-addendfullgf2_127gf2_127
binary-w.109pornin-addendbuffergf2_127gf2_127
binary-w.122pornin-addendbuffergf2_127gf2_127
binary-w.122-glspornin-addendbuffergf2_127gf2_127
binary-w.127pornin-addendfullgf2_127gf2_127
binary.109porninbuffergf2_127gf2_127
binary.122porninbuffergf2_127gf2_127
binary.122-glsporninbuffergf2_127gf2_127
binary.127porninbuffergf2_127gf2_127
edwards.107tispot
edwards.127tispot
edwards.61x2tispot
twisted.128tispot
twisted.61x2tispot
twisted.64x2tispot
twisted.goldilocks2tispot
weier-jacobian.107tispot
weier-jacobian.127tispot
weier-jacobian.61x2tispot
weier.107tispot
weier.127tispot
weier.61x2tispot

Insertion

Modeled insertion per item into a sketch of cells: a hash, a prepare, and an addition to each of the cells the item maps to on average (: ; : ; : ; : ; : ), by compatible recipes (Reading a run report). The references (xor, ristretto255) have no batched hash: they hash one item at a time, add the hash output as is, and are in the figure and the second grid. Each total also counts, the same for every family, the salted SHA-256 map digest and the xoshiro256pp walk through the item’s indices below (riblt.mapping): 78.2 ns at , 101 ns at , 138 ns at , 175 ns at , 211 ns at . The key XOR and count of each cell are not modelled; riblt.cells measures them with the rest of the cell updates.

curveper item, onceper cellper item, into k cells
hash (batched)prepare (batched)add (throughput): : : : :
GF(2^127), 16 bytes
gf2_127(X:S:Z:T) extended accumulators, Pornin's formulas113 ns (1.22× the best)6.36 ns (13.70× the best)19.5 ns (1.48× the best)254 ns (1.18× the best)323 ns (1.20× the best)437 ns (1.22× the best)560 ns (1.24× the best)681 ns (1.25× the best)
gf2_127compare suitePornin x1: hash to addend; output already an addend103 ns (1.11× the best)in the hash19.5 ns (1.48× the best)237 ns (1.11× the best)307 ns (1.14× the best)420 ns (1.18× the best)543 ns (1.20× the best)664 ns (1.22× the best)
gf2_127-lambdaincompleteλ-projective (X:L:Z) accumulators114 ns (1.23× the best)8.18 ns (17.62× the best)17.6 ns (1.34× the best)252 ns (1.17× the best)316 ns (1.18× the best)422 ns (1.18× the best)537 ns (1.19× the best)650 ns (1.19× the best)
gf2_127-lambdaincompletecompare suitehashed straight to : no prepare111 ns (1.20× the best)in the hash17.6 ns (1.34× the best)241 ns (1.12× the best)305 ns (1.14× the best)411 ns (1.15× the best)526 ns (1.16× the best)639 ns (1.17× the best)
gf2_127-lambdaincompletecompare suitePornin x1: hash to addend; output already an addend92.7 ns (tied for the best, within noise)in the hash17.6 ns (1.34× the best)222 ns (1.04× the best)287 ns (1.07× the best)393 ns (1.10× the best)507 ns (1.12× the best)620 ns (1.14× the best)
gf2_127-wincompleteλ-projective, w codec: hashes and decodes to λ-affine119 ns (1.29× the best)0.47 ns (1.01× the best)17.7 ns (1.34× the best)249 ns (1.16× the best)314 ns (1.17× the best)420 ns (1.18× the best)535 ns (1.18× the best)648 ns (1.19× the best)
gf2_127-wincompletecompare suitePornin x1: hash to addend; output already an addend92.8 ns (tied for the best, within noise, 1.00×)in the hash17.7 ns (1.34× the best)222 ns (1.04× the best)287 ns (1.07× the best)393 ns (1.10× the best)508 ns (1.12× the best)621 ns (1.14× the best)
gf2_127-uunscaled (X:S:Z), w codec, direct addend hashes125 ns (1.35× the best)0.47 ns (1.02× the best)13.2 ns (tied for the best, within noise)242 ns (1.13× the best)296 ns (1.10× the best)384 ns (1.08× the best)480 ns (1.06× the best)573 ns (1.05× the best)
gf2_127-ucompare suitePornin x1: hash to addend; output already an addend98.0 ns (1.06× the best)in the hash13.2 ns (tied for the best, within noise)214 ns (best)269 ns (best)357 ns (best)453 ns (best)546 ns (best)
GF(2^122) = GF(2^61)[u], dense constant, 16 bytes
gf2_122(X:S:Z:T) extended114 ns (1.23× the best)5.01 ns (10.80× the best)19.9 ns (1.51× the best)255 ns (1.19× the best)325 ns (1.21× the best)440 ns (1.23× the best)565 ns (1.25× the best)687 ns (1.26× the best)
gf2_122compare suitePornin x1: hash to addend; output already an addend103 ns (1.11× the best)in the hash19.9 ns (1.51× the best)239 ns (1.11× the best)309 ns (1.15× the best)424 ns (1.19× the best)549 ns (1.21× the best)671 ns (1.23× the best)
gf2_122-lambdaincompleteλ-projective115 ns (1.25× the best)8.18 ns (17.61× the best)20.2 ns (1.53× the best)261 ns (1.21× the best)332 ns (1.23× the best)448 ns (1.25× the best)574 ns (1.27× the best)698 ns (1.28× the best)
gf2_122-lambdaincompletecompare suitehashed straight to : no prepare119 ns (1.29× the best)in the hash20.2 ns (1.53× the best)256 ns (1.19× the best)327 ns (1.22× the best)443 ns (1.24× the best)570 ns (1.26× the best)694 ns (1.27× the best)
gf2_122-lambdaincompletecompare suitePornin x1: hash to addend; output already an addend95.0 ns (1.02× the best)in the hash20.2 ns (1.53× the best)232 ns (1.08× the best)303 ns (1.13× the best)419 ns (1.17× the best)545 ns (1.20× the best)669 ns (1.23× the best)
gf2_122-wincompleteλ-projective, w codec116 ns (1.25× the best)0.47 ns (tied for the best, within noise, 1.00×)20.5 ns (1.55× the best)254 ns (1.19× the best)326 ns (1.21× the best)443 ns (1.24× the best)570 ns (1.26× the best)696 ns (1.27× the best)
gf2_122-wincompletecompare suitePornin x1: hash to addend; output already an addend95.2 ns (1.03× the best)in the hash20.5 ns (1.55× the best)233 ns (1.09× the best)305 ns (1.13× the best)422 ns (1.18× the best)549 ns (1.21× the best)674 ns (1.24× the best)
gf2_122-uunscaled (X:S:Z), w codec127 ns (1.37× the best)0.49 ns (1.06× the best)14.3 ns (1.08× the best)247 ns (1.15× the best)304 ns (1.13× the best)397 ns (1.11× the best)497 ns (1.10× the best)595 ns (1.09× the best)
gf2_122-ucompare suitePornin x1: hash to addend; output already an addend99.3 ns (1.07× the best)in the hash14.3 ns (1.08× the best)219 ns (1.02× the best)276 ns (1.03× the best)369 ns (1.03× the best)469 ns (1.04× the best)567 ns (1.04× the best)
GF(2^122), constant in GF(2^61) (GLS-shaped), 16 bytes
gf2_122-gls(X:S:Z:T) extended116 ns (1.25× the best)4.27 ns (9.20× the best)19.3 ns (1.46× the best)255 ns (1.19× the best)324 ns (1.20× the best)436 ns (1.22× the best)558 ns (1.23× the best)678 ns (1.24× the best)
gf2_122-glscompare suitePornin x1: hash to addend; output already an addend101 ns (1.09× the best)in the hash19.3 ns (1.46× the best)236 ns (1.10× the best)304 ns (1.13× the best)417 ns (1.17× the best)539 ns (1.19× the best)659 ns (1.21× the best)
gf2_122-gls-lambdaincompleteλ-projective116 ns (1.25× the best)8.11 ns (17.46× the best)20.3 ns (1.53× the best)261 ns (1.22× the best)332 ns (1.23× the best)448 ns (1.25× the best)574 ns (1.27× the best)698 ns (1.28× the best)
gf2_122-gls-lambdaincompletecompare suitehashed straight to : no prepare121 ns (1.30× the best)in the hash20.3 ns (1.53× the best)258 ns (1.20× the best)329 ns (1.22× the best)445 ns (1.25× the best)571 ns (1.26× the best)695 ns (1.27× the best)
gf2_122-gls-lambdaincompletecompare suitePornin x1: hash to addend; output already an addend95.0 ns (1.03× the best)in the hash20.3 ns (1.53× the best)232 ns (1.08× the best)303 ns (1.13× the best)419 ns (1.17× the best)545 ns (1.21× the best)669 ns (1.23× the best)
gf2_122-gls-wincompleteλ-projective, w codec116 ns (1.25× the best)0.68 ns (1.47× the best)20.3 ns (1.54× the best)253 ns (1.18× the best)325 ns (1.21× the best)441 ns (1.23× the best)567 ns (1.25× the best)692 ns (1.27× the best)
gf2_122-gls-wincompletecompare suitePornin x1: hash to addend; output already an addend94.6 ns (1.02× the best)in the hash20.3 ns (1.54× the best)232 ns (1.08× the best)303 ns (1.13× the best)419 ns (1.17× the best)546 ns (1.21× the best)670 ns (1.23× the best)
gf2_122-gls-uunscaled (X:S:Z), w codec121 ns (1.30× the best)0.68 ns (1.46× the best)13.7 ns (1.04× the best)240 ns (1.12× the best)295 ns (1.10× the best)386 ns (1.08× the best)483 ns (1.07× the best)579 ns (1.06× the best)
gf2_122-gls-ucompare suitePornin x1: hash to addend; output already an addend97.6 ns (1.05× the best)in the hash13.7 ns (1.04× the best)216 ns (1.01× the best)271 ns (1.01× the best)362 ns (1.01× the best)459 ns (1.02× the best)555 ns (1.02× the best)
GF(2^109), 14 bytes
gf2_109(X:S:Z:T) extended126 ns (1.36× the best)4.25 ns (9.16× the best)20.4 ns (1.54× the best)268 ns (1.25× the best)339 ns (1.26× the best)455 ns (1.28× the best)582 ns (1.29× the best)707 ns (1.30× the best)
gf2_109compare suitePornin x1: hash to addend; output already an addend114 ns (1.23× the best)in the hash20.4 ns (1.54× the best)251 ns (1.17× the best)322 ns (1.20× the best)439 ns (1.23× the best)566 ns (1.25× the best)690 ns (1.27× the best)
gf2_109-lambdaincompleteλ-projective124 ns (1.34× the best)8.13 ns (17.51× the best)18.9 ns (1.43× the best)266 ns (1.24× the best)333 ns (1.24× the best)444 ns (1.24× the best)564 ns (1.25× the best)683 ns (1.25× the best)
gf2_109-lambdaincompletecompare suitehashed straight to : no prepare131 ns (1.41× the best)in the hash18.9 ns (1.43× the best)264 ns (1.23× the best)331 ns (1.23× the best)442 ns (1.24× the best)563 ns (1.24× the best)681 ns (1.25× the best)
gf2_109-lambdaincompletecompare suitePornin x1: hash to addend; output already an addend105 ns (1.13× the best)in the hash18.9 ns (1.43× the best)238 ns (1.11× the best)305 ns (1.14× the best)416 ns (1.17× the best)536 ns (1.19× the best)655 ns (1.20× the best)
gf2_109-wincompleteλ-projective, w codec120 ns (1.29× the best)0.47 ns (tied for the best, within noise, 1.01×)18.9 ns (1.43× the best)254 ns (1.18× the best)321 ns (1.20× the best)432 ns (1.21× the best)553 ns (1.22× the best)671 ns (1.23× the best)
gf2_109-wincompletecompare suitePornin x1: hash to addend; output already an addend104 ns (1.12× the best)in the hash18.9 ns (1.43× the best)237 ns (1.11× the best)305 ns (1.14× the best)416 ns (1.16× the best)537 ns (1.19× the best)655 ns (1.20× the best)
gf2_109-uunscaled (X:S:Z), w codec125 ns (1.35× the best)0.46 ns (tied for the best, within noise)13.5 ns (1.02× the best)243 ns (1.13× the best)298 ns (1.11× the best)387 ns (1.08× the best)484 ns (1.07× the best)578 ns (1.06× the best)
gf2_109-ucompare suitePornin x1: hash to addend; output already an addend110 ns (1.18× the best)in the hash13.5 ns (1.02× the best)227 ns (1.06× the best)282 ns (1.05× the best)372 ns (1.04× the best)468 ns (1.03× the best)563 ns (1.03× the best)
F_p, p = 2^127 − 1, 16 bytes
edwards127a = 1 Edwards, extended += cached1.24 µs (13.35× the best)39.9 ns (86.04× the best)27.5 ns (2.08× the best)1.44 µs (6.69× the best)1.52 µs (5.67× the best)1.67 µs (4.67× the best)1.83 µs (4.03× the best)1.98 µs (3.63× the best)
weier127short Weierstrass, projective += affine1.17 µs (12.58× the best)1.00 ns (2.15× the best)58.7 ns (4.45× the best)1.42 µs (6.60× the best)1.58 µs (5.87× the best)1.84 µs (5.16× the best)2.14 µs (4.73× the best)2.43 µs (4.46× the best)
weier127-jacobianincompleteshort Weierstrass, Jacobian += affine1.16 µs (12.49× the best)0.99 ns (2.13× the best)48.1 ns (3.64× the best)1.38 µs (6.42× the best)1.51 µs (5.64× the best)1.74 µs (4.87× the best)1.99 µs (4.39× the best)2.23 µs (4.09× the best)
F_p, p = 2^107 − 1, 14 bytes
edwards107a = 1 Edwards, extended += cached916 ns (9.89× the best)37.9 ns (81.74× the best)27.6 ns (2.09× the best)1.11 µs (5.19× the best)1.20 µs (4.47× the best)1.35 µs (3.77× the best)1.50 µs (3.32× the best)1.66 µs (3.04× the best)
weier107short Weierstrass, projective += affine901 ns (9.72× the best)0.63 ns (1.35× the best)48.6 ns (3.68× the best)1.12 µs (5.23× the best)1.26 µs (4.69× the best)1.49 µs (4.16× the best)1.74 µs (3.84× the best)1.98 µs (3.64× the best)
weier107-jacobianincompleteshort Weierstrass, Jacobian += affine893 ns (9.63× the best)0.63 ns (1.35× the best)44.1 ns (3.34× the best)1.10 µs (5.13× the best)1.23 µs (4.57× the best)1.44 µs (4.02× the best)1.67 µs (3.69× the best)1.90 µs (3.48× the best)
F_p, p = 2^128 − 275, 16 bytes
twisted128a = −1 twisted Edwards modulo 2-torsion, extended += cached1.96 µs (21.15× the best)12.7 ns (27.29× the best)31.1 ns (2.35× the best)2.14 µs (9.98× the best)2.24 µs (8.33× the best)2.40 µs (6.71× the best)2.57 µs (5.68× the best)2.74 µs (5.02× the best)
F_{p²}, p = 2^61 − 1, 16 bytes
edwards61x2a = 1 Edwards, signed-x codec, extended += cached706 ns (7.62× the best)34.9 ns (75.23× the best)25.8 ns (1.95× the best)894 ns (4.17× the best)978 ns (3.64× the best)1.12 µs (3.12× the best)1.27 µs (2.80× the best)1.41 µs (2.59× the best)
weier61x2short Weierstrass, signed-x codec, projective += affine698 ns (7.53× the best)0.52 ns (1.13× the best)50.6 ns (3.83× the best)923 ns (4.30× the best)1.07 µs (3.97× the best)1.30 µs (3.64× the best)1.56 µs (3.45× the best)1.82 µs (3.33× the best)
weier61x2-jacobianincompleteshort Weierstrass, signed-x codec, Jacobian += affine698 ns (7.53× the best)0.52 ns (1.12× the best)50.2 ns (3.80× the best)922 ns (4.30× the best)1.06 µs (3.96× the best)1.30 µs (3.63× the best)1.55 µs (3.44× the best)1.81 µs (3.32× the best)
twisted61x2a = −1 Edwards modulo 2-torsion, extended += cached711 ns (7.67× the best)7.93 ns (17.07× the best)24.9 ns (1.89× the best)869 ns (4.05× the best)951 ns (3.54× the best)1.09 µs (3.04× the best)1.23 µs (2.72× the best)1.38 µs (2.52× the best)
F_{p²}, p = 2^64 − 59, 16 bytes
twisted64x2a = −1 Edwards modulo 2-torsion, extended += cached1.00 µs (10.83× the best)8.79 ns (18.94× the best)33.3 ns (2.52× the best)1.19 µs (5.53× the best)1.29 µs (4.80× the best)1.46 µs (4.08× the best)1.64 µs (3.62× the best)1.82 µs (3.34× the best)
F_{p²}, p = 2^64 − 2^32 + 1, 16 bytes
twisted-goldilocks2a = −1 Edwards modulo 2-torsion, extended += cached2.24 µs (24.14× the best)9.54 ns (20.55× the best)28.7 ns (2.18× the best)2.41 µs (11.23× the best)2.50 µs (9.30× the best)2.65 µs (7.42× the best)2.81 µs (6.21× the best)2.97 µs (5.45× the best)

bold: the best of its column; italic, dotted: tied with the best within the confidence intervals; shading: ratio to the best, pale yellow at 1× to purple at 16× or more; grey: baseline, not compared.

The cost of inserting an item into a RIBLT as stacked bars of hash, prepare, the map digest and the mapping's indices below m, the same for every family, and k point additions, a panel per number of coded symbols m, k = 2(H_(m+1) - 1) being the number of symbols an item is added to on average; the lowest compatible batched recipe per family is shown. Preparation already included in a map has no separate segment. ristretto255 and the XOR baseline have no batched hash: they hash one item at a time and add the hash output as is. The time axis is logarithmic. All recipes and individual hashing are in the grids.The cost of inserting an item into a RIBLT as stacked bars of hash, prepare, the map digest and the mapping's indices below m, the same for every family, and k point additions, a panel per number of coded symbols m, k = 2(H_(m+1) - 1) being the number of symbols an item is added to on average; the lowest compatible batched recipe per family is shown. Preparation already included in a map has no separate segment. ristretto255 and the XOR baseline have no batched hash: they hash one item at a time and add the hash output as is. The time axis is logarithmic. All recipes and individual hashing are in the grids.

Hashing and preparing one item at a time
curveper item, onceper cellper item, into k cells
hash (alone)prepare (alone)add (throughput): : : : :
baseline
xorcompare suitehash output added as is: no prepare53.4 nsin the hash0.45 ns133 ns157 ns195 ns235 ns272 ns
GF(2^127), 16 bytes
gf2_127(X:S:Z:T) extended accumulators, Pornin's formulas366 ns (1.50× the best)6.38 ns (14.85× the best)19.5 ns (1.48× the best)508 ns (1.39× the best)577 ns (1.37× the best)690 ns (1.36× the best)813 ns (1.35× the best)934 ns (1.34× the best)
gf2_127compare suitePornin x2: hash to addend; output already an addend452 ns (1.85× the best)in the hash19.5 ns (1.48× the best)587 ns (1.61× the best)656 ns (1.56× the best)770 ns (1.51× the best)893 ns (1.48× the best)1.01 µs (1.45× the best)
gf2_127compare suitePornin x1: hash to addend; output already an addend256 ns (1.05× the best)in the hash19.5 ns (1.48× the best)391 ns (1.07× the best)460 ns (1.10× the best)574 ns (1.13× the best)697 ns (1.15× the best)818 ns (1.17× the best)
gf2_127-lambdaincompleteλ-projective (X:L:Z) accumulators394 ns (1.62× the best)129 ns (299.16× the best)17.6 ns (1.34× the best)652 ns (1.78× the best)717 ns (1.71× the best)823 ns (1.62× the best)938 ns (1.55× the best)1.05 µs (1.51× the best)
gf2_127-lambdaincompletecompare suitehashed straight to : no prepare369 ns (1.52× the best)in the hash17.6 ns (1.34× the best)499 ns (1.36× the best)563 ns (1.34× the best)669 ns (1.32× the best)784 ns (1.30× the best)897 ns (1.29× the best)
gf2_127-lambdaincompletecompare suitePornin x1: hash to addend; output already an addend245 ns (tied for the best, within noise, 1.00×)in the hash17.6 ns (1.34× the best)374 ns (1.02× the best)439 ns (1.05× the best)545 ns (1.07× the best)660 ns (1.09× the best)772 ns (1.11× the best)
gf2_127-wincompleteλ-projective, w codec: hashes and decodes to λ-affine392 ns (1.61× the best)0.45 ns (tied for the best, within noise, 1.06×)17.7 ns (1.34× the best)522 ns (1.43× the best)587 ns (1.40× the best)693 ns (1.36× the best)808 ns (1.34× the best)921 ns (1.32× the best)
gf2_127-wincompletecompare suitePornin x1: hash to addend; output already an addend244 ns (tied for the best, within noise)in the hash17.7 ns (1.34× the best)373 ns (1.02× the best)438 ns (1.04× the best)544 ns (1.07× the best)659 ns (1.09× the best)772 ns (1.11× the best)
gf2_127-uunscaled (X:S:Z), w codec, direct addend hashes401 ns (1.65× the best)0.48 ns (1.13× the best)13.2 ns (tied for the best, within noise)518 ns (1.42× the best)573 ns (1.36× the best)661 ns (1.30× the best)756 ns (1.25× the best)850 ns (1.22× the best)
gf2_127-ucompare suitePornin x1: hash to addend; output already an addend249 ns (1.02× the best)in the hash13.2 ns (tied for the best, within noise)366 ns (best)420 ns (best)508 ns (best)604 ns (best)697 ns (best)
GF(2^122) = GF(2^61)[u], dense constant, 16 bytes
gf2_122(X:S:Z:T) extended670 ns (2.75× the best)4.91 ns (11.42× the best)19.9 ns (1.51× the best)811 ns (2.22× the best)881 ns (2.10× the best)996 ns (1.96× the best)1.12 µs (1.86× the best)1.24 µs (1.78× the best)
gf2_122compare suitePornin x1: hash to addend; output already an addend392 ns (1.61× the best)in the hash19.9 ns (1.51× the best)528 ns (1.44× the best)598 ns (1.42× the best)713 ns (1.40× the best)837 ns (1.39× the best)960 ns (1.38× the best)
gf2_122-lambdaincompleteλ-projective679 ns (2.78× the best)251 ns (583.32× the best)20.2 ns (1.53× the best)1.07 µs (2.92× the best)1.14 µs (2.71× the best)1.25 µs (2.47× the best)1.38 µs (2.29× the best)1.50 µs (2.16× the best)
gf2_122-lambdaincompletecompare suitehashed straight to : no prepare672 ns (2.76× the best)in the hash20.2 ns (1.53× the best)809 ns (2.21× the best)880 ns (2.10× the best)996 ns (1.96× the best)1.12 µs (1.86× the best)1.25 µs (1.79× the best)
gf2_122-lambdaincompletecompare suitePornin x1: hash to addend; output already an addend381 ns (1.56× the best)in the hash20.2 ns (1.53× the best)518 ns (1.42× the best)589 ns (1.40× the best)705 ns (1.39× the best)831 ns (1.38× the best)956 ns (1.37× the best)
gf2_122-wincompleteλ-projective, w codec654 ns (2.69× the best)0.44 ns (tied for the best, within noise, 1.02×)20.5 ns (1.55× the best)793 ns (2.17× the best)864 ns (2.06× the best)981 ns (1.93× the best)1.11 µs (1.84× the best)1.23 µs (1.77× the best)
gf2_122-wincompletecompare suitePornin x1: hash to addend; output already an addend381 ns (1.56× the best)in the hash20.5 ns (1.55× the best)519 ns (1.42× the best)590 ns (1.41× the best)707 ns (1.39× the best)835 ns (1.38× the best)960 ns (1.38× the best)
gf2_122-uunscaled (X:S:Z), w codec674 ns (2.77× the best)0.50 ns (1.15× the best)14.3 ns (1.08× the best)794 ns (2.17× the best)851 ns (2.03× the best)944 ns (1.86× the best)1.04 µs (1.73× the best)1.14 µs (1.64× the best)
gf2_122-ucompare suitePornin x1: hash to addend; output already an addend391 ns (1.60× the best)in the hash14.3 ns (1.08× the best)511 ns (1.40× the best)567 ns (1.35× the best)660 ns (1.30× the best)761 ns (1.26× the best)859 ns (1.23× the best)
GF(2^122), constant in GF(2^61) (GLS-shaped), 16 bytes
gf2_122-gls(X:S:Z:T) extended697 ns (2.86× the best)4.22 ns (9.82× the best)19.3 ns (1.46× the best)835 ns (2.28× the best)904 ns (2.15× the best)1.02 µs (2.00× the best)1.14 µs (1.89× the best)1.26 µs (1.81× the best)
gf2_122-glscompare suitePornin x1: hash to addend; output already an addend394 ns (1.62× the best)in the hash19.3 ns (1.46× the best)529 ns (1.45× the best)597 ns (1.42× the best)710 ns (1.40× the best)832 ns (1.38× the best)952 ns (1.37× the best)
gf2_122-gls-lambdaincompleteλ-projective692 ns (2.84× the best)249 ns (579.08× the best)20.3 ns (1.53× the best)1.08 µs (2.95× the best)1.15 µs (2.74× the best)1.26 µs (2.49× the best)1.39 µs (2.30× the best)1.52 µs (2.17× the best)
gf2_122-gls-lambdaincompletecompare suitehashed straight to : no prepare679 ns (2.79× the best)in the hash20.3 ns (1.53× the best)816 ns (2.23× the best)887 ns (2.11× the best)1.00 µs (1.97× the best)1.13 µs (1.87× the best)1.25 µs (1.80× the best)
gf2_122-gls-lambdaincompletecompare suitePornin x1: hash to addend; output already an addend385 ns (1.58× the best)in the hash20.3 ns (1.53× the best)522 ns (1.43× the best)593 ns (1.41× the best)709 ns (1.39× the best)835 ns (1.38× the best)959 ns (1.38× the best)
gf2_122-gls-wincompleteλ-projective, w codec659 ns (2.70× the best)0.43 ns (tied for the best, within noise)20.3 ns (1.54× the best)796 ns (2.18× the best)867 ns (2.07× the best)984 ns (1.94× the best)1.11 µs (1.84× the best)1.23 µs (1.77× the best)
gf2_122-gls-wincompletecompare suitePornin x1: hash to addend; output already an addend385 ns (1.58× the best)in the hash20.3 ns (1.54× the best)522 ns (1.43× the best)593 ns (1.41× the best)709 ns (1.40× the best)836 ns (1.38× the best)960 ns (1.38× the best)
gf2_122-gls-uunscaled (X:S:Z), w codec678 ns (2.78× the best)0.44 ns (tied for the best, within noise, 1.01×)13.7 ns (1.04× the best)796 ns (2.18× the best)852 ns (2.03× the best)942 ns (1.85× the best)1.04 µs (1.72× the best)1.14 µs (1.63× the best)
gf2_122-gls-ucompare suitePornin x1: hash to addend; output already an addend390 ns (1.60× the best)in the hash13.7 ns (1.04× the best)508 ns (1.39× the best)563 ns (1.34× the best)654 ns (1.29× the best)751 ns (1.24× the best)847 ns (1.22× the best)
GF(2^109), 14 bytes
gf2_109(X:S:Z:T) extended1.16 µs (4.77× the best)4.23 ns (9.85× the best)20.4 ns (1.54× the best)1.31 µs (3.57× the best)1.38 µs (3.28× the best)1.49 µs (2.94× the best)1.62 µs (2.68× the best)1.74 µs (2.50× the best)
gf2_109compare suitePornin x1: hash to addend; output already an addend675 ns (2.77× the best)in the hash20.4 ns (1.54× the best)812 ns (2.22× the best)883 ns (2.10× the best)1000 ns (1.97× the best)1.13 µs (1.87× the best)1.25 µs (1.80× the best)
gf2_109-lambdaincompleteλ-projective1.16 µs (4.76× the best)503 ns (1170.41× the best)18.9 ns (1.43× the best)1.80 µs (4.91× the best)1.86 µs (4.44× the best)1.97 µs (3.89× the best)2.10 µs (3.47× the best)2.21 µs (3.18× the best)
gf2_109-lambdaincompletecompare suitehashed straight to : no prepare1.17 µs (4.78× the best)in the hash18.9 ns (1.43× the best)1.30 µs (3.55× the best)1.37 µs (3.26× the best)1.48 µs (2.91× the best)1.60 µs (2.65× the best)1.72 µs (2.46× the best)
gf2_109-lambdaincompletecompare suitePornin x1: hash to addend; output already an addend655 ns (2.69× the best)in the hash18.9 ns (1.43× the best)788 ns (2.16× the best)856 ns (2.04× the best)967 ns (1.90× the best)1.09 µs (1.80× the best)1.21 µs (1.73× the best)
gf2_109-wincompleteλ-projective, w codec1.14 µs (4.66× the best)0.44 ns (tied for the best, within noise, 1.02×)18.9 ns (1.43× the best)1.27 µs (3.47× the best)1.34 µs (3.19× the best)1.45 µs (2.85× the best)1.57 µs (2.60× the best)1.69 µs (2.42× the best)
gf2_109-wincompletecompare suitePornin x1: hash to addend; output already an addend652 ns (2.67× the best)in the hash18.9 ns (1.43× the best)785 ns (2.15× the best)853 ns (2.03× the best)964 ns (1.90× the best)1.08 µs (1.80× the best)1.20 µs (1.73× the best)
gf2_109-uunscaled (X:S:Z), w codec1.15 µs (4.73× the best)0.48 ns (1.12× the best)13.5 ns (1.02× the best)1.27 µs (3.48× the best)1.33 µs (3.16× the best)1.42 µs (2.79× the best)1.51 µs (2.51× the best)1.61 µs (2.31× the best)
gf2_109-ucompare suitePornin x1: hash to addend; output already an addend657 ns (2.70× the best)in the hash13.5 ns (1.02× the best)775 ns (2.12× the best)830 ns (1.98× the best)919 ns (1.81× the best)1.02 µs (1.68× the best)1.11 µs (1.59× the best)
F_p, p = 2^127 − 1, 16 bytes
edwards127a = 1 Edwards, extended += cached1.22 µs (5.02× the best)663 ns (1543.72× the best)27.5 ns (2.08× the best)2.04 µs (5.59× the best)2.13 µs (5.08× the best)2.28 µs (4.48× the best)2.44 µs (4.03× the best)2.59 µs (3.72× the best)
edwards127compare suiteElligator 2 x1: hash + prepare1.51 µs (6.18× the best)663 ns (1543.72× the best)27.5 ns (2.08× the best)2.33 µs (6.37× the best)2.42 µs (5.76× the best)2.56 µs (5.04× the best)2.72 µs (4.50× the best)2.88 µs (4.13× the best)
weier127short Weierstrass, projective += affine1.16 µs (4.76× the best)0.81 ns (1.89× the best)58.7 ns (4.45× the best)1.41 µs (3.86× the best)1.57 µs (3.75× the best)1.84 µs (3.62× the best)2.13 µs (3.53× the best)2.43 µs (3.48× the best)
weier127compare suiteSSWU x1: hash + prepare1.29 µs (5.29× the best)0.81 ns (1.89× the best)58.7 ns (4.45× the best)1.54 µs (4.21× the best)1.70 µs (4.05× the best)1.97 µs (3.87× the best)2.26 µs (3.75× the best)2.56 µs (3.67× the best)
weier127-jacobianincompleteshort Weierstrass, Jacobian += affine1.15 µs (4.74× the best)0.81 ns (1.88× the best)48.1 ns (3.64× the best)1.37 µs (3.76× the best)1.51 µs (3.60× the best)1.74 µs (3.41× the best)1.98 µs (3.29× the best)2.23 µs (3.20× the best)
F_p, p = 2^107 − 1, 14 bytes
edwards107a = 1 Edwards, extended += cached919 ns (3.77× the best)632 ns (1471.60× the best)27.6 ns (2.09× the best)1.71 µs (4.68× the best)1.80 µs (4.28× the best)1.94 µs (3.82× the best)2.10 µs (3.48× the best)2.26 µs (3.24× the best)
edwards107compare suiteElligator 2 x1: hash + prepare1.28 µs (5.25× the best)632 ns (1471.60× the best)27.6 ns (2.09× the best)2.07 µs (5.66× the best)2.16 µs (5.14× the best)2.30 µs (4.53× the best)2.46 µs (4.08× the best)2.62 µs (3.76× the best)
weier107short Weierstrass, projective += affine892 ns (3.66× the best)0.82 ns (1.90× the best)48.6 ns (3.68× the best)1.11 µs (3.04× the best)1.25 µs (2.98× the best)1.48 µs (2.91× the best)1.73 µs (2.86× the best)1.98 µs (2.84× the best)
weier107compare suiteSSWU x1: hash + prepare1.26 µs (5.16× the best)0.82 ns (1.90× the best)48.6 ns (3.68× the best)1.48 µs (4.04× the best)1.62 µs (3.85× the best)1.84 µs (3.63× the best)2.09 µs (3.47× the best)2.34 µs (3.36× the best)
weier107-jacobianincompleteshort Weierstrass, Jacobian += affine886 ns (3.63× the best)0.81 ns (1.88× the best)44.1 ns (3.34× the best)1.09 µs (2.99× the best)1.22 µs (2.91× the best)1.43 µs (2.81× the best)1.66 µs (2.75× the best)1.89 µs (2.71× the best)
F_p, p = 2^128 − 275, 16 bytes
twisted128a = −1 twisted Edwards modulo 2-torsion, extended += cached1.97 µs (8.07× the best)12.5 ns (29.04× the best)31.1 ns (2.35× the best)2.15 µs (5.87× the best)2.24 µs (5.35× the best)2.40 µs (4.73× the best)2.58 µs (4.27× the best)2.75 µs (3.94× the best)
twisted128compare suiteElligator 2 x1: hash + prepare3.32 µs (13.64× the best)12.5 ns (29.04× the best)31.1 ns (2.35× the best)3.51 µs (9.59× the best)3.60 µs (8.58× the best)3.76 µs (7.40× the best)3.93 µs (6.52× the best)4.11 µs (5.89× the best)
F_{p²}, p = 2^61 − 1, 16 bytes
edwards61x2a = 1 Edwards, signed-x codec, extended += cached707 ns (2.90× the best)236 ns (548.53× the best)25.8 ns (1.95× the best)1.10 µs (3.00× the best)1.18 µs (2.81× the best)1.32 µs (2.59× the best)1.47 µs (2.43× the best)1.62 µs (2.32× the best)
edwards61x2compare suiteElligator 2 x1: hash + prepare792 ns (3.25× the best)236 ns (548.53× the best)25.8 ns (1.95× the best)1.18 µs (3.23× the best)1.26 µs (3.01× the best)1.40 µs (2.76× the best)1.55 µs (2.57× the best)1.70 µs (2.44× the best)
weier61x2short Weierstrass, signed-x codec, projective += affine696 ns (2.85× the best)0.44 ns (tied for the best, within noise, 1.03×)50.6 ns (3.83× the best)921 ns (2.52× the best)1.06 µs (2.54× the best)1.30 µs (2.56× the best)1.56 µs (2.58× the best)1.82 µs (2.60× the best)
weier61x2compare suiteSSWU x1: hash + prepare812 ns (3.33× the best)0.44 ns (tied for the best, within noise, 1.03×)50.6 ns (3.83× the best)1.04 µs (2.84× the best)1.18 µs (2.81× the best)1.42 µs (2.78× the best)1.67 µs (2.77× the best)1.93 µs (2.77× the best)
weier61x2-jacobianincompleteshort Weierstrass, signed-x codec, Jacobian += affine702 ns (2.88× the best)0.44 ns (tied for the best, within noise, 1.02×)50.2 ns (3.80× the best)926 ns (2.53× the best)1.07 µs (2.55× the best)1.30 µs (2.56× the best)1.56 µs (2.58× the best)1.81 µs (2.60× the best)
twisted61x2a = −1 Edwards modulo 2-torsion, extended += cached706 ns (2.90× the best)8.07 ns (18.77× the best)24.9 ns (1.89× the best)865 ns (2.37× the best)947 ns (2.26× the best)1.08 µs (2.13× the best)1.23 µs (2.03× the best)1.37 µs (1.97× the best)
twisted61x2compare suiteElligator 2 x1: hash + prepare981 ns (4.03× the best)8.07 ns (18.77× the best)24.9 ns (1.89× the best)1.14 µs (3.12× the best)1.22 µs (2.91× the best)1.36 µs (2.67× the best)1.50 µs (2.49× the best)1.65 µs (2.36× the best)
F_{p²}, p = 2^64 − 59, 16 bytes
twisted64x2a = −1 Edwards modulo 2-torsion, extended += cached1.00 µs (4.11× the best)8.75 ns (20.37× the best)33.3 ns (2.52× the best)1.19 µs (3.24× the best)1.29 µs (3.07× the best)1.45 µs (2.86× the best)1.64 µs (2.71× the best)1.82 µs (2.61× the best)
twisted64x2compare suiteElligator 2 x1: hash + prepare1.38 µs (5.67× the best)8.75 ns (20.37× the best)33.3 ns (2.52× the best)1.56 µs (4.28× the best)1.67 µs (3.97× the best)1.83 µs (3.61× the best)2.02 µs (3.34× the best)2.20 µs (3.15× the best)
F_{p²}, p = 2^64 − 2^32 + 1, 16 bytes
twisted-goldilocks2a = −1 Edwards modulo 2-torsion, extended += cached2.21 µs (9.09× the best)9.45 ns (22.00× the best)28.7 ns (2.18× the best)2.39 µs (6.53× the best)2.48 µs (5.90× the best)2.63 µs (5.17× the best)2.79 µs (4.62× the best)2.95 µs (4.23× the best)
twisted-goldilocks2compare suiteElligator 2 x1: hash + prepare2.75 µs (11.30× the best)9.45 ns (22.00× the best)28.7 ns (2.18× the best)2.92 µs (8.00× the best)3.02 µs (7.18× the best)3.16 µs (6.23× the best)3.33 µs (5.51× the best)3.49 µs (5.01× the best)
references, 32 and 33 bytes
ristretto255compare suitehash output added as is: no prepare6.03 µs (24.75× the best)in the hash116 ns (8.76× the best)6.45 µs (17.63× the best)6.75 µs (16.07× the best)7.23 µs (14.23× the best)7.78 µs (12.89× the best)8.32 µs (11.94× the best)

bold: the best of its column; italic, dotted: tied with the best within the confidence intervals; shading: ratio to the best, pale yellow at 1× to purple at 16× or more; grey: baseline, not compared.

Batching

Batched against individual time per element. The inversions-shared column divides the saving by the difference between individual and batched field inversion; it also absorbs allocation and control flow.

curvehash to curveprepareencodedecode
alonebatchedfaster byinversions sharedalonebatchedfaster byinversions sharedalonebatchedfaster byinversions sharedalonebatchedfaster byinversions shared
GF(2^127), 16 bytes
gf2_127(X:S:Z:T) extended accumulators, Pornin's formulas366 ns113 ns (best)3.2×2.26.38 ns6.36 ns (13.70× the best)1.0×0151 ns22.7 ns (1.81× the best)6.6×1.1164 ns25.7 ns (1.23× the best)6.4×1.2
gf2_127-lambdaincompleteλ-projective (X:L:Z) accumulators394 ns114 ns (1.01× the best)3.5×2.4129 ns8.18 ns (17.62× the best)15.7×1140 ns17.5 ns (1.39× the best)8.0×1155 ns24.0 ns (1.15× the best)6.4×1.1
gf2_127-wincompleteλ-projective, w codec: hashes and decodes to λ-affine392 ns119 ns (1.06× the best)3.3×2.30.45 ns0.47 ns (1.01× the best)1.0×0139 ns17.0 ns (1.35× the best)8.2×1155 ns22.6 ns (1.08× the best)6.9×1.1
gf2_127-uunscaled (X:S:Z), w codec, direct addend hashes401 ns125 ns (1.11× the best)3.2×2.30.48 ns0.47 ns (1.02× the best)1.0×0137 ns12.6 ns (best)10.9×1.1162 ns27.5 ns (1.32× the best)5.9×1.1
GF(2^122) = GF(2^61)[u], dense constant, 16 bytes
gf2_122(X:S:Z:T) extended670 ns114 ns (1.01× the best)5.9×2.44.91 ns5.01 ns (10.80× the best)1.0×0294 ns22.1 ns (1.76× the best)13.3×1.2313 ns24.0 ns (1.15× the best)13.0×1.2
gf2_122-lambdaincompleteλ-projective679 ns115 ns (1.02× the best)5.9×2.4251 ns8.18 ns (17.61× the best)30.7×1287 ns17.3 ns (1.37× the best)16.6×1.2314 ns24.1 ns (1.15× the best)13.0×1.2
gf2_122-wincompleteλ-projective, w codec654 ns116 ns (1.03× the best)5.6×2.30.44 ns0.47 ns (1.00× the best)0.9×0302 ns21.2 ns (1.69× the best)14.2×1.2307 ns21.6 ns (1.03× the best)14.2×1.2
gf2_122-uunscaled (X:S:Z), w codec674 ns127 ns (1.12× the best)5.3×2.40.50 ns0.49 ns (1.06× the best)1.0×0305 ns18.4 ns (1.47× the best)16.5×1.2317 ns26.0 ns (1.24× the best)12.2×1.3
GF(2^122), constant in GF(2^61) (GLS-shaped), 16 bytes
gf2_122-gls(X:S:Z:T) extended697 ns116 ns (1.03× the best)6.0×2.54.22 ns4.27 ns (9.20× the best)1.0×0293 ns21.1 ns (1.68× the best)13.9×1.2313 ns22.7 ns (1.08× the best)13.8×1.2
gf2_122-gls-lambdaincompleteλ-projective692 ns116 ns (1.03× the best)6.0×2.5249 ns8.11 ns (17.46× the best)30.7×1297 ns17.9 ns (1.42× the best)16.6×1.2311 ns22.6 ns (1.08× the best)13.8×1.2
gf2_122-gls-wincompleteλ-projective, w codec659 ns116 ns (1.03× the best)5.7×2.30.43 ns0.68 ns (1.47× the best)0.6×0297 ns20.4 ns (1.62× the best)14.6×1.2305 ns20.9 ns (best)14.6×1.2
gf2_122-gls-uunscaled (X:S:Z), w codec678 ns121 ns (1.07× the best)5.6×2.40.44 ns0.68 ns (1.46× the best)0.6×0297 ns18.0 ns (1.44× the best)16.5×1.2313 ns24.7 ns (1.18× the best)12.6×1.2
GF(2^109), 14 bytes
gf2_109(X:S:Z:T) extended1.16 µs126 ns (1.12× the best)9.2×2.14.23 ns4.25 ns (9.16× the best)1.0×0538 ns18.2 ns (1.45× the best)29.6×1.1554 ns26.7 ns (1.28× the best)20.7×1.1
gf2_109-lambdaincompleteλ-projective1.16 µs124 ns (1.10× the best)9.3×2.1503 ns8.13 ns (17.51× the best)61.9×1530 ns14.1 ns (1.12× the best)37.5×1.1549 ns26.5 ns (1.27× the best)20.8×1.1
gf2_109-wincompleteλ-projective, w codec1.14 µs120 ns (1.06× the best)9.5×2.10.44 ns0.47 ns (1.01× the best)0.9×0540 ns21.6 ns (1.72× the best)24.9×1.1555 ns24.4 ns (1.17× the best)22.8×1.1
gf2_109-uunscaled (X:S:Z), w codec1.15 µs125 ns (1.11× the best)9.2×2.10.48 ns0.46 ns (best)1.0×0546 ns21.9 ns (1.74× the best)24.9×1.1555 ns27.7 ns (1.33× the best)20.0×1.1
F_p, p = 2^127 − 1, 16 bytes
edwards127a = 1 Edwards, extended += cached1.22 µs1.24 µs (10.98× the best)1.0×0663 ns39.9 ns (86.04× the best)16.6×1.1610 ns31.9 ns (2.54× the best)19.1×1540 ns541 ns (25.90× the best)1.0×0
weier127short Weierstrass, projective += affine1.16 µs1.17 µs (10.34× the best)1.0×00.81 ns1.00 ns (2.15× the best)0.8×0593 ns16.7 ns (1.33× the best)35.4×1541 ns539 ns (25.81× the best)1.0×0
weier127-jacobianincompleteshort Weierstrass, Jacobian += affine1.15 µs1.16 µs (10.27× the best)1.0×00.81 ns0.99 ns (2.13× the best)0.8×0605 ns23.6 ns (1.88× the best)25.6×1543 ns542 ns (25.93× the best)1.0×0
F_p, p = 2^107 − 1, 14 bytes
edwards107a = 1 Edwards, extended += cached919 ns916 ns (8.13× the best)1.0×0632 ns37.9 ns (81.74× the best)16.7×1.1600 ns35.1 ns (2.80× the best)17.1×1424 ns426 ns (20.37× the best)1.0×0
weier107short Weierstrass, projective += affine892 ns901 ns (8.00× the best)1.0×00.82 ns0.63 ns (1.35× the best)1.3×0582 ns19.4 ns (1.54× the best)30.0×1421 ns422 ns (20.19× the best)1.0×0
weier107-jacobianincompleteshort Weierstrass, Jacobian += affine886 ns893 ns (7.92× the best)1.0×00.81 ns0.63 ns (1.35× the best)1.3×0580 ns25.5 ns (2.03× the best)22.7×1419 ns421 ns (20.13× the best)1.0×0
F_p, p = 2^128 − 275, 16 bytes
twisted128a = −1 twisted Edwards modulo 2-torsion, extended += cached1.97 µs1.96 µs (17.39× the best)1.0×12.5 ns12.7 ns (27.29× the best)1.0×943 ns22.7 ns (1.81× the best)41.6×960 ns962 ns (46.04× the best)1.0×
F_{p²}, p = 2^61 − 1, 16 bytes
edwards61x2a = 1 Edwards, signed-x codec, extended += cached707 ns706 ns (6.26× the best)1.0×0236 ns34.9 ns (75.23× the best)6.7×1.2203 ns35.0 ns (2.79× the best)5.8×1437 ns441 ns (21.08× the best)1.0×0
weier61x2short Weierstrass, signed-x codec, projective += affine696 ns698 ns (6.19× the best)1.0×00.44 ns0.52 ns (1.13× the best)0.8×0190 ns15.3 ns (1.22× the best)12.4×1441 ns448 ns (21.43× the best)1.0×0
weier61x2-jacobianincompleteshort Weierstrass, signed-x codec, Jacobian += affine702 ns698 ns (6.19× the best)1.0×00.44 ns0.52 ns (1.12× the best)0.8×0198 ns24.8 ns (1.97× the best)8.0×1440 ns445 ns (21.28× the best)1.0×0
twisted61x2a = −1 Edwards modulo 2-torsion, extended += cached706 ns711 ns (6.31× the best)1.0×08.07 ns7.93 ns (17.07× the best)1.0×0189 ns14.9 ns (1.19× the best)12.7×1448 ns450 ns (21.55× the best)1.0×0
F_{p²}, p = 2^64 − 59, 16 bytes
twisted64x2a = −1 Edwards modulo 2-torsion, extended += cached1.00 µs1.00 µs (8.91× the best)1.0×08.75 ns8.79 ns (18.94× the best)1.0×0267 ns22.6 ns (1.80× the best)11.8×1.1650 ns647 ns (30.96× the best)1.0×0
F_{p²}, p = 2^64 − 2^32 + 1, 16 bytes
twisted-goldilocks2a = −1 Edwards modulo 2-torsion, extended += cached2.21 µs2.24 µs (19.85× the best)1.0×-0.19.45 ns9.54 ns (20.55× the best)1.0×0316 ns22.9 ns (1.83× the best)13.8×11.91 µs1.92 µs (92.00× the best)1.0×0

bold: the best of its column; italic, dotted: tied with the best within the confidence intervals; shading: ratio to the best, pale yellow at 1× to purple at 16× or more; grey: baseline, not compared.

Time per element against batch size.

curvehash to curveprepareencodedecode
alonealonealonealone
GF(2^127), 16 bytes
gf2_127(X:S:Z:T) extended accumulators, Pornin's formulas366 ns (best)200 ns (best)137 ns (tied for the best, within noise)113 ns (best)6.38 ns (14.85× the best)6.72 ns (6.28× the best)6.55 ns (8.70× the best)6.36 ns (13.70× the best)151 ns (1.10× the best)46.0 ns (1.20× the best)25.6 ns (1.57× the best)22.7 ns (1.81× the best)164 ns (1.06× the best)54.2 ns (tied for the best, within noise)29.6 ns (1.03× the best)25.7 ns (1.23× the best)
gf2_127-lambdaincompleteλ-projective (X:L:Z) accumulators394 ns (1.08× the best)204 ns (1.02× the best)137 ns (tied for the best, within noise, 1.00×)114 ns (1.01× the best)129 ns (299.16× the best)32.8 ns (30.61× the best)12.7 ns (16.85× the best)8.18 ns (17.62× the best)140 ns (1.02× the best)42.0 ns (1.10× the best)21.8 ns (1.34× the best)17.5 ns (1.39× the best)155 ns (tied for the best, within noise, 1.00×)54.2 ns (tied for the best, within noise, 1.00×)29.7 ns (1.03× the best)24.0 ns (1.15× the best)
gf2_127-wincompleteλ-projective, w codec: hashes and decodes to λ-affine392 ns (1.07× the best)219 ns (1.09× the best)145 ns (1.06× the best)119 ns (1.06× the best)0.45 ns (tied for the best, within noise, 1.06×)1.10 ns (1.03× the best)0.79 ns (1.06× the best)0.47 ns (1.01× the best)139 ns (1.02× the best)42.1 ns (1.10× the best)21.8 ns (1.34× the best)17.0 ns (1.35× the best)155 ns (tied for the best, within noise)55.2 ns (1.02× the best)28.8 ns (best)22.6 ns (1.08× the best)
gf2_127-uunscaled (X:S:Z), w codec, direct addend hashes401 ns (1.10× the best)225 ns (1.13× the best)153 ns (1.11× the best)125 ns (1.11× the best)0.48 ns (1.13× the best)1.08 ns (1.01× the best)0.81 ns (1.07× the best)0.47 ns (1.02× the best)137 ns (best)38.2 ns (best)16.3 ns (best)12.6 ns (best)162 ns (1.04× the best)57.6 ns (1.06× the best)32.8 ns (1.14× the best)27.5 ns (1.32× the best)
GF(2^122) = GF(2^61)[u], dense constant, 16 bytes
gf2_122(X:S:Z:T) extended670 ns (1.83× the best)293 ns (1.47× the best)155 ns (1.13× the best)114 ns (1.01× the best)4.91 ns (11.42× the best)5.62 ns (5.25× the best)5.44 ns (7.22× the best)5.01 ns (10.80× the best)294 ns (2.15× the best)66.6 ns (1.74× the best)28.9 ns (1.78× the best)22.1 ns (1.76× the best)313 ns (2.02× the best)73.5 ns (1.36× the best)32.4 ns (1.13× the best)24.0 ns (1.15× the best)
gf2_122-lambdaincompleteλ-projective679 ns (1.85× the best)294 ns (1.47× the best)156 ns (1.14× the best)115 ns (1.02× the best)251 ns (583.32× the best)53.6 ns (50.04× the best)15.2 ns (20.19× the best)8.18 ns (17.61× the best)287 ns (2.10× the best)61.7 ns (1.62× the best)24.1 ns (1.48× the best)17.3 ns (1.37× the best)314 ns (2.03× the best)73.1 ns (1.35× the best)32.2 ns (1.12× the best)24.1 ns (1.15× the best)
gf2_122-wincompleteλ-projective, w codec654 ns (1.79× the best)294 ns (1.47× the best)156 ns (1.14× the best)116 ns (1.03× the best)0.44 ns (tied for the best, within noise, 1.02×)1.09 ns (1.01× the best)0.75 ns (best)0.47 ns (tied for the best, within noise, 1.00×)302 ns (2.20× the best)64.3 ns (1.68× the best)27.0 ns (1.66× the best)21.2 ns (1.69× the best)307 ns (1.98× the best)70.9 ns (1.31× the best)29.8 ns (1.03× the best)21.6 ns (1.03× the best)
gf2_122-uunscaled (X:S:Z), w codec674 ns (1.84× the best)301 ns (1.51× the best)164 ns (1.20× the best)127 ns (1.12× the best)0.50 ns (1.15× the best)1.08 ns (1.01× the best)0.82 ns (1.08× the best)0.49 ns (1.06× the best)305 ns (2.23× the best)61.3 ns (1.61× the best)22.5 ns (1.38× the best)18.4 ns (1.47× the best)317 ns (2.05× the best)74.7 ns (1.38× the best)33.6 ns (1.17× the best)26.0 ns (1.24× the best)
GF(2^122), constant in GF(2^61) (GLS-shaped), 16 bytes
gf2_122-gls(X:S:Z:T) extended697 ns (1.90× the best)308 ns (1.54× the best)161 ns (1.18× the best)116 ns (1.03× the best)4.22 ns (9.82× the best)4.83 ns (4.51× the best)4.54 ns (6.03× the best)4.27 ns (9.20× the best)293 ns (2.14× the best)65.6 ns (1.72× the best)27.9 ns (1.72× the best)21.1 ns (1.68× the best)313 ns (2.02× the best)71.5 ns (1.32× the best)31.0 ns (1.08× the best)22.7 ns (1.08× the best)
gf2_122-gls-lambdaincompleteλ-projective692 ns (1.89× the best)306 ns (1.53× the best)161 ns (1.18× the best)116 ns (1.03× the best)249 ns (579.08× the best)53.4 ns (49.89× the best)15.1 ns (20.10× the best)8.11 ns (17.46× the best)297 ns (2.17× the best)62.1 ns (1.62× the best)24.5 ns (1.51× the best)17.9 ns (1.42× the best)311 ns (2.01× the best)73.7 ns (1.36× the best)32.1 ns (1.11× the best)22.6 ns (1.08× the best)
gf2_122-gls-wincompleteλ-projective, w codec659 ns (1.80× the best)303 ns (1.52× the best)161 ns (1.17× the best)116 ns (1.03× the best)0.43 ns (tied for the best, within noise)1.08 ns (1.01× the best)0.83 ns (1.10× the best)0.68 ns (1.47× the best)297 ns (2.17× the best)64.9 ns (1.70× the best)27.2 ns (1.68× the best)20.4 ns (1.62× the best)305 ns (1.97× the best)70.1 ns (1.29× the best)29.1 ns (1.01× the best)20.9 ns (best)
gf2_122-gls-uunscaled (X:S:Z), w codec678 ns (1.85× the best)298 ns (1.49× the best)165 ns (1.21× the best)121 ns (1.07× the best)0.44 ns (tied for the best, within noise, 1.01×)1.07 ns (best)0.83 ns (1.10× the best)0.68 ns (1.46× the best)297 ns (2.17× the best)61.2 ns (1.60× the best)22.5 ns (1.38× the best)18.0 ns (1.44× the best)313 ns (2.02× the best)73.8 ns (1.36× the best)32.9 ns (1.14× the best)24.7 ns (1.18× the best)
GF(2^109), 14 bytes
gf2_109(X:S:Z:T) extended1.16 µs (3.18× the best)431 ns (2.16× the best)195 ns (1.42× the best)126 ns (1.12× the best)4.23 ns (9.85× the best)4.88 ns (4.56× the best)4.65 ns (6.18× the best)4.25 ns (9.16× the best)538 ns (3.93× the best)94.4 ns (2.47× the best)28.6 ns (1.76× the best)18.2 ns (1.45× the best)554 ns (3.58× the best)108 ns (2.00× the best)38.7 ns (1.34× the best)26.7 ns (1.28× the best)
gf2_109-lambdaincompleteλ-projective1.16 µs (3.17× the best)431 ns (2.16× the best)195 ns (1.42× the best)124 ns (1.10× the best)503 ns (1170.41× the best)82.7 ns (77.22× the best)18.8 ns (24.92× the best)8.13 ns (17.51× the best)530 ns (3.87× the best)90.0 ns (2.36× the best)24.8 ns (1.53× the best)14.1 ns (1.12× the best)549 ns (3.55× the best)109 ns (2.00× the best)39.1 ns (1.36× the best)26.5 ns (1.27× the best)
gf2_109-wincompleteλ-projective, w codec1.14 µs (3.10× the best)413 ns (2.07× the best)183 ns (1.33× the best)120 ns (1.06× the best)0.44 ns (tied for the best, within noise, 1.02×)1.08 ns (1.01× the best)0.82 ns (1.08× the best)0.47 ns (tied for the best, within noise, 1.01×)540 ns (3.94× the best)96.0 ns (2.51× the best)32.5 ns (2.00× the best)21.6 ns (1.72× the best)555 ns (3.59× the best)105 ns (1.95× the best)36.8 ns (1.28× the best)24.4 ns (1.17× the best)
gf2_109-uunscaled (X:S:Z), w codec1.15 µs (3.15× the best)417 ns (2.09× the best)189 ns (1.38× the best)125 ns (1.11× the best)0.48 ns (1.12× the best)1.08 ns (1.01× the best)0.79 ns (1.05× the best)0.46 ns (tied for the best, within noise)546 ns (3.99× the best)97.1 ns (2.54× the best)31.7 ns (1.95× the best)21.9 ns (1.74× the best)555 ns (3.59× the best)109 ns (2.01× the best)40.3 ns (1.40× the best)27.7 ns (1.33× the best)
F_p, p = 2^127 − 1, 16 bytes
edwards127a = 1 Edwards, extended += cached1.22 µs (3.34× the best)1.24 µs (10.98× the best)663 ns (1543.72× the best)39.9 ns (86.04× the best)610 ns (4.45× the best)31.9 ns (2.54× the best)540 ns (3.49× the best)541 ns (25.90× the best)
weier127short Weierstrass, projective += affine1.16 µs (3.17× the best)1.17 µs (10.34× the best)0.81 ns (1.89× the best)1.00 ns (2.15× the best)593 ns (4.33× the best)16.7 ns (1.33× the best)541 ns (3.50× the best)539 ns (25.81× the best)
weier127-jacobianincompleteshort Weierstrass, Jacobian += affine1.15 µs (3.15× the best)1.16 µs (10.27× the best)0.81 ns (1.88× the best)0.99 ns (2.13× the best)605 ns (4.42× the best)23.6 ns (1.88× the best)543 ns (3.51× the best)542 ns (25.93× the best)
F_p, p = 2^107 − 1, 14 bytes
edwards107a = 1 Edwards, extended += cached919 ns (2.51× the best)916 ns (8.13× the best)632 ns (1471.60× the best)37.9 ns (81.74× the best)600 ns (4.38× the best)35.1 ns (2.80× the best)424 ns (2.74× the best)426 ns (20.37× the best)
weier107short Weierstrass, projective += affine892 ns (2.44× the best)901 ns (8.00× the best)0.82 ns (1.90× the best)0.63 ns (1.35× the best)582 ns (4.25× the best)19.4 ns (1.54× the best)421 ns (2.72× the best)422 ns (20.19× the best)
weier107-jacobianincompleteshort Weierstrass, Jacobian += affine886 ns (2.42× the best)893 ns (7.92× the best)0.81 ns (1.88× the best)0.63 ns (1.35× the best)580 ns (4.23× the best)25.5 ns (2.03× the best)419 ns (2.71× the best)421 ns (20.13× the best)
F_p, p = 2^128 − 275, 16 bytes
twisted128a = −1 twisted Edwards modulo 2-torsion, extended += cached1.97 µs (5.37× the best)1.96 µs (17.39× the best)12.5 ns (29.04× the best)12.7 ns (27.29× the best)943 ns (6.89× the best)22.7 ns (1.81× the best)960 ns (6.21× the best)962 ns (46.04× the best)
F_{p²}, p = 2^61 − 1, 16 bytes
edwards61x2a = 1 Edwards, signed-x codec, extended += cached707 ns (1.93× the best)706 ns (6.26× the best)236 ns (548.53× the best)34.9 ns (75.23× the best)203 ns (1.48× the best)35.0 ns (2.79× the best)437 ns (2.83× the best)441 ns (21.08× the best)
weier61x2short Weierstrass, signed-x codec, projective += affine696 ns (1.90× the best)698 ns (6.19× the best)0.44 ns (tied for the best, within noise, 1.03×)0.52 ns (1.13× the best)190 ns (1.39× the best)15.3 ns (1.22× the best)441 ns (2.85× the best)448 ns (21.43× the best)
weier61x2-jacobianincompleteshort Weierstrass, signed-x codec, Jacobian += affine702 ns (1.92× the best)698 ns (6.19× the best)0.44 ns (tied for the best, within noise, 1.02×)0.52 ns (1.12× the best)198 ns (1.45× the best)24.8 ns (1.97× the best)440 ns (2.84× the best)445 ns (21.28× the best)
twisted61x2a = −1 Edwards modulo 2-torsion, extended += cached706 ns (1.93× the best)703 ns (3.52× the best)703 ns (5.13× the best)711 ns (6.31× the best)8.07 ns (18.77× the best)8.59 ns (8.02× the best)8.39 ns (11.15× the best)7.93 ns (17.07× the best)189 ns (1.38× the best)49.3 ns (1.29× the best)21.1 ns (1.30× the best)14.9 ns (1.19× the best)448 ns (2.90× the best)448 ns (8.27× the best)447 ns (15.52× the best)450 ns (21.55× the best)
F_{p²}, p = 2^64 − 59, 16 bytes
twisted64x2a = −1 Edwards modulo 2-torsion, extended += cached1.00 µs (2.74× the best)1.00 µs (8.91× the best)8.75 ns (20.37× the best)8.79 ns (18.94× the best)267 ns (1.95× the best)22.6 ns (1.80× the best)650 ns (4.20× the best)647 ns (30.96× the best)
F_{p²}, p = 2^64 − 2^32 + 1, 16 bytes
twisted-goldilocks2a = −1 Edwards modulo 2-torsion, extended += cached2.21 µs (6.05× the best)2.24 µs (19.85× the best)9.45 ns (22.00× the best)9.54 ns (20.55× the best)316 ns (2.31× the best)22.9 ns (1.83× the best)1.91 µs (12.36× the best)1.92 µs (92.00× the best)

bold: the best of its column; italic, dotted: tied with the best within the confidence intervals; shading: ratio to the best, pale yellow at 1× to purple at 16× or more; grey: baseline, not compared.

Costs by lifetime

What an insertion into cells keyed by IDs costs by how long each part stays valid, for each family the RIBLT suite timed so (proj=): the ID once per item; the curve and each hash’s keys once per salt; the hash to the addend, the mapping’s seed and its walk once per salt and item; and the addition, encoding and decoding of each cell. Salted SHA-256 hashes the ID anew under each salt; each projection, the checksum’s and the mapping’s in fields chosen apart, multiplies its halves by the salt’s keys. The last row is the measured encoding of n = 3500 items into m = 1350 cells, per item: by salted SHA-256 of the items themselves, and by projections of their IDs, computed beforehand (Costs by lifetime).

binary.109, pornin, checksum projected in , mapping in

lifetimetermsalted SHA-256projection
per itemID, the item’s SHA-25650.2 ns50.2 ns
per saltaccept the curve74.4 µs74.4 µs
per saltchecksum keys127 ns375 ns
per saltmapping keys127 ns375 ns
per salt and itemhash to the addend113 ns63.8 ns
per salt and itemmapping seed51.4 ns9.67 ns
per salt and itemmapping walk below m = 1350124 ns124 ns
per celladd20.4 ns20.4 ns
per cellencode18.2 ns18.2 ns
per celldecode26.7 ns26.7 ns
measuredinsertion per item, k = 13.57 cells513 ns418 ns

binary-lambda.109, pornin-addend, checksum projected in , mapping in

lifetimetermsalted SHA-256projection
per itemID, the item’s SHA-25650.2 ns50.2 ns
per saltaccept the curve74.4 µs74.4 µs
per saltchecksum keys127 ns375 ns
per saltmapping keys127 ns375 ns
per salt and itemhash to the addend105 ns55.7 ns
per salt and itemmapping seed51.4 ns9.67 ns
per salt and itemmapping walk below m = 1350124 ns124 ns
per celladd18.9 ns18.9 ns
per cellencode14.1 ns14.1 ns
per celldecode26.5 ns26.5 ns
measuredinsertion per item, k = 13.57 cells488 ns395 ns

binary-u.109, pornin-addend, checksum projected in , mapping in

lifetimetermsalted SHA-256projection
per itemID, the item’s SHA-25650.2 ns50.2 ns
per saltaccept the curve74.4 µs74.4 µs
per saltchecksum keys127 ns375 ns
per saltmapping keys127 ns375 ns
per salt and itemhash to the addend110 ns60.6 ns
per salt and itemmapping seed51.4 ns9.67 ns
per salt and itemmapping walk below m = 1350124 ns124 ns
per celladd13.5 ns13.5 ns
per cellencode21.9 ns21.9 ns
per celldecode27.7 ns27.7 ns
measuredinsertion per item, k = 13.57 cells422 ns331 ns

binary-w.109, pornin-addend, checksum projected in , mapping in

lifetimetermsalted SHA-256projection
per itemID, the item’s SHA-25650.2 ns50.2 ns
per saltaccept the curve74.4 µs74.4 µs
per saltchecksum keys127 ns375 ns
per saltmapping keys127 ns375 ns
per salt and itemhash to the addend105 ns56.3 ns
per salt and itemmapping seed51.4 ns9.67 ns
per salt and itemmapping walk below m = 1350124 ns124 ns
per celladd18.9 ns18.9 ns
per cellencode21.6 ns21.6 ns
per celldecode24.4 ns24.4 ns
measuredinsertion per item, k = 13.57 cells490 ns397 ns

binary.122, pornin, checksum projected in , mapping in

lifetimetermsalted SHA-256projection
per itemID, the item’s SHA-25650.2 ns50.2 ns
per saltaccept the curve70.1 µs70.1 µs
per saltchecksum keys127 ns375 ns
per saltmapping keys127 ns375 ns
per salt and itemhash to the addend103 ns53.4 ns
per salt and itemmapping seed51.4 ns9.67 ns
per salt and itemmapping walk below m = 1350124 ns124 ns
per celladd19.9 ns19.9 ns
per cellencode22.1 ns22.1 ns
per celldecode24.0 ns24.0 ns
measuredinsertion per item, k = 13.57 cells537 ns435 ns

binary.122-gls, pornin, checksum projected in , mapping in

lifetimetermsalted SHA-256projection
per itemID, the item’s SHA-25650.2 ns50.2 ns
per saltaccept the curve78.3 µs78.3 µs
per saltchecksum keys127 ns375 ns
per saltmapping keys127 ns375 ns
per salt and itemhash to the addend100 ns51.7 ns
per salt and itemmapping seed51.4 ns9.67 ns
per salt and itemmapping walk below m = 1350124 ns124 ns
per celladd19.3 ns19.3 ns
per cellencode21.1 ns21.1 ns
per celldecode22.7 ns22.7 ns
measuredinsertion per item, k = 13.57 cells509 ns408 ns

binary-lambda.122-gls, pornin-addend, checksum projected in , mapping in

lifetimetermsalted SHA-256projection
per itemID, the item’s SHA-25650.2 ns50.2 ns
per saltaccept the curve78.3 µs78.3 µs
per saltchecksum keys127 ns375 ns
per saltmapping keys127 ns375 ns
per salt and itemhash to the addend95.2 ns46.1 ns
per salt and itemmapping seed51.4 ns9.67 ns
per salt and itemmapping walk below m = 1350124 ns124 ns
per celladd20.3 ns20.3 ns
per cellencode17.9 ns17.9 ns
per celldecode22.6 ns22.6 ns
measuredinsertion per item, k = 13.57 cells501 ns400 ns

binary-u.122-gls, pornin-addend, checksum projected in , mapping in

lifetimetermsalted SHA-256projection
per itemID, the item’s SHA-25650.2 ns50.2 ns
per saltaccept the curve78.3 µs78.3 µs
per saltchecksum keys127 ns375 ns
per saltmapping keys127 ns375 ns
per salt and itemhash to the addend99.5 ns50.1 ns
per salt and itemmapping seed51.4 ns9.67 ns
per salt and itemmapping walk below m = 1350124 ns124 ns
per celladd13.7 ns13.7 ns
per cellencode18.0 ns18.0 ns
per celldecode24.7 ns24.7 ns
measuredinsertion per item, k = 13.57 cells432 ns333 ns

binary-w.122-gls, pornin-addend, checksum projected in , mapping in

lifetimetermsalted SHA-256projection
per itemID, the item’s SHA-25650.2 ns50.2 ns
per saltaccept the curve78.3 µs78.3 µs
per saltchecksum keys127 ns375 ns
per saltmapping keys127 ns375 ns
per salt and itemhash to the addend95.1 ns46.4 ns
per salt and itemmapping seed51.4 ns9.67 ns
per salt and itemmapping walk below m = 1350124 ns124 ns
per celladd20.3 ns20.3 ns
per cellencode20.4 ns20.4 ns
per celldecode20.9 ns20.9 ns
measuredinsertion per item, k = 13.57 cells498 ns402 ns

binary-lambda.122, pornin-addend, checksum projected in , mapping in

lifetimetermsalted SHA-256projection
per itemID, the item’s SHA-25650.2 ns50.2 ns
per saltaccept the curve70.1 µs70.1 µs
per saltchecksum keys127 ns375 ns
per saltmapping keys127 ns375 ns
per salt and itemhash to the addend95.8 ns46.4 ns
per salt and itemmapping seed51.4 ns9.67 ns
per salt and itemmapping walk below m = 1350124 ns124 ns
per celladd20.2 ns20.2 ns
per cellencode17.3 ns17.3 ns
per celldecode24.1 ns24.1 ns
measuredinsertion per item, k = 13.57 cells505 ns403 ns

binary-u.122, pornin-addend, checksum projected in , mapping in

lifetimetermsalted SHA-256projection
per itemID, the item’s SHA-25650.2 ns50.2 ns
per saltaccept the curve70.1 µs70.1 µs
per saltchecksum keys127 ns375 ns
per saltmapping keys127 ns375 ns
per salt and itemhash to the addend100 ns50.3 ns
per salt and itemmapping seed51.4 ns9.67 ns
per salt and itemmapping walk below m = 1350124 ns124 ns
per celladd14.3 ns14.3 ns
per cellencode18.4 ns18.4 ns
per celldecode26.0 ns26.0 ns
measuredinsertion per item, k = 13.57 cells436 ns332 ns

binary-w.122, pornin-addend, checksum projected in , mapping in

lifetimetermsalted SHA-256projection
per itemID, the item’s SHA-25650.2 ns50.2 ns
per saltaccept the curve70.1 µs70.1 µs
per saltchecksum keys127 ns375 ns
per saltmapping keys127 ns375 ns
per salt and itemhash to the addend95.3 ns46.6 ns
per salt and itemmapping seed51.4 ns9.67 ns
per salt and itemmapping walk below m = 1350124 ns124 ns
per celladd20.5 ns20.5 ns
per cellencode21.2 ns21.2 ns
per celldecode21.6 ns21.6 ns
measuredinsertion per item, k = 13.57 cells504 ns409 ns

binary.127, pornin, checksum projected in , mapping in

lifetimetermsalted SHA-256projection
per itemID, the item’s SHA-25650.2 ns50.2 ns
per saltaccept the curve69.9 µs69.9 µs
per saltchecksum keys127 ns375 ns
per saltmapping keys127 ns375 ns
per salt and itemhash to the addend101 ns51.6 ns
per salt and itemmapping seed51.4 ns9.67 ns
per salt and itemmapping walk below m = 1350124 ns124 ns
per celladd19.5 ns19.5 ns
per cellencode22.7 ns22.7 ns
per celldecode25.7 ns25.7 ns
measuredinsertion per item, k = 13.57 cells503 ns412 ns

binary-lambda.127, pornin-addend, checksum projected in , mapping in

lifetimetermsalted SHA-256projection
per itemID, the item’s SHA-25650.2 ns50.2 ns
per saltaccept the curve69.9 µs69.9 µs
per saltchecksum keys127 ns375 ns
per saltmapping keys127 ns375 ns
per salt and itemhash to the addend93.0 ns43.9 ns
per salt and itemmapping seed51.4 ns9.67 ns
per salt and itemmapping walk below m = 1350124 ns124 ns
per celladd17.6 ns17.6 ns
per cellencode17.5 ns17.5 ns
per celldecode24.0 ns24.0 ns
measuredinsertion per item, k = 13.57 cells474 ns379 ns

binary-u.127, pornin-addend, checksum projected in , mapping in

lifetimetermsalted SHA-256projection
per itemID, the item’s SHA-25650.2 ns50.2 ns
per saltaccept the curve69.9 µs69.9 µs
per saltchecksum keys127 ns375 ns
per saltmapping keys127 ns375 ns
per salt and itemhash to the addend98.7 ns49.2 ns
per salt and itemmapping seed51.4 ns9.67 ns
per salt and itemmapping walk below m = 1350124 ns124 ns
per celladd13.2 ns13.2 ns
per cellencode12.6 ns12.6 ns
per celldecode27.5 ns27.5 ns
measuredinsertion per item, k = 13.57 cells414 ns320 ns

binary-w.127, pornin-addend, checksum projected in , mapping in

lifetimetermsalted SHA-256projection
per itemID, the item’s SHA-25650.2 ns50.2 ns
per saltaccept the curve69.9 µs69.9 µs
per saltchecksum keys127 ns375 ns
per saltmapping keys127 ns375 ns
per salt and itemhash to the addend93.0 ns45.8 ns
per salt and itemmapping seed51.4 ns9.67 ns
per salt and itemmapping walk below m = 1350124 ns124 ns
per celladd17.7 ns17.7 ns
per cellencode17.0 ns17.0 ns
per celldecode22.6 ns22.6 ns
measuredinsertion per item, k = 13.57 cells476 ns380 ns

Curve selection

Curve selection as this run timed it, once per seed (16 seeds): find searches a seed’s candidates for an acceptable curve; prove searches them again and certifies each rejection and the acceptance; verify checks that certificate. The figure shows each family’s method that finds fastest, a bar at the seeds’ mean in a box from the fastest seed to the slowest, and how the prover’s time divides among the search’s phases; the table lists every method (Parameter selection and verification). Accepting a curve (69.9 µs to 91.2 µs, curvegen/verify_accept) includes the embedding-degree bound, a baby-step giant-step search for with , which alone takes 42.1 µs to 44.4 µs (curvegen/embedding), 49% to 62% of it; rejected candidates do not reach it.

Curve selection per family on log time axes: the mean time to find a curve (dark) and to find and certify one (light), with a box from the fastest to the slowest seed; the mean time to verify the certificate; and, as shares of the mean proving time, the time spent deriving candidates, in quick rejection, sieving, point counting, factoring, rejection witnesses and acceptance.Curve selection per family on log time axes: the mean time to find a curve (dark) and to find and certify one (light), with a box from the fastest to the slowest seed; the mean time to verify the certificate; and, as shares of the mean proving time, the time spent deriving candidates, in quick rejection, sieving, point counting, factoring, rejection witnesses and acceptance.

familymethodshownseedscandidatespoint counts (prove)findproveverifycounting, of prove
edwards127pari+sieveyes16202.916.41.08 s1.49 s504 µs88%
edwards61x2pari+sieveyes16122.710.7577 ms813 ms257 µs89%
gf2_109agm1650.150.120.8 ms21.3 ms157 µs97%
gf2_109agm+factoryes1650.150.120.7 ms30.8 ms135 µs68%
gf2_109pari1650.150.1101 ms109 ms141 µs91%
gf2_122agmyes1639.539.518.1 ms17.7 ms126 µs96%
gf2_122pari1639.539.5115 ms116 ms130 µs99%
gf2_122-glsagmyes1647.247.25.75 ms6.31 ms152 µs87%
gf2_122-glspari1647.247.2136 ms137 ms150 µs99%
gf2_127agm+sieveyes1683.625.116.0 ms15.7 ms170 µs75%
gf2_127pari1683.683.6295 ms335 ms135 µs88%
twisted-goldilocks2pari+sieveyes16306.928.42.02 s2.78 s767 µs89%
twisted61x2pari+sieveyes16247.922.41.28 s1.71 s318 µs89%
twisted64x2pari+sieveyes16347.128.22.20 s2.92 s552 µs88%
weier127pari+sieveyes16179.019.61.27 s1.76 s278 µs88%
weier61x2pari+sieveyes1697.511.1639 ms859 ms188 µs88%

Group operations

The fastest measurement of each operation and mode per family, the hashes over every construction; rows grouped by field.

curvehash to curvehash to addendprepareaddsubtractnegateis identityequals addendencodedecode
alonebatchedalonebatchedalonebatchedthroughputlatencymatchmismatchalonebatchedalonebatched
baseline
xorSHA-256 digests XORed: no group, 32 bytes53.4 ns0.45 ns0.26 ns
GF(2^127), 16 bytes
gf2_127(X:S:Z:T) extended accumulators, Pornin's formulas256 ns (best)103 ns (1.01× the best)6.38 ns (14.85× the best)6.36 ns (13.70× the best)19.5 ns (1.48× the best)19.9 ns (1.36× the best)18.6 ns (1.42× the best)0.56 ns (1.01× the best)1.02 ns (2.53× the best)3.97 ns (1.01× the best)4.25 ns (1.43× the best)151 ns (1.10× the best)22.7 ns (1.81× the best)164 ns (1.06× the best)25.7 ns (1.23× the best)
gf2_127-lambdaincompleteλ-projective (X:L:Z) accumulators394 ns (1.54× the best)114 ns (1.13× the best)245 ns (tied for the best, within noise, 1.00×)92.7 ns (tied for the best, within noise)129 ns (299.16× the best)8.18 ns (17.62× the best)17.6 ns (1.34× the best)24.4 ns (1.67× the best)17.6 ns (1.35× the best)0.56 ns (tied for the best, within noise, 1.01×)0.82 ns (2.05× the best)3.95 ns (tied for the best, within noise)4.05 ns (1.36× the best)140 ns (1.02× the best)17.5 ns (1.39× the best)155 ns (tied for the best, within noise, 1.00×)24.0 ns (1.15× the best)
gf2_127-wincompleteλ-projective, w codec: hashes and decodes to λ-affine392 ns (1.53× the best)119 ns (1.18× the best)244 ns (tied for the best, within noise)92.8 ns (tied for the best, within noise, 1.00×)0.45 ns (tied for the best, within noise, 1.06×)0.47 ns (1.01× the best)17.7 ns (1.34× the best)24.4 ns (1.67× the best)17.7 ns (1.35× the best)0.56 ns (tied for the best, within noise, 1.01×)0.82 ns (2.03× the best)4.04 ns (1.02× the best)4.05 ns (1.36× the best)139 ns (1.02× the best)17.0 ns (1.35× the best)155 ns (tied for the best, within noise)22.6 ns (1.08× the best)
gf2_127-uunscaled (X:S:Z), w codec, direct addend hashes401 ns (1.57× the best)125 ns (1.23× the best)249 ns (1.02× the best)98.0 ns (1.06× the best)0.48 ns (1.13× the best)0.47 ns (1.02× the best)13.2 ns (best)14.6 ns (best)13.1 ns (best)0.56 ns (tied for the best, within noise, 1.01×)0.83 ns (2.07× the best)6.31 ns (1.60× the best)6.44 ns (2.17× the best)137 ns (best)12.6 ns (best)162 ns (1.04× the best)27.5 ns (1.32× the best)
GF(2^122) = GF(2^61)[u], dense constant, 16 bytes
gf2_122(X:S:Z:T) extended392 ns (1.53× the best)103 ns (1.01× the best)4.91 ns (11.42× the best)5.01 ns (10.80× the best)19.9 ns (1.51× the best)21.3 ns (1.46× the best)20.1 ns (1.54× the best)0.56 ns (tied for the best, within noise)0.87 ns (2.17× the best)4.07 ns (1.03× the best)4.05 ns (1.36× the best)294 ns (2.15× the best)22.1 ns (1.76× the best)313 ns (2.02× the best)24.0 ns (1.15× the best)
gf2_122-lambdaincompleteλ-projective679 ns (2.65× the best)115 ns (1.14× the best)381 ns (1.56× the best)95.0 ns (1.02× the best)251 ns (583.32× the best)8.18 ns (17.61× the best)20.2 ns (1.53× the best)28.0 ns (1.92× the best)20.5 ns (1.57× the best)0.56 ns (1.01× the best)0.81 ns (2.02× the best)4.21 ns (1.07× the best)4.23 ns (1.42× the best)287 ns (2.10× the best)17.3 ns (1.37× the best)314 ns (2.03× the best)24.1 ns (1.15× the best)
gf2_122-wincompleteλ-projective, w codec654 ns (2.56× the best)116 ns (1.15× the best)381 ns (1.56× the best)95.2 ns (1.03× the best)0.44 ns (tied for the best, within noise, 1.02×)0.47 ns (tied for the best, within noise, 1.00×)20.5 ns (1.55× the best)27.9 ns (1.91× the best)20.5 ns (1.57× the best)0.58 ns (1.04× the best)0.84 ns (2.09× the best)4.23 ns (1.07× the best)4.41 ns (1.49× the best)302 ns (2.20× the best)21.2 ns (1.69× the best)307 ns (1.98× the best)21.6 ns (1.03× the best)
gf2_122-uunscaled (X:S:Z), w codec674 ns (2.63× the best)127 ns (1.25× the best)391 ns (1.60× the best)99.3 ns (1.07× the best)0.50 ns (1.15× the best)0.49 ns (1.06× the best)14.3 ns (1.08× the best)16.7 ns (1.15× the best)13.9 ns (1.06× the best)0.58 ns (1.03× the best)0.85 ns (2.10× the best)5.59 ns (1.42× the best)5.97 ns (2.01× the best)305 ns (2.23× the best)18.4 ns (1.47× the best)317 ns (2.05× the best)26.0 ns (1.24× the best)
GF(2^122), constant in GF(2^61) (GLS-shaped), 16 bytes
gf2_122-gls(X:S:Z:T) extended394 ns (1.54× the best)101 ns (best)4.22 ns (9.82× the best)4.27 ns (9.20× the best)19.3 ns (1.46× the best)20.6 ns (1.41× the best)19.5 ns (1.49× the best)1.17 ns (2.10× the best)0.87 ns (2.17× the best)4.06 ns (1.03× the best)4.08 ns (1.37× the best)293 ns (2.14× the best)21.1 ns (1.68× the best)313 ns (2.02× the best)22.7 ns (1.08× the best)
gf2_122-gls-lambdaincompleteλ-projective692 ns (2.70× the best)116 ns (1.14× the best)385 ns (1.58× the best)95.0 ns (1.03× the best)249 ns (579.08× the best)8.11 ns (17.46× the best)20.3 ns (1.53× the best)28.0 ns (1.92× the best)20.4 ns (1.56× the best)0.57 ns (1.03× the best)0.80 ns (2.00× the best)4.20 ns (1.06× the best)4.37 ns (1.47× the best)297 ns (2.17× the best)17.9 ns (1.42× the best)311 ns (2.01× the best)22.6 ns (1.08× the best)
gf2_122-gls-wincompleteλ-projective, w codec659 ns (2.57× the best)116 ns (1.14× the best)385 ns (1.58× the best)94.6 ns (1.02× the best)0.43 ns (tied for the best, within noise)0.68 ns (1.47× the best)20.3 ns (1.54× the best)28.1 ns (1.93× the best)20.5 ns (1.56× the best)0.56 ns (tied for the best, within noise, 1.01×)0.81 ns (2.01× the best)4.23 ns (1.07× the best)4.26 ns (1.43× the best)297 ns (2.17× the best)20.4 ns (1.62× the best)305 ns (1.97× the best)20.9 ns (best)
gf2_122-gls-uunscaled (X:S:Z), w codec678 ns (2.65× the best)121 ns (1.19× the best)390 ns (1.60× the best)97.6 ns (1.05× the best)0.44 ns (tied for the best, within noise, 1.01×)0.68 ns (1.46× the best)13.7 ns (1.04× the best)16.2 ns (1.11× the best)14.0 ns (1.07× the best)0.56 ns (tied for the best, within noise, 1.01×)0.80 ns (2.00× the best)5.60 ns (1.42× the best)5.64 ns (1.90× the best)297 ns (2.17× the best)18.0 ns (1.44× the best)313 ns (2.02× the best)24.7 ns (1.18× the best)
GF(2^109), 14 bytes
gf2_109(X:S:Z:T) extended675 ns (2.63× the best)114 ns (1.12× the best)4.23 ns (9.85× the best)4.25 ns (9.16× the best)20.4 ns (1.54× the best)22.2 ns (1.52× the best)20.7 ns (1.58× the best)0.56 ns (tied for the best, within noise, 1.01×)0.94 ns (2.34× the best)4.05 ns (1.03× the best)4.07 ns (1.37× the best)538 ns (3.93× the best)18.2 ns (1.45× the best)554 ns (3.58× the best)26.7 ns (1.28× the best)
gf2_109-lambdaincompleteλ-projective1.16 µs (4.53× the best)124 ns (1.23× the best)655 ns (2.69× the best)105 ns (1.13× the best)503 ns (1170.41× the best)8.13 ns (17.51× the best)18.9 ns (1.43× the best)28.2 ns (1.94× the best)19.1 ns (1.46× the best)0.56 ns (tied for the best, within noise, 1.00×)0.80 ns (1.99× the best)3.96 ns (tied for the best, within noise, 1.00×)3.94 ns (1.33× the best)530 ns (3.87× the best)14.1 ns (1.12× the best)549 ns (3.55× the best)26.5 ns (1.27× the best)
gf2_109-wincompleteλ-projective, w codec1.14 µs (4.44× the best)120 ns (1.18× the best)652 ns (2.67× the best)104 ns (1.12× the best)0.44 ns (tied for the best, within noise, 1.02×)0.47 ns (tied for the best, within noise, 1.01×)18.9 ns (1.43× the best)28.3 ns (1.94× the best)19.2 ns (1.46× the best)0.57 ns (1.01× the best)0.80 ns (1.99× the best)4.16 ns (1.05× the best)4.13 ns (1.39× the best)540 ns (3.94× the best)21.6 ns (1.72× the best)555 ns (3.59× the best)24.4 ns (1.17× the best)
gf2_109-uunscaled (X:S:Z), w codec1.15 µs (4.51× the best)125 ns (1.23× the best)657 ns (2.70× the best)110 ns (1.18× the best)0.48 ns (1.12× the best)0.46 ns (tied for the best, within noise)13.5 ns (1.02× the best)15.7 ns (1.08× the best)13.6 ns (1.04× the best)0.56 ns (tied for the best, within noise, 1.01×)0.80 ns (1.99× the best)5.84 ns (1.48× the best)5.82 ns (1.96× the best)546 ns (3.99× the best)21.9 ns (1.74× the best)555 ns (3.59× the best)27.7 ns (1.33× the best)
F_p, p = 2^127 − 1, 16 bytes
edwards127a = 1 Edwards, extended += cached1.22 µs (4.78× the best)1.24 µs (12.21× the best)663 ns (1543.72× the best)39.9 ns (86.04× the best)27.5 ns (2.08× the best)35.8 ns (2.46× the best)1.98 ns (3.55× the best)1.30 ns (3.24× the best)3.16 ns (1.06× the best)610 ns (4.45× the best)31.9 ns (2.54× the best)540 ns (3.49× the best)541 ns (25.90× the best)
weier127short Weierstrass, projective += affine1.16 µs (4.53× the best)1.17 µs (11.50× the best)0.81 ns (1.89× the best)1.00 ns (2.15× the best)58.7 ns (4.45× the best)63.9 ns (4.38× the best)1.10 ns (1.97× the best)0.40 ns (tied for the best, within noise, 1.01×)3.53 ns (1.19× the best)593 ns (4.33× the best)16.7 ns (1.33× the best)541 ns (3.50× the best)539 ns (25.81× the best)
weier127-jacobianincompleteshort Weierstrass, Jacobian += affine1.15 µs (4.51× the best)1.16 µs (11.42× the best)0.81 ns (1.88× the best)0.99 ns (2.13× the best)48.1 ns (3.64× the best)56.6 ns (3.89× the best)1.10 ns (1.97× the best)0.40 ns (1.01× the best)6.60 ns (2.22× the best)605 ns (4.42× the best)23.6 ns (1.88× the best)543 ns (3.51× the best)542 ns (25.93× the best)
F_p, p = 2^107 − 1, 14 bytes
edwards107a = 1 Edwards, extended += cached919 ns (3.59× the best)916 ns (9.04× the best)632 ns (1471.60× the best)37.9 ns (81.74× the best)27.6 ns (2.09× the best)32.6 ns (2.24× the best)1.40 ns (2.51× the best)1.18 ns (2.94× the best)4.93 ns (1.66× the best)600 ns (4.38× the best)35.1 ns (2.80× the best)424 ns (2.74× the best)426 ns (20.37× the best)
weier107short Weierstrass, projective += affine892 ns (3.48× the best)901 ns (8.89× the best)0.82 ns (1.90× the best)0.63 ns (1.35× the best)48.6 ns (3.68× the best)53.9 ns (3.70× the best)0.82 ns (1.47× the best)0.91 ns (2.25× the best)5.81 ns (1.96× the best)582 ns (4.25× the best)19.4 ns (1.54× the best)421 ns (2.72× the best)422 ns (20.19× the best)
weier107-jacobianincompleteshort Weierstrass, Jacobian += affine886 ns (3.46× the best)893 ns (8.81× the best)0.81 ns (1.88× the best)0.63 ns (1.35× the best)44.1 ns (3.34× the best)50.9 ns (3.49× the best)0.82 ns (1.48× the best)0.90 ns (2.24× the best)9.23 ns (3.11× the best)580 ns (4.23× the best)25.5 ns (2.03× the best)419 ns (2.71× the best)421 ns (20.13× the best)
F_p, p = 2^128 − 275, 16 bytes
twisted128a = −1 twisted Edwards modulo 2-torsion, extended += cached1.97 µs (7.68× the best)1.96 µs (19.34× the best)12.5 ns (29.04× the best)12.7 ns (27.29× the best)31.1 ns (2.35× the best)36.3 ns (2.49× the best)1.15 ns (2.06× the best)0.50 ns (1.25× the best)9.45 ns (3.18× the best)943 ns (6.89× the best)22.7 ns (1.81× the best)960 ns (6.21× the best)962 ns (46.04× the best)
F_{p²}, p = 2^61 − 1, 16 bytes
edwards61x2a = 1 Edwards, signed-x codec, extended += cached707 ns (2.76× the best)706 ns (6.97× the best)236 ns (548.53× the best)34.9 ns (75.23× the best)25.8 ns (1.95× the best)29.6 ns (2.03× the best)0.78 ns (1.39× the best)0.54 ns (1.34× the best)2.97 ns (best)203 ns (1.48× the best)35.0 ns (2.79× the best)437 ns (2.83× the best)441 ns (21.08× the best)
weier61x2short Weierstrass, signed-x codec, projective += affine696 ns (2.72× the best)698 ns (6.89× the best)0.44 ns (tied for the best, within noise, 1.03×)0.52 ns (1.13× the best)50.6 ns (3.83× the best)57.1 ns (3.92× the best)0.57 ns (1.02× the best)0.41 ns (1.01× the best)3.33 ns (1.12× the best)190 ns (1.39× the best)15.3 ns (1.22× the best)441 ns (2.85× the best)448 ns (21.43× the best)
weier61x2-jacobianincompleteshort Weierstrass, signed-x codec, Jacobian += affine702 ns (2.74× the best)698 ns (6.89× the best)0.44 ns (tied for the best, within noise, 1.02×)0.52 ns (1.12× the best)50.2 ns (3.80× the best)57.2 ns (3.92× the best)0.57 ns (1.02× the best)0.40 ns (tied for the best, within noise)7.98 ns (2.69× the best)198 ns (1.45× the best)24.8 ns (1.97× the best)440 ns (2.84× the best)445 ns (21.28× the best)
twisted61x2a = −1 Edwards modulo 2-torsion, extended += cached706 ns (2.76× the best)711 ns (7.01× the best)8.07 ns (18.77× the best)7.93 ns (17.07× the best)24.9 ns (1.89× the best)28.4 ns (1.95× the best)25.2 ns (1.92× the best)0.73 ns (1.32× the best)0.50 ns (1.24× the best)8.55 ns (2.17× the best)8.85 ns (2.98× the best)189 ns (1.38× the best)14.9 ns (1.19× the best)448 ns (2.90× the best)450 ns (21.55× the best)
F_{p²}, p = 2^64 − 59, 16 bytes
twisted64x2a = −1 Edwards modulo 2-torsion, extended += cached1.00 µs (3.91× the best)1.00 µs (9.90× the best)8.75 ns (20.37× the best)8.79 ns (18.94× the best)33.3 ns (2.52× the best)37.9 ns (2.60× the best)0.73 ns (1.32× the best)0.50 ns (1.25× the best)7.68 ns (2.59× the best)267 ns (1.95× the best)22.6 ns (1.80× the best)650 ns (4.20× the best)647 ns (30.96× the best)
F_{p²}, p = 2^64 − 2^32 + 1, 16 bytes
twisted-goldilocks2a = −1 Edwards modulo 2-torsion, extended += cached2.21 µs (8.65× the best)2.24 µs (22.07× the best)9.45 ns (22.00× the best)9.54 ns (20.55× the best)28.7 ns (2.18× the best)29.4 ns (2.02× the best)1.32 ns (2.36× the best)0.60 ns (1.48× the best)9.42 ns (3.17× the best)316 ns (2.31× the best)22.9 ns (1.83× the best)1.91 µs (12.36× the best)1.92 µs (92.00× the best)
references, 32 and 33 bytes
ristretto255curve25519-dalek6.03 µs (23.55× the best)116 ns (8.76× the best)117 ns (8.05× the best)113 ns (8.62× the best)6.47 ns (11.61× the best)
secp256k1libsecp256k16.16 µs (24.04× the best)24.7 ns (44.31× the best)

bold: the best of its column; italic, dotted: tied with the best within the confidence intervals; shading: ratio to the best, pale yellow at 1× to purple at 16× or more; grey: baseline, not compared.

Group operations and hash to curve, time per operation, on log scales: a panel per operation with a bar per field or curve and its 95% confidence-interval box with an estimate line, two variants of an operation as a dark and a light bar of the family's colour; each panel shows the three fastest, the representative families and the XOR baseline, and the grid above lists the rest.Group operations and hash to curve, time per operation, on log scales: a panel per operation with a bar per field or curve and its 95% confidence-interval box with an estimate line, two variants of an operation as a dark and a light bar of the family's colour; each panel shows the three fastest, the representative families and the XOR baseline, and the grid above lists the rest.

Field operations

Per field; batched inversion per element of a batch of 1024.

fieldmulsquareaddsqrtsqrt ratiohalftraceinvertpackunpack
throughputlatencythroughputlatencyalonebatched
binary
gf2_127F_2[z]/(z^127 + z^63 + 1)1.43 ns (1.04× the best)3.50 ns (1.07× the best)0.65 ns (best)2.18 ns (best)xor1.70 ns (best)5.16 ns (1.34× the best)123 ns (best)5.41 ns (1.03× the best)
gf2_122GF(2^61)[u]/(u^2 + u + 1)1.38 ns (1.01× the best)4.56 ns (1.40× the best)1.17 ns (1.80× the best)4.33 ns (1.99× the best)xor3.98 ns (2.34× the best)3.86 ns (best)238 ns (1.93× the best)5.23 ns (best)
gf2_109F_2[z]/(z^109 + z^5 + z^4 + z^2 + 1)1.37 ns (best)5.13 ns (1.57× the best)0.81 ns (1.24× the best)3.88 ns (1.78× the best)xor6.93 ns (4.09× the best)4.02 ns (1.04× the best)491 ns (3.99× the best)5.36 ns (1.03× the best)
prime
fp127p = 2^127 − 12.69 ns (1.96× the best)4.31 ns (1.32× the best)2.30 ns (3.52× the best)4.26 ns (1.96× the best)1.00 ns (1.67× the best)523 ns (308.39× the best)592 ns (2.01× the best)577 ns (4.68× the best)10.2 ns (1.95× the best)0.38 ns (1.06× the best)0.70 ns (tied for the best, within noise)
fp107p = 2^107 − 12.55 ns (1.86× the best)3.97 ns (1.22× the best)2.13 ns (3.27× the best)3.60 ns (1.65× the best)0.62 ns (1.04× the best)422 ns (248.72× the best)597 ns (2.03× the best)571 ns (4.63× the best)10.1 ns (1.92× the best)0.82 ns (2.27× the best)0.73 ns (1.05× the best)
fp128p = 2^128 − 275, for twisted1283.82 ns (2.79× the best)6.73 ns (2.06× the best)3.64 ns (5.58× the best)6.54 ns (3.00× the best)0.72 ns (1.19× the best)891 ns (524.78× the best)937 ns (3.18× the best)918 ns (7.45× the best)0.36 ns (tied for the best, within noise)0.70 ns (tied for the best, within noise, 1.00×)
quadratic extensions of prime fields
fp61x2GF(p^2) = F_p[i]/(i^2 + 1), p = 2^61 − 12.54 ns (1.85× the best)5.37 ns (1.65× the best)2.38 ns (3.64× the best)5.90 ns (2.71× the best)0.61 ns (1.02× the best)298 ns (175.83× the best)295 ns (best)176 ns (1.43× the best)8.60 ns (1.64× the best)0.50 ns (1.38× the best)0.99 ns (1.42× the best)
fp64x2GF(p^2) = F_p[i]/(i^2 − 2), p = 2^64 − 593.82 ns (2.79× the best)4.99 ns (1.53× the best)3.70 ns (5.67× the best)4.76 ns (2.19× the best)0.60 ns (best)431 ns (254.15× the best)431 ns (1.46× the best)241 ns (1.96× the best)13.6 ns (2.59× the best)0.37 ns (tied for the best, within noise, 1.01×)0.70 ns (tied for the best, within noise)
goldilocks2GF(p^2) = F_p[i]/(i^2 − 7), p = 2^64 − 2^32 + 12.67 ns (1.94× the best)3.26 ns (best)2.59 ns (3.96× the best)3.59 ns (1.65× the best)0.69 ns (1.15× the best)996 ns (586.74× the best)950 ns (3.23× the best)304 ns (2.47× the best)8.96 ns (1.71× the best)0.69 ns (1.92× the best)0.70 ns (tied for the best, within noise)

bold: the best of its column; italic, dotted: tied with the best within the confidence intervals; shading: ratio to the best, pale yellow at 1× to purple at 16× or more; grey: baseline, not compared.

Field operations, time per operation, on log scales: a panel per operation with a bar per field or curve and its 95% confidence-interval box with an estimate line, two variants of an operation as a dark and a light bar of the family's colour; each panel shows the three fastest, the representative families and the XOR baseline, and the grid above lists the rest.Field operations, time per operation, on log scales: a panel per operation with a bar per field or curve and its 95% confidence-interval box with an estimate line, two variants of an operation as a dark and a light bar of the family's colour; each panel shows the three fastest, the representative families and the XOR baseline, and the grid above lists the rest.

Which bench each cell is
operationcurvebenchtime95% CI
field mul, throughputgf2_127field/gf2_127/mul throughput (8 chains)1.43 ns1.42 ns .. 1.43 ns
field mul, throughputgf2_109field/gf2_109/mul throughput (8 chains)1.37 ns1.37 ns .. 1.38 ns
field mul, throughputgf2_122field/gf2_122/mul throughput (8 chains)1.38 ns1.38 ns .. 1.38 ns
field mul, throughputfp127field/fp127/mul throughput (8 chains)2.69 ns2.68 ns .. 2.70 ns
field mul, throughputfp107field/fp107 schoolbook/mul throughput (8 chains)2.55 ns2.55 ns .. 2.56 ns
field mul, throughputfp128field/fp128/mul throughput (8 chains)3.82 ns3.82 ns .. 3.83 ns
field mul, throughputfp61x2field/fp61x2/mul throughput (8 chains)2.54 ns2.54 ns .. 2.55 ns
field mul, throughputfp64x2field/fp64x2/mul throughput (8 chains)3.82 ns3.82 ns .. 3.83 ns
field mul, throughputgoldilocks2field/goldilocks2/mul throughput (8 chains)2.67 ns2.66 ns .. 2.68 ns
field mul, latencygf2_127field/gf2_127/mul latency (dependent chain)3.50 ns3.49 ns .. 3.51 ns
field mul, latencygf2_109field/gf2_109/mul latency (dependent chain)5.13 ns5.10 ns .. 5.16 ns
field mul, latencygf2_122field/gf2_122/mul latency (dependent chain)4.56 ns4.54 ns .. 4.57 ns
field mul, latencyfp127field/fp127/mul latency (dependent chain)4.31 ns4.29 ns .. 4.32 ns
field mul, latencyfp107field/fp107/mul latency (dependent chain)3.97 ns3.96 ns .. 3.98 ns
field mul, latencyfp128field/fp128/mul latency (dependent chain)6.73 ns6.71 ns .. 6.74 ns
field mul, latencyfp61x2field/fp61x2/mul latency (dependent chain)5.37 ns5.36 ns .. 5.39 ns
field mul, latencyfp64x2field/fp64x2/mul latency (dependent chain)4.99 ns4.99 ns .. 5.01 ns
field mul, latencygoldilocks2field/goldilocks2/mul latency (dependent chain)3.26 ns3.25 ns .. 3.27 ns
field square, throughputgf2_127field/gf2_127/square throughput (8 chains)0.65 ns0.65 ns .. 0.65 ns
field square, throughputgf2_109field/gf2_109/square throughput (8 chains)0.81 ns0.81 ns .. 0.81 ns
field square, throughputgf2_122field/gf2_122/square throughput (8 chains)1.17 ns1.17 ns .. 1.18 ns
field square, throughputfp127field/fp127/square throughput (8 chains)2.30 ns2.29 ns .. 2.31 ns
field square, throughputfp107field/fp107/square throughput (8 chains)2.13 ns2.13 ns .. 2.14 ns
field square, throughputfp128field/fp128/square throughput (8 chains)3.64 ns3.63 ns .. 3.65 ns
field square, throughputfp61x2field/fp61x2/square throughput (8 chains)2.38 ns2.37 ns .. 2.38 ns
field square, throughputfp64x2field/fp64x2/square throughput (8 chains)3.70 ns3.69 ns .. 3.71 ns
field square, throughputgoldilocks2field/goldilocks2/square throughput (8 chains)2.59 ns2.58 ns .. 2.60 ns
field square, latencygf2_127field/gf2_127/square latency (dependent chain)2.18 ns2.17 ns .. 2.19 ns
field square, latencygf2_109field/gf2_109/square latency (dependent chain)3.88 ns3.87 ns .. 3.89 ns
field square, latencygf2_122field/gf2_122/square latency (dependent chain)4.33 ns4.32 ns .. 4.34 ns
field square, latencyfp127field/fp127/square latency (dependent chain)4.26 ns4.25 ns .. 4.27 ns
field square, latencyfp107field/fp107/square latency (dependent chain)3.60 ns3.59 ns .. 3.60 ns
field square, latencyfp128field/fp128/square latency (dependent chain)6.54 ns6.52 ns .. 6.56 ns
field square, latencyfp61x2field/fp61x2/square latency (dependent chain)5.90 ns5.88 ns .. 5.92 ns
field square, latencyfp64x2field/fp64x2/square latency (dependent chain)4.76 ns4.75 ns .. 4.77 ns
field square, latencygoldilocks2field/goldilocks2/square latency (dependent chain)3.59 ns3.58 ns .. 3.60 ns
field addfp127field/fp127/add1.00 ns0.99 ns .. 1.01 ns
field addfp107field/fp107/add0.62 ns0.62 ns .. 0.63 ns
field addfp128field/fp128/add0.72 ns0.71 ns .. 0.72 ns
field addfp61x2field/fp61x2/add0.61 ns0.61 ns .. 0.61 ns
field addfp64x2field/fp64x2/add0.60 ns0.60 ns .. 0.60 ns
field addgoldilocks2field/goldilocks2/add0.69 ns0.69 ns .. 0.70 ns
field sqrtgf2_127field/gf2_127/sqrt1.70 ns1.69 ns .. 1.70 ns
field sqrtgf2_109field/gf2_109/sqrt6.93 ns6.92 ns .. 6.95 ns
field sqrtgf2_122field/gf2_122/sqrt3.98 ns3.97 ns .. 3.98 ns
field sqrtfp127field/fp127/sqrt (x^(2^125))523 ns523 ns .. 524 ns
field sqrtfp107field/fp107/sqrt (x^(2^105))422 ns420 ns .. 425 ns
field sqrtfp128field/fp128/sqrt891 ns888 ns .. 893 ns
field sqrtfp61x2field/fp61x2/sqrt298 ns298 ns .. 299 ns
field sqrtfp64x2field/fp64x2/sqrt431 ns430 ns .. 432 ns
field sqrtgoldilocks2field/goldilocks2/sqrt996 ns993 ns .. 998 ns
field sqrt ratiofp127field/fp127/sqrt_ratio592 ns590 ns .. 593 ns
field sqrt ratiofp107field/fp107/sqrt_ratio597 ns593 ns .. 601 ns
field sqrt ratiofp128field/fp128/sqrt_ratio937 ns936 ns .. 939 ns
field sqrt ratiofp61x2field/fp61x2/sqrt_ratio295 ns294 ns .. 295 ns
field sqrt ratiofp64x2field/fp64x2/sqrt_ratio431 ns430 ns .. 432 ns
field sqrt ratiogoldilocks2field/goldilocks2/sqrt_ratio950 ns948 ns .. 952 ns
field halftracegf2_127field/gf2_127/halftrace (byte tables)5.16 ns5.12 ns .. 5.23 ns
field halftracegf2_109field/gf2_109/halftrace (byte tables)4.02 ns4.01 ns .. 4.03 ns
field halftracegf2_122field/gf2_122/qsolve (z^2 + z = c, 2 base halftraces)3.86 ns3.84 ns .. 3.88 ns
field invert, one at a timegf2_127field/gf2_127/invert123 ns123 ns .. 124 ns
field invert, one at a timegf2_109field/gf2_109/invert491 ns490 ns .. 493 ns
field invert, one at a timegf2_122field/gf2_122/invert238 ns238 ns .. 239 ns
field invert, one at a timefp127field/fp127/invert577 ns576 ns .. 578 ns
field invert, one at a timefp107field/fp107/invert571 ns566 ns .. 576 ns
field invert, one at a timefp128field/fp128/invert918 ns916 ns .. 922 ns
field invert, one at a timefp61x2field/fp61x2/invert176 ns176 ns .. 176 ns
field invert, one at a timefp64x2field/fp64x2/invert241 ns241 ns .. 242 ns
field invert, one at a timegoldilocks2field/goldilocks2/invert304 ns303 ns .. 305 ns
field invert, batchedgf2_127field/gf2_127/batch invert (product tree)5.41 ns5.36 ns .. 5.45 ns
field invert, batchedgf2_109field/gf2_109/batch invert (product tree)5.36 ns5.34 ns .. 5.38 ns
field invert, batchedgf2_122field/gf2_122/batch invert (product tree)5.23 ns5.21 ns .. 5.25 ns
field invert, batchedfp127field/fp127/batch invert (product tree)10.2 ns10.1 ns .. 10.3 ns
field invert, batchedfp107field/fp107/batch invert (product tree)10.1 ns10.0 ns .. 10.1 ns
field invert, batchedfp61x2field/fp61x2/batch invert (product tree)8.60 ns8.58 ns .. 8.62 ns
field invert, batchedfp64x2field/fp64x2/batch invert (product tree)13.6 ns13.5 ns .. 13.6 ns
field invert, batchedgoldilocks2field/goldilocks2/batch invert (product tree)8.96 ns8.93 ns .. 9.00 ns
field packfp127field/fp127/pack0.38 ns0.38 ns .. 0.39 ns
field packfp107field/fp107/pack0.82 ns0.82 ns .. 0.83 ns
field packfp128field/fp128/pack0.36 ns0.36 ns .. 0.37 ns
field packfp61x2field/fp61x2/pack0.50 ns0.50 ns .. 0.50 ns
field packfp64x2field/fp64x2/pack0.37 ns0.36 ns .. 0.37 ns
field packgoldilocks2field/goldilocks2/pack0.69 ns0.69 ns .. 0.70 ns
field unpackfp127field/fp127/unpack0.70 ns0.70 ns .. 0.70 ns
field unpackfp107field/fp107/unpack0.73 ns0.73 ns .. 0.73 ns
field unpackfp128field/fp128/unpack0.70 ns0.70 ns .. 0.70 ns
field unpackfp61x2field/fp61x2/unpack0.99 ns0.99 ns .. 1.00 ns
field unpackfp64x2field/fp64x2/unpack0.70 ns0.70 ns .. 0.70 ns
field unpackgoldilocks2field/goldilocks2/unpack0.70 ns0.70 ns .. 0.70 ns
point add, throughputxoradd/xor-sha256/xor 32B, 8 accumulators0.45 ns0.43 ns .. 0.46 ns
point add, throughputgf2_127group.add/binary.127/mode=throughput19.5 ns19.5 ns .. 19.6 ns
point add, throughputgf2_127-lambdagroup.add/binary-lambda.127/mode=throughput17.6 ns17.6 ns .. 17.7 ns
point add, throughputgf2_127-wgroup.add/binary-w.127/mode=throughput17.7 ns17.6 ns .. 17.7 ns
point add, throughputgf2_127-ugroup.add/binary-u.127/mode=throughput13.2 ns13.2 ns .. 13.2 ns
point add, throughputgf2_109group.add/binary.109/mode=throughput20.4 ns20.3 ns .. 20.4 ns
point add, throughputgf2_109-lambdagroup.add/binary-lambda.109/mode=throughput18.9 ns18.9 ns .. 18.9 ns
point add, throughputgf2_109-wgroup.add/binary-w.109/mode=throughput18.9 ns18.9 ns .. 19.0 ns
point add, throughputgf2_109-ugroup.add/binary-u.109/mode=throughput13.5 ns13.5 ns .. 13.5 ns
point add, throughputgf2_122group.add/binary.122/mode=throughput19.9 ns19.9 ns .. 20.0 ns
point add, throughputgf2_122-lambdagroup.add/binary-lambda.122/mode=throughput20.2 ns20.2 ns .. 20.3 ns
point add, throughputgf2_122-wgroup.add/binary-w.122/mode=throughput20.5 ns20.4 ns .. 20.6 ns
point add, throughputgf2_122-ugroup.add/binary-u.122/mode=throughput14.3 ns14.3 ns .. 14.4 ns
point add, throughputgf2_122-glsgroup.add/binary.122-gls/mode=throughput19.3 ns19.2 ns .. 19.4 ns
point add, throughputgf2_122-gls-lambdagroup.add/binary-lambda.122-gls/mode=throughput20.3 ns20.2 ns .. 20.3 ns
point add, throughputgf2_122-gls-wgroup.add/binary-w.122-gls/mode=throughput20.3 ns20.2 ns .. 20.4 ns
point add, throughputgf2_122-gls-ugroup.add/binary-u.122-gls/mode=throughput13.7 ns13.7 ns .. 13.8 ns
point add, throughputedwards127group.add/edwards.127/mode=throughput27.5 ns27.4 ns .. 27.6 ns
point add, throughputedwards107group.add/edwards.107/mode=throughput27.6 ns27.5 ns .. 27.7 ns
point add, throughputtwisted128group.add/twisted.128/mode=throughput31.1 ns31.0 ns .. 31.2 ns
point add, throughputweier127group.add/weier.127/mode=throughput58.7 ns58.5 ns .. 58.9 ns
point add, throughputweier127-jacobiangroup.add/weier-jacobian.127/mode=throughput48.1 ns48.0 ns .. 48.2 ns
point add, throughputweier107group.add/weier.107/mode=throughput48.6 ns48.4 ns .. 48.8 ns
point add, throughputweier107-jacobiangroup.add/weier-jacobian.107/mode=throughput44.1 ns44.0 ns .. 44.3 ns
point add, throughputedwards61x2group.add/edwards.61x2/mode=throughput25.8 ns25.7 ns .. 25.9 ns
point add, throughputweier61x2group.add/weier.61x2/mode=throughput50.6 ns50.4 ns .. 50.7 ns
point add, throughputweier61x2-jacobiangroup.add/weier-jacobian.61x2/mode=throughput50.2 ns50.1 ns .. 50.3 ns
point add, throughputtwisted61x2group.add/twisted.61x2/mode=throughput24.9 ns24.8 ns .. 25.0 ns
point add, throughputtwisted64x2group.add/twisted.64x2/mode=throughput33.3 ns33.2 ns .. 33.4 ns
point add, throughputtwisted-goldilocks2group.add/twisted.goldilocks2/mode=throughput28.7 ns28.7 ns .. 28.8 ns
point add, throughputristretto255add/ristretto255/+=, 8 accumulators116 ns115 ns .. 116 ns
point add, latencyxoradd/xor-sha256/xor 32B, 1 accumulator0.26 ns0.25 ns .. 0.26 ns
point add, latencygf2_127group.add/binary.127/mode=latency19.9 ns19.8 ns .. 20.0 ns
point add, latencygf2_127-lambdagroup.add/binary-lambda.127/mode=latency24.4 ns24.3 ns .. 24.5 ns
point add, latencygf2_127-wgroup.add/binary-w.127/mode=latency24.4 ns24.3 ns .. 24.4 ns
point add, latencygf2_127-ugroup.add/binary-u.127/mode=latency14.6 ns14.5 ns .. 14.6 ns
point add, latencygf2_109group.add/binary.109/mode=latency22.2 ns22.1 ns .. 22.2 ns
point add, latencygf2_109-lambdagroup.add/binary-lambda.109/mode=latency28.2 ns28.2 ns .. 28.3 ns
point add, latencygf2_109-wgroup.add/binary-w.109/mode=latency28.3 ns28.2 ns .. 28.4 ns
point add, latencygf2_109-ugroup.add/binary-u.109/mode=latency15.7 ns15.7 ns .. 15.7 ns
point add, latencygf2_122group.add/binary.122/mode=latency21.3 ns21.2 ns .. 21.3 ns
point add, latencygf2_122-lambdagroup.add/binary-lambda.122/mode=latency28.0 ns27.9 ns .. 28.1 ns
point add, latencygf2_122-wgroup.add/binary-w.122/mode=latency27.9 ns27.8 ns .. 28.0 ns
point add, latencygf2_122-ugroup.add/binary-u.122/mode=latency16.7 ns16.6 ns .. 16.8 ns
point add, latencygf2_122-glsgroup.add/binary.122-gls/mode=latency20.6 ns20.5 ns .. 20.6 ns
point add, latencygf2_122-gls-lambdagroup.add/binary-lambda.122-gls/mode=latency28.0 ns27.9 ns .. 28.1 ns
point add, latencygf2_122-gls-wgroup.add/binary-w.122-gls/mode=latency28.1 ns28.0 ns .. 28.1 ns
point add, latencygf2_122-gls-ugroup.add/binary-u.122-gls/mode=latency16.2 ns16.1 ns .. 16.3 ns
point add, latencyedwards127group.add/edwards.127/mode=latency35.8 ns35.7 ns .. 35.9 ns
point add, latencyedwards107group.add/edwards.107/mode=latency32.6 ns32.5 ns .. 32.7 ns
point add, latencytwisted128group.add/twisted.128/mode=latency36.3 ns36.2 ns .. 36.4 ns
point add, latencyweier127group.add/weier.127/mode=latency63.9 ns63.7 ns .. 64.0 ns
point add, latencyweier127-jacobiangroup.add/weier-jacobian.127/mode=latency56.6 ns56.4 ns .. 56.9 ns
point add, latencyweier107group.add/weier.107/mode=latency53.9 ns53.4 ns .. 54.2 ns
point add, latencyweier107-jacobiangroup.add/weier-jacobian.107/mode=latency50.9 ns50.8 ns .. 51.1 ns
point add, latencyedwards61x2group.add/edwards.61x2/mode=latency29.6 ns29.5 ns .. 29.7 ns
point add, latencyweier61x2group.add/weier.61x2/mode=latency57.1 ns57.0 ns .. 57.2 ns
point add, latencyweier61x2-jacobiangroup.add/weier-jacobian.61x2/mode=latency57.2 ns57.0 ns .. 57.3 ns
point add, latencytwisted61x2group.add/twisted.61x2/mode=latency28.4 ns28.3 ns .. 28.5 ns
point add, latencytwisted64x2group.add/twisted.64x2/mode=latency37.9 ns37.7 ns .. 38.0 ns
point add, latencytwisted-goldilocks2group.add/twisted.goldilocks2/mode=latency29.4 ns29.3 ns .. 29.4 ns
point add, latencyristretto255add/ristretto255/+=, 1 accumulator117 ns117 ns .. 118 ns
point subtractgf2_127group.sub/binary.127/mode=throughput18.6 ns18.6 ns .. 18.7 ns
point subtractgf2_127-lambdagroup.sub/binary-lambda.127/mode=throughput17.6 ns17.6 ns .. 17.7 ns
point subtractgf2_127-wgroup.sub/binary-w.127/mode=throughput17.7 ns17.6 ns .. 17.7 ns
point subtractgf2_127-ugroup.sub/binary-u.127/mode=throughput13.1 ns13.1 ns .. 13.1 ns
point subtractgf2_109group.sub/binary.109/mode=throughput20.7 ns20.6 ns .. 20.7 ns
point subtractgf2_109-lambdagroup.sub/binary-lambda.109/mode=throughput19.1 ns19.0 ns .. 19.2 ns
point subtractgf2_109-wgroup.sub/binary-w.109/mode=throughput19.2 ns19.1 ns .. 19.2 ns
point subtractgf2_109-ugroup.sub/binary-u.109/mode=throughput13.6 ns13.6 ns .. 13.7 ns
point subtractgf2_122group.sub/binary.122/mode=throughput20.1 ns20.1 ns .. 20.2 ns
point subtractgf2_122-lambdagroup.sub/binary-lambda.122/mode=throughput20.5 ns20.4 ns .. 20.6 ns
point subtractgf2_122-wgroup.sub/binary-w.122/mode=throughput20.5 ns20.5 ns .. 20.6 ns
point subtractgf2_122-ugroup.sub/binary-u.122/mode=throughput13.9 ns13.9 ns .. 13.9 ns
point subtractgf2_122-glsgroup.sub/binary.122-gls/mode=throughput19.5 ns19.5 ns .. 19.6 ns
point subtractgf2_122-gls-lambdagroup.sub/binary-lambda.122-gls/mode=throughput20.4 ns20.4 ns .. 20.5 ns
point subtractgf2_122-gls-wgroup.sub/binary-w.122-gls/mode=throughput20.5 ns20.5 ns .. 20.5 ns
point subtractgf2_122-gls-ugroup.sub/binary-u.122-gls/mode=throughput14.0 ns13.9 ns .. 14.0 ns
point subtracttwisted61x2group.sub/twisted.61x2/mode=throughput25.2 ns25.2 ns .. 25.2 ns
point subtractristretto255add/ristretto255/-=, 8 accumulators113 ns112 ns .. 113 ns
point negategf2_127negate/gf2_127/affine (y += x)0.56 ns0.56 ns .. 0.57 ns
point negategf2_127-lambdagroup.neg/binary-lambda.1270.56 ns0.56 ns .. 0.56 ns
point negategf2_127-wgroup.neg/binary-w.1270.56 ns0.56 ns .. 0.56 ns
point negategf2_127-ugroup.neg/binary-u.1270.56 ns0.56 ns .. 0.56 ns
point negategf2_109negate/gf2_109/affine (y += x)0.56 ns0.56 ns .. 0.56 ns
point negategf2_109-lambdagroup.neg/binary-lambda.1090.56 ns0.56 ns .. 0.56 ns
point negategf2_109-wgroup.neg/binary-w.1090.57 ns0.56 ns .. 0.57 ns
point negategf2_109-ugroup.neg/binary-u.1090.56 ns0.56 ns .. 0.57 ns
point negategf2_122negate/gf2_122/affine (y += x)0.56 ns0.55 ns .. 0.56 ns
point negategf2_122-lambdagroup.neg/binary-lambda.1220.56 ns0.56 ns .. 0.57 ns
point negategf2_122-wgroup.neg/binary-w.1220.58 ns0.57 ns .. 0.58 ns
point negategf2_122-ugroup.neg/binary-u.1220.58 ns0.57 ns .. 0.58 ns
point negategf2_122-glsgroup.neg/binary.122-gls1.17 ns1.16 ns .. 1.17 ns
point negategf2_122-gls-lambdagroup.neg/binary-lambda.122-gls0.57 ns0.57 ns .. 0.58 ns
point negategf2_122-gls-wgroup.neg/binary-w.122-gls0.56 ns0.56 ns .. 0.56 ns
point negategf2_122-gls-ugroup.neg/binary-u.122-gls0.56 ns0.56 ns .. 0.56 ns
point negateedwards127group.neg/edwards.1271.98 ns1.97 ns .. 1.98 ns
point negateedwards107group.neg/edwards.1071.40 ns1.39 ns .. 1.40 ns
point negatetwisted128group.neg/twisted.1281.15 ns1.14 ns .. 1.15 ns
point negateweier127group.neg/weier.1271.10 ns1.09 ns .. 1.10 ns
point negateweier127-jacobiangroup.neg/weier-jacobian.1271.10 ns1.10 ns .. 1.10 ns
point negateweier107group.neg/weier.1070.82 ns0.82 ns .. 0.82 ns
point negateweier107-jacobiangroup.neg/weier-jacobian.1070.82 ns0.82 ns .. 0.83 ns
point negateedwards61x2group.neg/edwards.61x20.78 ns0.77 ns .. 0.78 ns
point negateweier61x2group.neg/weier.61x20.57 ns0.57 ns .. 0.57 ns
point negateweier61x2-jacobiangroup.neg/weier-jacobian.61x20.57 ns0.57 ns .. 0.57 ns
point negatetwisted61x2group.neg/twisted.61x20.73 ns0.71 ns .. 0.76 ns
point negatetwisted64x2group.neg/twisted.64x20.73 ns0.71 ns .. 0.76 ns
point negatetwisted-goldilocks2group.neg/twisted.goldilocks21.32 ns1.31 ns .. 1.32 ns
point negateristretto255negate/ristretto255/-P6.47 ns6.38 ns .. 6.56 ns
point negatesecp256k1negate/secp256k1/PublicKey::negate24.7 ns24.5 ns .. 24.8 ns
point prepare, one at a timegf2_127group.prepare/binary.127/mode=indep6.38 ns6.33 ns .. 6.42 ns
point prepare, one at a timegf2_127-lambdagroup.prepare/binary-lambda.127/mode=indep129 ns128 ns .. 129 ns
point prepare, one at a timegf2_127-wgroup.prepare/binary-w.127/mode=indep0.45 ns0.44 ns .. 0.47 ns
point prepare, one at a timegf2_127-ugroup.prepare/binary-u.127/mode=indep0.48 ns0.46 ns .. 0.51 ns
point prepare, one at a timegf2_109group.prepare/binary.109/mode=indep4.23 ns4.22 ns .. 4.24 ns
point prepare, one at a timegf2_109-lambdagroup.prepare/binary-lambda.109/mode=indep503 ns502 ns .. 504 ns
point prepare, one at a timegf2_109-wgroup.prepare/binary-w.109/mode=indep0.44 ns0.42 ns .. 0.46 ns
point prepare, one at a timegf2_109-ugroup.prepare/binary-u.109/mode=indep0.48 ns0.45 ns .. 0.51 ns
point prepare, one at a timegf2_122group.prepare/binary.122/mode=indep4.91 ns4.90 ns .. 4.92 ns
point prepare, one at a timegf2_122-lambdagroup.prepare/binary-lambda.122/mode=indep251 ns250 ns .. 251 ns
point prepare, one at a timegf2_122-wgroup.prepare/binary-w.122/mode=indep0.44 ns0.42 ns .. 0.46 ns
point prepare, one at a timegf2_122-ugroup.prepare/binary-u.122/mode=indep0.50 ns0.47 ns .. 0.52 ns
point prepare, one at a timegf2_122-glsgroup.prepare/binary.122-gls/mode=indep4.22 ns4.20 ns .. 4.25 ns
point prepare, one at a timegf2_122-gls-lambdagroup.prepare/binary-lambda.122-gls/mode=indep249 ns248 ns .. 250 ns
point prepare, one at a timegf2_122-gls-wgroup.prepare/binary-w.122-gls/mode=indep0.43 ns0.42 ns .. 0.45 ns
point prepare, one at a timegf2_122-gls-ugroup.prepare/binary-u.122-gls/mode=indep0.44 ns0.42 ns .. 0.45 ns
point prepare, one at a timeedwards127group.prepare/edwards.127/mode=indep663 ns662 ns .. 664 ns
point prepare, one at a timeedwards107group.prepare/edwards.107/mode=indep632 ns630 ns .. 634 ns
point prepare, one at a timetwisted128group.prepare/twisted.128/mode=indep12.5 ns12.4 ns .. 12.5 ns
point prepare, one at a timeweier127group.prepare/weier.127/mode=indep0.81 ns0.81 ns .. 0.82 ns
point prepare, one at a timeweier127-jacobiangroup.prepare/weier-jacobian.127/mode=indep0.81 ns0.81 ns .. 0.81 ns
point prepare, one at a timeweier107group.prepare/weier.107/mode=indep0.82 ns0.81 ns .. 0.82 ns
point prepare, one at a timeweier107-jacobiangroup.prepare/weier-jacobian.107/mode=indep0.81 ns0.80 ns .. 0.81 ns
point prepare, one at a timeedwards61x2group.prepare/edwards.61x2/mode=indep236 ns235 ns .. 236 ns
point prepare, one at a timeweier61x2group.prepare/weier.61x2/mode=indep0.44 ns0.43 ns .. 0.46 ns
point prepare, one at a timeweier61x2-jacobiangroup.prepare/weier-jacobian.61x2/mode=indep0.44 ns0.42 ns .. 0.46 ns
point prepare, one at a timetwisted61x2group.prepare/twisted.61x2/mode=indep8.07 ns8.02 ns .. 8.11 ns
point prepare, one at a timetwisted64x2group.prepare/twisted.64x2/mode=indep8.75 ns8.71 ns .. 8.79 ns
point prepare, one at a timetwisted-goldilocks2group.prepare/twisted.goldilocks2/mode=indep9.45 ns9.41 ns .. 9.50 ns
point prepare, batchedgf2_127group.prepare/binary.127/mode=batch,n=10246.36 ns6.31 ns .. 6.42 ns
point prepare, batchedgf2_127-lambdagroup.prepare/binary-lambda.127/mode=batch,n=10248.18 ns8.16 ns .. 8.20 ns
point prepare, batchedgf2_127-wgroup.prepare/binary-w.127/mode=batch,n=10240.47 ns0.47 ns .. 0.47 ns
point prepare, batchedgf2_127-ugroup.prepare/binary-u.127/mode=batch,n=10240.47 ns0.47 ns .. 0.47 ns
point prepare, batchedgf2_109group.prepare/binary.109/mode=batch,n=10244.25 ns4.24 ns .. 4.27 ns
point prepare, batchedgf2_109-lambdagroup.prepare/binary-lambda.109/mode=batch,n=10248.13 ns8.10 ns .. 8.16 ns
point prepare, batchedgf2_109-wgroup.prepare/binary-w.109/mode=batch,n=10240.47 ns0.46 ns .. 0.47 ns
point prepare, batchedgf2_109-ugroup.prepare/binary-u.109/mode=batch,n=10240.46 ns0.46 ns .. 0.47 ns
point prepare, batchedgf2_122group.prepare/binary.122/mode=batch,n=10245.01 ns5.00 ns .. 5.03 ns
point prepare, batchedgf2_122-lambdagroup.prepare/binary-lambda.122/mode=batch,n=10248.18 ns8.16 ns .. 8.19 ns
point prepare, batchedgf2_122-wgroup.prepare/binary-w.122/mode=batch,n=10240.47 ns0.46 ns .. 0.47 ns
point prepare, batchedgf2_122-ugroup.prepare/binary-u.122/mode=batch,n=10240.49 ns0.49 ns .. 0.50 ns
point prepare, batchedgf2_122-glsgroup.prepare/binary.122-gls/mode=batch,n=10244.27 ns4.26 ns .. 4.29 ns
point prepare, batchedgf2_122-gls-lambdagroup.prepare/binary-lambda.122-gls/mode=batch,n=10248.11 ns8.08 ns .. 8.14 ns
point prepare, batchedgf2_122-gls-wgroup.prepare/binary-w.122-gls/mode=batch,n=10240.68 ns0.68 ns .. 0.68 ns
point prepare, batchedgf2_122-gls-ugroup.prepare/binary-u.122-gls/mode=batch,n=10240.68 ns0.68 ns .. 0.68 ns
point prepare, batchededwards127group.prepare/edwards.127/mode=batch,n=102439.9 ns39.9 ns .. 40.0 ns
point prepare, batchededwards107group.prepare/edwards.107/mode=batch,n=102437.9 ns37.8 ns .. 38.1 ns
point prepare, batchedtwisted128group.prepare/twisted.128/mode=batch,n=102412.7 ns12.6 ns .. 12.7 ns
point prepare, batchedweier127group.prepare/weier.127/mode=batch,n=10241.00 ns0.99 ns .. 1.00 ns
point prepare, batchedweier127-jacobiangroup.prepare/weier-jacobian.127/mode=batch,n=10240.99 ns0.98 ns .. 0.99 ns
point prepare, batchedweier107group.prepare/weier.107/mode=batch,n=10240.63 ns0.62 ns .. 0.63 ns
point prepare, batchedweier107-jacobiangroup.prepare/weier-jacobian.107/mode=batch,n=10240.63 ns0.62 ns .. 0.63 ns
point prepare, batchededwards61x2group.prepare/edwards.61x2/mode=batch,n=102434.9 ns34.8 ns .. 35.1 ns
point prepare, batchedweier61x2group.prepare/weier.61x2/mode=batch,n=10240.52 ns0.52 ns .. 0.53 ns
point prepare, batchedweier61x2-jacobiangroup.prepare/weier-jacobian.61x2/mode=batch,n=10240.52 ns0.52 ns .. 0.52 ns
point prepare, batchedtwisted61x2group.prepare/twisted.61x2/mode=batch,n=10247.93 ns7.89 ns .. 7.96 ns
point prepare, batchedtwisted64x2group.prepare/twisted.64x2/mode=batch,n=10248.79 ns8.76 ns .. 8.82 ns
point prepare, batchedtwisted-goldilocks2group.prepare/twisted.goldilocks2/mode=batch,n=10249.54 ns9.49 ns .. 9.59 ns
is identitygf2_127group.is_identity/binary.1271.02 ns1.01 ns .. 1.02 ns
is identitygf2_127-lambdagroup.is_identity/binary-lambda.1270.82 ns0.82 ns .. 0.83 ns
is identitygf2_127-wgroup.is_identity/binary-w.1270.82 ns0.81 ns .. 0.82 ns
is identitygf2_127-ugroup.is_identity/binary-u.1270.83 ns0.83 ns .. 0.84 ns
is identitygf2_109group.is_identity/binary.1090.94 ns0.94 ns .. 0.94 ns
is identitygf2_109-lambdagroup.is_identity/binary-lambda.1090.80 ns0.80 ns .. 0.80 ns
is identitygf2_109-wgroup.is_identity/binary-w.1090.80 ns0.80 ns .. 0.80 ns
is identitygf2_109-ugroup.is_identity/binary-u.1090.80 ns0.80 ns .. 0.80 ns
is identitygf2_122group.is_identity/binary.1220.87 ns0.87 ns .. 0.88 ns
is identitygf2_122-lambdagroup.is_identity/binary-lambda.1220.81 ns0.81 ns .. 0.81 ns
is identitygf2_122-wgroup.is_identity/binary-w.1220.84 ns0.83 ns .. 0.85 ns
is identitygf2_122-ugroup.is_identity/binary-u.1220.85 ns0.84 ns .. 0.85 ns
is identitygf2_122-glsgroup.is_identity/binary.122-gls0.87 ns0.87 ns .. 0.88 ns
is identitygf2_122-gls-lambdagroup.is_identity/binary-lambda.122-gls0.80 ns0.80 ns .. 0.81 ns
is identitygf2_122-gls-wgroup.is_identity/binary-w.122-gls0.81 ns0.81 ns .. 0.81 ns
is identitygf2_122-gls-ugroup.is_identity/binary-u.122-gls0.80 ns0.80 ns .. 0.80 ns
is identityedwards127group.is_identity/edwards.1271.30 ns1.30 ns .. 1.31 ns
is identityedwards107group.is_identity/edwards.1071.18 ns1.18 ns .. 1.19 ns
is identitytwisted128group.is_identity/twisted.1280.50 ns0.50 ns .. 0.50 ns
is identityweier127group.is_identity/weier.1270.40 ns0.40 ns .. 0.41 ns
is identityweier127-jacobiangroup.is_identity/weier-jacobian.1270.40 ns0.40 ns .. 0.41 ns
is identityweier107group.is_identity/weier.1070.91 ns0.90 ns .. 0.91 ns
is identityweier107-jacobiangroup.is_identity/weier-jacobian.1070.90 ns0.90 ns .. 0.90 ns
is identityedwards61x2group.is_identity/edwards.61x20.54 ns0.53 ns .. 0.55 ns
is identityweier61x2group.is_identity/weier.61x20.41 ns0.40 ns .. 0.41 ns
is identityweier61x2-jacobiangroup.is_identity/weier-jacobian.61x20.40 ns0.40 ns .. 0.40 ns
is identitytwisted61x2group.is_identity/twisted.61x20.50 ns0.50 ns .. 0.50 ns
is identitytwisted64x2group.is_identity/twisted.64x20.50 ns0.50 ns .. 0.51 ns
is identitytwisted-goldilocks2group.is_identity/twisted.goldilocks20.60 ns0.59 ns .. 0.60 ns
equals addend, matchgf2_127group.equals/binary.127/mode=match3.97 ns3.96 ns .. 3.98 ns
equals addend, matchgf2_127-lambdagroup.equals/binary-lambda.127/mode=match3.95 ns3.94 ns .. 3.96 ns
equals addend, matchgf2_127-wgroup.equals/binary-w.127/mode=match4.04 ns4.03 ns .. 4.04 ns
equals addend, matchgf2_127-ugroup.equals/binary-u.127/mode=match6.31 ns6.29 ns .. 6.33 ns
equals addend, matchgf2_109group.equals/binary.109/mode=match4.05 ns4.04 ns .. 4.06 ns
equals addend, matchgf2_109-lambdagroup.equals/binary-lambda.109/mode=match3.96 ns3.94 ns .. 3.97 ns
equals addend, matchgf2_109-wgroup.equals/binary-w.109/mode=match4.16 ns4.15 ns .. 4.18 ns
equals addend, matchgf2_109-ugroup.equals/binary-u.109/mode=match5.84 ns5.83 ns .. 5.86 ns
equals addend, matchgf2_122group.equals/binary.122/mode=match4.07 ns4.05 ns .. 4.08 ns
equals addend, matchgf2_122-lambdagroup.equals/binary-lambda.122/mode=match4.21 ns4.20 ns .. 4.23 ns
equals addend, matchgf2_122-wgroup.equals/binary-w.122/mode=match4.23 ns4.22 ns .. 4.24 ns
equals addend, matchgf2_122-ugroup.equals/binary-u.122/mode=match5.59 ns5.58 ns .. 5.60 ns
equals addend, matchgf2_122-glsgroup.equals/binary.122-gls/mode=match4.06 ns4.05 ns .. 4.07 ns
equals addend, matchgf2_122-gls-lambdagroup.equals/binary-lambda.122-gls/mode=match4.20 ns4.19 ns .. 4.21 ns
equals addend, matchgf2_122-gls-wgroup.equals/binary-w.122-gls/mode=match4.23 ns4.22 ns .. 4.25 ns
equals addend, matchgf2_122-gls-ugroup.equals/binary-u.122-gls/mode=match5.60 ns5.58 ns .. 5.61 ns
equals addend, matchtwisted61x2group.equals/twisted.61x2/mode=match8.55 ns8.54 ns .. 8.57 ns
equals addend, mismatchgf2_127group.equals/binary.127/mode=mismatch4.25 ns4.21 ns .. 4.30 ns
equals addend, mismatchgf2_127-lambdagroup.equals/binary-lambda.127/mode=mismatch4.05 ns4.04 ns .. 4.06 ns
equals addend, mismatchgf2_127-wgroup.equals/binary-w.127/mode=mismatch4.05 ns4.04 ns .. 4.06 ns
equals addend, mismatchgf2_127-ugroup.equals/binary-u.127/mode=mismatch6.44 ns6.41 ns .. 6.46 ns
equals addend, mismatchgf2_109group.equals/binary.109/mode=mismatch4.07 ns4.06 ns .. 4.08 ns
equals addend, mismatchgf2_109-lambdagroup.equals/binary-lambda.109/mode=mismatch3.94 ns3.93 ns .. 3.95 ns
equals addend, mismatchgf2_109-wgroup.equals/binary-w.109/mode=mismatch4.13 ns4.12 ns .. 4.14 ns
equals addend, mismatchgf2_109-ugroup.equals/binary-u.109/mode=mismatch5.82 ns5.81 ns .. 5.83 ns
equals addend, mismatchgf2_122group.equals/binary.122/mode=mismatch4.05 ns4.04 ns .. 4.06 ns
equals addend, mismatchgf2_122-lambdagroup.equals/binary-lambda.122/mode=mismatch4.23 ns4.22 ns .. 4.24 ns
equals addend, mismatchgf2_122-wgroup.equals/binary-w.122/mode=mismatch4.41 ns4.38 ns .. 4.45 ns
equals addend, mismatchgf2_122-ugroup.equals/binary-u.122/mode=mismatch5.97 ns5.92 ns .. 6.03 ns
equals addend, mismatchgf2_122-glsgroup.equals/binary.122-gls/mode=mismatch4.08 ns4.06 ns .. 4.10 ns
equals addend, mismatchgf2_122-gls-lambdagroup.equals/binary-lambda.122-gls/mode=mismatch4.37 ns4.35 ns .. 4.39 ns
equals addend, mismatchgf2_122-gls-wgroup.equals/binary-w.122-gls/mode=mismatch4.26 ns4.24 ns .. 4.28 ns
equals addend, mismatchgf2_122-gls-ugroup.equals/binary-u.122-gls/mode=mismatch5.64 ns5.62 ns .. 5.65 ns
equals addend, mismatchedwards127group.equals/edwards.127/mode=mismatch3.16 ns3.15 ns .. 3.17 ns
equals addend, mismatchedwards107group.equals/edwards.107/mode=mismatch4.93 ns4.91 ns .. 4.95 ns
equals addend, mismatchtwisted128group.equals/twisted.128/mode=mismatch9.45 ns9.43 ns .. 9.47 ns
equals addend, mismatchweier127group.equals/weier.127/mode=mismatch3.53 ns3.52 ns .. 3.54 ns
equals addend, mismatchweier127-jacobiangroup.equals/weier-jacobian.127/mode=mismatch6.60 ns6.58 ns .. 6.62 ns
equals addend, mismatchweier107group.equals/weier.107/mode=mismatch5.81 ns5.80 ns .. 5.83 ns
equals addend, mismatchweier107-jacobiangroup.equals/weier-jacobian.107/mode=mismatch9.23 ns9.20 ns .. 9.26 ns
equals addend, mismatchedwards61x2group.equals/edwards.61x2/mode=mismatch2.97 ns2.96 ns .. 2.98 ns
equals addend, mismatchweier61x2group.equals/weier.61x2/mode=mismatch3.33 ns3.32 ns .. 3.34 ns
equals addend, mismatchweier61x2-jacobiangroup.equals/weier-jacobian.61x2/mode=mismatch7.98 ns7.93 ns .. 8.03 ns
equals addend, mismatchtwisted61x2group.equals/twisted.61x2/mode=mismatch8.85 ns8.79 ns .. 8.91 ns
equals addend, mismatchtwisted64x2group.equals/twisted.64x2/mode=mismatch7.68 ns7.65 ns .. 7.71 ns
equals addend, mismatchtwisted-goldilocks2group.equals/twisted.goldilocks2/mode=mismatch9.42 ns9.36 ns .. 9.50 ns
encode, one at a timegf2_127group.encode/binary.127/mode=indep151 ns149 ns .. 152 ns
encode, one at a timegf2_127-lambdagroup.encode/binary-lambda.127/mode=indep140 ns140 ns .. 141 ns
encode, one at a timegf2_127-wgroup.encode/binary-w.127/mode=indep139 ns139 ns .. 140 ns
encode, one at a timegf2_127-ugroup.encode/binary-u.127/mode=indep137 ns137 ns .. 137 ns
encode, one at a timegf2_109group.encode/binary.109/mode=indep538 ns537 ns .. 540 ns
encode, one at a timegf2_109-lambdagroup.encode/binary-lambda.109/mode=indep530 ns529 ns .. 532 ns
encode, one at a timegf2_109-wgroup.encode/binary-w.109/mode=indep540 ns539 ns .. 541 ns
encode, one at a timegf2_109-ugroup.encode/binary-u.109/mode=indep546 ns545 ns .. 548 ns
encode, one at a timegf2_122group.encode/binary.122/mode=indep294 ns294 ns .. 295 ns
encode, one at a timegf2_122-lambdagroup.encode/binary-lambda.122/mode=indep287 ns286 ns .. 288 ns
encode, one at a timegf2_122-wgroup.encode/binary-w.122/mode=indep302 ns300 ns .. 303 ns
encode, one at a timegf2_122-ugroup.encode/binary-u.122/mode=indep305 ns304 ns .. 306 ns
encode, one at a timegf2_122-glsgroup.encode/binary.122-gls/mode=indep293 ns293 ns .. 294 ns
encode, one at a timegf2_122-gls-lambdagroup.encode/binary-lambda.122-gls/mode=indep297 ns296 ns .. 297 ns
encode, one at a timegf2_122-gls-wgroup.encode/binary-w.122-gls/mode=indep297 ns296 ns .. 297 ns
encode, one at a timegf2_122-gls-ugroup.encode/binary-u.122-gls/mode=indep297 ns296 ns .. 299 ns
encode, one at a timeedwards127group.encode/edwards.127/mode=indep610 ns608 ns .. 611 ns
encode, one at a timeedwards107group.encode/edwards.107/mode=indep600 ns599 ns .. 601 ns
encode, one at a timetwisted128group.encode/twisted.128/mode=indep943 ns942 ns .. 946 ns
encode, one at a timeweier127group.encode/weier.127/mode=indep593 ns591 ns .. 594 ns
encode, one at a timeweier127-jacobiangroup.encode/weier-jacobian.127/mode=indep605 ns602 ns .. 609 ns
encode, one at a timeweier107group.encode/weier.107/mode=indep582 ns579 ns .. 584 ns
encode, one at a timeweier107-jacobiangroup.encode/weier-jacobian.107/mode=indep580 ns578 ns .. 581 ns
encode, one at a timeedwards61x2group.encode/edwards.61x2/mode=indep203 ns202 ns .. 203 ns
encode, one at a timeweier61x2group.encode/weier.61x2/mode=indep190 ns190 ns .. 191 ns
encode, one at a timeweier61x2-jacobiangroup.encode/weier-jacobian.61x2/mode=indep198 ns198 ns .. 199 ns
encode, one at a timetwisted61x2group.encode/twisted.61x2/mode=indep189 ns189 ns .. 190 ns
encode, one at a timetwisted64x2group.encode/twisted.64x2/mode=indep267 ns266 ns .. 268 ns
encode, one at a timetwisted-goldilocks2group.encode/twisted.goldilocks2/mode=indep316 ns316 ns .. 316 ns
encode, batchedgf2_127group.encode/binary.127/mode=batch,n=102422.7 ns22.5 ns .. 23.0 ns
encode, batchedgf2_127-lambdagroup.encode/binary-lambda.127/mode=batch,n=102417.5 ns17.4 ns .. 17.5 ns
encode, batchedgf2_127-wgroup.encode/binary-w.127/mode=batch,n=102417.0 ns17.0 ns .. 17.1 ns
encode, batchedgf2_127-ugroup.encode/binary-u.127/mode=batch,n=102412.6 ns12.5 ns .. 12.6 ns
encode, batchedgf2_109group.encode/binary.109/mode=batch,n=102418.2 ns18.1 ns .. 18.3 ns
encode, batchedgf2_109-lambdagroup.encode/binary-lambda.109/mode=batch,n=102414.1 ns14.1 ns .. 14.2 ns
encode, batchedgf2_109-wgroup.encode/binary-w.109/mode=batch,n=102421.6 ns21.6 ns .. 21.7 ns
encode, batchedgf2_109-ugroup.encode/binary-u.109/mode=batch,n=102421.9 ns21.9 ns .. 22.0 ns
encode, batchedgf2_122group.encode/binary.122/mode=batch,n=102422.1 ns22.0 ns .. 22.1 ns
encode, batchedgf2_122-lambdagroup.encode/binary-lambda.122/mode=batch,n=102417.3 ns17.2 ns .. 17.3 ns
encode, batchedgf2_122-wgroup.encode/binary-w.122/mode=batch,n=102421.2 ns21.0 ns .. 21.4 ns
encode, batchedgf2_122-ugroup.encode/binary-u.122/mode=batch,n=102418.4 ns18.3 ns .. 18.5 ns
encode, batchedgf2_122-glsgroup.encode/binary.122-gls/mode=batch,n=102421.1 ns21.0 ns .. 21.2 ns
encode, batchedgf2_122-gls-lambdagroup.encode/binary-lambda.122-gls/mode=batch,n=102417.9 ns17.8 ns .. 17.9 ns
encode, batchedgf2_122-gls-wgroup.encode/binary-w.122-gls/mode=batch,n=102420.4 ns20.3 ns .. 20.5 ns
encode, batchedgf2_122-gls-ugroup.encode/binary-u.122-gls/mode=batch,n=102418.0 ns18.0 ns .. 18.1 ns
encode, batchededwards127group.encode/edwards.127/mode=batch,n=102431.9 ns31.8 ns .. 32.0 ns
encode, batchededwards107group.encode/edwards.107/mode=batch,n=102435.1 ns35.0 ns .. 35.4 ns
encode, batchedtwisted128group.encode/twisted.128/mode=batch,n=102422.7 ns22.7 ns .. 22.8 ns
encode, batchedweier127group.encode/weier.127/mode=batch,n=102416.7 ns16.7 ns .. 16.8 ns
encode, batchedweier127-jacobiangroup.encode/weier-jacobian.127/mode=batch,n=102423.6 ns23.5 ns .. 23.7 ns
encode, batchedweier107group.encode/weier.107/mode=batch,n=102419.4 ns19.3 ns .. 19.5 ns
encode, batchedweier107-jacobiangroup.encode/weier-jacobian.107/mode=batch,n=102425.5 ns25.4 ns .. 25.6 ns
encode, batchededwards61x2group.encode/edwards.61x2/mode=batch,n=102435.0 ns34.9 ns .. 35.1 ns
encode, batchedweier61x2group.encode/weier.61x2/mode=batch,n=102415.3 ns15.2 ns .. 15.3 ns
encode, batchedweier61x2-jacobiangroup.encode/weier-jacobian.61x2/mode=batch,n=102424.8 ns24.7 ns .. 24.9 ns
encode, batchedtwisted61x2group.encode/twisted.61x2/mode=batch,n=102414.9 ns14.9 ns .. 15.0 ns
encode, batchedtwisted64x2group.encode/twisted.64x2/mode=batch,n=102422.6 ns22.5 ns .. 22.7 ns
encode, batchedtwisted-goldilocks2group.encode/twisted.goldilocks2/mode=batch,n=102422.9 ns22.9 ns .. 23.0 ns
decode, one at a timegf2_127group.decode/binary.127/mode=indep164 ns163 ns .. 164 ns
decode, one at a timegf2_127-lambdagroup.decode/binary-lambda.127/mode=indep155 ns154 ns .. 155 ns
decode, one at a timegf2_127-wgroup.decode/binary-w.127/mode=indep155 ns154 ns .. 155 ns
decode, one at a timegf2_127-ugroup.decode/binary-u.127/mode=indep162 ns161 ns .. 162 ns
decode, one at a timegf2_109group.decode/binary.109/mode=indep554 ns553 ns .. 556 ns
decode, one at a timegf2_109-lambdagroup.decode/binary-lambda.109/mode=indep549 ns548 ns .. 551 ns
decode, one at a timegf2_109-wgroup.decode/binary-w.109/mode=indep555 ns553 ns .. 556 ns
decode, one at a timegf2_109-ugroup.decode/binary-u.109/mode=indep555 ns555 ns .. 556 ns
decode, one at a timegf2_122group.decode/binary.122/mode=indep313 ns312 ns .. 313 ns
decode, one at a timegf2_122-lambdagroup.decode/binary-lambda.122/mode=indep314 ns313 ns .. 314 ns
decode, one at a timegf2_122-wgroup.decode/binary-w.122/mode=indep307 ns306 ns .. 308 ns
decode, one at a timegf2_122-ugroup.decode/binary-u.122/mode=indep317 ns315 ns .. 319 ns
decode, one at a timegf2_122-glsgroup.decode/binary.122-gls/mode=indep313 ns312 ns .. 313 ns
decode, one at a timegf2_122-gls-lambdagroup.decode/binary-lambda.122-gls/mode=indep311 ns310 ns .. 312 ns
decode, one at a timegf2_122-gls-wgroup.decode/binary-w.122-gls/mode=indep305 ns304 ns .. 306 ns
decode, one at a timegf2_122-gls-ugroup.decode/binary-u.122-gls/mode=indep313 ns311 ns .. 314 ns
decode, one at a timeedwards127group.decode/edwards.127/mode=indep540 ns539 ns .. 541 ns
decode, one at a timeedwards107group.decode/edwards.107/mode=indep424 ns423 ns .. 426 ns
decode, one at a timetwisted128group.decode/twisted.128/mode=indep960 ns959 ns .. 962 ns
decode, one at a timeweier127group.decode/weier.127/mode=indep541 ns540 ns .. 543 ns
decode, one at a timeweier127-jacobiangroup.decode/weier-jacobian.127/mode=indep543 ns541 ns .. 545 ns
decode, one at a timeweier107group.decode/weier.107/mode=indep421 ns420 ns .. 422 ns
decode, one at a timeweier107-jacobiangroup.decode/weier-jacobian.107/mode=indep419 ns418 ns .. 421 ns
decode, one at a timeedwards61x2group.decode/edwards.61x2/mode=indep437 ns436 ns .. 439 ns
decode, one at a timeweier61x2group.decode/weier.61x2/mode=indep441 ns440 ns .. 442 ns
decode, one at a timeweier61x2-jacobiangroup.decode/weier-jacobian.61x2/mode=indep440 ns439 ns .. 441 ns
decode, one at a timetwisted61x2group.decode/twisted.61x2/mode=indep448 ns447 ns .. 449 ns
decode, one at a timetwisted64x2group.decode/twisted.64x2/mode=indep650 ns648 ns .. 652 ns
decode, one at a timetwisted-goldilocks2group.decode/twisted.goldilocks2/mode=indep1.91 µs1.91 µs .. 1.91 µs
decode, batchedgf2_127group.decode/binary.127/mode=batch,n=102425.7 ns25.6 ns .. 25.7 ns
decode, batchedgf2_127-lambdagroup.decode/binary-lambda.127/mode=batch,n=102424.0 ns24.0 ns .. 24.1 ns
decode, batchedgf2_127-wgroup.decode/binary-w.127/mode=batch,n=102422.6 ns22.5 ns .. 22.6 ns
decode, batchedgf2_127-ugroup.decode/binary-u.127/mode=batch,n=102427.5 ns27.5 ns .. 27.6 ns
decode, batchedgf2_109group.decode/binary.109/mode=batch,n=102426.7 ns26.6 ns .. 26.8 ns
decode, batchedgf2_109-lambdagroup.decode/binary-lambda.109/mode=batch,n=102426.5 ns26.4 ns .. 26.5 ns
decode, batchedgf2_109-wgroup.decode/binary-w.109/mode=batch,n=102424.4 ns24.3 ns .. 24.4 ns
decode, batchedgf2_109-ugroup.decode/binary-u.109/mode=batch,n=102427.7 ns27.7 ns .. 27.8 ns
decode, batchedgf2_122group.decode/binary.122/mode=batch,n=102424.0 ns23.9 ns .. 24.1 ns
decode, batchedgf2_122-lambdagroup.decode/binary-lambda.122/mode=batch,n=102424.1 ns24.0 ns .. 24.1 ns
decode, batchedgf2_122-wgroup.decode/binary-w.122/mode=batch,n=102421.6 ns21.5 ns .. 21.7 ns
decode, batchedgf2_122-ugroup.decode/binary-u.122/mode=batch,n=102426.0 ns25.8 ns .. 26.2 ns
decode, batchedgf2_122-glsgroup.decode/binary.122-gls/mode=batch,n=102422.7 ns22.6 ns .. 22.7 ns
decode, batchedgf2_122-gls-lambdagroup.decode/binary-lambda.122-gls/mode=batch,n=102422.6 ns22.6 ns .. 22.7 ns
decode, batchedgf2_122-gls-wgroup.decode/binary-w.122-gls/mode=batch,n=102420.9 ns20.8 ns .. 21.0 ns
decode, batchedgf2_122-gls-ugroup.decode/binary-u.122-gls/mode=batch,n=102424.7 ns24.6 ns .. 24.8 ns
decode, batchededwards127group.decode/edwards.127/mode=batch,n=1024541 ns540 ns .. 543 ns
decode, batchededwards107group.decode/edwards.107/mode=batch,n=1024426 ns424 ns .. 427 ns
decode, batchedtwisted128group.decode/twisted.128/mode=batch,n=1024962 ns960 ns .. 965 ns
decode, batchedweier127group.decode/weier.127/mode=batch,n=1024539 ns538 ns .. 541 ns
decode, batchedweier127-jacobiangroup.decode/weier-jacobian.127/mode=batch,n=1024542 ns541 ns .. 543 ns
decode, batchedweier107group.decode/weier.107/mode=batch,n=1024422 ns421 ns .. 423 ns
decode, batchedweier107-jacobiangroup.decode/weier-jacobian.107/mode=batch,n=1024421 ns420 ns .. 422 ns
decode, batchededwards61x2group.decode/edwards.61x2/mode=batch,n=1024441 ns439 ns .. 442 ns
decode, batchedweier61x2group.decode/weier.61x2/mode=batch,n=1024448 ns447 ns .. 449 ns
decode, batchedweier61x2-jacobiangroup.decode/weier-jacobian.61x2/mode=batch,n=1024445 ns444 ns .. 446 ns
decode, batchedtwisted61x2group.decode/twisted.61x2/mode=batch,n=1024450 ns449 ns .. 451 ns
decode, batchedtwisted64x2group.decode/twisted.64x2/mode=batch,n=1024647 ns646 ns .. 649 ns
decode, batchedtwisted-goldilocks2group.decode/twisted.goldilocks2/mode=batch,n=10241.92 µs1.92 µs .. 1.93 µs
hash to curve, one at a timexorhash_to_curve/sha256 (XOR baseline)53.4 ns52.9 ns .. 53.9 ns
hash to curve, one at a timegf2_127hash_to_curve/gf2_127/pornin map x1256 ns254 ns .. 258 ns
hash to curve, one at a timegf2_127-lambdah2c/binary-lambda.127/mode=indep394 ns392 ns .. 396 ns
hash to curve, one at a timegf2_127-wh2c/binary-w.127/mode=indep392 ns391 ns .. 393 ns
hash to curve, one at a timegf2_127-uh2c/binary-u.127/mode=indep401 ns400 ns .. 403 ns
hash to curve, one at a timegf2_109hash_to_curve/gf2_109/pornin map x1675 ns673 ns .. 677 ns
hash to curve, one at a timegf2_109-lambdah2c/binary-lambda.109/mode=indep1.16 µs1.16 µs .. 1.16 µs
hash to curve, one at a timegf2_109-wh2c/binary-w.109/mode=indep1.14 µs1.13 µs .. 1.14 µs
hash to curve, one at a timegf2_109-uh2c/binary-u.109/mode=indep1.15 µs1.15 µs .. 1.16 µs
hash to curve, one at a timegf2_122hash_to_curve/gf2_122/pornin map x1392 ns391 ns .. 393 ns
hash to curve, one at a timegf2_122-lambdah2c/binary-lambda.122/mode=indep679 ns677 ns .. 680 ns
hash to curve, one at a timegf2_122-wh2c/binary-w.122/mode=indep654 ns653 ns .. 656 ns
hash to curve, one at a timegf2_122-uh2c/binary-u.122/mode=indep674 ns672 ns .. 676 ns
hash to curve, one at a timegf2_122-glshash_to_curve/gf2_122-gls/pornin map x1394 ns393 ns .. 395 ns
hash to curve, one at a timegf2_122-gls-lambdah2c/binary-lambda.122-gls/mode=indep692 ns688 ns .. 696 ns
hash to curve, one at a timegf2_122-gls-wh2c/binary-w.122-gls/mode=indep659 ns658 ns .. 660 ns
hash to curve, one at a timegf2_122-gls-uh2c/binary-u.122-gls/mode=indep678 ns676 ns .. 680 ns
hash to curve, one at a timeedwards127h2c/edwards.127/mode=indep1.22 µs1.22 µs .. 1.23 µs
hash to curve, one at a timeedwards107h2c/edwards.107/mode=indep919 ns916 ns .. 922 ns
hash to curve, one at a timetwisted128h2c/twisted.128/mode=indep1.97 µs1.96 µs .. 1.97 µs
hash to curve, one at a timeweier127h2c/weier.127/mode=indep1.16 µs1.16 µs .. 1.16 µs
hash to curve, one at a timeweier127-jacobianh2c/weier-jacobian.127/mode=indep1.15 µs1.15 µs .. 1.16 µs
hash to curve, one at a timeweier107h2c/weier.107/mode=indep892 ns890 ns .. 895 ns
hash to curve, one at a timeweier107-jacobianh2c/weier-jacobian.107/mode=indep886 ns884 ns .. 888 ns
hash to curve, one at a timeedwards61x2h2c/edwards.61x2/mode=indep707 ns705 ns .. 708 ns
hash to curve, one at a timeweier61x2h2c/weier.61x2/mode=indep696 ns694 ns .. 697 ns
hash to curve, one at a timeweier61x2-jacobianh2c/weier-jacobian.61x2/mode=indep702 ns700 ns .. 704 ns
hash to curve, one at a timetwisted61x2h2c/twisted.61x2/mode=indep706 ns704 ns .. 708 ns
hash to curve, one at a timetwisted64x2h2c/twisted.64x2/mode=indep1.00 µs999 ns .. 1.01 µs
hash to curve, one at a timetwisted-goldilocks2h2c/twisted.goldilocks2/mode=indep2.21 µs2.21 µs .. 2.22 µs
hash to curve, one at a timeristretto255hash_to_curve/ristretto255/hash_from_bytes<Sha512>6.03 µs6.02 µs .. 6.05 µs
hash to curve, one at a timesecp256k1hash_to_curve/secp256k1/ellswift decode6.16 µs6.14 µs .. 6.18 µs
hash to curve, batchedgf2_127hash_to_curve/gf2_127/pornin map x1, batched103 ns102 ns .. 103 ns
hash to curve, batchedgf2_127-lambdah2c/binary-lambda.127/mode=batch,n=1024114 ns114 ns .. 115 ns
hash to curve, batchedgf2_127-wh2c/binary-w.127/mode=batch,n=1024119 ns119 ns .. 120 ns
hash to curve, batchedgf2_127-uh2c/binary-u.127/mode=batch,n=1024125 ns124 ns .. 125 ns
hash to curve, batchedgf2_109hash_to_curve/gf2_109/pornin map x1, batched114 ns113 ns .. 114 ns
hash to curve, batchedgf2_109-lambdah2c/binary-lambda.109/mode=batch,n=1024124 ns124 ns .. 125 ns
hash to curve, batchedgf2_109-wh2c/binary-w.109/mode=batch,n=1024120 ns119 ns .. 121 ns
hash to curve, batchedgf2_109-uh2c/binary-u.109/mode=batch,n=1024125 ns125 ns .. 125 ns
hash to curve, batchedgf2_122hash_to_curve/gf2_122/pornin map x1, batched103 ns102 ns .. 103 ns
hash to curve, batchedgf2_122-lambdah2c/binary-lambda.122/mode=batch,n=1024115 ns115 ns .. 116 ns
hash to curve, batchedgf2_122-wh2c/binary-w.122/mode=batch,n=1024116 ns116 ns .. 117 ns
hash to curve, batchedgf2_122-uh2c/binary-u.122/mode=batch,n=1024127 ns125 ns .. 128 ns
hash to curve, batchedgf2_122-glshash_to_curve/gf2_122-gls/pornin map x1, batched101 ns101 ns .. 102 ns
hash to curve, batchedgf2_122-gls-lambdah2c/binary-lambda.122-gls/mode=batch,n=1024116 ns115 ns .. 116 ns
hash to curve, batchedgf2_122-gls-wh2c/binary-w.122-gls/mode=batch,n=1024116 ns115 ns .. 116 ns
hash to curve, batchedgf2_122-gls-uh2c/binary-u.122-gls/mode=batch,n=1024121 ns120 ns .. 121 ns
hash to curve, batchededwards127h2c/edwards.127/mode=batch,n=10241.24 µs1.23 µs .. 1.24 µs
hash to curve, batchededwards107h2c/edwards.107/mode=batch,n=1024916 ns914 ns .. 919 ns
hash to curve, batchedtwisted128h2c/twisted.128/mode=batch,n=10241.96 µs1.96 µs .. 1.96 µs
hash to curve, batchedweier127h2c/weier.127/mode=batch,n=10241.17 µs1.16 µs .. 1.17 µs
hash to curve, batchedweier127-jacobianh2c/weier-jacobian.127/mode=batch,n=10241.16 µs1.16 µs .. 1.16 µs
hash to curve, batchedweier107h2c/weier.107/mode=batch,n=1024901 ns899 ns .. 904 ns
hash to curve, batchedweier107-jacobianh2c/weier-jacobian.107/mode=batch,n=1024893 ns891 ns .. 895 ns
hash to curve, batchededwards61x2h2c/edwards.61x2/mode=batch,n=1024706 ns704 ns .. 708 ns
hash to curve, batchedweier61x2h2c/weier.61x2/mode=batch,n=1024698 ns696 ns .. 700 ns
hash to curve, batchedweier61x2-jacobianh2c/weier-jacobian.61x2/mode=batch,n=1024698 ns696 ns .. 700 ns
hash to curve, batchedtwisted61x2h2c/twisted.61x2/mode=batch,n=1024711 ns708 ns .. 713 ns
hash to curve, batchedtwisted64x2h2c/twisted.64x2/mode=batch,n=10241.00 µs1.00 µs .. 1.01 µs
hash to curve, batchedtwisted-goldilocks2h2c/twisted.goldilocks2/mode=batch,n=10242.24 µs2.23 µs .. 2.24 µs
hash to addend, one at a timegf2_127-lambdahash_to_curve/gf2_127-lambda/pornin map x1 to (x, λ)245 ns244 ns .. 246 ns
hash to addend, one at a timegf2_127-whash_to_curve/gf2_127-w/pornin map x1 to (x, λ)244 ns243 ns .. 245 ns
hash to addend, one at a timegf2_127-uhash_to_curve/gf2_127-u/pornin map x1 to (u, v)249 ns248 ns .. 250 ns
hash to addend, one at a timegf2_109-lambdahash_to_curve/gf2_109-lambda/pornin map x1 to (x, λ)655 ns653 ns .. 657 ns
hash to addend, one at a timegf2_109-whash_to_curve/gf2_109-w/pornin map x1 to (x, λ)652 ns650 ns .. 653 ns
hash to addend, one at a timegf2_109-uhash_to_curve/gf2_109-u/pornin map x1 to (u, v)657 ns656 ns .. 659 ns
hash to addend, one at a timegf2_122-lambdahash_to_curve/gf2_122-lambda/pornin map x1 to (x, λ)381 ns380 ns .. 382 ns
hash to addend, one at a timegf2_122-whash_to_curve/gf2_122-w/pornin map x1 to (x, λ)381 ns380 ns .. 382 ns
hash to addend, one at a timegf2_122-uhash_to_curve/gf2_122-u/pornin map x1 to (u, v)391 ns390 ns .. 392 ns
hash to addend, one at a timegf2_122-gls-lambdahash_to_curve/gf2_122-gls-lambda/pornin map x1 to (x, λ)385 ns384 ns .. 386 ns
hash to addend, one at a timegf2_122-gls-whash_to_curve/gf2_122-gls-w/pornin map x1 to (x, λ)385 ns384 ns .. 386 ns
hash to addend, one at a timegf2_122-gls-uhash_to_curve/gf2_122-gls-u/pornin map x1 to (u, v)390 ns389 ns .. 390 ns
hash to addend, batchedgf2_127-lambdahash_to_curve/gf2_127-lambda/pornin map x1 to (x, λ), batched92.7 ns92.4 ns .. 93.0 ns
hash to addend, batchedgf2_127-whash_to_curve/gf2_127-w/pornin map x1 to (x, λ), batched92.8 ns92.4 ns .. 93.2 ns
hash to addend, batchedgf2_127-uhash_to_curve/gf2_127-u/pornin map x1 to (u, v), batched98.0 ns97.4 ns .. 98.6 ns
hash to addend, batchedgf2_109-lambdahash_to_curve/gf2_109-lambda/pornin map x1 to (x, λ), batched105 ns104 ns .. 105 ns
hash to addend, batchedgf2_109-whash_to_curve/gf2_109-w/pornin map x1 to (x, λ), batched104 ns104 ns .. 104 ns
hash to addend, batchedgf2_109-uhash_to_curve/gf2_109-u/pornin map x1 to (u, v), batched110 ns109 ns .. 110 ns
hash to addend, batchedgf2_122-lambdahash_to_curve/gf2_122-lambda/pornin map x1 to (x, λ), batched95.0 ns94.7 ns .. 95.2 ns
hash to addend, batchedgf2_122-whash_to_curve/gf2_122-w/pornin map x1 to (x, λ), batched95.2 ns95.0 ns .. 95.5 ns
hash to addend, batchedgf2_122-uhash_to_curve/gf2_122-u/pornin map x1 to (u, v), batched99.3 ns99.0 ns .. 99.5 ns
hash to addend, batchedgf2_122-gls-lambdahash_to_curve/gf2_122-gls-lambda/pornin map x1 to (x, λ), batched95.0 ns94.7 ns .. 95.4 ns
hash to addend, batchedgf2_122-gls-whash_to_curve/gf2_122-gls-w/pornin map x1 to (x, λ), batched94.6 ns94.4 ns .. 94.9 ns
hash to addend, batchedgf2_122-gls-uhash_to_curve/gf2_122-gls-u/pornin map x1 to (u, v), batched97.6 ns97.4 ns .. 97.8 ns

Coverage

Benchmarks per hot-path operation and family; an empty cell was not measured.

curvehash to curveprepareaddsubtractnegateis identityequals addendencodedecodeRIBLT
encodecellspeel
baseline
xorSHA-256 digests XORed: no group, 32 bytes12511
xor-siphashSipHash-2-4 hashes XORed: no group, 8 bytes1011
GF(2^127), 16 bytes
gf2_127(X:S:Z:T) extended accumulators, Pornin's formulas4431212441136
gf2_127-lambdaincompleteλ-projective (X:L:Z) accumulators4421112448523
gf2_127-wincompleteλ-projective, w codec: hashes and decodes to λ-affine4421112448523
gf2_127-uunscaled (X:S:Z), w codec, direct addend hashes4421112448523
GF(2^122) = GF(2^61)[u], dense constant, 16 bytes
gf2_122(X:S:Z:T) extended443121244636
gf2_122-lambdaincompleteλ-projective442111244636
gf2_122-wincompleteλ-projective, w codec442111244636
gf2_122-uunscaled (X:S:Z), w codec4421112448523
GF(2^122), constant in GF(2^61) (GLS-shaped), 16 bytes
gf2_122-gls(X:S:Z:T) extended443111244636
gf2_122-gls-lambdaincompleteλ-projective442111244636
gf2_122-gls-wincompleteλ-projective, w codec442111244636
gf2_122-gls-uunscaled (X:S:Z), w codec4421112448523
GF(2^109), 14 bytes
gf2_109(X:S:Z:T) extended443121244636
gf2_109-lambdaincompleteλ-projective442111244636
gf2_109-wincompleteλ-projective, w codec442111244636
gf2_109-uunscaled (X:S:Z), w codec4421112448523
F_p, p = 2^127 − 1, 16 bytes
edwards127a = 1 Edwards, extended += cached32321122111
weier127short Weierstrass, projective += affine22221122111
weier127-jacobianincompleteshort Weierstrass, Jacobian += affine22211122111
F_p, p = 2^107 − 1, 14 bytes
edwards107a = 1 Edwards, extended += cached32321122111
weier107short Weierstrass, projective += affine22221122111
weier107-jacobianincompleteshort Weierstrass, Jacobian += affine22211122111
F_p, p = 2^128 − 275, 16 bytes
twisted128a = −1 twisted Edwards modulo 2-torsion, extended += cached22211122111
F_{p²}, p = 2^61 − 1, 16 bytes
edwards61x2a = 1 Edwards, signed-x codec, extended += cached22211122111
weier61x2short Weierstrass, signed-x codec, projective += affine22211122111
weier61x2-jacobianincompleteshort Weierstrass, signed-x codec, Jacobian += affine22211122111
twisted61x2a = −1 Edwards modulo 2-torsion, extended += cached442111244111
F_{p²}, p = 2^64 − 59, 16 bytes
twisted64x2a = −1 Edwards modulo 2-torsion, extended += cached22211122111
F_{p²}, p = 2^64 − 2^32 + 1, 16 bytes
twisted-goldilocks2a = −1 Edwards modulo 2-torsion, extended += cached22211122111
references, 32 and 33 bytes
ristretto255curve25519-dalek12111011
secp256k1libsecp256k121

bold: the best of its column; italic, dotted: tied with the best within the confidence intervals; shading: ratio to the best, pale yellow at 1× to purple at 16× or more; grey: baseline, not compared.

All benchmarks

Every observation: a figure and a table per layer.

field

116 benchmarks
operationbenchmarkfamilymodetime95% CIunit
batch invertgf2_109/batch invert (product tree)gf2_109batch5.36 ns5.34 ns .. 5.38 nsper elem
batch invertgf2_122/batch invert (product tree)gf2_122batch5.23 ns5.21 ns .. 5.25 nsper elem
batch invertgf2_127/batch invert (product tree)gf2_127batch5.41 ns5.36 ns .. 5.45 nsper elem
batch invertfp107/batch invert (product tree)fp107batch10.1 ns10.0 ns .. 10.1 nsper elem
batch invertfp127/batch invert (product tree)fp127batch10.2 ns10.1 ns .. 10.3 nsper elem
batch invertfp61x2/batch invert (product tree)fp61x2batch8.60 ns8.58 ns .. 8.62 nsper elem
batch invertfp64x2/batch invert (product tree)fp64x2batch13.6 ns13.5 ns .. 13.6 nsper elem
batch invertgoldilocks2/batch invert (product tree)goldilocks2batch8.96 ns8.93 ns .. 9.00 nsper elem
halftracegf2_109/halftracegf2_109per-element43.9 ns43.7 ns .. 44.0 nsper elem
halftracegf2_109/halftrace (byte tables)gf2_109per-element4.02 ns4.01 ns .. 4.03 nsper elem
halftracegf2_122/qsolve (z^2 + z = c, 2 base halftraces)gf2_122per-element3.86 ns3.84 ns .. 3.88 nsper elem
halftracegf2_127/halftracegf2_127per-element22.3 ns22.3 ns .. 22.4 nsper elem
halftracegf2_127/halftrace (byte tables)gf2_127per-element5.16 ns5.12 ns .. 5.23 nsper elem
halftracegf2_127/halftrace (nibble tables)gf2_127per-element24.7 ns24.7 ns .. 24.8 nsper elem
mul_u2gf2_122/mul_u2 (by a^2 = 1 + a) latency (dependent chain)gf2_122latency0.14 ns0.14 ns .. 0.14 nsper elem
mul_u2gf2_122/mul_u2 (by a^2 = 1 + a) throughput (8 chains)gf2_122throughput0.21 ns0.21 ns .. 0.21 nsper elem
packfp107/packfp107per-element0.82 ns0.82 ns .. 0.83 nsper elem
packfp127/packfp127per-element0.38 ns0.38 ns .. 0.39 nsper elem
packfp128/packfp128per-element0.36 ns0.36 ns .. 0.37 nsper elem
packfp61x2/packfp61x2per-element0.50 ns0.50 ns .. 0.50 nsper elem
packfp64x2/packfp64x2per-element0.37 ns0.36 ns .. 0.37 nsper elem
packgoldilocks2/packgoldilocks2per-element0.69 ns0.69 ns .. 0.70 nsper elem
tracegf2_109/tracegf2_109per-element0.60 ns0.60 ns .. 0.60 nsper elem
tracegf2_122/tracegf2_122per-element0.40 ns0.40 ns .. 0.40 nsper elem
tracegf2_127/tracegf2_127per-element0.50 ns0.50 ns .. 0.50 nsper elem
negfp107/negfp107per-element0.59 ns0.59 ns .. 0.59 nsper elem
negfp127/negfp127per-element0.89 ns0.89 ns .. 0.90 nsper elem
negfp128/negfp128per-element0.59 ns0.59 ns .. 0.60 nsper elem
negfp61x2/negfp61x2per-element0.41 ns0.40 ns .. 0.41 nsper elem
negfp64x2/negfp64x2per-element0.41 ns0.40 ns .. 0.41 nsper elem
neggoldilocks2/neggoldilocks2per-element0.60 ns0.60 ns .. 0.61 nsper elem
addfp107/addfp107per-element0.62 ns0.62 ns .. 0.63 nsper elem
addfp127/addfp127per-element1.00 ns0.99 ns .. 1.01 nsper elem
addfp128/addfp128per-element0.72 ns0.71 ns .. 0.72 nsper elem
addfp61x2/addfp61x2per-element0.61 ns0.61 ns .. 0.61 nsper elem
addfp64x2/addfp64x2per-element0.60 ns0.60 ns .. 0.60 nsper elem
addgoldilocks2/addgoldilocks2per-element0.69 ns0.69 ns .. 0.70 nsper elem
unpackfp107/unpackfp107per-element0.73 ns0.73 ns .. 0.73 nsper elem
unpackfp127/unpackfp127per-element0.70 ns0.70 ns .. 0.70 nsper elem
unpackfp128/unpackfp128per-element0.70 ns0.70 ns .. 0.70 nsper elem
unpackfp61x2/unpackfp61x2per-element0.99 ns0.99 ns .. 1.00 nsper elem
unpackfp64x2/unpackfp64x2per-element0.70 ns0.70 ns .. 0.70 nsper elem
unpackgoldilocks2/unpackgoldilocks2per-element0.70 ns0.70 ns .. 0.70 nsper elem
subfp128/subfp128per-element0.79 ns0.79 ns .. 0.79 nsper elem
subfp61x2/subfp61x2per-element0.80 ns0.80 ns .. 0.80 nsper elem
subfp64x2/subfp64x2per-element0.59 ns0.59 ns .. 0.60 nsper elem
subgoldilocks2/subgoldilocks2per-element0.70 ns0.69 ns .. 0.70 nsper elem
normalizegf2_109/normalize (to_u128)gf2_109per-element0.79 ns0.79 ns .. 0.80 nsper elem
normalizegf2_122/normalize (to_u128)gf2_122per-element1.38 ns1.38 ns .. 1.39 nsper elem
normalizegf2_127/normalize (to_u128)gf2_127per-element0.50 ns0.50 ns .. 0.50 nsper elem
mul_basegf2_122/mul_base (by a GF(2^61) constant) latency (dependent chain)gf2_122latency3.72 ns3.71 ns .. 3.73 nsper elem
mul_basegf2_122/mul_base (by a GF(2^61) constant) throughput (8 chains)gf2_122throughput1.17 ns1.17 ns .. 1.17 nsper elem
squaregf2_109/square latency (dependent chain)gf2_109latency3.88 ns3.87 ns .. 3.89 nsper elem
squaregf2_109/square throughput (8 chains)gf2_109throughput0.81 ns0.81 ns .. 0.81 nsper elem
squaregf2_122/square latency (dependent chain)gf2_122latency4.33 ns4.32 ns .. 4.34 nsper elem
squaregf2_122/square throughput (8 chains)gf2_122throughput1.17 ns1.17 ns .. 1.18 nsper elem
squaregf2_127/square latency (dependent chain)gf2_127latency2.18 ns2.17 ns .. 2.19 nsper elem
squaregf2_127/square throughput (8 chains)gf2_127throughput0.65 ns0.65 ns .. 0.65 nsper elem
squarefp107/square latency (dependent chain)fp107latency3.60 ns3.59 ns .. 3.60 nsper elem
squarefp107/square throughput (8 chains)fp107throughput2.13 ns2.13 ns .. 2.14 nsper elem
squarefp127/square latency (dependent chain)fp127latency4.26 ns4.25 ns .. 4.27 nsper elem
squarefp127/square throughput (8 chains)fp127throughput2.30 ns2.29 ns .. 2.31 nsper elem
squarefp128/square latency (dependent chain)fp128latency6.54 ns6.52 ns .. 6.56 nsper elem
squarefp128/square throughput (8 chains)fp128throughput3.64 ns3.63 ns .. 3.65 nsper elem
squarefp61x2/square latency (dependent chain)fp61x2latency5.90 ns5.88 ns .. 5.92 nsper elem
squarefp61x2/square throughput (8 chains)fp61x2throughput2.38 ns2.37 ns .. 2.38 nsper elem
squarefp64x2/square latency (dependent chain)fp64x2latency4.76 ns4.75 ns .. 4.77 nsper elem
squarefp64x2/square throughput (8 chains)fp64x2throughput3.70 ns3.69 ns .. 3.71 nsper elem
squaregoldilocks2/square latency (dependent chain)goldilocks2latency3.59 ns3.58 ns .. 3.60 nsper elem
squaregoldilocks2/square throughput (8 chains)goldilocks2throughput2.59 ns2.58 ns .. 2.60 nsper elem
mulgf2_109/mul latency (dependent chain)gf2_109latency5.13 ns5.10 ns .. 5.16 nsper elem
mulgf2_109/mul throughput (8 chains)gf2_109throughput1.37 ns1.37 ns .. 1.38 nsper elem
mulgf2_122/mul latency (dependent chain)gf2_122latency4.56 ns4.54 ns .. 4.57 nsper elem
mulgf2_122/mul throughput (8 chains)gf2_122throughput1.38 ns1.38 ns .. 1.38 nsper elem
mulgf2_127/mul latency (dependent chain)gf2_127latency3.50 ns3.49 ns .. 3.51 nsper elem
mulgf2_127/mul throughput (8 chains)gf2_127throughput1.43 ns1.42 ns .. 1.43 nsper elem
mulfp107 schoolbook/mul latency (dependent chain)fp107latency3.98 ns3.98 ns .. 3.99 nsper elem
mulfp107 schoolbook/mul throughput (8 chains)fp107throughput2.55 ns2.55 ns .. 2.56 nsper elem
mulfp107/mul latency (dependent chain)fp107latency3.97 ns3.96 ns .. 3.98 nsper elem
mulfp107/mul throughput (8 chains)fp107throughput2.64 ns2.61 ns .. 2.66 nsper elem
mulfp127/mul latency (dependent chain)fp127latency4.31 ns4.29 ns .. 4.32 nsper elem
mulfp127/mul throughput (8 chains)fp127throughput2.69 ns2.68 ns .. 2.70 nsper elem
mulfp128/mul latency (dependent chain)fp128latency6.73 ns6.71 ns .. 6.74 nsper elem
mulfp128/mul throughput (8 chains)fp128throughput3.82 ns3.82 ns .. 3.83 nsper elem
mulfp61x2/mul latency (dependent chain)fp61x2latency5.37 ns5.36 ns .. 5.39 nsper elem
mulfp61x2/mul throughput (8 chains)fp61x2throughput2.54 ns2.54 ns .. 2.55 nsper elem
mulfp64x2/mul latency (dependent chain)fp64x2latency4.99 ns4.99 ns .. 5.01 nsper elem
mulfp64x2/mul throughput (8 chains)fp64x2throughput3.82 ns3.82 ns .. 3.83 nsper elem
mulgoldilocks2/mul latency (dependent chain)goldilocks2latency3.26 ns3.25 ns .. 3.27 nsper elem
mulgoldilocks2/mul throughput (8 chains)goldilocks2throughput2.67 ns2.66 ns .. 2.68 nsper elem
invertgf2_109/invertgf2_109per-element491 ns490 ns .. 493 nsper elem
invertgf2_122/invertgf2_122per-element238 ns238 ns .. 239 nsper elem
invertgf2_127/invertgf2_127per-element123 ns123 ns .. 124 nsper elem
invertfp107/invertfp107per-element571 ns566 ns .. 576 nsper elem
invertfp127/invertfp127per-element577 ns576 ns .. 578 nsper elem
invertfp128/invertfp128per-element918 ns916 ns .. 922 nsper elem
invertfp61x2/invertfp61x2per-element176 ns176 ns .. 176 nsper elem
invertfp64x2/invertfp64x2per-element241 ns241 ns .. 242 nsper elem
invertgoldilocks2/invertgoldilocks2per-element304 ns303 ns .. 305 nsper elem
sqrtgf2_109/sqrtgf2_109per-element6.93 ns6.92 ns .. 6.95 nsper elem
sqrtgf2_122/sqrtgf2_122per-element3.98 ns3.97 ns .. 3.98 nsper elem
sqrtgf2_127/sqrtgf2_127per-element1.70 ns1.69 ns .. 1.70 nsper elem
sqrtfp107/sqrt (x^(2^105))fp107per-element422 ns420 ns .. 425 nsper elem
sqrtfp127/sqrt (x^(2^125))fp127per-element523 ns523 ns .. 524 nsper elem
sqrtfp128/sqrtfp128per-element891 ns888 ns .. 893 nsper elem
sqrtfp61x2/sqrtfp61x2per-element298 ns298 ns .. 299 nsper elem
sqrtfp64x2/sqrtfp64x2per-element431 ns430 ns .. 432 nsper elem
sqrtgoldilocks2/sqrtgoldilocks2per-element996 ns993 ns .. 998 nsper elem
pow_p34fp107/pow_p34 (x^(2^105-1))fp107per-element570 ns569 ns .. 571 nsper elem
pow_p34fp127/pow_p34 (x^(2^125-1))fp127per-element579 ns575 ns .. 582 nsper elem
sqrt_ratiofp107/sqrt_ratiofp107per-element597 ns593 ns .. 601 nsper elem
sqrt_ratiofp127/sqrt_ratiofp127per-element592 ns590 ns .. 593 nsper elem
sqrt_ratiofp128/sqrt_ratiofp128per-element937 ns936 ns .. 939 nsper elem
sqrt_ratiofp61x2/sqrt_ratiofp61x2per-element295 ns294 ns .. 295 nsper elem
sqrt_ratiofp64x2/sqrt_ratiofp64x2per-element431 ns430 ns .. 432 nsper elem
sqrt_ratiogoldilocks2/sqrt_ratiogoldilocks2per-element950 ns948 ns .. 952 nsper elem

group ops

486 benchmarks
operationbenchmarkfamilymodetime95% CIunit
preparebinary.109/mode=batch,n=1024gf2_109batch4.25 ns4.24 ns .. 4.27 nsper elem
preparebinary.109/mode=batch,n=64gf2_109batch4.65 ns4.64 ns .. 4.66 nsper elem
preparebinary.109/mode=batch,n=8gf2_109batch4.88 ns4.87 ns .. 4.89 nsper elem
preparebinary.109/mode=indepgf2_109per-element4.23 ns4.22 ns .. 4.24 nsper elem
preparebinary-lambda.109/mode=batch,n=1024gf2_109-lambdabatch8.13 ns8.10 ns .. 8.16 nsper elem
preparebinary-lambda.109/mode=batch,n=64gf2_109-lambdabatch18.8 ns18.7 ns .. 18.8 nsper elem
preparebinary-lambda.109/mode=batch,n=8gf2_109-lambdabatch82.7 ns82.4 ns .. 83.0 nsper elem
preparebinary-lambda.109/mode=indepgf2_109-lambdaper-element503 ns502 ns .. 504 nsper elem
preparebinary-u.109/mode=batch,n=1024gf2_109-ubatch0.46 ns0.46 ns .. 0.47 nsper elem
preparebinary-u.109/mode=batch,n=64gf2_109-ubatch0.79 ns0.79 ns .. 0.80 nsper elem
preparebinary-u.109/mode=batch,n=8gf2_109-ubatch1.08 ns1.08 ns .. 1.09 nsper elem
preparebinary-u.109/mode=indepgf2_109-uper-element0.48 ns0.45 ns .. 0.51 nsper elem
preparebinary-w.109/mode=batch,n=1024gf2_109-wbatch0.47 ns0.46 ns .. 0.47 nsper elem
preparebinary-w.109/mode=batch,n=64gf2_109-wbatch0.82 ns0.81 ns .. 0.82 nsper elem
preparebinary-w.109/mode=batch,n=8gf2_109-wbatch1.08 ns1.08 ns .. 1.09 nsper elem
preparebinary-w.109/mode=indepgf2_109-wper-element0.44 ns0.42 ns .. 0.46 nsper elem
preparebinary.122/mode=batch,n=1024gf2_122batch5.01 ns5.00 ns .. 5.03 nsper elem
preparebinary.122/mode=batch,n=64gf2_122batch5.44 ns5.42 ns .. 5.46 nsper elem
preparebinary.122/mode=batch,n=8gf2_122batch5.62 ns5.60 ns .. 5.63 nsper elem
preparebinary.122/mode=indepgf2_122per-element4.91 ns4.90 ns .. 4.92 nsper elem
preparebinary.122-gls/mode=batch,n=1024gf2_122-glsbatch4.27 ns4.26 ns .. 4.29 nsper elem
preparebinary.122-gls/mode=batch,n=64gf2_122-glsbatch4.54 ns4.53 ns .. 4.55 nsper elem
preparebinary.122-gls/mode=batch,n=8gf2_122-glsbatch4.83 ns4.82 ns .. 4.84 nsper elem
preparebinary.122-gls/mode=indepgf2_122-glsper-element4.22 ns4.20 ns .. 4.25 nsper elem
preparebinary-lambda.122-gls/mode=batch,n=1024gf2_122-gls-lambdabatch8.11 ns8.08 ns .. 8.14 nsper elem
preparebinary-lambda.122-gls/mode=batch,n=64gf2_122-gls-lambdabatch15.1 ns15.1 ns .. 15.2 nsper elem
preparebinary-lambda.122-gls/mode=batch,n=8gf2_122-gls-lambdabatch53.4 ns53.3 ns .. 53.6 nsper elem
preparebinary-lambda.122-gls/mode=indepgf2_122-gls-lambdaper-element249 ns248 ns .. 250 nsper elem
preparebinary-u.122-gls/mode=batch,n=1024gf2_122-gls-ubatch0.68 ns0.68 ns .. 0.68 nsper elem
preparebinary-u.122-gls/mode=batch,n=64gf2_122-gls-ubatch0.83 ns0.82 ns .. 0.83 nsper elem
preparebinary-u.122-gls/mode=batch,n=8gf2_122-gls-ubatch1.07 ns1.07 ns .. 1.07 nsper elem
preparebinary-u.122-gls/mode=indepgf2_122-gls-uper-element0.44 ns0.42 ns .. 0.45 nsper elem
preparebinary-w.122-gls/mode=batch,n=1024gf2_122-gls-wbatch0.68 ns0.68 ns .. 0.68 nsper elem
preparebinary-w.122-gls/mode=batch,n=64gf2_122-gls-wbatch0.83 ns0.82 ns .. 0.83 nsper elem
preparebinary-w.122-gls/mode=batch,n=8gf2_122-gls-wbatch1.08 ns1.08 ns .. 1.08 nsper elem
preparebinary-w.122-gls/mode=indepgf2_122-gls-wper-element0.43 ns0.42 ns .. 0.45 nsper elem
preparebinary-lambda.122/mode=batch,n=1024gf2_122-lambdabatch8.18 ns8.16 ns .. 8.19 nsper elem
preparebinary-lambda.122/mode=batch,n=64gf2_122-lambdabatch15.2 ns15.1 ns .. 15.3 nsper elem
preparebinary-lambda.122/mode=batch,n=8gf2_122-lambdabatch53.6 ns53.2 ns .. 54.0 nsper elem
preparebinary-lambda.122/mode=indepgf2_122-lambdaper-element251 ns250 ns .. 251 nsper elem
preparebinary-u.122/mode=batch,n=1024gf2_122-ubatch0.49 ns0.49 ns .. 0.50 nsper elem
preparebinary-u.122/mode=batch,n=64gf2_122-ubatch0.82 ns0.82 ns .. 0.82 nsper elem
preparebinary-u.122/mode=batch,n=8gf2_122-ubatch1.08 ns1.08 ns .. 1.08 nsper elem
preparebinary-u.122/mode=indepgf2_122-uper-element0.50 ns0.47 ns .. 0.52 nsper elem
preparebinary-w.122/mode=batch,n=1024gf2_122-wbatch0.47 ns0.46 ns .. 0.47 nsper elem
preparebinary-w.122/mode=batch,n=64gf2_122-wbatch0.75 ns0.75 ns .. 0.76 nsper elem
preparebinary-w.122/mode=batch,n=8gf2_122-wbatch1.09 ns1.08 ns .. 1.09 nsper elem
preparebinary-w.122/mode=indepgf2_122-wper-element0.44 ns0.42 ns .. 0.46 nsper elem
preparebinary.127/mode=batch,n=1024gf2_127batch6.36 ns6.31 ns .. 6.42 nsper elem
preparebinary.127/mode=batch,n=64gf2_127batch6.55 ns6.52 ns .. 6.59 nsper elem
preparebinary.127/mode=batch,n=8gf2_127batch6.72 ns6.69 ns .. 6.76 nsper elem
preparebinary.127/mode=indepgf2_127per-element6.38 ns6.33 ns .. 6.42 nsper elem
preparebinary-lambda.127/mode=batch,n=1024gf2_127-lambdabatch8.18 ns8.16 ns .. 8.20 nsper elem
preparebinary-lambda.127/mode=batch,n=64gf2_127-lambdabatch12.7 ns12.7 ns .. 12.7 nsper elem
preparebinary-lambda.127/mode=batch,n=8gf2_127-lambdabatch32.8 ns32.7 ns .. 32.8 nsper elem
preparebinary-lambda.127/mode=indepgf2_127-lambdaper-element129 ns128 ns .. 129 nsper elem
preparebinary-u.127/mode=batch,n=1024gf2_127-ubatch0.47 ns0.47 ns .. 0.47 nsper elem
preparebinary-u.127/mode=batch,n=64gf2_127-ubatch0.81 ns0.81 ns .. 0.81 nsper elem
preparebinary-u.127/mode=batch,n=8gf2_127-ubatch1.08 ns1.08 ns .. 1.08 nsper elem
preparebinary-u.127/mode=indepgf2_127-uper-element0.48 ns0.46 ns .. 0.51 nsper elem
preparebinary-w.127/mode=batch,n=1024gf2_127-wbatch0.47 ns0.47 ns .. 0.47 nsper elem
preparebinary-w.127/mode=batch,n=64gf2_127-wbatch0.79 ns0.79 ns .. 0.80 nsper elem
preparebinary-w.127/mode=batch,n=8gf2_127-wbatch1.10 ns1.09 ns .. 1.11 nsper elem
preparebinary-w.127/mode=indepgf2_127-wper-element0.45 ns0.44 ns .. 0.47 nsper elem
prepareedwards.107/mode=batch,n=1024edwards107batch37.9 ns37.8 ns .. 38.1 nsper elem
prepareedwards.107/mode=indepedwards107per-element632 ns630 ns .. 634 nsper elem
prepareedwards.127/mode=batch,n=1024edwards127batch39.9 ns39.9 ns .. 40.0 nsper elem
prepareedwards.127/mode=indepedwards127per-element663 ns662 ns .. 664 nsper elem
prepareedwards.61x2/mode=batch,n=1024edwards61x2batch34.9 ns34.8 ns .. 35.1 nsper elem
prepareedwards.61x2/mode=indepedwards61x2per-element236 ns235 ns .. 236 nsper elem
preparetwisted.goldilocks2/mode=batch,n=1024twisted-goldilocks2batch9.54 ns9.49 ns .. 9.59 nsper elem
preparetwisted.goldilocks2/mode=indeptwisted-goldilocks2per-element9.45 ns9.41 ns .. 9.50 nsper elem
preparetwisted.128/mode=batch,n=1024twisted128batch12.7 ns12.6 ns .. 12.7 nsper elem
preparetwisted.128/mode=indeptwisted128per-element12.5 ns12.4 ns .. 12.5 nsper elem
preparetwisted.61x2/mode=batch,n=1024twisted61x2batch7.93 ns7.89 ns .. 7.96 nsper elem
preparetwisted.61x2/mode=batch,n=64twisted61x2batch8.39 ns8.35 ns .. 8.43 nsper elem
preparetwisted.61x2/mode=batch,n=8twisted61x2batch8.59 ns8.56 ns .. 8.63 nsper elem
preparetwisted.61x2/mode=indeptwisted61x2per-element8.07 ns8.02 ns .. 8.11 nsper elem
preparetwisted.64x2/mode=batch,n=1024twisted64x2batch8.79 ns8.76 ns .. 8.82 nsper elem
preparetwisted.64x2/mode=indeptwisted64x2per-element8.75 ns8.71 ns .. 8.79 nsper elem
prepareweier.107/mode=batch,n=1024weier107batch0.63 ns0.62 ns .. 0.63 nsper elem
prepareweier.107/mode=indepweier107per-element0.82 ns0.81 ns .. 0.82 nsper elem
prepareweier-jacobian.107/mode=batch,n=1024weier107-jacobianbatch0.63 ns0.62 ns .. 0.63 nsper elem
prepareweier-jacobian.107/mode=indepweier107-jacobianper-element0.81 ns0.80 ns .. 0.81 nsper elem
prepareweier.127/mode=batch,n=1024weier127batch1.00 ns0.99 ns .. 1.00 nsper elem
prepareweier.127/mode=indepweier127per-element0.81 ns0.81 ns .. 0.82 nsper elem
prepareweier-jacobian.127/mode=batch,n=1024weier127-jacobianbatch0.99 ns0.98 ns .. 0.99 nsper elem
prepareweier-jacobian.127/mode=indepweier127-jacobianper-element0.81 ns0.81 ns .. 0.81 nsper elem
prepareweier.61x2/mode=batch,n=1024weier61x2batch0.52 ns0.52 ns .. 0.53 nsper elem
prepareweier.61x2/mode=indepweier61x2per-element0.44 ns0.43 ns .. 0.46 nsper elem
prepareweier-jacobian.61x2/mode=batch,n=1024weier61x2-jacobianbatch0.52 ns0.52 ns .. 0.52 nsper elem
prepareweier-jacobian.61x2/mode=indepweier61x2-jacobianper-element0.44 ns0.42 ns .. 0.46 nsper elem
addxor-sha256/xor 32B, 1 accumulatorxorlatency0.26 ns0.25 ns .. 0.26 nsper elem
addxor-sha256/xor 32B, 8 accumulatorsxorthroughput0.45 ns0.43 ns .. 0.46 nsper elem
addbinary.109/mode=latencygf2_109latency22.2 ns22.1 ns .. 22.2 nsper elem
addbinary.109/mode=throughputgf2_109throughput20.4 ns20.3 ns .. 20.4 nsper elem
addgf2_109/extended += affine, 8 accumulatorsgf2_109throughput24.7 ns24.6 ns .. 24.7 nsper elem
addbinary-lambda.109/mode=latencygf2_109-lambdalatency28.2 ns28.2 ns .. 28.3 nsper elem
addbinary-lambda.109/mode=throughputgf2_109-lambdathroughput18.9 ns18.9 ns .. 18.9 nsper elem
addbinary-u.109/mode=latencygf2_109-ulatency15.7 ns15.7 ns .. 15.7 nsper elem
addbinary-u.109/mode=throughputgf2_109-uthroughput13.5 ns13.5 ns .. 13.5 nsper elem
addbinary-w.109/mode=latencygf2_109-wlatency28.3 ns28.2 ns .. 28.4 nsper elem
addbinary-w.109/mode=throughputgf2_109-wthroughput18.9 ns18.9 ns .. 19.0 nsper elem
addbinary.122/mode=latencygf2_122latency21.3 ns21.2 ns .. 21.3 nsper elem
addbinary.122/mode=throughputgf2_122throughput19.9 ns19.9 ns .. 20.0 nsper elem
addgf2_122/extended += affine, 8 accumulatorsgf2_122throughput25.4 ns25.3 ns .. 25.5 nsper elem
addbinary.122-gls/mode=latencygf2_122-glslatency20.6 ns20.5 ns .. 20.6 nsper elem
addbinary.122-gls/mode=throughputgf2_122-glsthroughput19.3 ns19.2 ns .. 19.4 nsper elem
addgf2_122-gls/extended += affine, 8 accumulatorsgf2_122-glsthroughput23.3 ns23.2 ns .. 23.3 nsper elem
addbinary-lambda.122-gls/mode=latencygf2_122-gls-lambdalatency28.0 ns27.9 ns .. 28.1 nsper elem
addbinary-lambda.122-gls/mode=throughputgf2_122-gls-lambdathroughput20.3 ns20.2 ns .. 20.3 nsper elem
addbinary-u.122-gls/mode=latencygf2_122-gls-ulatency16.2 ns16.1 ns .. 16.3 nsper elem
addbinary-u.122-gls/mode=throughputgf2_122-gls-uthroughput13.7 ns13.7 ns .. 13.8 nsper elem
addbinary-w.122-gls/mode=latencygf2_122-gls-wlatency28.1 ns28.0 ns .. 28.1 nsper elem
addbinary-w.122-gls/mode=throughputgf2_122-gls-wthroughput20.3 ns20.2 ns .. 20.4 nsper elem
addbinary-lambda.122/mode=latencygf2_122-lambdalatency28.0 ns27.9 ns .. 28.1 nsper elem
addbinary-lambda.122/mode=throughputgf2_122-lambdathroughput20.2 ns20.2 ns .. 20.3 nsper elem
addbinary-u.122/mode=latencygf2_122-ulatency16.7 ns16.6 ns .. 16.8 nsper elem
addbinary-u.122/mode=throughputgf2_122-uthroughput14.3 ns14.3 ns .. 14.4 nsper elem
addbinary-w.122/mode=latencygf2_122-wlatency27.9 ns27.8 ns .. 28.0 nsper elem
addbinary-w.122/mode=throughputgf2_122-wthroughput20.5 ns20.4 ns .. 20.6 nsper elem
addbinary.127/mode=latencygf2_127latency19.9 ns19.8 ns .. 20.0 nsper elem
addbinary.127/mode=throughputgf2_127throughput19.5 ns19.5 ns .. 19.6 nsper elem
addgf2_127/extended += affine, 8 accumulatorsgf2_127throughput23.1 ns23.0 ns .. 23.1 nsper elem
addbinary-lambda.127/mode=latencygf2_127-lambdalatency24.4 ns24.3 ns .. 24.5 nsper elem
addbinary-lambda.127/mode=throughputgf2_127-lambdathroughput17.6 ns17.6 ns .. 17.7 nsper elem
addbinary-u.127/mode=latencygf2_127-ulatency14.6 ns14.5 ns .. 14.6 nsper elem
addbinary-u.127/mode=throughputgf2_127-uthroughput13.2 ns13.2 ns .. 13.2 nsper elem
addbinary-w.127/mode=latencygf2_127-wlatency24.4 ns24.3 ns .. 24.4 nsper elem
addbinary-w.127/mode=throughputgf2_127-wthroughput17.7 ns17.6 ns .. 17.7 nsper elem
addedwards.107/mode=latencyedwards107latency32.6 ns32.5 ns .. 32.7 nsper elem
addedwards.107/mode=throughputedwards107throughput27.6 ns27.5 ns .. 27.7 nsper elem
addedwards107/+= montgomery affine, 8 accumulatorsedwards107throughput45.9 ns45.7 ns .. 46.2 nsper elem
addedwards.127/mode=latencyedwards127latency35.8 ns35.7 ns .. 35.9 nsper elem
addedwards.127/mode=throughputedwards127throughput27.5 ns27.4 ns .. 27.6 nsper elem
addedwards127/+= montgomery affine, 8 accumulatorsedwards127throughput48.1 ns48.0 ns .. 48.3 nsper elem
addedwards.61x2/mode=latencyedwards61x2latency29.6 ns29.5 ns .. 29.7 nsper elem
addedwards.61x2/mode=throughputedwards61x2throughput25.8 ns25.7 ns .. 25.9 nsper elem
addtwisted.goldilocks2/mode=latencytwisted-goldilocks2latency29.4 ns29.3 ns .. 29.4 nsper elem
addtwisted.goldilocks2/mode=throughputtwisted-goldilocks2throughput28.7 ns28.7 ns .. 28.8 nsper elem
addtwisted.128/mode=latencytwisted128latency36.3 ns36.2 ns .. 36.4 nsper elem
addtwisted.128/mode=throughputtwisted128throughput31.1 ns31.0 ns .. 31.2 nsper elem
addtwisted.61x2/mode=latencytwisted61x2latency28.4 ns28.3 ns .. 28.5 nsper elem
addtwisted.61x2/mode=throughputtwisted61x2throughput24.9 ns24.8 ns .. 25.0 nsper elem
addtwisted.64x2/mode=latencytwisted64x2latency37.9 ns37.7 ns .. 38.0 nsper elem
addtwisted.64x2/mode=throughputtwisted64x2throughput33.3 ns33.2 ns .. 33.4 nsper elem
addweier.107/mode=latencyweier107latency53.9 ns53.4 ns .. 54.2 nsper elem
addweier.107/mode=throughputweier107throughput48.6 ns48.4 ns .. 48.8 nsper elem
addweier-jacobian.107/mode=latencyweier107-jacobianlatency50.9 ns50.8 ns .. 51.1 nsper elem
addweier-jacobian.107/mode=throughputweier107-jacobianthroughput44.1 ns44.0 ns .. 44.3 nsper elem
addweier.127/mode=latencyweier127latency63.9 ns63.7 ns .. 64.0 nsper elem
addweier.127/mode=throughputweier127throughput58.7 ns58.5 ns .. 58.9 nsper elem
addweier-jacobian.127/mode=latencyweier127-jacobianlatency56.6 ns56.4 ns .. 56.9 nsper elem
addweier-jacobian.127/mode=throughputweier127-jacobianthroughput48.1 ns48.0 ns .. 48.2 nsper elem
addweier.61x2/mode=latencyweier61x2latency57.1 ns57.0 ns .. 57.2 nsper elem
addweier.61x2/mode=throughputweier61x2throughput50.6 ns50.4 ns .. 50.7 nsper elem
addweier-jacobian.61x2/mode=latencyweier61x2-jacobianlatency57.2 ns57.0 ns .. 57.3 nsper elem
addweier-jacobian.61x2/mode=throughputweier61x2-jacobianthroughput50.2 ns50.1 ns .. 50.3 nsper elem
addristretto255/+=, 1 accumulatorristretto255latency117 ns117 ns .. 118 nsper elem
addristretto255/+=, 8 accumulatorsristretto255throughput116 ns115 ns .. 116 nsper elem
subtractbinary.109/mode=throughputgf2_109throughput20.7 ns20.6 ns .. 20.7 nsper elem
subtractbinary-lambda.109/mode=throughputgf2_109-lambdathroughput19.1 ns19.0 ns .. 19.2 nsper elem
subtractbinary-u.109/mode=throughputgf2_109-uthroughput13.6 ns13.6 ns .. 13.7 nsper elem
subtractbinary-w.109/mode=throughputgf2_109-wthroughput19.2 ns19.1 ns .. 19.2 nsper elem
subtractbinary.122/mode=throughputgf2_122throughput20.1 ns20.1 ns .. 20.2 nsper elem
subtractbinary.122-gls/mode=throughputgf2_122-glsthroughput19.5 ns19.5 ns .. 19.6 nsper elem
subtractbinary-lambda.122-gls/mode=throughputgf2_122-gls-lambdathroughput20.4 ns20.4 ns .. 20.5 nsper elem
subtractbinary-u.122-gls/mode=throughputgf2_122-gls-uthroughput14.0 ns13.9 ns .. 14.0 nsper elem
subtractbinary-w.122-gls/mode=throughputgf2_122-gls-wthroughput20.5 ns20.5 ns .. 20.5 nsper elem
subtractbinary-lambda.122/mode=throughputgf2_122-lambdathroughput20.5 ns20.4 ns .. 20.6 nsper elem
subtractbinary-u.122/mode=throughputgf2_122-uthroughput13.9 ns13.9 ns .. 13.9 nsper elem
subtractbinary-w.122/mode=throughputgf2_122-wthroughput20.5 ns20.5 ns .. 20.6 nsper elem
subtractbinary.127/mode=throughputgf2_127throughput18.6 ns18.6 ns .. 18.7 nsper elem
subtractbinary-lambda.127/mode=throughputgf2_127-lambdathroughput17.6 ns17.6 ns .. 17.7 nsper elem
subtractbinary-u.127/mode=throughputgf2_127-uthroughput13.1 ns13.1 ns .. 13.1 nsper elem
subtractbinary-w.127/mode=throughputgf2_127-wthroughput17.7 ns17.6 ns .. 17.7 nsper elem
subtracttwisted.61x2/mode=throughputtwisted61x2throughput25.2 ns25.2 ns .. 25.2 nsper elem
subtractristretto255/-=, 8 accumulatorsristretto255throughput113 ns112 ns .. 113 nsper elem
negatebinary.109gf2_109per-element1.17 ns1.17 ns .. 1.18 nsper elem
negategf2_109/affine (y += x)gf2_109per-element0.56 ns0.56 ns .. 0.56 nsper elem
negatebinary-lambda.109gf2_109-lambdaper-element0.56 ns0.56 ns .. 0.56 nsper elem
negatebinary-u.109gf2_109-uper-element0.56 ns0.56 ns .. 0.57 nsper elem
negatebinary-w.109gf2_109-wper-element0.57 ns0.56 ns .. 0.57 nsper elem
negatebinary.122gf2_122per-element1.18 ns1.17 ns .. 1.19 nsper elem
negategf2_122/affine (y += x)gf2_122per-element0.56 ns0.55 ns .. 0.56 nsper elem
negatebinary.122-glsgf2_122-glsper-element1.17 ns1.16 ns .. 1.17 nsper elem
negatebinary-lambda.122-glsgf2_122-gls-lambdaper-element0.57 ns0.57 ns .. 0.58 nsper elem
negatebinary-u.122-glsgf2_122-gls-uper-element0.56 ns0.56 ns .. 0.56 nsper elem
negatebinary-w.122-glsgf2_122-gls-wper-element0.56 ns0.56 ns .. 0.56 nsper elem
negatebinary-lambda.122gf2_122-lambdaper-element0.56 ns0.56 ns .. 0.57 nsper elem
negatebinary-u.122gf2_122-uper-element0.58 ns0.57 ns .. 0.58 nsper elem
negatebinary-w.122gf2_122-wper-element0.58 ns0.57 ns .. 0.58 nsper elem
negatebinary.127gf2_127per-element1.20 ns1.19 ns .. 1.21 nsper elem
negategf2_127/affine (y += x)gf2_127per-element0.56 ns0.56 ns .. 0.57 nsper elem
negatebinary-lambda.127gf2_127-lambdaper-element0.56 ns0.56 ns .. 0.56 nsper elem
negatebinary-u.127gf2_127-uper-element0.56 ns0.56 ns .. 0.56 nsper elem
negatebinary-w.127gf2_127-wper-element0.56 ns0.56 ns .. 0.56 nsper elem
negateedwards.107edwards107per-element1.40 ns1.39 ns .. 1.40 nsper elem
negateedwards107/extended (-X, -T)edwards107per-element1.74 ns1.74 ns .. 1.75 nsper elem
negateedwards.127edwards127per-element1.98 ns1.97 ns .. 1.98 nsper elem
negateedwards127/extended (-X, -T)edwards127per-element2.17 ns2.16 ns .. 2.18 nsper elem
negateedwards.61x2edwards61x2per-element0.78 ns0.77 ns .. 0.78 nsper elem
negatetwisted.goldilocks2twisted-goldilocks2per-element1.32 ns1.31 ns .. 1.32 nsper elem
negatetwisted.128twisted128per-element1.15 ns1.14 ns .. 1.15 nsper elem
negatetwisted.61x2twisted61x2per-element0.73 ns0.71 ns .. 0.76 nsper elem
negatetwisted.64x2twisted64x2per-element0.73 ns0.71 ns .. 0.76 nsper elem
negateweier.107weier107per-element0.82 ns0.82 ns .. 0.82 nsper elem
negateweier107/projective (-Y)weier107per-element1.18 ns1.17 ns .. 1.19 nsper elem
negateweier-jacobian.107weier107-jacobianper-element0.82 ns0.82 ns .. 0.83 nsper elem
negateweier.127weier127per-element1.10 ns1.09 ns .. 1.10 nsper elem
negateweier127/projective (-Y)weier127per-element1.19 ns1.18 ns .. 1.19 nsper elem
negateweier-jacobian.127weier127-jacobianper-element1.10 ns1.10 ns .. 1.10 nsper elem
negateweier.61x2weier61x2per-element0.57 ns0.57 ns .. 0.57 nsper elem
negateweier-jacobian.61x2weier61x2-jacobianper-element0.57 ns0.57 ns .. 0.57 nsper elem
negateristretto255/-Pristretto255per-element6.47 ns6.38 ns .. 6.56 nsper elem
negatesecp256k1/PublicKey::negatesecp256k1per-element24.7 ns24.5 ns .. 24.8 nsper elem
is identitybinary.109gf2_109per-element0.94 ns0.94 ns .. 0.94 nsper elem
is identitybinary-lambda.109gf2_109-lambdaper-element0.80 ns0.80 ns .. 0.80 nsper elem
is identitybinary-u.109gf2_109-uper-element0.80 ns0.80 ns .. 0.80 nsper elem
is identitybinary-w.109gf2_109-wper-element0.80 ns0.80 ns .. 0.80 nsper elem
is identitybinary.122gf2_122per-element0.87 ns0.87 ns .. 0.88 nsper elem
is identitybinary.122-glsgf2_122-glsper-element0.87 ns0.87 ns .. 0.88 nsper elem
is identitybinary-lambda.122-glsgf2_122-gls-lambdaper-element0.80 ns0.80 ns .. 0.81 nsper elem
is identitybinary-u.122-glsgf2_122-gls-uper-element0.80 ns0.80 ns .. 0.80 nsper elem
is identitybinary-w.122-glsgf2_122-gls-wper-element0.81 ns0.81 ns .. 0.81 nsper elem
is identitybinary-lambda.122gf2_122-lambdaper-element0.81 ns0.81 ns .. 0.81 nsper elem
is identitybinary-u.122gf2_122-uper-element0.85 ns0.84 ns .. 0.85 nsper elem
is identitybinary-w.122gf2_122-wper-element0.84 ns0.83 ns .. 0.85 nsper elem
is identitybinary.127gf2_127per-element1.02 ns1.01 ns .. 1.02 nsper elem
is identitybinary-lambda.127gf2_127-lambdaper-element0.82 ns0.82 ns .. 0.83 nsper elem
is identitybinary-u.127gf2_127-uper-element0.83 ns0.83 ns .. 0.84 nsper elem
is identitybinary-w.127gf2_127-wper-element0.82 ns0.81 ns .. 0.82 nsper elem
is identityedwards.107edwards107per-element1.18 ns1.18 ns .. 1.19 nsper elem
is identityedwards.127edwards127per-element1.30 ns1.30 ns .. 1.31 nsper elem
is identityedwards.61x2edwards61x2per-element0.54 ns0.53 ns .. 0.55 nsper elem
is identitytwisted.goldilocks2twisted-goldilocks2per-element0.60 ns0.59 ns .. 0.60 nsper elem
is identitytwisted.128twisted128per-element0.50 ns0.50 ns .. 0.50 nsper elem
is identitytwisted.61x2twisted61x2per-element0.50 ns0.50 ns .. 0.50 nsper elem
is identitytwisted.64x2twisted64x2per-element0.50 ns0.50 ns .. 0.51 nsper elem
is identityweier.107weier107per-element0.91 ns0.90 ns .. 0.91 nsper elem
is identityweier-jacobian.107weier107-jacobianper-element0.90 ns0.90 ns .. 0.90 nsper elem
is identityweier.127weier127per-element0.40 ns0.40 ns .. 0.41 nsper elem
is identityweier-jacobian.127weier127-jacobianper-element0.40 ns0.40 ns .. 0.41 nsper elem
is identityweier.61x2weier61x2per-element0.41 ns0.40 ns .. 0.41 nsper elem
is identityweier-jacobian.61x2weier61x2-jacobianper-element0.40 ns0.40 ns .. 0.40 nsper elem
equals addendbinary.109/mode=matchgf2_109match4.05 ns4.04 ns .. 4.06 nsper elem
equals addendbinary.109/mode=mismatchgf2_109mismatch4.07 ns4.06 ns .. 4.08 nsper elem
equals addendbinary-lambda.109/mode=matchgf2_109-lambdamatch3.96 ns3.94 ns .. 3.97 nsper elem
equals addendbinary-lambda.109/mode=mismatchgf2_109-lambdamismatch3.94 ns3.93 ns .. 3.95 nsper elem
equals addendbinary-u.109/mode=matchgf2_109-umatch5.84 ns5.83 ns .. 5.86 nsper elem
equals addendbinary-u.109/mode=mismatchgf2_109-umismatch5.82 ns5.81 ns .. 5.83 nsper elem
equals addendbinary-w.109/mode=matchgf2_109-wmatch4.16 ns4.15 ns .. 4.18 nsper elem
equals addendbinary-w.109/mode=mismatchgf2_109-wmismatch4.13 ns4.12 ns .. 4.14 nsper elem
equals addendbinary.122/mode=matchgf2_122match4.07 ns4.05 ns .. 4.08 nsper elem
equals addendbinary.122/mode=mismatchgf2_122mismatch4.05 ns4.04 ns .. 4.06 nsper elem
equals addendbinary.122-gls/mode=matchgf2_122-glsmatch4.06 ns4.05 ns .. 4.07 nsper elem
equals addendbinary.122-gls/mode=mismatchgf2_122-glsmismatch4.08 ns4.06 ns .. 4.10 nsper elem
equals addendbinary-lambda.122-gls/mode=matchgf2_122-gls-lambdamatch4.20 ns4.19 ns .. 4.21 nsper elem
equals addendbinary-lambda.122-gls/mode=mismatchgf2_122-gls-lambdamismatch4.37 ns4.35 ns .. 4.39 nsper elem
equals addendbinary-u.122-gls/mode=matchgf2_122-gls-umatch5.60 ns5.58 ns .. 5.61 nsper elem
equals addendbinary-u.122-gls/mode=mismatchgf2_122-gls-umismatch5.64 ns5.62 ns .. 5.65 nsper elem
equals addendbinary-w.122-gls/mode=matchgf2_122-gls-wmatch4.23 ns4.22 ns .. 4.25 nsper elem
equals addendbinary-w.122-gls/mode=mismatchgf2_122-gls-wmismatch4.26 ns4.24 ns .. 4.28 nsper elem
equals addendbinary-lambda.122/mode=matchgf2_122-lambdamatch4.21 ns4.20 ns .. 4.23 nsper elem
equals addendbinary-lambda.122/mode=mismatchgf2_122-lambdamismatch4.23 ns4.22 ns .. 4.24 nsper elem
equals addendbinary-u.122/mode=matchgf2_122-umatch5.59 ns5.58 ns .. 5.60 nsper elem
equals addendbinary-u.122/mode=mismatchgf2_122-umismatch5.97 ns5.92 ns .. 6.03 nsper elem
equals addendbinary-w.122/mode=matchgf2_122-wmatch4.23 ns4.22 ns .. 4.24 nsper elem
equals addendbinary-w.122/mode=mismatchgf2_122-wmismatch4.41 ns4.38 ns .. 4.45 nsper elem
equals addendbinary.127/mode=matchgf2_127match3.97 ns3.96 ns .. 3.98 nsper elem
equals addendbinary.127/mode=mismatchgf2_127mismatch4.25 ns4.21 ns .. 4.30 nsper elem
equals addendbinary-lambda.127/mode=matchgf2_127-lambdamatch3.95 ns3.94 ns .. 3.96 nsper elem
equals addendbinary-lambda.127/mode=mismatchgf2_127-lambdamismatch4.05 ns4.04 ns .. 4.06 nsper elem
equals addendbinary-u.127/mode=matchgf2_127-umatch6.31 ns6.29 ns .. 6.33 nsper elem
equals addendbinary-u.127/mode=mismatchgf2_127-umismatch6.44 ns6.41 ns .. 6.46 nsper elem
equals addendbinary-w.127/mode=matchgf2_127-wmatch4.04 ns4.03 ns .. 4.04 nsper elem
equals addendbinary-w.127/mode=mismatchgf2_127-wmismatch4.05 ns4.04 ns .. 4.06 nsper elem
equals addendedwards.107/mode=mismatchedwards107mismatch4.93 ns4.91 ns .. 4.95 nsper elem
equals addendedwards.127/mode=mismatchedwards127mismatch3.16 ns3.15 ns .. 3.17 nsper elem
equals addendedwards.61x2/mode=mismatchedwards61x2mismatch2.97 ns2.96 ns .. 2.98 nsper elem
equals addendtwisted.goldilocks2/mode=mismatchtwisted-goldilocks2mismatch9.42 ns9.36 ns .. 9.50 nsper elem
equals addendtwisted.128/mode=mismatchtwisted128mismatch9.45 ns9.43 ns .. 9.47 nsper elem
equals addendtwisted.61x2/mode=matchtwisted61x2match8.55 ns8.54 ns .. 8.57 nsper elem
equals addendtwisted.61x2/mode=mismatchtwisted61x2mismatch8.85 ns8.79 ns .. 8.91 nsper elem
equals addendtwisted.64x2/mode=mismatchtwisted64x2mismatch7.68 ns7.65 ns .. 7.71 nsper elem
equals addendweier.107/mode=mismatchweier107mismatch5.81 ns5.80 ns .. 5.83 nsper elem
equals addendweier-jacobian.107/mode=mismatchweier107-jacobianmismatch9.23 ns9.20 ns .. 9.26 nsper elem
equals addendweier.127/mode=mismatchweier127mismatch3.53 ns3.52 ns .. 3.54 nsper elem
equals addendweier-jacobian.127/mode=mismatchweier127-jacobianmismatch6.60 ns6.58 ns .. 6.62 nsper elem
equals addendweier.61x2/mode=mismatchweier61x2mismatch3.33 ns3.32 ns .. 3.34 nsper elem
equals addendweier-jacobian.61x2/mode=mismatchweier61x2-jacobianmismatch7.98 ns7.93 ns .. 8.03 nsper elem
encodebinary.109/mode=batch,n=1024gf2_109batch18.2 ns18.1 ns .. 18.3 nsper elem
encodebinary.109/mode=batch,n=64gf2_109batch28.6 ns28.6 ns .. 28.7 nsper elem
encodebinary.109/mode=batch,n=8gf2_109batch94.4 ns93.7 ns .. 95.4 nsper elem
encodebinary.109/mode=indepgf2_109per-element538 ns537 ns .. 540 nsper elem
encodebinary-lambda.109/mode=batch,n=1024gf2_109-lambdabatch14.1 ns14.1 ns .. 14.2 nsper elem
encodebinary-lambda.109/mode=batch,n=64gf2_109-lambdabatch24.8 ns24.7 ns .. 24.9 nsper elem
encodebinary-lambda.109/mode=batch,n=8gf2_109-lambdabatch90.0 ns89.7 ns .. 90.3 nsper elem
encodebinary-lambda.109/mode=indepgf2_109-lambdaper-element530 ns529 ns .. 532 nsper elem
encodebinary-u.109/mode=batch,n=1024gf2_109-ubatch21.9 ns21.9 ns .. 22.0 nsper elem
encodebinary-u.109/mode=batch,n=64gf2_109-ubatch31.7 ns31.6 ns .. 31.8 nsper elem
encodebinary-u.109/mode=batch,n=8gf2_109-ubatch97.1 ns96.8 ns .. 97.4 nsper elem
encodebinary-u.109/mode=indepgf2_109-uper-element546 ns545 ns .. 548 nsper elem
encodebinary-w.109/mode=batch,n=1024gf2_109-wbatch21.6 ns21.6 ns .. 21.7 nsper elem
encodebinary-w.109/mode=batch,n=64gf2_109-wbatch32.5 ns32.4 ns .. 32.6 nsper elem
encodebinary-w.109/mode=batch,n=8gf2_109-wbatch96.0 ns95.7 ns .. 96.3 nsper elem
encodebinary-w.109/mode=indepgf2_109-wper-element540 ns539 ns .. 541 nsper elem
encodebinary.122/mode=batch,n=1024gf2_122batch22.1 ns22.0 ns .. 22.1 nsper elem
encodebinary.122/mode=batch,n=64gf2_122batch28.9 ns28.8 ns .. 29.0 nsper elem
encodebinary.122/mode=batch,n=8gf2_122batch66.6 ns66.4 ns .. 66.8 nsper elem
encodebinary.122/mode=indepgf2_122per-element294 ns294 ns .. 295 nsper elem
encodebinary.122-gls/mode=batch,n=1024gf2_122-glsbatch21.1 ns21.0 ns .. 21.2 nsper elem
encodebinary.122-gls/mode=batch,n=64gf2_122-glsbatch27.9 ns27.8 ns .. 28.0 nsper elem
encodebinary.122-gls/mode=batch,n=8gf2_122-glsbatch65.6 ns65.5 ns .. 65.8 nsper elem
encodebinary.122-gls/mode=indepgf2_122-glsper-element293 ns293 ns .. 294 nsper elem
encodebinary-lambda.122-gls/mode=batch,n=1024gf2_122-gls-lambdabatch17.9 ns17.8 ns .. 17.9 nsper elem
encodebinary-lambda.122-gls/mode=batch,n=64gf2_122-gls-lambdabatch24.5 ns24.4 ns .. 24.6 nsper elem
encodebinary-lambda.122-gls/mode=batch,n=8gf2_122-gls-lambdabatch62.1 ns62.0 ns .. 62.2 nsper elem
encodebinary-lambda.122-gls/mode=indepgf2_122-gls-lambdaper-element297 ns296 ns .. 297 nsper elem
encodebinary-u.122-gls/mode=batch,n=1024gf2_122-gls-ubatch18.0 ns18.0 ns .. 18.1 nsper elem
encodebinary-u.122-gls/mode=batch,n=64gf2_122-gls-ubatch22.5 ns22.5 ns .. 22.5 nsper elem
encodebinary-u.122-gls/mode=batch,n=8gf2_122-gls-ubatch61.2 ns61.0 ns .. 61.4 nsper elem
encodebinary-u.122-gls/mode=indepgf2_122-gls-uper-element297 ns296 ns .. 299 nsper elem
encodebinary-w.122-gls/mode=batch,n=1024gf2_122-gls-wbatch20.4 ns20.3 ns .. 20.5 nsper elem
encodebinary-w.122-gls/mode=batch,n=64gf2_122-gls-wbatch27.2 ns27.2 ns .. 27.3 nsper elem
encodebinary-w.122-gls/mode=batch,n=8gf2_122-gls-wbatch64.9 ns64.7 ns .. 65.0 nsper elem
encodebinary-w.122-gls/mode=indepgf2_122-gls-wper-element297 ns296 ns .. 297 nsper elem
encodebinary-lambda.122/mode=batch,n=1024gf2_122-lambdabatch17.3 ns17.2 ns .. 17.3 nsper elem
encodebinary-lambda.122/mode=batch,n=64gf2_122-lambdabatch24.1 ns24.0 ns .. 24.1 nsper elem
encodebinary-lambda.122/mode=batch,n=8gf2_122-lambdabatch61.7 ns61.6 ns .. 61.9 nsper elem
encodebinary-lambda.122/mode=indepgf2_122-lambdaper-element287 ns286 ns .. 288 nsper elem
encodebinary-u.122/mode=batch,n=1024gf2_122-ubatch18.4 ns18.3 ns .. 18.5 nsper elem
encodebinary-u.122/mode=batch,n=64gf2_122-ubatch22.5 ns22.4 ns .. 22.5 nsper elem
encodebinary-u.122/mode=batch,n=8gf2_122-ubatch61.3 ns61.2 ns .. 61.5 nsper elem
encodebinary-u.122/mode=indepgf2_122-uper-element305 ns304 ns .. 306 nsper elem
encodebinary-w.122/mode=batch,n=1024gf2_122-wbatch21.2 ns21.0 ns .. 21.4 nsper elem
encodebinary-w.122/mode=batch,n=64gf2_122-wbatch27.0 ns26.8 ns .. 27.1 nsper elem
encodebinary-w.122/mode=batch,n=8gf2_122-wbatch64.3 ns64.1 ns .. 64.5 nsper elem
encodebinary-w.122/mode=indepgf2_122-wper-element302 ns300 ns .. 303 nsper elem
encodebinary.127/mode=batch,n=1024gf2_127batch22.7 ns22.5 ns .. 23.0 nsper elem
encodebinary.127/mode=batch,n=64gf2_127batch25.6 ns25.5 ns .. 25.6 nsper elem
encodebinary.127/mode=batch,n=8gf2_127batch46.0 ns45.9 ns .. 46.1 nsper elem
encodebinary.127/mode=indepgf2_127per-element151 ns149 ns .. 152 nsper elem
encodebinary-lambda.127/mode=batch,n=1024gf2_127-lambdabatch17.5 ns17.4 ns .. 17.5 nsper elem
encodebinary-lambda.127/mode=batch,n=64gf2_127-lambdabatch21.8 ns21.7 ns .. 21.8 nsper elem
encodebinary-lambda.127/mode=batch,n=8gf2_127-lambdabatch42.0 ns41.9 ns .. 42.1 nsper elem
encodebinary-lambda.127/mode=indepgf2_127-lambdaper-element140 ns140 ns .. 141 nsper elem
encodebinary-u.127/mode=batch,n=1024gf2_127-ubatch12.6 ns12.5 ns .. 12.6 nsper elem
encodebinary-u.127/mode=batch,n=64gf2_127-ubatch16.3 ns16.2 ns .. 16.3 nsper elem
encodebinary-u.127/mode=batch,n=8gf2_127-ubatch38.2 ns38.1 ns .. 38.3 nsper elem
encodebinary-u.127/mode=indepgf2_127-uper-element137 ns137 ns .. 137 nsper elem
encodebinary-w.127/mode=batch,n=1024gf2_127-wbatch17.0 ns17.0 ns .. 17.1 nsper elem
encodebinary-w.127/mode=batch,n=64gf2_127-wbatch21.8 ns21.7 ns .. 21.9 nsper elem
encodebinary-w.127/mode=batch,n=8gf2_127-wbatch42.1 ns41.9 ns .. 42.2 nsper elem
encodebinary-w.127/mode=indepgf2_127-wper-element139 ns139 ns .. 140 nsper elem
encodeedwards.107/mode=batch,n=1024edwards107batch35.1 ns35.0 ns .. 35.4 nsper elem
encodeedwards.107/mode=indepedwards107per-element600 ns599 ns .. 601 nsper elem
encodeedwards.127/mode=batch,n=1024edwards127batch31.9 ns31.8 ns .. 32.0 nsper elem
encodeedwards.127/mode=indepedwards127per-element610 ns608 ns .. 611 nsper elem
encodeedwards.61x2/mode=batch,n=1024edwards61x2batch35.0 ns34.9 ns .. 35.1 nsper elem
encodeedwards.61x2/mode=indepedwards61x2per-element203 ns202 ns .. 203 nsper elem
encodetwisted.goldilocks2/mode=batch,n=1024twisted-goldilocks2batch22.9 ns22.9 ns .. 23.0 nsper elem
encodetwisted.goldilocks2/mode=indeptwisted-goldilocks2per-element316 ns316 ns .. 316 nsper elem
encodetwisted.128/mode=batch,n=1024twisted128batch22.7 ns22.7 ns .. 22.8 nsper elem
encodetwisted.128/mode=indeptwisted128per-element943 ns942 ns .. 946 nsper elem
encodetwisted.61x2/mode=batch,n=1024twisted61x2batch14.9 ns14.9 ns .. 15.0 nsper elem
encodetwisted.61x2/mode=batch,n=64twisted61x2batch21.1 ns21.1 ns .. 21.2 nsper elem
encodetwisted.61x2/mode=batch,n=8twisted61x2batch49.3 ns49.3 ns .. 49.4 nsper elem
encodetwisted.61x2/mode=indeptwisted61x2per-element189 ns189 ns .. 190 nsper elem
encodetwisted.64x2/mode=batch,n=1024twisted64x2batch22.6 ns22.5 ns .. 22.7 nsper elem
encodetwisted.64x2/mode=indeptwisted64x2per-element267 ns266 ns .. 268 nsper elem
encodeweier.107/mode=batch,n=1024weier107batch19.4 ns19.3 ns .. 19.5 nsper elem
encodeweier.107/mode=indepweier107per-element582 ns579 ns .. 584 nsper elem
encodeweier-jacobian.107/mode=batch,n=1024weier107-jacobianbatch25.5 ns25.4 ns .. 25.6 nsper elem
encodeweier-jacobian.107/mode=indepweier107-jacobianper-element580 ns578 ns .. 581 nsper elem
encodeweier.127/mode=batch,n=1024weier127batch16.7 ns16.7 ns .. 16.8 nsper elem
encodeweier.127/mode=indepweier127per-element593 ns591 ns .. 594 nsper elem
encodeweier-jacobian.127/mode=batch,n=1024weier127-jacobianbatch23.6 ns23.5 ns .. 23.7 nsper elem
encodeweier-jacobian.127/mode=indepweier127-jacobianper-element605 ns602 ns .. 609 nsper elem
encodeweier.61x2/mode=batch,n=1024weier61x2batch15.3 ns15.2 ns .. 15.3 nsper elem
encodeweier.61x2/mode=indepweier61x2per-element190 ns190 ns .. 191 nsper elem
encodeweier-jacobian.61x2/mode=batch,n=1024weier61x2-jacobianbatch24.8 ns24.7 ns .. 24.9 nsper elem
encodeweier-jacobian.61x2/mode=indepweier61x2-jacobianper-element198 ns198 ns .. 199 nsper elem
decodebinary.109/mode=batch,n=1024gf2_109batch26.7 ns26.6 ns .. 26.8 nsper elem
decodebinary.109/mode=batch,n=64gf2_109batch38.7 ns38.6 ns .. 38.8 nsper elem
decodebinary.109/mode=batch,n=8gf2_109batch108 ns108 ns .. 108 nsper elem
decodebinary.109/mode=indepgf2_109per-element554 ns553 ns .. 556 nsper elem
decodebinary-lambda.109/mode=batch,n=1024gf2_109-lambdabatch26.5 ns26.4 ns .. 26.5 nsper elem
decodebinary-lambda.109/mode=batch,n=64gf2_109-lambdabatch39.1 ns38.9 ns .. 39.2 nsper elem
decodebinary-lambda.109/mode=batch,n=8gf2_109-lambdabatch109 ns108 ns .. 109 nsper elem
decodebinary-lambda.109/mode=indepgf2_109-lambdaper-element549 ns548 ns .. 551 nsper elem
decodebinary-u.109/mode=batch,n=1024gf2_109-ubatch27.7 ns27.7 ns .. 27.8 nsper elem
decodebinary-u.109/mode=batch,n=64gf2_109-ubatch40.3 ns40.1 ns .. 40.4 nsper elem
decodebinary-u.109/mode=batch,n=8gf2_109-ubatch109 ns108 ns .. 109 nsper elem
decodebinary-u.109/mode=indepgf2_109-uper-element555 ns555 ns .. 556 nsper elem
decodebinary-w.109/mode=batch,n=1024gf2_109-wbatch24.4 ns24.3 ns .. 24.4 nsper elem
decodebinary-w.109/mode=batch,n=64gf2_109-wbatch36.8 ns36.7 ns .. 37.0 nsper elem
decodebinary-w.109/mode=batch,n=8gf2_109-wbatch105 ns105 ns .. 106 nsper elem
decodebinary-w.109/mode=indepgf2_109-wper-element555 ns553 ns .. 556 nsper elem
decodebinary.122/mode=batch,n=1024gf2_122batch24.0 ns23.9 ns .. 24.1 nsper elem
decodebinary.122/mode=batch,n=64gf2_122batch32.4 ns32.3 ns .. 32.5 nsper elem
decodebinary.122/mode=batch,n=8gf2_122batch73.5 ns73.4 ns .. 73.7 nsper elem
decodebinary.122/mode=indepgf2_122per-element313 ns312 ns .. 313 nsper elem
decodebinary.122-gls/mode=batch,n=1024gf2_122-glsbatch22.7 ns22.6 ns .. 22.7 nsper elem
decodebinary.122-gls/mode=batch,n=64gf2_122-glsbatch31.0 ns30.9 ns .. 31.1 nsper elem
decodebinary.122-gls/mode=batch,n=8gf2_122-glsbatch71.5 ns71.4 ns .. 71.7 nsper elem
decodebinary.122-gls/mode=indepgf2_122-glsper-element313 ns312 ns .. 313 nsper elem
decodebinary-lambda.122-gls/mode=batch,n=1024gf2_122-gls-lambdabatch22.6 ns22.6 ns .. 22.7 nsper elem
decodebinary-lambda.122-gls/mode=batch,n=64gf2_122-gls-lambdabatch32.1 ns32.0 ns .. 32.2 nsper elem
decodebinary-lambda.122-gls/mode=batch,n=8gf2_122-gls-lambdabatch73.7 ns73.6 ns .. 73.9 nsper elem
decodebinary-lambda.122-gls/mode=indepgf2_122-gls-lambdaper-element311 ns310 ns .. 312 nsper elem
decodebinary-u.122-gls/mode=batch,n=1024gf2_122-gls-ubatch24.7 ns24.6 ns .. 24.8 nsper elem
decodebinary-u.122-gls/mode=batch,n=64gf2_122-gls-ubatch32.9 ns32.8 ns .. 33.0 nsper elem
decodebinary-u.122-gls/mode=batch,n=8gf2_122-gls-ubatch73.8 ns73.6 ns .. 73.9 nsper elem
decodebinary-u.122-gls/mode=indepgf2_122-gls-uper-element313 ns311 ns .. 314 nsper elem
decodebinary-w.122-gls/mode=batch,n=1024gf2_122-gls-wbatch20.9 ns20.8 ns .. 21.0 nsper elem
decodebinary-w.122-gls/mode=batch,n=64gf2_122-gls-wbatch29.1 ns29.1 ns .. 29.2 nsper elem
decodebinary-w.122-gls/mode=batch,n=8gf2_122-gls-wbatch70.1 ns69.9 ns .. 70.2 nsper elem
decodebinary-w.122-gls/mode=indepgf2_122-gls-wper-element305 ns304 ns .. 306 nsper elem
decodebinary-lambda.122/mode=batch,n=1024gf2_122-lambdabatch24.1 ns24.0 ns .. 24.1 nsper elem
decodebinary-lambda.122/mode=batch,n=64gf2_122-lambdabatch32.2 ns32.2 ns .. 32.3 nsper elem
decodebinary-lambda.122/mode=batch,n=8gf2_122-lambdabatch73.1 ns72.9 ns .. 73.2 nsper elem
decodebinary-lambda.122/mode=indepgf2_122-lambdaper-element314 ns313 ns .. 314 nsper elem
decodebinary-u.122/mode=batch,n=1024gf2_122-ubatch26.0 ns25.8 ns .. 26.2 nsper elem
decodebinary-u.122/mode=batch,n=64gf2_122-ubatch33.6 ns33.6 ns .. 33.7 nsper elem
decodebinary-u.122/mode=batch,n=8gf2_122-ubatch74.7 ns74.6 ns .. 74.8 nsper elem
decodebinary-u.122/mode=indepgf2_122-uper-element317 ns315 ns .. 319 nsper elem
decodebinary-w.122/mode=batch,n=1024gf2_122-wbatch21.6 ns21.5 ns .. 21.7 nsper elem
decodebinary-w.122/mode=batch,n=64gf2_122-wbatch29.8 ns29.7 ns .. 29.9 nsper elem
decodebinary-w.122/mode=batch,n=8gf2_122-wbatch70.9 ns70.7 ns .. 71.1 nsper elem
decodebinary-w.122/mode=indepgf2_122-wper-element307 ns306 ns .. 308 nsper elem
decodebinary.127/mode=batch,n=1024gf2_127batch25.7 ns25.6 ns .. 25.7 nsper elem
decodebinary.127/mode=batch,n=64gf2_127batch29.6 ns29.5 ns .. 29.6 nsper elem
decodebinary.127/mode=batch,n=8gf2_127batch54.2 ns54.1 ns .. 54.3 nsper elem
decodebinary.127/mode=indepgf2_127per-element164 ns163 ns .. 164 nsper elem
decodebinary-lambda.127/mode=batch,n=1024gf2_127-lambdabatch24.0 ns24.0 ns .. 24.1 nsper elem
decodebinary-lambda.127/mode=batch,n=64gf2_127-lambdabatch29.7 ns29.7 ns .. 29.8 nsper elem
decodebinary-lambda.127/mode=batch,n=8gf2_127-lambdabatch54.2 ns54.2 ns .. 54.3 nsper elem
decodebinary-lambda.127/mode=indepgf2_127-lambdaper-element155 ns154 ns .. 155 nsper elem
decodebinary-u.127/mode=batch,n=1024gf2_127-ubatch27.5 ns27.5 ns .. 27.6 nsper elem
decodebinary-u.127/mode=batch,n=64gf2_127-ubatch32.8 ns32.7 ns .. 32.9 nsper elem
decodebinary-u.127/mode=batch,n=8gf2_127-ubatch57.6 ns57.4 ns .. 57.8 nsper elem
decodebinary-u.127/mode=indepgf2_127-uper-element162 ns161 ns .. 162 nsper elem
decodebinary-w.127/mode=batch,n=1024gf2_127-wbatch22.6 ns22.5 ns .. 22.6 nsper elem
decodebinary-w.127/mode=batch,n=64gf2_127-wbatch28.8 ns28.7 ns .. 28.9 nsper elem
decodebinary-w.127/mode=batch,n=8gf2_127-wbatch55.2 ns55.1 ns .. 55.4 nsper elem
decodebinary-w.127/mode=indepgf2_127-wper-element155 ns154 ns .. 155 nsper elem
decodeedwards.107/mode=batch,n=1024edwards107batch426 ns424 ns .. 427 nsper elem
decodeedwards.107/mode=indepedwards107per-element424 ns423 ns .. 426 nsper elem
decodeedwards.127/mode=batch,n=1024edwards127batch541 ns540 ns .. 543 nsper elem
decodeedwards.127/mode=indepedwards127per-element540 ns539 ns .. 541 nsper elem
decodeedwards.61x2/mode=batch,n=1024edwards61x2batch441 ns439 ns .. 442 nsper elem
decodeedwards.61x2/mode=indepedwards61x2per-element437 ns436 ns .. 439 nsper elem
decodetwisted.goldilocks2/mode=batch,n=1024twisted-goldilocks2batch1.92 µs1.92 µs .. 1.93 µsper elem
decodetwisted.goldilocks2/mode=indeptwisted-goldilocks2per-element1.91 µs1.91 µs .. 1.91 µsper elem
decodetwisted.128/mode=batch,n=1024twisted128batch962 ns960 ns .. 965 nsper elem
decodetwisted.128/mode=indeptwisted128per-element960 ns959 ns .. 962 nsper elem
decodetwisted.61x2/mode=batch,n=1024twisted61x2batch450 ns449 ns .. 451 nsper elem
decodetwisted.61x2/mode=batch,n=64twisted61x2batch447 ns446 ns .. 447 nsper elem
decodetwisted.61x2/mode=batch,n=8twisted61x2batch448 ns447 ns .. 449 nsper elem
decodetwisted.61x2/mode=indeptwisted61x2per-element448 ns447 ns .. 449 nsper elem
decodetwisted.64x2/mode=batch,n=1024twisted64x2batch647 ns646 ns .. 649 nsper elem
decodetwisted.64x2/mode=indeptwisted64x2per-element650 ns648 ns .. 652 nsper elem
decodeweier.107/mode=batch,n=1024weier107batch422 ns421 ns .. 423 nsper elem
decodeweier.107/mode=indepweier107per-element421 ns420 ns .. 422 nsper elem
decodeweier-jacobian.107/mode=batch,n=1024weier107-jacobianbatch421 ns420 ns .. 422 nsper elem
decodeweier-jacobian.107/mode=indepweier107-jacobianper-element419 ns418 ns .. 421 nsper elem
decodeweier.127/mode=batch,n=1024weier127batch539 ns538 ns .. 541 nsper elem
decodeweier.127/mode=indepweier127per-element541 ns540 ns .. 543 nsper elem
decodeweier-jacobian.127/mode=batch,n=1024weier127-jacobianbatch542 ns541 ns .. 543 nsper elem
decodeweier-jacobian.127/mode=indepweier127-jacobianper-element543 ns541 ns .. 545 nsper elem
decodeweier.61x2/mode=batch,n=1024weier61x2batch448 ns447 ns .. 449 nsper elem
decodeweier.61x2/mode=indepweier61x2per-element441 ns440 ns .. 442 nsper elem
decodeweier-jacobian.61x2/mode=batch,n=1024weier61x2-jacobianbatch445 ns444 ns .. 446 nsper elem
decodeweier-jacobian.61x2/mode=indepweier61x2-jacobianper-element440 ns439 ns .. 441 nsper elem
normalizegf2_109/normalize, batchedgf2_109batch16.4 ns16.3 ns .. 16.4 nsper elem
normalizegf2_122/normalize, batchedgf2_122batch17.2 ns17.2 ns .. 17.3 nsper elem
normalizegf2_122-gls/normalize, batchedgf2_122-glsbatch16.3 ns16.2 ns .. 16.3 nsper elem
batch sumgf2_109/batch affine (tree sum)gf2_109batch21.4 ns21.4 ns .. 21.5 nsper elem
batch sumgf2_122/batch affine (tree sum)gf2_122batch18.7 ns18.7 ns .. 18.8 nsper elem
batch sumgf2_127/batch affine (tree sum)gf2_127batch16.2 ns16.1 ns .. 16.2 nsper elem
batch sumedwards107/batch montgomery affine (tree sum)edwards107batch36.7 ns36.5 ns .. 36.8 nsper elem
batch sumedwards127/batch montgomery affine (tree sum)edwards127batch40.8 ns40.7 ns .. 40.9 nsper elem
batch sumweier107/batch affine (tree sum)weier107batch35.9 ns35.8 ns .. 36.1 nsper elem
batch sumweier127/batch affine (tree sum)weier127batch39.3 ns39.1 ns .. 39.4 nsper elem
batch sumsecp256k1/combine_keys (jacobian += affine)secp256k1batch162 ns162 ns .. 163 nsper elem

hash to curve

Figure

Hash to curve by try-and-increment: time per item against batch size on log axes, one at a time at n = 1; the representative curves and the fastest of each base family, a marker per curve within a hue, and the XOR baseline as a level, intervals as bands. The other maps are in the comparison maps figure, hash to addend and the steps of a hash in the table.Hash to curve by try-and-increment: time per item against batch size on log axes, one at a time at n = 1; the representative curves and the fastest of each base family, a marker per curve within a hue, and the XOR baseline as a level, intervals as bands. The other maps are in the comparison maps figure, hash to addend and the steps of a hash in the table.

262 benchmarks
operationbenchmarkfamilymodetime95% CIunit
hash to curvesha256 (XOR baseline)xorper-element53.4 ns52.9 ns .. 53.9 nsper elem
hash to curvebinary.109/mode=batch,n=1024gf2_109batch126 ns125 ns .. 127 nsper elem
hash to curvebinary.109/mode=batch,n=64gf2_109batch195 ns194 ns .. 195 nsper elem
hash to curvebinary.109/mode=batch,n=8gf2_109batch431 ns430 ns .. 432 nsper elem
hash to curvebinary.109/mode=indepgf2_109per-element1.16 µs1.16 µs .. 1.17 µsper elem
hash to curvebinary-lambda.109/mode=batch,n=1024gf2_109-lambdabatch124 ns124 ns .. 125 nsper elem
hash to curvebinary-lambda.109/mode=batch,n=64gf2_109-lambdabatch195 ns194 ns .. 195 nsper elem
hash to curvebinary-lambda.109/mode=batch,n=8gf2_109-lambdabatch431 ns430 ns .. 433 nsper elem
hash to curvebinary-lambda.109/mode=indepgf2_109-lambdaper-element1.16 µs1.16 µs .. 1.16 µsper elem
hash to curvebinary-u.109/mode=batch,n=1024gf2_109-ubatch125 ns125 ns .. 125 nsper elem
hash to curvebinary-u.109/mode=batch,n=64gf2_109-ubatch189 ns189 ns .. 190 nsper elem
hash to curvebinary-u.109/mode=batch,n=8gf2_109-ubatch417 ns416 ns .. 419 nsper elem
hash to curvebinary-u.109/mode=indepgf2_109-uper-element1.15 µs1.15 µs .. 1.16 µsper elem
hash to curvebinary-w.109/mode=batch,n=1024gf2_109-wbatch120 ns119 ns .. 121 nsper elem
hash to curvebinary-w.109/mode=batch,n=64gf2_109-wbatch183 ns182 ns .. 183 nsper elem
hash to curvebinary-w.109/mode=batch,n=8gf2_109-wbatch413 ns412 ns .. 415 nsper elem
hash to curvebinary-w.109/mode=indepgf2_109-wper-element1.14 µs1.13 µs .. 1.14 µsper elem
hash to curvebinary.122/mode=batch,n=1024gf2_122batch114 ns114 ns .. 114 nsper elem
hash to curvebinary.122/mode=batch,n=64gf2_122batch155 ns155 ns .. 156 nsper elem
hash to curvebinary.122/mode=batch,n=8gf2_122batch293 ns292 ns .. 294 nsper elem
hash to curvebinary.122/mode=indepgf2_122per-element670 ns669 ns .. 671 nsper elem
hash to curvebinary.122-gls/mode=batch,n=1024gf2_122-glsbatch116 ns116 ns .. 117 nsper elem
hash to curvebinary.122-gls/mode=batch,n=64gf2_122-glsbatch161 ns161 ns .. 162 nsper elem
hash to curvebinary.122-gls/mode=batch,n=8gf2_122-glsbatch308 ns308 ns .. 309 nsper elem
hash to curvebinary.122-gls/mode=indepgf2_122-glsper-element697 ns693 ns .. 702 nsper elem
hash to curvebinary-lambda.122-gls/mode=batch,n=1024gf2_122-gls-lambdabatch116 ns115 ns .. 116 nsper elem
hash to curvebinary-lambda.122-gls/mode=batch,n=64gf2_122-gls-lambdabatch161 ns161 ns .. 161 nsper elem
hash to curvebinary-lambda.122-gls/mode=batch,n=8gf2_122-gls-lambdabatch306 ns306 ns .. 307 nsper elem
hash to curvebinary-lambda.122-gls/mode=indepgf2_122-gls-lambdaper-element692 ns688 ns .. 696 nsper elem
hash to curvebinary-u.122-gls/mode=batch,n=1024gf2_122-gls-ubatch121 ns120 ns .. 121 nsper elem
hash to curvebinary-u.122-gls/mode=batch,n=64gf2_122-gls-ubatch165 ns165 ns .. 166 nsper elem
hash to curvebinary-u.122-gls/mode=batch,n=8gf2_122-gls-ubatch298 ns298 ns .. 299 nsper elem
hash to curvebinary-u.122-gls/mode=indepgf2_122-gls-uper-element678 ns676 ns .. 680 nsper elem
hash to curvebinary-w.122-gls/mode=batch,n=1024gf2_122-gls-wbatch116 ns115 ns .. 116 nsper elem
hash to curvebinary-w.122-gls/mode=batch,n=64gf2_122-gls-wbatch161 ns160 ns .. 161 nsper elem
hash to curvebinary-w.122-gls/mode=batch,n=8gf2_122-gls-wbatch303 ns303 ns .. 304 nsper elem
hash to curvebinary-w.122-gls/mode=indepgf2_122-gls-wper-element659 ns658 ns .. 660 nsper elem
hash to curvebinary-lambda.122/mode=batch,n=1024gf2_122-lambdabatch115 ns115 ns .. 116 nsper elem
hash to curvebinary-lambda.122/mode=batch,n=64gf2_122-lambdabatch156 ns156 ns .. 157 nsper elem
hash to curvebinary-lambda.122/mode=batch,n=8gf2_122-lambdabatch294 ns294 ns .. 295 nsper elem
hash to curvebinary-lambda.122/mode=indepgf2_122-lambdaper-element679 ns677 ns .. 680 nsper elem
hash to curvebinary-u.122/mode=batch,n=1024gf2_122-ubatch127 ns125 ns .. 128 nsper elem
hash to curvebinary-u.122/mode=batch,n=64gf2_122-ubatch164 ns164 ns .. 165 nsper elem
hash to curvebinary-u.122/mode=batch,n=8gf2_122-ubatch301 ns301 ns .. 302 nsper elem
hash to curvebinary-u.122/mode=indepgf2_122-uper-element674 ns672 ns .. 676 nsper elem
hash to curvebinary-w.122/mode=batch,n=1024gf2_122-wbatch116 ns116 ns .. 117 nsper elem
hash to curvebinary-w.122/mode=batch,n=64gf2_122-wbatch156 ns156 ns .. 156 nsper elem
hash to curvebinary-w.122/mode=batch,n=8gf2_122-wbatch294 ns294 ns .. 295 nsper elem
hash to curvebinary-w.122/mode=indepgf2_122-wper-element654 ns653 ns .. 656 nsper elem
hash to curvebinary.127/mode=batch,n=1024gf2_127batch113 ns112 ns .. 113 nsper elem
hash to curvebinary.127/mode=batch,n=64gf2_127batch137 ns136 ns .. 137 nsper elem
hash to curvebinary.127/mode=batch,n=8gf2_127batch200 ns199 ns .. 200 nsper elem
hash to curvebinary.127/mode=indepgf2_127per-element366 ns365 ns .. 368 nsper elem
hash to curvebinary-lambda.127/mode=batch,n=1024gf2_127-lambdabatch114 ns114 ns .. 115 nsper elem
hash to curvebinary-lambda.127/mode=batch,n=64gf2_127-lambdabatch137 ns137 ns .. 137 nsper elem
hash to curvebinary-lambda.127/mode=batch,n=8gf2_127-lambdabatch204 ns203 ns .. 204 nsper elem
hash to curvebinary-lambda.127/mode=indepgf2_127-lambdaper-element394 ns392 ns .. 396 nsper elem
hash to curvebinary-u.127/mode=batch,n=1024gf2_127-ubatch125 ns124 ns .. 125 nsper elem
hash to curvebinary-u.127/mode=batch,n=64gf2_127-ubatch153 ns152 ns .. 153 nsper elem
hash to curvebinary-u.127/mode=batch,n=8gf2_127-ubatch225 ns225 ns .. 226 nsper elem
hash to curvebinary-u.127/mode=indepgf2_127-uper-element401 ns400 ns .. 403 nsper elem
hash to curvebinary-w.127/mode=batch,n=1024gf2_127-wbatch119 ns119 ns .. 120 nsper elem
hash to curvebinary-w.127/mode=batch,n=64gf2_127-wbatch145 ns145 ns .. 145 nsper elem
hash to curvebinary-w.127/mode=batch,n=8gf2_127-wbatch219 ns218 ns .. 219 nsper elem
hash to curvebinary-w.127/mode=indepgf2_127-wper-element392 ns391 ns .. 393 nsper elem
hash to curveedwards.107/mode=batch,n=1024edwards107batch916 ns914 ns .. 919 nsper elem
hash to curveedwards.107/mode=indepedwards107per-element919 ns916 ns .. 922 nsper elem
hash to curveedwards107/edwards-native try-and-incrementedwards107per-element1.31 µs1.31 µs .. 1.32 µsper elem
hash to curveedwards.127/mode=batch,n=1024edwards127batch1.24 µs1.23 µs .. 1.24 µsper elem
hash to curveedwards.127/mode=indepedwards127per-element1.22 µs1.22 µs .. 1.23 µsper elem
hash to curveedwards127/edwards-native try-and-incrementedwards127per-element1.29 µs1.28 µs .. 1.29 µsper elem
hash to curveedwards.61x2/mode=batch,n=1024edwards61x2batch706 ns704 ns .. 708 nsper elem
hash to curveedwards.61x2/mode=indepedwards61x2per-element707 ns705 ns .. 708 nsper elem
hash to curvetwisted.goldilocks2/mode=batch,n=1024twisted-goldilocks2batch2.24 µs2.23 µs .. 2.24 µsper elem
hash to curvetwisted.goldilocks2/mode=indeptwisted-goldilocks2per-element2.21 µs2.21 µs .. 2.22 µsper elem
hash to curvetwisted.128/mode=batch,n=1024twisted128batch1.96 µs1.96 µs .. 1.96 µsper elem
hash to curvetwisted.128/mode=indeptwisted128per-element1.97 µs1.96 µs .. 1.97 µsper elem
hash to curvetwisted.61x2/mode=batch,n=1024twisted61x2batch711 ns708 ns .. 713 nsper elem
hash to curvetwisted.61x2/mode=batch,n=64twisted61x2batch703 ns702 ns .. 704 nsper elem
hash to curvetwisted.61x2/mode=batch,n=8twisted61x2batch703 ns701 ns .. 705 nsper elem
hash to curvetwisted.61x2/mode=indeptwisted61x2per-element706 ns704 ns .. 708 nsper elem
hash to curvetwisted.64x2/mode=batch,n=1024twisted64x2batch1.00 µs1.00 µs .. 1.01 µsper elem
hash to curvetwisted.64x2/mode=indeptwisted64x2per-element1.00 µs999 ns .. 1.01 µsper elem
hash to curveweier.107/mode=batch,n=1024weier107batch901 ns899 ns .. 904 nsper elem
hash to curveweier.107/mode=indepweier107per-element892 ns890 ns .. 895 nsper elem
hash to curveweier-jacobian.107/mode=batch,n=1024weier107-jacobianbatch893 ns891 ns .. 895 nsper elem
hash to curveweier-jacobian.107/mode=indepweier107-jacobianper-element886 ns884 ns .. 888 nsper elem
hash to curveweier.127/mode=batch,n=1024weier127batch1.17 µs1.16 µs .. 1.17 µsper elem
hash to curveweier.127/mode=indepweier127per-element1.16 µs1.16 µs .. 1.16 µsper elem
hash to curveweier-jacobian.127/mode=batch,n=1024weier127-jacobianbatch1.16 µs1.16 µs .. 1.16 µsper elem
hash to curveweier-jacobian.127/mode=indepweier127-jacobianper-element1.15 µs1.15 µs .. 1.16 µsper elem
hash to curveweier.61x2/mode=batch,n=1024weier61x2batch698 ns696 ns .. 700 nsper elem
hash to curveweier.61x2/mode=indepweier61x2per-element696 ns694 ns .. 697 nsper elem
hash to curveweier-jacobian.61x2/mode=batch,n=1024weier61x2-jacobianbatch698 ns696 ns .. 700 nsper elem
hash to curveweier-jacobian.61x2/mode=indepweier61x2-jacobianper-element702 ns700 ns .. 704 nsper elem
hash to curveristretto255/hash_from_bytes<Sha512>ristretto255per-element6.03 µs6.02 µs .. 6.05 µsper elem
hash to curvesecp256k1/ellswift decodesecp256k1per-element6.16 µs6.14 µs .. 6.18 µsper elem
hash to curvesecp256k1/try-and-increment (parse)secp256k1per-element6.17 µs6.16 µs .. 6.19 µsper elem
ID to addendbinary.109/proj=fp127,h2c=pornin,mode=batch,n=1024gf2_109batch66.9 ns66.8 ns .. 67.1 nsper elem
ID to addendbinary.109/proj=fp127,h2c=ti,mode=batch,n=1024gf2_109batch71.9 ns71.7 ns .. 72.0 nsper elem
ID to addendbinary.109/proj=fp130,h2c=pornin,mode=batch,n=1024gf2_109batch72.5 ns72.3 ns .. 72.8 nsper elem
ID to addendbinary.109/proj=fp130,h2c=ti,mode=batch,n=1024gf2_109batch103 ns103 ns .. 104 nsper elem
ID to addendbinary.109/proj=gf2_127,h2c=pornin,mode=batch,n=1024gf2_109batch63.8 ns63.6 ns .. 63.9 nsper elem
ID to addendbinary.109/proj=gf2_127,h2c=ti,mode=batch,n=1024gf2_109batch71.6 ns71.4 ns .. 71.9 nsper elem
ID to addendbinary.109/proj=none,h2c=pornin,mode=batch,n=1024gf2_109batch113 ns113 ns .. 114 nsper elem
ID to addendbinary.109/proj=none,h2c=ti,mode=batch,n=1024gf2_109batch132 ns131 ns .. 132 nsper elem
ID to addendbinary-lambda.109/proj=fp127,h2c=pornin-addend,mode=batch,n=1024gf2_109-lambdabatch59.1 ns58.9 ns .. 59.3 nsper elem
ID to addendbinary-lambda.109/proj=fp127,h2c=ti,mode=batch,n=1024gf2_109-lambdabatch74.9 ns74.7 ns .. 75.1 nsper elem
ID to addendbinary-lambda.109/proj=fp127,h2c=ti-addend,mode=batch,n=1024gf2_109-lambdabatch66.5 ns66.3 ns .. 66.8 nsper elem
ID to addendbinary-lambda.109/proj=fp130,h2c=pornin-addend,mode=batch,n=1024gf2_109-lambdabatch65.0 ns64.7 ns .. 65.2 nsper elem
ID to addendbinary-lambda.109/proj=fp130,h2c=ti,mode=batch,n=1024gf2_109-lambdabatch102 ns102 ns .. 103 nsper elem
ID to addendbinary-lambda.109/proj=fp130,h2c=ti-addend,mode=batch,n=1024gf2_109-lambdabatch93.8 ns93.4 ns .. 94.2 nsper elem
ID to addendbinary-lambda.109/proj=gf2_127,h2c=pornin-addend,mode=batch,n=1024gf2_109-lambdabatch55.7 ns55.5 ns .. 55.8 nsper elem
ID to addendbinary-lambda.109/proj=gf2_127,h2c=ti,mode=batch,n=1024gf2_109-lambdabatch72.5 ns72.3 ns .. 72.7 nsper elem
ID to addendbinary-lambda.109/proj=gf2_127,h2c=ti-addend,mode=batch,n=1024gf2_109-lambdabatch64.3 ns64.1 ns .. 64.4 nsper elem
ID to addendbinary-lambda.109/proj=none,h2c=pornin-addend,mode=batch,n=1024gf2_109-lambdabatch105 ns105 ns .. 106 nsper elem
ID to addendbinary-lambda.109/proj=none,h2c=ti,mode=batch,n=1024gf2_109-lambdabatch132 ns132 ns .. 133 nsper elem
ID to addendbinary-lambda.109/proj=none,h2c=ti-addend,mode=batch,n=1024gf2_109-lambdabatch124 ns124 ns .. 125 nsper elem
ID to addendbinary-u.109/proj=fp127,h2c=pornin-addend,mode=batch,n=1024gf2_109-ubatch64.2 ns64.0 ns .. 64.4 nsper elem
ID to addendbinary-u.109/proj=fp127,h2c=ti,mode=batch,n=1024gf2_109-ubatch71.9 ns71.7 ns .. 72.2 nsper elem
ID to addendbinary-u.109/proj=fp130,h2c=pornin-addend,mode=batch,n=1024gf2_109-ubatch69.8 ns69.6 ns .. 70.0 nsper elem
ID to addendbinary-u.109/proj=fp130,h2c=ti,mode=batch,n=1024gf2_109-ubatch98.9 ns98.7 ns .. 99.2 nsper elem
ID to addendbinary-u.109/proj=gf2_127,h2c=pornin-addend,mode=batch,n=1024gf2_109-ubatch60.6 ns60.3 ns .. 60.8 nsper elem
ID to addendbinary-u.109/proj=gf2_127,h2c=ti,mode=batch,n=1024gf2_109-ubatch70.2 ns70.0 ns .. 70.4 nsper elem
ID to addendbinary-u.109/proj=none,h2c=pornin-addend,mode=batch,n=1024gf2_109-ubatch110 ns110 ns .. 111 nsper elem
ID to addendbinary-u.109/proj=none,h2c=ti,mode=batch,n=1024gf2_109-ubatch130 ns130 ns .. 130 nsper elem
ID to addendbinary-w.109/proj=fp127,h2c=pornin-addend,mode=batch,n=1024gf2_109-wbatch58.5 ns58.4 ns .. 58.7 nsper elem
ID to addendbinary-w.109/proj=fp127,h2c=ti,mode=batch,n=1024gf2_109-wbatch67.2 ns66.6 ns .. 68.0 nsper elem
ID to addendbinary-w.109/proj=fp130,h2c=pornin-addend,mode=batch,n=1024gf2_109-wbatch65.0 ns64.8 ns .. 65.2 nsper elem
ID to addendbinary-w.109/proj=fp130,h2c=ti,mode=batch,n=1024gf2_109-wbatch92.7 ns92.4 ns .. 93.0 nsper elem
ID to addendbinary-w.109/proj=gf2_127,h2c=pornin-addend,mode=batch,n=1024gf2_109-wbatch56.3 ns56.1 ns .. 56.4 nsper elem
ID to addendbinary-w.109/proj=gf2_127,h2c=ti,mode=batch,n=1024gf2_109-wbatch65.0 ns64.8 ns .. 65.2 nsper elem
ID to addendbinary-w.109/proj=none,h2c=pornin-addend,mode=batch,n=1024gf2_109-wbatch105 ns105 ns .. 105 nsper elem
ID to addendbinary-w.109/proj=none,h2c=ti,mode=batch,n=1024gf2_109-wbatch124 ns124 ns .. 125 nsper elem
ID to addendbinary.122/proj=fp127,h2c=pornin,mode=batch,n=1024gf2_122batch56.1 ns55.9 ns .. 56.3 nsper elem
ID to addendbinary.122/proj=fp127,h2c=ti,mode=batch,n=1024gf2_122batch69.9 ns69.7 ns .. 70.1 nsper elem
ID to addendbinary.122/proj=fp130,h2c=pornin,mode=batch,n=1024gf2_122batch62.2 ns62.0 ns .. 62.4 nsper elem
ID to addendbinary.122/proj=fp130,h2c=ti,mode=batch,n=1024gf2_122batch95.5 ns95.2 ns .. 95.8 nsper elem
ID to addendbinary.122/proj=gf2_127,h2c=pornin,mode=batch,n=1024gf2_122batch53.4 ns53.2 ns .. 53.6 nsper elem
ID to addendbinary.122/proj=gf2_127,h2c=ti,mode=batch,n=1024gf2_122batch63.4 ns63.2 ns .. 63.5 nsper elem
ID to addendbinary.122/proj=none,h2c=pornin,mode=batch,n=1024gf2_122batch103 ns102 ns .. 103 nsper elem
ID to addendbinary.122/proj=none,h2c=ti,mode=batch,n=1024gf2_122batch126 ns125 ns .. 127 nsper elem
ID to addendbinary.122-gls/proj=fp127,h2c=pornin,mode=batch,n=1024gf2_122-glsbatch54.7 ns54.6 ns .. 54.8 nsper elem
ID to addendbinary.122-gls/proj=fp127,h2c=ti,mode=batch,n=1024gf2_122-glsbatch67.3 ns67.2 ns .. 67.4 nsper elem
ID to addendbinary.122-gls/proj=fp130,h2c=pornin,mode=batch,n=1024gf2_122-glsbatch60.7 ns60.5 ns .. 60.9 nsper elem
ID to addendbinary.122-gls/proj=fp130,h2c=ti,mode=batch,n=1024gf2_122-glsbatch92.7 ns92.5 ns .. 92.8 nsper elem
ID to addendbinary.122-gls/proj=gf2_127,h2c=pornin,mode=batch,n=1024gf2_122-glsbatch51.7 ns51.5 ns .. 51.9 nsper elem
ID to addendbinary.122-gls/proj=gf2_127,h2c=ti,mode=batch,n=1024gf2_122-glsbatch62.7 ns62.6 ns .. 62.9 nsper elem
ID to addendbinary.122-gls/proj=none,h2c=pornin,mode=batch,n=1024gf2_122-glsbatch100 ns100 ns .. 100 nsper elem
ID to addendbinary.122-gls/proj=none,h2c=ti,mode=batch,n=1024gf2_122-glsbatch120 ns120 ns .. 121 nsper elem
ID to addendbinary-lambda.122-gls/proj=fp127,h2c=pornin-addend,mode=batch,n=1024gf2_122-gls-lambdabatch48.8 ns48.6 ns .. 48.9 nsper elem
ID to addendbinary-lambda.122-gls/proj=fp127,h2c=ti,mode=batch,n=1024gf2_122-gls-lambdabatch69.5 ns69.5 ns .. 69.6 nsper elem
ID to addendbinary-lambda.122-gls/proj=fp127,h2c=ti-addend,mode=batch,n=1024gf2_122-gls-lambdabatch60.5 ns60.4 ns .. 60.6 nsper elem
ID to addendbinary-lambda.122-gls/proj=fp130,h2c=pornin-addend,mode=batch,n=1024gf2_122-gls-lambdabatch55.4 ns55.2 ns .. 55.5 nsper elem
ID to addendbinary-lambda.122-gls/proj=fp130,h2c=ti,mode=batch,n=1024gf2_122-gls-lambdabatch97.3 ns97.1 ns .. 97.5 nsper elem
ID to addendbinary-lambda.122-gls/proj=fp130,h2c=ti-addend,mode=batch,n=1024gf2_122-gls-lambdabatch88.7 ns88.5 ns .. 89.0 nsper elem
ID to addendbinary-lambda.122-gls/proj=gf2_127,h2c=pornin-addend,mode=batch,n=1024gf2_122-gls-lambdabatch46.1 ns46.0 ns .. 46.2 nsper elem
ID to addendbinary-lambda.122-gls/proj=gf2_127,h2c=ti,mode=batch,n=1024gf2_122-gls-lambdabatch64.6 ns64.5 ns .. 64.7 nsper elem
ID to addendbinary-lambda.122-gls/proj=gf2_127,h2c=ti-addend,mode=batch,n=1024gf2_122-gls-lambdabatch55.5 ns55.4 ns .. 55.6 nsper elem
ID to addendbinary-lambda.122-gls/proj=none,h2c=pornin-addend,mode=batch,n=1024gf2_122-gls-lambdabatch95.2 ns95.0 ns .. 95.4 nsper elem
ID to addendbinary-lambda.122-gls/proj=none,h2c=ti,mode=batch,n=1024gf2_122-gls-lambdabatch124 ns123 ns .. 124 nsper elem
ID to addendbinary-lambda.122-gls/proj=none,h2c=ti-addend,mode=batch,n=1024gf2_122-gls-lambdabatch114 ns114 ns .. 114 nsper elem
ID to addendbinary-u.122-gls/proj=fp127,h2c=pornin-addend,mode=batch,n=1024gf2_122-gls-ubatch53.6 ns53.4 ns .. 53.8 nsper elem
ID to addendbinary-u.122-gls/proj=fp127,h2c=ti,mode=batch,n=1024gf2_122-gls-ubatch65.6 ns65.4 ns .. 65.7 nsper elem
ID to addendbinary-u.122-gls/proj=fp130,h2c=pornin-addend,mode=batch,n=1024gf2_122-gls-ubatch59.2 ns59.0 ns .. 59.3 nsper elem
ID to addendbinary-u.122-gls/proj=fp130,h2c=ti,mode=batch,n=1024gf2_122-gls-ubatch94.3 ns94.1 ns .. 94.6 nsper elem
ID to addendbinary-u.122-gls/proj=gf2_127,h2c=pornin-addend,mode=batch,n=1024gf2_122-gls-ubatch50.1 ns50.0 ns .. 50.2 nsper elem
ID to addendbinary-u.122-gls/proj=gf2_127,h2c=ti,mode=batch,n=1024gf2_122-gls-ubatch61.9 ns61.8 ns .. 62.0 nsper elem
ID to addendbinary-u.122-gls/proj=none,h2c=pornin-addend,mode=batch,n=1024gf2_122-gls-ubatch99.5 ns99.2 ns .. 99.8 nsper elem
ID to addendbinary-u.122-gls/proj=none,h2c=ti,mode=batch,n=1024gf2_122-gls-ubatch123 ns123 ns .. 124 nsper elem
ID to addendbinary-w.122-gls/proj=fp127,h2c=pornin-addend,mode=batch,n=1024gf2_122-gls-wbatch50.0 ns49.8 ns .. 50.1 nsper elem
ID to addendbinary-w.122-gls/proj=fp127,h2c=ti,mode=batch,n=1024gf2_122-gls-wbatch61.4 ns61.2 ns .. 61.6 nsper elem
ID to addendbinary-w.122-gls/proj=fp130,h2c=pornin-addend,mode=batch,n=1024gf2_122-gls-wbatch55.3 ns55.2 ns .. 55.4 nsper elem
ID to addendbinary-w.122-gls/proj=fp130,h2c=ti,mode=batch,n=1024gf2_122-gls-wbatch87.5 ns87.3 ns .. 87.8 nsper elem
ID to addendbinary-w.122-gls/proj=gf2_127,h2c=pornin-addend,mode=batch,n=1024gf2_122-gls-wbatch46.4 ns46.3 ns .. 46.5 nsper elem
ID to addendbinary-w.122-gls/proj=gf2_127,h2c=ti,mode=batch,n=1024gf2_122-gls-wbatch58.1 ns57.9 ns .. 58.2 nsper elem
ID to addendbinary-w.122-gls/proj=none,h2c=pornin-addend,mode=batch,n=1024gf2_122-gls-wbatch95.1 ns94.9 ns .. 95.3 nsper elem
ID to addendbinary-w.122-gls/proj=none,h2c=ti,mode=batch,n=1024gf2_122-gls-wbatch116 ns116 ns .. 117 nsper elem
ID to addendbinary-lambda.122/proj=fp127,h2c=pornin-addend,mode=batch,n=1024gf2_122-lambdabatch49.8 ns49.6 ns .. 50.0 nsper elem
ID to addendbinary-lambda.122/proj=fp127,h2c=ti,mode=batch,n=1024gf2_122-lambdabatch72.1 ns71.9 ns .. 72.4 nsper elem
ID to addendbinary-lambda.122/proj=fp127,h2c=ti-addend,mode=batch,n=1024gf2_122-lambdabatch63.0 ns62.8 ns .. 63.3 nsper elem
ID to addendbinary-lambda.122/proj=fp130,h2c=pornin-addend,mode=batch,n=1024gf2_122-lambdabatch55.8 ns55.6 ns .. 55.9 nsper elem
ID to addendbinary-lambda.122/proj=fp130,h2c=ti,mode=batch,n=1024gf2_122-lambdabatch97.5 ns97.2 ns .. 97.8 nsper elem
ID to addendbinary-lambda.122/proj=fp130,h2c=ti-addend,mode=batch,n=1024gf2_122-lambdabatch88.0 ns87.7 ns .. 88.3 nsper elem
ID to addendbinary-lambda.122/proj=gf2_127,h2c=pornin-addend,mode=batch,n=1024gf2_122-lambdabatch46.4 ns46.2 ns .. 46.5 nsper elem
ID to addendbinary-lambda.122/proj=gf2_127,h2c=ti,mode=batch,n=1024gf2_122-lambdabatch64.5 ns64.3 ns .. 64.8 nsper elem
ID to addendbinary-lambda.122/proj=gf2_127,h2c=ti-addend,mode=batch,n=1024gf2_122-lambdabatch55.1 ns55.0 ns .. 55.3 nsper elem
ID to addendbinary-lambda.122/proj=none,h2c=pornin-addend,mode=batch,n=1024gf2_122-lambdabatch95.8 ns95.6 ns .. 96.1 nsper elem
ID to addendbinary-lambda.122/proj=none,h2c=ti,mode=batch,n=1024gf2_122-lambdabatch126 ns126 ns .. 127 nsper elem
ID to addendbinary-lambda.122/proj=none,h2c=ti-addend,mode=batch,n=1024gf2_122-lambdabatch118 ns117 ns .. 118 nsper elem
ID to addendbinary-u.122/proj=fp127,h2c=pornin-addend,mode=batch,n=1024gf2_122-ubatch53.8 ns53.7 ns .. 54.0 nsper elem
ID to addendbinary-u.122/proj=fp127,h2c=ti,mode=batch,n=1024gf2_122-ubatch68.6 ns68.5 ns .. 68.8 nsper elem
ID to addendbinary-u.122/proj=fp130,h2c=pornin-addend,mode=batch,n=1024gf2_122-ubatch60.1 ns59.9 ns .. 60.3 nsper elem
ID to addendbinary-u.122/proj=fp130,h2c=ti,mode=batch,n=1024gf2_122-ubatch97.8 ns97.5 ns .. 98.1 nsper elem
ID to addendbinary-u.122/proj=gf2_127,h2c=pornin-addend,mode=batch,n=1024gf2_122-ubatch50.3 ns50.2 ns .. 50.4 nsper elem
ID to addendbinary-u.122/proj=gf2_127,h2c=ti,mode=batch,n=1024gf2_122-ubatch63.9 ns63.7 ns .. 64.1 nsper elem
ID to addendbinary-u.122/proj=none,h2c=pornin-addend,mode=batch,n=1024gf2_122-ubatch100 ns100.0 ns .. 101 nsper elem
ID to addendbinary-u.122/proj=none,h2c=ti,mode=batch,n=1024gf2_122-ubatch123 ns123 ns .. 123 nsper elem
ID to addendbinary-w.122/proj=fp127,h2c=pornin-addend,mode=batch,n=1024gf2_122-wbatch49.4 ns49.2 ns .. 49.5 nsper elem
ID to addendbinary-w.122/proj=fp127,h2c=ti,mode=batch,n=1024gf2_122-wbatch63.1 ns63.0 ns .. 63.3 nsper elem
ID to addendbinary-w.122/proj=fp130,h2c=pornin-addend,mode=batch,n=1024gf2_122-wbatch55.7 ns55.5 ns .. 55.8 nsper elem
ID to addendbinary-w.122/proj=fp130,h2c=ti,mode=batch,n=1024gf2_122-wbatch90.8 ns90.6 ns .. 90.9 nsper elem
ID to addendbinary-w.122/proj=gf2_127,h2c=pornin-addend,mode=batch,n=1024gf2_122-wbatch46.6 ns46.5 ns .. 46.8 nsper elem
ID to addendbinary-w.122/proj=gf2_127,h2c=ti,mode=batch,n=1024gf2_122-wbatch58.5 ns58.3 ns .. 58.7 nsper elem
ID to addendbinary-w.122/proj=none,h2c=pornin-addend,mode=batch,n=1024gf2_122-wbatch95.3 ns95.1 ns .. 95.5 nsper elem
ID to addendbinary-w.122/proj=none,h2c=ti,mode=batch,n=1024gf2_122-wbatch116 ns116 ns .. 117 nsper elem
ID to addendbinary.127/proj=fp127,h2c=pornin,mode=batch,n=1024gf2_127batch54.6 ns54.5 ns .. 54.7 nsper elem
ID to addendbinary.127/proj=fp127,h2c=ti,mode=batch,n=1024gf2_127batch64.8 ns64.6 ns .. 64.9 nsper elem
ID to addendbinary.127/proj=fp130,h2c=pornin,mode=batch,n=1024gf2_127batch60.7 ns60.6 ns .. 60.8 nsper elem
ID to addendbinary.127/proj=fp130,h2c=ti,mode=batch,n=1024gf2_127batch92.5 ns92.3 ns .. 92.8 nsper elem
ID to addendbinary.127/proj=gf2_127,h2c=pornin,mode=batch,n=1024gf2_127batch51.6 ns51.6 ns .. 51.7 nsper elem
ID to addendbinary.127/proj=gf2_127,h2c=ti,mode=batch,n=1024gf2_127batch60.9 ns60.8 ns .. 61.1 nsper elem
ID to addendbinary.127/proj=none,h2c=pornin,mode=batch,n=1024gf2_127batch101 ns101 ns .. 101 nsper elem
ID to addendbinary.127/proj=none,h2c=ti,mode=batch,n=1024gf2_127batch118 ns118 ns .. 118 nsper elem
ID to addendbinary-lambda.127/proj=fp127,h2c=pornin-addend,mode=batch,n=1024gf2_127-lambdabatch46.6 ns46.6 ns .. 46.7 nsper elem
ID to addendbinary-lambda.127/proj=fp127,h2c=ti,mode=batch,n=1024gf2_127-lambdabatch67.2 ns66.9 ns .. 67.7 nsper elem
ID to addendbinary-lambda.127/proj=fp127,h2c=ti-addend,mode=batch,n=1024gf2_127-lambdabatch59.0 ns58.9 ns .. 59.1 nsper elem
ID to addendbinary-lambda.127/proj=fp130,h2c=pornin-addend,mode=batch,n=1024gf2_127-lambdabatch53.5 ns53.3 ns .. 53.6 nsper elem
ID to addendbinary-lambda.127/proj=fp130,h2c=ti,mode=batch,n=1024gf2_127-lambdabatch96.9 ns96.7 ns .. 97.1 nsper elem
ID to addendbinary-lambda.127/proj=fp130,h2c=ti-addend,mode=batch,n=1024gf2_127-lambdabatch88.3 ns88.1 ns .. 88.4 nsper elem
ID to addendbinary-lambda.127/proj=gf2_127,h2c=pornin-addend,mode=batch,n=1024gf2_127-lambdabatch43.9 ns43.8 ns .. 43.9 nsper elem
ID to addendbinary-lambda.127/proj=gf2_127,h2c=ti,mode=batch,n=1024gf2_127-lambdabatch63.2 ns63.0 ns .. 63.3 nsper elem
ID to addendbinary-lambda.127/proj=gf2_127,h2c=ti-addend,mode=batch,n=1024gf2_127-lambdabatch55.2 ns55.0 ns .. 55.3 nsper elem
ID to addendbinary-lambda.127/proj=none,h2c=pornin-addend,mode=batch,n=1024gf2_127-lambdabatch93.0 ns92.8 ns .. 93.3 nsper elem
ID to addendbinary-lambda.127/proj=none,h2c=ti,mode=batch,n=1024gf2_127-lambdabatch120 ns119 ns .. 120 nsper elem
ID to addendbinary-lambda.127/proj=none,h2c=ti-addend,mode=batch,n=1024gf2_127-lambdabatch111 ns111 ns .. 112 nsper elem
ID to addendbinary-u.127/proj=fp127,h2c=pornin-addend,mode=batch,n=1024gf2_127-ubatch52.5 ns52.4 ns .. 52.7 nsper elem
ID to addendbinary-u.127/proj=fp127,h2c=ti,mode=batch,n=1024gf2_127-ubatch63.9 ns63.7 ns .. 64.1 nsper elem
ID to addendbinary-u.127/proj=fp130,h2c=pornin-addend,mode=batch,n=1024gf2_127-ubatch58.3 ns58.1 ns .. 58.5 nsper elem
ID to addendbinary-u.127/proj=fp130,h2c=ti,mode=batch,n=1024gf2_127-ubatch91.1 ns90.8 ns .. 91.5 nsper elem
ID to addendbinary-u.127/proj=gf2_127,h2c=pornin-addend,mode=batch,n=1024gf2_127-ubatch49.2 ns49.1 ns .. 49.3 nsper elem
ID to addendbinary-u.127/proj=gf2_127,h2c=ti,mode=batch,n=1024gf2_127-ubatch59.0 ns58.9 ns .. 59.2 nsper elem
ID to addendbinary-u.127/proj=none,h2c=pornin-addend,mode=batch,n=1024gf2_127-ubatch98.7 ns98.4 ns .. 99.1 nsper elem
ID to addendbinary-u.127/proj=none,h2c=ti,mode=batch,n=1024gf2_127-ubatch120 ns119 ns .. 120 nsper elem
ID to addendbinary-w.127/proj=fp127,h2c=pornin-addend,mode=batch,n=1024gf2_127-wbatch49.5 ns49.4 ns .. 49.6 nsper elem
ID to addendbinary-w.127/proj=fp127,h2c=ti,mode=batch,n=1024gf2_127-wbatch60.6 ns60.4 ns .. 60.9 nsper elem
ID to addendbinary-w.127/proj=fp130,h2c=pornin-addend,mode=batch,n=1024gf2_127-wbatch53.4 ns53.3 ns .. 53.6 nsper elem
ID to addendbinary-w.127/proj=fp130,h2c=ti,mode=batch,n=1024gf2_127-wbatch84.9 ns84.7 ns .. 85.2 nsper elem
ID to addendbinary-w.127/proj=gf2_127,h2c=pornin-addend,mode=batch,n=1024gf2_127-wbatch45.8 ns45.7 ns .. 45.9 nsper elem
ID to addendbinary-w.127/proj=gf2_127,h2c=ti,mode=batch,n=1024gf2_127-wbatch55.7 ns55.5 ns .. 55.8 nsper elem
ID to addendbinary-w.127/proj=none,h2c=pornin-addend,mode=batch,n=1024gf2_127-wbatch93.0 ns92.8 ns .. 93.2 nsper elem
ID to addendbinary-w.127/proj=none,h2c=ti,mode=batch,n=1024gf2_127-wbatch112 ns112 ns .. 113 nsper elem
ID to addendtwisted.61x2/proj=fp127,h2c=elligator2,mode=batch,n=1024twisted61x2batch947 ns942 ns .. 953 nsper elem
ID to addendtwisted.61x2/proj=fp127,h2c=ti,mode=batch,n=1024twisted61x2batch662 ns661 ns .. 663 nsper elem
ID to addendtwisted.61x2/proj=fp130,h2c=elligator2,mode=batch,n=1024twisted61x2batch942 ns941 ns .. 943 nsper elem
ID to addendtwisted.61x2/proj=fp130,h2c=ti,mode=batch,n=1024twisted61x2batch677 ns676 ns .. 678 nsper elem
ID to addendtwisted.61x2/proj=gf2_127,h2c=elligator2,mode=batch,n=1024twisted61x2batch936 ns934 ns .. 937 nsper elem
ID to addendtwisted.61x2/proj=gf2_127,h2c=ti,mode=batch,n=1024twisted61x2batch658 ns657 ns .. 659 nsper elem
ID to addendtwisted.61x2/proj=none,h2c=elligator2,mode=batch,n=1024twisted61x2batch996 ns994 ns .. 998 nsper elem
ID to addendtwisted.61x2/proj=none,h2c=ti,mode=batch,n=1024twisted61x2batch696 ns695 ns .. 697 nsper elem
hash to addendgf2_109-lambda/try-and-increment to (x, λ)gf2_109-lambdaper-element1.17 µs1.16 µs .. 1.17 µsper elem
hash to addendgf2_109-lambda/try-and-increment to (x, λ), batchedgf2_109-lambdabatch131 ns130 ns .. 132 nsper elem
hash to addendgf2_122-gls-lambda/try-and-increment to (x, λ)gf2_122-gls-lambdaper-element679 ns678 ns .. 681 nsper elem
hash to addendgf2_122-gls-lambda/try-and-increment to (x, λ), batchedgf2_122-gls-lambdabatch121 ns120 ns .. 122 nsper elem
hash to addendgf2_122-lambda/try-and-increment to (x, λ)gf2_122-lambdaper-element672 ns669 ns .. 674 nsper elem
hash to addendgf2_122-lambda/try-and-increment to (x, λ), batchedgf2_122-lambdabatch119 ns118 ns .. 120 nsper elem
hash to addendgf2_127-lambda/try-and-increment to (x, λ)gf2_127-lambdaper-element369 ns368 ns .. 371 nsper elem
hash to addendgf2_127-lambda/try-and-increment to (x, λ), batchedgf2_127-lambdabatch111 ns111 ns .. 112 nsper elem
steps: digestdigest/sha512 (ristretto input)ristretto255per-element175 ns175 ns .. 176 nsper elem
steps: ristretto255ristretto255/from_uniform_bytes (2 maps + add)ristretto255per-element5.83 µs5.82 µs .. 5.85 µsper elem
x on curveristretto255/decompress (valid, inv sqrt)ristretto255per-element2.93 µs2.92 µs .. 2.94 µsper elem
x on curvesecp256k1/x: parse compressed (sqrt)secp256k1per-element3.10 µs3.09 µs .. 3.11 µsper elem

comparison maps

Maps from digests to points other than try-and-increment, timed beside it: Pornin’s map on binary curves, Elligator 2 on Edwards curves and simplified SWU on Weierstrass curves, once, and Pornin’s map twice with the points summed; and Pornin’s map taken straight to the unscaled or -affine addend, where it stands for a hash and a prepare together, as try-and-increment to does. One map reaches at most points of , not uniformly. The checksum needs relations to be hard to find among hash outputs within the subset of the group that the hash reaches, not outputs uniform on the group (docs/problem.md, Adversary). Insertion estimates include each measured map with compatible preparation and addition; Pornin already returns an extended binary addend.

Figure

Comparison maps (Pornin's binary map, Elligator 2, SSWU) on a log scale beside try-and-increment on the same curves and on the three curves where it is fastest: a row per curve and method, one at a time and batched as a dark and a light bar of the family's colour.Comparison maps (Pornin's binary map, Elligator 2, SSWU) on a log scale beside try-and-increment on the same curves and on the three curves where it is fastest: a row per curve and method, one at a time and batched as a dark and a light bar of the family's colour.

43 benchmarks
operationbenchmarkfamilymodetime95% CIunit
one map to addendgf2_109-lambda/pornin map x1 to (x, λ)gf2_109-lambdaper-element655 ns653 ns .. 657 nsper elem
one map to addendgf2_109-lambda/pornin map x1 to (x, λ), batchedgf2_109-lambdabatch105 ns104 ns .. 105 nsper elem
one map to addendgf2_109-u/pornin map x1 to (u, v)gf2_109-uper-element657 ns656 ns .. 659 nsper elem
one map to addendgf2_109-u/pornin map x1 to (u, v), batchedgf2_109-ubatch110 ns109 ns .. 110 nsper elem
one map to addendgf2_109-w/pornin map x1 to (x, λ)gf2_109-wper-element652 ns650 ns .. 653 nsper elem
one map to addendgf2_109-w/pornin map x1 to (x, λ), batchedgf2_109-wbatch104 ns104 ns .. 104 nsper elem
one map to addendgf2_122-gls-lambda/pornin map x1 to (x, λ)gf2_122-gls-lambdaper-element385 ns384 ns .. 386 nsper elem
one map to addendgf2_122-gls-lambda/pornin map x1 to (x, λ), batchedgf2_122-gls-lambdabatch95.0 ns94.7 ns .. 95.4 nsper elem
one map to addendgf2_122-gls-u/pornin map x1 to (u, v)gf2_122-gls-uper-element390 ns389 ns .. 390 nsper elem
one map to addendgf2_122-gls-u/pornin map x1 to (u, v), batchedgf2_122-gls-ubatch97.6 ns97.4 ns .. 97.8 nsper elem
one map to addendgf2_122-gls-w/pornin map x1 to (x, λ)gf2_122-gls-wper-element385 ns384 ns .. 386 nsper elem
one map to addendgf2_122-gls-w/pornin map x1 to (x, λ), batchedgf2_122-gls-wbatch94.6 ns94.4 ns .. 94.9 nsper elem
one map to addendgf2_122-lambda/pornin map x1 to (x, λ)gf2_122-lambdaper-element381 ns380 ns .. 382 nsper elem
one map to addendgf2_122-lambda/pornin map x1 to (x, λ), batchedgf2_122-lambdabatch95.0 ns94.7 ns .. 95.2 nsper elem
one map to addendgf2_122-u/pornin map x1 to (u, v)gf2_122-uper-element391 ns390 ns .. 392 nsper elem
one map to addendgf2_122-u/pornin map x1 to (u, v), batchedgf2_122-ubatch99.3 ns99.0 ns .. 99.5 nsper elem
one map to addendgf2_122-w/pornin map x1 to (x, λ)gf2_122-wper-element381 ns380 ns .. 382 nsper elem
one map to addendgf2_122-w/pornin map x1 to (x, λ), batchedgf2_122-wbatch95.2 ns95.0 ns .. 95.5 nsper elem
one map to addendgf2_127-lambda/pornin map x1 to (x, λ)gf2_127-lambdaper-element245 ns244 ns .. 246 nsper elem
one map to addendgf2_127-lambda/pornin map x1 to (x, λ), batchedgf2_127-lambdabatch92.7 ns92.4 ns .. 93.0 nsper elem
one map to addendgf2_127-u/pornin map x1 to (u, v)gf2_127-uper-element249 ns248 ns .. 250 nsper elem
one map to addendgf2_127-u/pornin map x1 to (u, v), batchedgf2_127-ubatch98.0 ns97.4 ns .. 98.6 nsper elem
one map to addendgf2_127-w/pornin map x1 to (x, λ)gf2_127-wper-element244 ns243 ns .. 245 nsper elem
one map to addendgf2_127-w/pornin map x1 to (x, λ), batchedgf2_127-wbatch92.8 ns92.4 ns .. 93.2 nsper elem
two maps summedgf2_127/pornin map x2gf2_127per-element452 ns451 ns .. 453 nsper elem
one mapgf2_109/pornin map x1gf2_109per-element675 ns673 ns .. 677 nsper elem
one mapgf2_109/pornin map x1, batchedgf2_109batch114 ns113 ns .. 114 nsper elem
one mapgf2_122/pornin map x1gf2_122per-element392 ns391 ns .. 393 nsper elem
one mapgf2_122/pornin map x1, batchedgf2_122batch103 ns102 ns .. 103 nsper elem
one mapgf2_122-gls/pornin map x1gf2_122-glsper-element394 ns393 ns .. 395 nsper elem
one mapgf2_122-gls/pornin map x1, batchedgf2_122-glsbatch101 ns101 ns .. 102 nsper elem
one mapgf2_127/pornin map x1gf2_127per-element256 ns254 ns .. 258 nsper elem
one mapgf2_127/pornin map x1, batchedgf2_127batch103 ns102 ns .. 103 nsper elem
one mapedwards107/elligator2 x1edwards107per-element1.28 µs1.27 µs .. 1.29 µsper elem
one mapedwards127/elligator2 x1edwards127per-element1.51 µs1.50 µs .. 1.51 µsper elem
one mapedwards61x2/elligator2 x1edwards61x2per-element792 ns790 ns .. 794 nsper elem
one maptwisted-goldilocks2/elligator2 x1twisted-goldilocks2per-element2.75 µs2.75 µs .. 2.76 µsper elem
one maptwisted128/elligator2 x1twisted128per-element3.32 µs3.32 µs .. 3.33 µsper elem
one maptwisted61x2/elligator2 x1twisted61x2per-element981 ns979 ns .. 984 nsper elem
one maptwisted64x2/elligator2 x1twisted64x2per-element1.38 µs1.38 µs .. 1.38 µsper elem
one mapweier107/sswu x1weier107per-element1.26 µs1.26 µs .. 1.26 µsper elem
one mapweier127/sswu x1weier127per-element1.29 µs1.29 µs .. 1.29 µsper elem
one mapweier61x2/sswu x1weier61x2per-element812 ns809 ns .. 816 nsper elem

RIBLT workload

Ratios against Go riblt-ecmh also include the mapping generator and the port to Rust, which are not attributed to this project (Workload, Comparison with the reference implementations).

Figure

RIBLT workload on log axes: time per item to encode and to update cells against the number of cells m, and per difference to peel against the number of differences d, the items in only one of the two sets. Peeling takes cells whose count is +1 or -1 as candidates and checks each by hashing its key; the prefilter first rejects a candidate whose key's mapping does not include its cell. Each family's dark line (dashed in the peel panels) hashes candidates one at a time and its light line hashes each pass's candidates together; the fastest encoder of each base family and the XOR baseline, intervals as bands.RIBLT workload on log axes: time per item to encode and to update cells against the number of cells m, and per difference to peel against the number of differences d, the items in only one of the two sets. Peeling takes cells whose count is +1 or -1 as candidates and checks each by hashing its key; the prefilter first rejects a candidate whose key's mapping does not include its cell. Each family's dark line (dashed in the peel panels) hashes candidates one at a time and its light line hashes each pass's candidates together; the fastest encoder of each base family and the XOR baseline, intervals as bands.

620 benchmarks
operationbenchmarkfamilymodetime95% CIunit
encode (hash + cells)xor-sha256.64/m=12150,n=3500xorper-element255 ns254 ns .. 256 nsper elem
encode (hash + cells)xor-sha256.64/m=1350,n=3500xorper-element218 ns218 ns .. 218 nsper elem
encode (hash + cells)xor-sha256.64/m=150,n=3500xorper-element188 ns188 ns .. 188 nsper elem
encode (hash + cells)xor-sha256.64/m=20,n=3500xorper-element161 ns161 ns .. 162 nsper elem
encode (hash + cells)xor-sha256.64/m=5,n=3500xorper-element144 ns143 ns .. 144 nsper elem
encode (hash + cells)xor-siphash.64/m=12150,n=3500xor-siphashper-element219 ns219 ns .. 219 nsper elem
encode (hash + cells)xor-siphash.64/m=12150,n=3500,map=mcg64xor-siphashper-element218 ns217 ns .. 218 nsper elem
encode (hash + cells)xor-siphash.64/m=1350,n=3500xor-siphashper-element183 ns183 ns .. 183 nsper elem
encode (hash + cells)xor-siphash.64/m=1350,n=3500,map=mcg64xor-siphashper-element182 ns182 ns .. 182 nsper elem
encode (hash + cells)xor-siphash.64/m=150,n=3500xor-siphashper-element152 ns152 ns .. 153 nsper elem
encode (hash + cells)xor-siphash.64/m=150,n=3500,map=mcg64xor-siphashper-element151 ns151 ns .. 151 nsper elem
encode (hash + cells)xor-siphash.64/m=20,n=3500xor-siphashper-element124 ns124 ns .. 125 nsper elem
encode (hash + cells)xor-siphash.64/m=20,n=3500,map=mcg64xor-siphashper-element123 ns123 ns .. 123 nsper elem
encode (hash + cells)xor-siphash.64/m=5,n=3500xor-siphashper-element107 ns107 ns .. 108 nsper elem
encode (hash + cells)xor-siphash.64/m=5,n=3500,map=mcg64xor-siphashper-element105 ns104 ns .. 106 nsper elem
encode (hash + cells)binary.109/m=12150,n=3500,h2c=porningf2_109per-element643 ns642 ns .. 644 nsper elem
encode (hash + cells)binary.109/m=12150,n=3500,h2c=pornin,proj=gf2_127,mapproj=gf2_127gf2_109per-element553 ns552 ns .. 554 nsper elem
encode (hash + cells)binary.109/m=1350,n=3500,h2c=porningf2_109per-element513 ns512 ns .. 514 nsper elem
encode (hash + cells)binary.109/m=1350,n=3500,h2c=pornin,proj=gf2_127,mapproj=gf2_127gf2_109per-element418 ns418 ns .. 419 nsper elem
encode (hash + cells)binary.109/m=5,n=3500,h2c=porningf2_109per-element266 ns264 ns .. 267 nsper elem
encode (hash + cells)binary.109/m=5,n=3500,h2c=pornin,proj=gf2_127,mapproj=gf2_127gf2_109per-element170 ns170 ns .. 171 nsper elem
encode (hash + cells)binary-lambda.109/m=12150,n=3500,h2c=pornin-addendgf2_109-lambdaper-element597 ns596 ns .. 598 nsper elem
encode (hash + cells)binary-lambda.109/m=12150,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_109-lambdaper-element500 ns497 ns .. 503 nsper elem
encode (hash + cells)binary-lambda.109/m=1350,n=3500,h2c=pornin-addendgf2_109-lambdaper-element488 ns487 ns .. 489 nsper elem
encode (hash + cells)binary-lambda.109/m=1350,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_109-lambdaper-element395 ns394 ns .. 395 nsper elem
encode (hash + cells)binary-lambda.109/m=5,n=3500,h2c=pornin-addendgf2_109-lambdaper-element247 ns246 ns .. 247 nsper elem
encode (hash + cells)binary-lambda.109/m=5,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_109-lambdaper-element151 ns151 ns .. 151 nsper elem
encode (hash + cells)binary-u.109/m=12150,n=3500,h2c=pornin-addendgf2_109-uper-element531 ns531 ns .. 532 nsper elem
encode (hash + cells)binary-u.109/m=12150,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_109-uper-element437 ns436 ns .. 438 nsper elem
encode (hash + cells)binary-u.109/m=1350,n=3500,h2c=pornin-addendgf2_109-uper-element422 ns422 ns .. 423 nsper elem
encode (hash + cells)binary-u.109/m=1350,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_109-uper-element331 ns330 ns .. 331 nsper elem
encode (hash + cells)binary-u.109/m=150,n=3500,h2c=pornin-addendgf2_109-uper-element344 ns344 ns .. 345 nsper elem
encode (hash + cells)binary-u.109/m=20,n=3500,h2c=pornin-addendgf2_109-uper-element278 ns278 ns .. 279 nsper elem
encode (hash + cells)binary-u.109/m=5,n=3500,h2c=pornin-addendgf2_109-uper-element240 ns239 ns .. 240 nsper elem
encode (hash + cells)binary-u.109/m=5,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_109-uper-element148 ns147 ns .. 148 nsper elem
encode (hash + cells)binary-w.109/m=12150,n=3500,h2c=pornin-addendgf2_109-wper-element596 ns596 ns .. 597 nsper elem
encode (hash + cells)binary-w.109/m=12150,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_109-wper-element500 ns500 ns .. 501 nsper elem
encode (hash + cells)binary-w.109/m=1350,n=3500,h2c=pornin-addendgf2_109-wper-element490 ns489 ns .. 491 nsper elem
encode (hash + cells)binary-w.109/m=1350,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_109-wper-element397 ns396 ns .. 397 nsper elem
encode (hash + cells)binary-w.109/m=5,n=3500,h2c=pornin-addendgf2_109-wper-element249 ns249 ns .. 249 nsper elem
encode (hash + cells)binary-w.109/m=5,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_109-wper-element154 ns154 ns .. 154 nsper elem
encode (hash + cells)binary.122/m=12150,n=3500,h2c=porningf2_122per-element673 ns671 ns .. 674 nsper elem
encode (hash + cells)binary.122/m=12150,n=3500,h2c=pornin,proj=gf2_127,mapproj=gf2_127gf2_122per-element552 ns550 ns .. 553 nsper elem
encode (hash + cells)binary.122/m=1350,n=3500,h2c=porningf2_122per-element537 ns536 ns .. 538 nsper elem
encode (hash + cells)binary.122/m=1350,n=3500,h2c=pornin,proj=gf2_127,mapproj=gf2_127gf2_122per-element435 ns435 ns .. 436 nsper elem
encode (hash + cells)binary.122/m=5,n=3500,h2c=porningf2_122per-element271 ns270 ns .. 272 nsper elem
encode (hash + cells)binary.122/m=5,n=3500,h2c=pornin,proj=gf2_127,mapproj=gf2_127gf2_122per-element173 ns173 ns .. 173 nsper elem
encode (hash + cells)binary.122-gls/m=12150,n=3500,h2c=porningf2_122-glsper-element635 ns634 ns .. 636 nsper elem
encode (hash + cells)binary.122-gls/m=12150,n=3500,h2c=pornin,proj=gf2_127,mapproj=gf2_127gf2_122-glsper-element534 ns533 ns .. 535 nsper elem
encode (hash + cells)binary.122-gls/m=1350,n=3500,h2c=porningf2_122-glsper-element509 ns508 ns .. 510 nsper elem
encode (hash + cells)binary.122-gls/m=1350,n=3500,h2c=pornin,proj=gf2_127,mapproj=gf2_127gf2_122-glsper-element408 ns407 ns .. 409 nsper elem
encode (hash + cells)binary.122-gls/m=5,n=3500,h2c=porningf2_122-glsper-element259 ns257 ns .. 260 nsper elem
encode (hash + cells)binary.122-gls/m=5,n=3500,h2c=pornin,proj=gf2_127,mapproj=gf2_127gf2_122-glsper-element162 ns162 ns .. 163 nsper elem
encode (hash + cells)binary-lambda.122-gls/m=12150,n=3500,h2c=pornin-addendgf2_122-gls-lambdaper-element608 ns607 ns .. 610 nsper elem
encode (hash + cells)binary-lambda.122-gls/m=12150,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-gls-lambdaper-element502 ns501 ns .. 503 nsper elem
encode (hash + cells)binary-lambda.122-gls/m=1350,n=3500,h2c=pornin-addendgf2_122-gls-lambdaper-element501 ns500 ns .. 502 nsper elem
encode (hash + cells)binary-lambda.122-gls/m=1350,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-gls-lambdaper-element400 ns399 ns .. 401 nsper elem
encode (hash + cells)binary-lambda.122-gls/m=5,n=3500,h2c=pornin-addendgf2_122-gls-lambdaper-element250 ns249 ns .. 250 nsper elem
encode (hash + cells)binary-lambda.122-gls/m=5,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-gls-lambdaper-element154 ns154 ns .. 155 nsper elem
encode (hash + cells)binary-u.122-gls/m=12150,n=3500,h2c=pornin-addendgf2_122-gls-uper-element544 ns542 ns .. 547 nsper elem
encode (hash + cells)binary-u.122-gls/m=12150,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-gls-uper-element442 ns440 ns .. 444 nsper elem
encode (hash + cells)binary-u.122-gls/m=1350,n=3500,h2c=pornin-addendgf2_122-gls-uper-element432 ns431 ns .. 433 nsper elem
encode (hash + cells)binary-u.122-gls/m=1350,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-gls-uper-element333 ns332 ns .. 334 nsper elem
encode (hash + cells)binary-u.122-gls/m=150,n=3500,h2c=pornin-addendgf2_122-gls-uper-element349 ns348 ns .. 350 nsper elem
encode (hash + cells)binary-u.122-gls/m=20,n=3500,h2c=pornin-addendgf2_122-gls-uper-element280 ns280 ns .. 280 nsper elem
encode (hash + cells)binary-u.122-gls/m=5,n=3500,h2c=pornin-addendgf2_122-gls-uper-element238 ns238 ns .. 239 nsper elem
encode (hash + cells)binary-u.122-gls/m=5,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-gls-uper-element140 ns140 ns .. 141 nsper elem
encode (hash + cells)binary-w.122-gls/m=12150,n=3500,h2c=pornin-addendgf2_122-gls-wper-element606 ns605 ns .. 606 nsper elem
encode (hash + cells)binary-w.122-gls/m=12150,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-gls-wper-element510 ns508 ns .. 513 nsper elem
encode (hash + cells)binary-w.122-gls/m=1350,n=3500,h2c=pornin-addendgf2_122-gls-wper-element498 ns498 ns .. 499 nsper elem
encode (hash + cells)binary-w.122-gls/m=1350,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-gls-wper-element402 ns401 ns .. 403 nsper elem
encode (hash + cells)binary-w.122-gls/m=5,n=3500,h2c=pornin-addendgf2_122-gls-wper-element250 ns250 ns .. 251 nsper elem
encode (hash + cells)binary-w.122-gls/m=5,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-gls-wper-element155 ns155 ns .. 155 nsper elem
encode (hash + cells)binary-lambda.122/m=12150,n=3500,h2c=pornin-addendgf2_122-lambdaper-element613 ns612 ns .. 615 nsper elem
encode (hash + cells)binary-lambda.122/m=12150,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-lambdaper-element506 ns506 ns .. 507 nsper elem
encode (hash + cells)binary-lambda.122/m=1350,n=3500,h2c=pornin-addendgf2_122-lambdaper-element505 ns503 ns .. 507 nsper elem
encode (hash + cells)binary-lambda.122/m=1350,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-lambdaper-element403 ns402 ns .. 403 nsper elem
encode (hash + cells)binary-lambda.122/m=5,n=3500,h2c=pornin-addendgf2_122-lambdaper-element250 ns250 ns .. 251 nsper elem
encode (hash + cells)binary-lambda.122/m=5,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-lambdaper-element155 ns155 ns .. 156 nsper elem
encode (hash + cells)binary-u.122/m=12150,n=3500,h2c=pornin-addendgf2_122-uper-element543 ns542 ns .. 544 nsper elem
encode (hash + cells)binary-u.122/m=12150,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-uper-element440 ns439 ns .. 441 nsper elem
encode (hash + cells)binary-u.122/m=1350,n=3500,h2c=pornin-addendgf2_122-uper-element436 ns435 ns .. 437 nsper elem
encode (hash + cells)binary-u.122/m=1350,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-uper-element332 ns331 ns .. 333 nsper elem
encode (hash + cells)binary-u.122/m=150,n=3500,h2c=pornin-addendgf2_122-uper-element354 ns353 ns .. 355 nsper elem
encode (hash + cells)binary-u.122/m=20,n=3500,h2c=pornin-addendgf2_122-uper-element282 ns282 ns .. 283 nsper elem
encode (hash + cells)binary-u.122/m=5,n=3500,h2c=pornin-addendgf2_122-uper-element239 ns238 ns .. 239 nsper elem
encode (hash + cells)binary-u.122/m=5,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-uper-element144 ns143 ns .. 144 nsper elem
encode (hash + cells)binary-w.122/m=12150,n=3500,h2c=pornin-addendgf2_122-wper-element616 ns615 ns .. 617 nsper elem
encode (hash + cells)binary-w.122/m=12150,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-wper-element516 ns513 ns .. 518 nsper elem
encode (hash + cells)binary-w.122/m=1350,n=3500,h2c=pornin-addendgf2_122-wper-element504 ns503 ns .. 505 nsper elem
encode (hash + cells)binary-w.122/m=1350,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-wper-element409 ns407 ns .. 410 nsper elem
encode (hash + cells)binary-w.122/m=5,n=3500,h2c=pornin-addendgf2_122-wper-element249 ns249 ns .. 250 nsper elem
encode (hash + cells)binary-w.122/m=5,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-wper-element157 ns156 ns .. 158 nsper elem
encode (hash + cells)binary.127/m=12150,n=3500,h2c=porningf2_127per-element630 ns629 ns .. 631 nsper elem
encode (hash + cells)binary.127/m=12150,n=3500,h2c=pornin,map=mcg64gf2_127per-element635 ns634 ns .. 637 nsper elem
encode (hash + cells)binary.127/m=12150,n=3500,h2c=pornin,proj=gf2_127,mapproj=gf2_127gf2_127per-element541 ns541 ns .. 542 nsper elem
encode (hash + cells)binary.127/m=1350,n=3500,h2c=porningf2_127per-element503 ns502 ns .. 505 nsper elem
encode (hash + cells)binary.127/m=1350,n=3500,h2c=pornin,map=mcg64gf2_127per-element502 ns502 ns .. 503 nsper elem
encode (hash + cells)binary.127/m=1350,n=3500,h2c=pornin,proj=gf2_127,mapproj=gf2_127gf2_127per-element412 ns411 ns .. 413 nsper elem
encode (hash + cells)binary.127/m=150,n=3500,h2c=pornin,map=mcg64gf2_127per-element394 ns393 ns .. 394 nsper elem
encode (hash + cells)binary.127/m=20,n=3500,h2c=pornin,map=mcg64gf2_127per-element302 ns302 ns .. 303 nsper elem
encode (hash + cells)binary.127/m=5,n=3500,h2c=porningf2_127per-element248 ns248 ns .. 248 nsper elem
encode (hash + cells)binary.127/m=5,n=3500,h2c=pornin,map=mcg64gf2_127per-element244 ns244 ns .. 245 nsper elem
encode (hash + cells)binary.127/m=5,n=3500,h2c=pornin,proj=gf2_127,mapproj=gf2_127gf2_127per-element154 ns154 ns .. 154 nsper elem
encode (hash + cells)binary-lambda.127/m=12150,n=3500,h2c=pornin-addendgf2_127-lambdaper-element583 ns582 ns .. 584 nsper elem
encode (hash + cells)binary-lambda.127/m=12150,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_127-lambdaper-element484 ns484 ns .. 485 nsper elem
encode (hash + cells)binary-lambda.127/m=1350,n=3500,h2c=pornin-addendgf2_127-lambdaper-element474 ns473 ns .. 475 nsper elem
encode (hash + cells)binary-lambda.127/m=1350,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_127-lambdaper-element379 ns379 ns .. 380 nsper elem
encode (hash + cells)binary-lambda.127/m=150,n=3500,h2c=pornin-addendgf2_127-lambdaper-element376 ns375 ns .. 377 nsper elem
encode (hash + cells)binary-lambda.127/m=20,n=3500,h2c=pornin-addendgf2_127-lambdaper-element291 ns289 ns .. 294 nsper elem
encode (hash + cells)binary-lambda.127/m=5,n=3500,h2c=pornin-addendgf2_127-lambdaper-element234 ns233 ns .. 234 nsper elem
encode (hash + cells)binary-lambda.127/m=5,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_127-lambdaper-element139 ns139 ns .. 139 nsper elem
encode (hash + cells)binary-u.127/m=12150,n=3500,h2c=pornin-addendgf2_127-uper-element520 ns520 ns .. 521 nsper elem
encode (hash + cells)binary-u.127/m=12150,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_127-uper-element427 ns426 ns .. 429 nsper elem
encode (hash + cells)binary-u.127/m=1350,n=3500,h2c=pornin-addendgf2_127-uper-element414 ns414 ns .. 415 nsper elem
encode (hash + cells)binary-u.127/m=1350,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_127-uper-element320 ns319 ns .. 321 nsper elem
encode (hash + cells)binary-u.127/m=150,n=3500,h2c=pornin-addendgf2_127-uper-element335 ns334 ns .. 336 nsper elem
encode (hash + cells)binary-u.127/m=20,n=3500,h2c=pornin-addendgf2_127-uper-element266 ns266 ns .. 267 nsper elem
encode (hash + cells)binary-u.127/m=5,n=3500,h2c=pornin-addendgf2_127-uper-element225 ns224 ns .. 225 nsper elem
encode (hash + cells)binary-u.127/m=5,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_127-uper-element132 ns132 ns .. 132 nsper elem
encode (hash + cells)binary-w.127/m=12150,n=3500,h2c=pornin-addendgf2_127-wper-element586 ns584 ns .. 587 nsper elem
encode (hash + cells)binary-w.127/m=12150,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_127-wper-element485 ns484 ns .. 486 nsper elem
encode (hash + cells)binary-w.127/m=1350,n=3500,h2c=pornin-addendgf2_127-wper-element476 ns475 ns .. 477 nsper elem
encode (hash + cells)binary-w.127/m=1350,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_127-wper-element380 ns379 ns .. 381 nsper elem
encode (hash + cells)binary-w.127/m=150,n=3500,h2c=pornin-addendgf2_127-wper-element376 ns375 ns .. 376 nsper elem
encode (hash + cells)binary-w.127/m=20,n=3500,h2c=pornin-addendgf2_127-wper-element288 ns288 ns .. 288 nsper elem
encode (hash + cells)binary-w.127/m=5,n=3500,h2c=pornin-addendgf2_127-wper-element233 ns233 ns .. 234 nsper elem
encode (hash + cells)binary-w.127/m=5,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_127-wper-element139 ns139 ns .. 140 nsper elem
encode (hash + cells)edwards.107/m=1350,n=3500,h2c=tiedwards107per-element1.47 µs1.47 µs .. 1.47 µsper elem
encode (hash + cells)edwards.127/m=1350,n=3500,h2c=tiedwards127per-element1.73 µs1.73 µs .. 1.73 µsper elem
encode (hash + cells)edwards.61x2/m=1350,n=3500,h2c=tiedwards61x2per-element1.22 µs1.22 µs .. 1.22 µsper elem
encode (hash + cells)twisted.goldilocks2/m=1350,n=3500,h2c=titwisted-goldilocks2per-element2.86 µs2.85 µs .. 2.87 µsper elem
encode (hash + cells)twisted.128/m=1350,n=3500,h2c=titwisted128per-element2.61 µs2.60 µs .. 2.61 µsper elem
encode (hash + cells)twisted.61x2/m=1350,n=3500,h2c=titwisted61x2per-element1.18 µs1.18 µs .. 1.18 µsper elem
encode (hash + cells)twisted.64x2/m=1350,n=3500,h2c=titwisted64x2per-element1.58 µs1.58 µs .. 1.59 µsper elem
encode (hash + cells)weier.107/m=1350,n=3500,h2c=tiweier107per-element1.74 µs1.74 µs .. 1.74 µsper elem
encode (hash + cells)weier-jacobian.107/m=1350,n=3500,h2c=tiweier107-jacobianper-element1.64 µs1.64 µs .. 1.65 µsper elem
encode (hash + cells)weier.127/m=1350,n=3500,h2c=tiweier127per-element2.07 µs2.07 µs .. 2.07 µsper elem
encode (hash + cells)weier-jacobian.127/m=1350,n=3500,h2c=tiweier127-jacobianper-element1.91 µs1.91 µs .. 1.91 µsper elem
encode (hash + cells)weier.61x2/m=1350,n=3500,h2c=tiweier61x2per-element1.54 µs1.53 µs .. 1.54 µsper elem
encode (hash + cells)weier-jacobian.61x2/m=1350,n=3500,h2c=tiweier61x2-jacobianper-element1.48 µs1.48 µs .. 1.48 µsper elem
encode (hash + cells)ristretto255/m=12150,n=3500ristretto255per-element8.25 µs8.23 µs .. 8.27 µsper elem
encode (hash + cells)ristretto255/m=12150,n=3500,map=mcg64ristretto255per-element8.23 µs8.22 µs .. 8.25 µsper elem
encode (hash + cells)ristretto255/m=1350,n=3500ristretto255per-element7.69 µs7.67 µs .. 7.70 µsper elem
encode (hash + cells)ristretto255/m=1350,n=3500,map=mcg64ristretto255per-element7.66 µs7.65 µs .. 7.67 µsper elem
encode (hash + cells)ristretto255/m=150,n=3500ristretto255per-element7.14 µs7.13 µs .. 7.15 µsper elem
encode (hash + cells)ristretto255/m=150,n=3500,map=mcg64ristretto255per-element7.12 µs7.11 µs .. 7.13 µsper elem
encode (hash + cells)ristretto255/m=20,n=3500ristretto255per-element6.67 µs6.67 µs .. 6.68 µsper elem
encode (hash + cells)ristretto255/m=20,n=3500,map=mcg64ristretto255per-element6.65 µs6.64 µs .. 6.66 µsper elem
encode (hash + cells)ristretto255/m=5,n=3500ristretto255per-element6.39 µs6.37 µs .. 6.41 µsper elem
encode (hash + cells)ristretto255/m=5,n=3500,map=mcg64ristretto255per-element6.35 µs6.34 µs .. 6.36 µsper elem
cell updatesxor-sha256.64/m=1350,n=3500xorper-element168 ns167 ns .. 168 nsper elem
cell updatesxor-siphash.64/m=1350,n=3500xor-siphashper-element166 ns166 ns .. 167 nsper elem
cell updatesbinary.109/m=12150,n=3500gf2_109per-element516 ns515 ns .. 517 nsper elem
cell updatesbinary.109/m=1350,n=3500gf2_109per-element384 ns384 ns .. 385 nsper elem
cell updatesbinary.109/m=5,n=3500gf2_109per-element134 ns134 ns .. 134 nsper elem
cell updatesbinary-lambda.109/m=12150,n=3500gf2_109-lambdaper-element471 ns470 ns .. 472 nsper elem
cell updatesbinary-lambda.109/m=1350,n=3500gf2_109-lambdaper-element368 ns367 ns .. 369 nsper elem
cell updatesbinary-lambda.109/m=5,n=3500gf2_109-lambdaper-element129 ns129 ns .. 129 nsper elem
cell updatesbinary-u.109/m=12150,n=3500gf2_109-uper-element407 ns406 ns .. 408 nsper elem
cell updatesbinary-u.109/m=1350,n=3500gf2_109-uper-element299 ns299 ns .. 300 nsper elem
cell updatesbinary-u.109/m=150,n=3500gf2_109-uper-element221 ns220 ns .. 221 nsper elem
cell updatesbinary-u.109/m=20,n=3500gf2_109-uper-element154 ns154 ns .. 155 nsper elem
cell updatesbinary-u.109/m=5,n=3500gf2_109-uper-element116 ns115 ns .. 116 nsper elem
cell updatesbinary-w.109/m=12150,n=3500gf2_109-wper-element471 ns470 ns .. 472 nsper elem
cell updatesbinary-w.109/m=1350,n=3500gf2_109-wper-element369 ns368 ns .. 370 nsper elem
cell updatesbinary-w.109/m=5,n=3500gf2_109-wper-element129 ns129 ns .. 129 nsper elem
cell updatesbinary.122/m=12150,n=3500gf2_122per-element527 ns526 ns .. 528 nsper elem
cell updatesbinary.122/m=1350,n=3500gf2_122per-element397 ns396 ns .. 398 nsper elem
cell updatesbinary.122/m=5,n=3500gf2_122per-element138 ns137 ns .. 138 nsper elem
cell updatesbinary.122-gls/m=12150,n=3500gf2_122-glsper-element512 ns512 ns .. 513 nsper elem
cell updatesbinary.122-gls/m=1350,n=3500gf2_122-glsper-element383 ns382 ns .. 384 nsper elem
cell updatesbinary.122-gls/m=5,n=3500gf2_122-glsper-element134 ns134 ns .. 134 nsper elem
cell updatesbinary-lambda.122-gls/m=12150,n=3500gf2_122-gls-lambdaper-element491 ns490 ns .. 492 nsper elem
cell updatesbinary-lambda.122-gls/m=1350,n=3500gf2_122-gls-lambdaper-element384 ns384 ns .. 385 nsper elem
cell updatesbinary-lambda.122-gls/m=5,n=3500gf2_122-gls-lambdaper-element134 ns134 ns .. 134 nsper elem
cell updatesbinary-u.122-gls/m=12150,n=3500gf2_122-gls-uper-element422 ns421 ns .. 423 nsper elem
cell updatesbinary-u.122-gls/m=1350,n=3500gf2_122-gls-uper-element312 ns312 ns .. 313 nsper elem
cell updatesbinary-u.122-gls/m=150,n=3500gf2_122-gls-uper-element229 ns229 ns .. 230 nsper elem
cell updatesbinary-u.122-gls/m=20,n=3500gf2_122-gls-uper-element160 ns160 ns .. 161 nsper elem
cell updatesbinary-u.122-gls/m=5,n=3500gf2_122-gls-uper-element118 ns118 ns .. 119 nsper elem
cell updatesbinary-w.122-gls/m=12150,n=3500gf2_122-gls-wper-element489 ns489 ns .. 490 nsper elem
cell updatesbinary-w.122-gls/m=1350,n=3500gf2_122-gls-wper-element383 ns382 ns .. 384 nsper elem
cell updatesbinary-w.122-gls/m=5,n=3500gf2_122-gls-wper-element133 ns133 ns .. 133 nsper elem
cell updatesbinary-lambda.122/m=12150,n=3500gf2_122-lambdaper-element493 ns490 ns .. 496 nsper elem
cell updatesbinary-lambda.122/m=1350,n=3500gf2_122-lambdaper-element384 ns383 ns .. 385 nsper elem
cell updatesbinary-lambda.122/m=5,n=3500gf2_122-lambdaper-element135 ns134 ns .. 135 nsper elem
cell updatesbinary-u.122/m=12150,n=3500gf2_122-uper-element422 ns421 ns .. 423 nsper elem
cell updatesbinary-u.122/m=1350,n=3500gf2_122-uper-element312 ns311 ns .. 313 nsper elem
cell updatesbinary-u.122/m=150,n=3500gf2_122-uper-element229 ns229 ns .. 230 nsper elem
cell updatesbinary-u.122/m=20,n=3500gf2_122-uper-element161 ns160 ns .. 161 nsper elem
cell updatesbinary-u.122/m=5,n=3500gf2_122-uper-element119 ns119 ns .. 120 nsper elem
cell updatesbinary-w.122/m=12150,n=3500gf2_122-wper-element501 ns499 ns .. 502 nsper elem
cell updatesbinary-w.122/m=1350,n=3500gf2_122-wper-element387 ns386 ns .. 388 nsper elem
cell updatesbinary-w.122/m=5,n=3500gf2_122-wper-element134 ns133 ns .. 134 nsper elem
cell updatesbinary.127/m=12150,n=3500gf2_127per-element518 ns517 ns .. 519 nsper elem
cell updatesbinary.127/m=1350,n=3500gf2_127per-element386 ns385 ns .. 387 nsper elem
cell updatesbinary.127/m=5,n=3500gf2_127per-element133 ns133 ns .. 133 nsper elem
cell updatesbinary-lambda.127/m=12150,n=3500gf2_127-lambdaper-element484 ns483 ns .. 486 nsper elem
cell updatesbinary-lambda.127/m=1350,n=3500gf2_127-lambdaper-element377 ns376 ns .. 378 nsper elem
cell updatesbinary-lambda.127/m=150,n=3500gf2_127-lambdaper-element276 ns276 ns .. 277 nsper elem
cell updatesbinary-lambda.127/m=20,n=3500gf2_127-lambdaper-element187 ns187 ns .. 188 nsper elem
cell updatesbinary-lambda.127/m=5,n=3500gf2_127-lambdaper-element130 ns130 ns .. 130 nsper elem
cell updatesbinary-u.127/m=12150,n=3500gf2_127-uper-element411 ns410 ns .. 412 nsper elem
cell updatesbinary-u.127/m=1350,n=3500gf2_127-uper-element304 ns304 ns .. 305 nsper elem
cell updatesbinary-u.127/m=150,n=3500gf2_127-uper-element225 ns224 ns .. 226 nsper elem
cell updatesbinary-u.127/m=20,n=3500gf2_127-uper-element158 ns157 ns .. 160 nsper elem
cell updatesbinary-u.127/m=5,n=3500gf2_127-uper-element115 ns115 ns .. 115 nsper elem
cell updatesbinary-w.127/m=12150,n=3500gf2_127-wper-element480 ns479 ns .. 480 nsper elem
cell updatesbinary-w.127/m=1350,n=3500gf2_127-wper-element373 ns372 ns .. 373 nsper elem
cell updatesbinary-w.127/m=150,n=3500gf2_127-wper-element273 ns273 ns .. 274 nsper elem
cell updatesbinary-w.127/m=20,n=3500gf2_127-wper-element186 ns186 ns .. 187 nsper elem
cell updatesbinary-w.127/m=5,n=3500gf2_127-wper-element132 ns131 ns .. 132 nsper elem
cell updatesedwards.107/m=1350,n=3500edwards107per-element473 ns473 ns .. 474 nsper elem
cell updatesedwards.127/m=1350,n=3500edwards127per-element488 ns487 ns .. 489 nsper elem
cell updatesedwards.61x2/m=1350,n=3500edwards61x2per-element456 ns455 ns .. 457 nsper elem
cell updatestwisted.goldilocks2/m=1350,n=3500twisted-goldilocks2per-element582 ns581 ns .. 584 nsper elem
cell updatestwisted.128/m=1350,n=3500twisted128per-element617 ns616 ns .. 619 nsper elem
cell updatestwisted.61x2/m=1350,n=3500twisted61x2per-element450 ns449 ns .. 452 nsper elem
cell updatestwisted.64x2/m=1350,n=3500twisted64x2per-element561 ns560 ns .. 562 nsper elem
cell updatesweier.107/m=1350,n=3500weier107per-element788 ns786 ns .. 790 nsper elem
cell updatesweier-jacobian.107/m=1350,n=3500weier107-jacobianper-element697 ns696 ns .. 699 nsper elem
cell updatesweier.127/m=1350,n=3500weier127per-element910 ns908 ns .. 913 nsper elem
cell updatesweier-jacobian.127/m=1350,n=3500weier127-jacobianper-element742 ns740 ns .. 744 nsper elem
cell updatesweier.61x2/m=1350,n=3500weier61x2per-element817 ns812 ns .. 823 nsper elem
cell updatesweier-jacobian.61x2/m=1350,n=3500weier61x2-jacobianper-element768 ns766 ns .. 770 nsper elem
cell updatesristretto255/m=1350,n=3500ristretto255per-element1.74 µs1.74 µs .. 1.75 µsper elem
peel, per differencexor-sha256.64/d=1350,m=2700,prefilter=true,batch=truexorbatch1.03 µs1.03 µs .. 1.03 µsper elem
peel, per differencexor-siphash.64/d=1350,m=2700,prefilter=true,batch=truexor-siphashbatch988 ns987 ns .. 990 nsper elem
peel, per differencebinary.109/d=10000,m=20000,prefilter=true,batch=true,h2c=porningf2_109batch1.70 µs1.69 µs .. 1.70 µsper elem
peel, per differencebinary.109/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin,proj=gf2_127,mapproj=gf2_127gf2_109batch1.45 µs1.45 µs .. 1.46 µsper elem
peel, per differencebinary.109/d=1350,m=2700,prefilter=true,batch=true,h2c=porningf2_109batch1.39 µs1.39 µs .. 1.39 µsper elem
peel, per differencebinary.109/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin,proj=gf2_127,mapproj=gf2_127gf2_109batch1.16 µs1.16 µs .. 1.17 µsper elem
peel, per differencebinary.109/d=4,m=10,prefilter=true,batch=true,h2c=pornin,proj=gf2_127,mapproj=gf2_127gf2_109batch962 ns960 ns .. 964 nsper elem
peel, per differencebinary.109/d=4,m=8,prefilter=true,batch=true,h2c=porningf2_109batch820 ns817 ns .. 824 nsper elem
peel, per differencebinary-lambda.109/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin-addendgf2_109-lambdabatch1.67 µs1.67 µs .. 1.67 µsper elem
peel, per differencebinary-lambda.109/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_109-lambdabatch1.44 µs1.43 µs .. 1.44 µsper elem
peel, per differencebinary-lambda.109/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addendgf2_109-lambdabatch1.37 µs1.37 µs .. 1.37 µsper elem
peel, per differencebinary-lambda.109/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_109-lambdabatch1.14 µs1.14 µs .. 1.15 µsper elem
peel, per differencebinary-lambda.109/d=4,m=10,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_109-lambdabatch927 ns925 ns .. 929 nsper elem
peel, per differencebinary-lambda.109/d=4,m=8,prefilter=true,batch=true,h2c=pornin-addendgf2_109-lambdabatch795 ns793 ns .. 798 nsper elem
peel, per differencebinary-u.109/d=10000,m=20000,prefilter=false,batch=false,h2c=pornin-addendgf2_109-uper-element2.27 µs2.26 µs .. 2.27 µsper elem
peel, per differencebinary-u.109/d=10000,m=20000,prefilter=false,batch=true,h2c=pornin-addendgf2_109-ubatch1.35 µs1.35 µs .. 1.35 µsper elem
peel, per differencebinary-u.109/d=10000,m=20000,prefilter=true,batch=false,h2c=pornin-addendgf2_109-uper-element2.11 µs2.10 µs .. 2.11 µsper elem
peel, per differencebinary-u.109/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin-addendgf2_109-ubatch1.57 µs1.57 µs .. 1.58 µsper elem
peel, per differencebinary-u.109/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_109-ubatch1.33 µs1.33 µs .. 1.34 µsper elem
peel, per differencebinary-u.109/d=1350,m=2700,prefilter=false,batch=false,h2c=pornin-addendgf2_109-uper-element2.04 µs2.03 µs .. 2.04 µsper elem
peel, per differencebinary-u.109/d=1350,m=2700,prefilter=false,batch=true,h2c=pornin-addendgf2_109-ubatch1.12 µs1.11 µs .. 1.12 µsper elem
peel, per differencebinary-u.109/d=1350,m=2700,prefilter=true,batch=false,h2c=pornin-addendgf2_109-uper-element1.82 µs1.82 µs .. 1.83 µsper elem
peel, per differencebinary-u.109/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addendgf2_109-ubatch1.30 µs1.30 µs .. 1.30 µsper elem
peel, per differencebinary-u.109/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_109-ubatch1.07 µs1.07 µs .. 1.07 µsper elem
peel, per differencebinary-u.109/d=150,m=300,prefilter=false,batch=false,h2c=pornin-addendgf2_109-uper-element1.78 µs1.78 µs .. 1.79 µsper elem
peel, per differencebinary-u.109/d=150,m=300,prefilter=false,batch=true,h2c=pornin-addendgf2_109-ubatch865 ns863 ns .. 868 nsper elem
peel, per differencebinary-u.109/d=150,m=300,prefilter=true,batch=false,h2c=pornin-addendgf2_109-uper-element1.58 µs1.58 µs .. 1.58 µsper elem
peel, per differencebinary-u.109/d=150,m=300,prefilter=true,batch=true,h2c=pornin-addendgf2_109-ubatch1.04 µs1.04 µs .. 1.05 µsper elem
peel, per differencebinary-u.109/d=20,m=40,prefilter=false,batch=false,h2c=pornin-addendgf2_109-uper-element1.43 µs1.43 µs .. 1.44 µsper elem
peel, per differencebinary-u.109/d=20,m=40,prefilter=false,batch=true,h2c=pornin-addendgf2_109-ubatch750 ns749 ns .. 752 nsper elem
peel, per differencebinary-u.109/d=20,m=40,prefilter=true,batch=false,h2c=pornin-addendgf2_109-uper-element1.31 µs1.30 µs .. 1.31 µsper elem
peel, per differencebinary-u.109/d=20,m=40,prefilter=true,batch=true,h2c=pornin-addendgf2_109-ubatch881 ns878 ns .. 884 nsper elem
peel, per differencebinary-u.109/d=4,m=10,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_109-ubatch938 ns933 ns .. 943 nsper elem
peel, per differencebinary-u.109/d=4,m=8,prefilter=false,batch=false,h2c=pornin-addendgf2_109-uper-element953 ns951 ns .. 955 nsper elem
peel, per differencebinary-u.109/d=4,m=8,prefilter=false,batch=true,h2c=pornin-addendgf2_109-ubatch722 ns720 ns .. 723 nsper elem
peel, per differencebinary-u.109/d=4,m=8,prefilter=true,batch=false,h2c=pornin-addendgf2_109-uper-element1.02 µs1.02 µs .. 1.03 µsper elem
peel, per differencebinary-u.109/d=4,m=8,prefilter=true,batch=true,h2c=pornin-addendgf2_109-ubatch805 ns802 ns .. 807 nsper elem
peel, per differencebinary-w.109/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin-addendgf2_109-wbatch1.66 µs1.66 µs .. 1.67 µsper elem
peel, per differencebinary-w.109/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_109-wbatch1.42 µs1.42 µs .. 1.43 µsper elem
peel, per differencebinary-w.109/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addendgf2_109-wbatch1.37 µs1.36 µs .. 1.37 µsper elem
peel, per differencebinary-w.109/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_109-wbatch1.13 µs1.13 µs .. 1.14 µsper elem
peel, per differencebinary-w.109/d=4,m=10,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_109-wbatch922 ns920 ns .. 924 nsper elem
peel, per differencebinary-w.109/d=4,m=8,prefilter=true,batch=true,h2c=pornin-addendgf2_109-wbatch795 ns793 ns .. 798 nsper elem
peel, per differencebinary.122/d=10000,m=20000,prefilter=true,batch=true,h2c=porningf2_122batch1.69 µs1.68 µs .. 1.70 µsper elem
peel, per differencebinary.122/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin,proj=gf2_127,mapproj=gf2_127gf2_122batch1.47 µs1.46 µs .. 1.47 µsper elem
peel, per differencebinary.122/d=1350,m=2700,prefilter=true,batch=true,h2c=porningf2_122batch1.39 µs1.39 µs .. 1.40 µsper elem
peel, per differencebinary.122/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin,proj=gf2_127,mapproj=gf2_127gf2_122batch1.16 µs1.16 µs .. 1.16 µsper elem
peel, per differencebinary.122/d=4,m=10,prefilter=true,batch=true,h2c=pornin,proj=gf2_127,mapproj=gf2_127gf2_122batch771 ns768 ns .. 774 nsper elem
peel, per differencebinary.122/d=4,m=8,prefilter=true,batch=true,h2c=porningf2_122batch683 ns682 ns .. 685 nsper elem
peel, per differencebinary.122-gls/d=10000,m=20000,prefilter=true,batch=true,h2c=porningf2_122-glsbatch1.67 µs1.66 µs .. 1.67 µsper elem
peel, per differencebinary.122-gls/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin,proj=gf2_127,mapproj=gf2_127gf2_122-glsbatch1.45 µs1.44 µs .. 1.45 µsper elem
peel, per differencebinary.122-gls/d=1350,m=2700,prefilter=true,batch=true,h2c=porningf2_122-glsbatch1.37 µs1.37 µs .. 1.37 µsper elem
peel, per differencebinary.122-gls/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin,proj=gf2_127,mapproj=gf2_127gf2_122-glsbatch1.15 µs1.14 µs .. 1.15 µsper elem
peel, per differencebinary.122-gls/d=4,m=10,prefilter=true,batch=true,h2c=pornin,proj=gf2_127,mapproj=gf2_127gf2_122-glsbatch765 ns762 ns .. 768 nsper elem
peel, per differencebinary.122-gls/d=4,m=8,prefilter=true,batch=true,h2c=porningf2_122-glsbatch676 ns674 ns .. 677 nsper elem
peel, per differencebinary-lambda.122-gls/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin-addendgf2_122-gls-lambdabatch1.67 µs1.66 µs .. 1.68 µsper elem
peel, per differencebinary-lambda.122-gls/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-gls-lambdabatch1.44 µs1.43 µs .. 1.44 µsper elem
peel, per differencebinary-lambda.122-gls/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addendgf2_122-gls-lambdabatch1.37 µs1.37 µs .. 1.38 µsper elem
peel, per differencebinary-lambda.122-gls/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-gls-lambdabatch1.14 µs1.14 µs .. 1.15 µsper elem
peel, per differencebinary-lambda.122-gls/d=4,m=10,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-gls-lambdabatch734 ns732 ns .. 737 nsper elem
peel, per differencebinary-lambda.122-gls/d=4,m=8,prefilter=true,batch=true,h2c=pornin-addendgf2_122-gls-lambdabatch661 ns659 ns .. 663 nsper elem
peel, per differencebinary-u.122-gls/d=10000,m=20000,prefilter=false,batch=false,h2c=pornin-addendgf2_122-gls-uper-element1.86 µs1.86 µs .. 1.87 µsper elem
peel, per differencebinary-u.122-gls/d=10000,m=20000,prefilter=false,batch=true,h2c=pornin-addendgf2_122-gls-ubatch1.35 µs1.34 µs .. 1.35 µsper elem
peel, per differencebinary-u.122-gls/d=10000,m=20000,prefilter=true,batch=false,h2c=pornin-addendgf2_122-gls-uper-element1.85 µs1.85 µs .. 1.85 µsper elem
peel, per differencebinary-u.122-gls/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin-addendgf2_122-gls-ubatch1.57 µs1.57 µs .. 1.58 µsper elem
peel, per differencebinary-u.122-gls/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-gls-ubatch1.34 µs1.34 µs .. 1.34 µsper elem
peel, per differencebinary-u.122-gls/d=1350,m=2700,prefilter=false,batch=false,h2c=pornin-addendgf2_122-gls-uper-element1.61 µs1.60 µs .. 1.61 µsper elem
peel, per differencebinary-u.122-gls/d=1350,m=2700,prefilter=false,batch=true,h2c=pornin-addendgf2_122-gls-ubatch1.10 µs1.10 µs .. 1.11 µsper elem
peel, per differencebinary-u.122-gls/d=1350,m=2700,prefilter=true,batch=false,h2c=pornin-addendgf2_122-gls-uper-element1.58 µs1.57 µs .. 1.58 µsper elem
peel, per differencebinary-u.122-gls/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addendgf2_122-gls-ubatch1.30 µs1.29 µs .. 1.30 µsper elem
peel, per differencebinary-u.122-gls/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-gls-ubatch1.06 µs1.06 µs .. 1.07 µsper elem
peel, per differencebinary-u.122-gls/d=150,m=300,prefilter=false,batch=false,h2c=pornin-addendgf2_122-gls-uper-element1.32 µs1.31 µs .. 1.32 µsper elem
peel, per differencebinary-u.122-gls/d=150,m=300,prefilter=false,batch=true,h2c=pornin-addendgf2_122-gls-ubatch834 ns831 ns .. 837 nsper elem
peel, per differencebinary-u.122-gls/d=150,m=300,prefilter=true,batch=false,h2c=pornin-addendgf2_122-gls-uper-element1.30 µs1.29 µs .. 1.30 µsper elem
peel, per differencebinary-u.122-gls/d=150,m=300,prefilter=true,batch=true,h2c=pornin-addendgf2_122-gls-ubatch1.01 µs1.01 µs .. 1.02 µsper elem
peel, per differencebinary-u.122-gls/d=20,m=40,prefilter=false,batch=false,h2c=pornin-addendgf2_122-gls-uper-element1.05 µs1.04 µs .. 1.05 µsper elem
peel, per differencebinary-u.122-gls/d=20,m=40,prefilter=false,batch=true,h2c=pornin-addendgf2_122-gls-ubatch696 ns693 ns .. 699 nsper elem
peel, per differencebinary-u.122-gls/d=20,m=40,prefilter=true,batch=false,h2c=pornin-addendgf2_122-gls-uper-element1.05 µs1.05 µs .. 1.06 µsper elem
peel, per differencebinary-u.122-gls/d=20,m=40,prefilter=true,batch=true,h2c=pornin-addendgf2_122-gls-ubatch823 ns819 ns .. 826 nsper elem
peel, per differencebinary-u.122-gls/d=4,m=10,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-gls-ubatch728 ns726 ns .. 730 nsper elem
peel, per differencebinary-u.122-gls/d=4,m=8,prefilter=false,batch=false,h2c=pornin-addendgf2_122-gls-uper-element718 ns716 ns .. 720 nsper elem
peel, per differencebinary-u.122-gls/d=4,m=8,prefilter=false,batch=true,h2c=pornin-addendgf2_122-gls-ubatch600 ns597 ns .. 604 nsper elem
peel, per differencebinary-u.122-gls/d=4,m=8,prefilter=true,batch=false,h2c=pornin-addendgf2_122-gls-uper-element796 ns794 ns .. 799 nsper elem
peel, per differencebinary-u.122-gls/d=4,m=8,prefilter=true,batch=true,h2c=pornin-addendgf2_122-gls-ubatch676 ns673 ns .. 678 nsper elem
peel, per differencebinary-w.122-gls/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin-addendgf2_122-gls-wbatch1.67 µs1.67 µs .. 1.67 µsper elem
peel, per differencebinary-w.122-gls/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-gls-wbatch1.44 µs1.44 µs .. 1.44 µsper elem
peel, per differencebinary-w.122-gls/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addendgf2_122-gls-wbatch1.38 µs1.38 µs .. 1.38 µsper elem
peel, per differencebinary-w.122-gls/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-gls-wbatch1.14 µs1.14 µs .. 1.15 µsper elem
peel, per differencebinary-w.122-gls/d=4,m=10,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-gls-wbatch732 ns729 ns .. 734 nsper elem
peel, per differencebinary-w.122-gls/d=4,m=8,prefilter=true,batch=true,h2c=pornin-addendgf2_122-gls-wbatch665 ns662 ns .. 667 nsper elem
peel, per differencebinary-lambda.122/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin-addendgf2_122-lambdabatch1.67 µs1.66 µs .. 1.67 µsper elem
peel, per differencebinary-lambda.122/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-lambdabatch1.45 µs1.44 µs .. 1.46 µsper elem
peel, per differencebinary-lambda.122/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addendgf2_122-lambdabatch1.38 µs1.37 µs .. 1.38 µsper elem
peel, per differencebinary-lambda.122/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-lambdabatch1.15 µs1.15 µs .. 1.15 µsper elem
peel, per differencebinary-lambda.122/d=4,m=10,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-lambdabatch735 ns733 ns .. 737 nsper elem
peel, per differencebinary-lambda.122/d=4,m=8,prefilter=true,batch=true,h2c=pornin-addendgf2_122-lambdabatch659 ns657 ns .. 662 nsper elem
peel, per differencebinary-u.122/d=10000,m=20000,prefilter=false,batch=false,h2c=pornin-addendgf2_122-uper-element1.84 µs1.84 µs .. 1.85 µsper elem
peel, per differencebinary-u.122/d=10000,m=20000,prefilter=false,batch=true,h2c=pornin-addendgf2_122-ubatch1.34 µs1.34 µs .. 1.35 µsper elem
peel, per differencebinary-u.122/d=10000,m=20000,prefilter=true,batch=false,h2c=pornin-addendgf2_122-uper-element1.86 µs1.86 µs .. 1.87 µsper elem
peel, per differencebinary-u.122/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin-addendgf2_122-ubatch1.57 µs1.57 µs .. 1.58 µsper elem
peel, per differencebinary-u.122/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-ubatch1.33 µs1.33 µs .. 1.33 µsper elem
peel, per differencebinary-u.122/d=1350,m=2700,prefilter=false,batch=false,h2c=pornin-addendgf2_122-uper-element1.62 µs1.61 µs .. 1.62 µsper elem
peel, per differencebinary-u.122/d=1350,m=2700,prefilter=false,batch=true,h2c=pornin-addendgf2_122-ubatch1.11 µs1.10 µs .. 1.11 µsper elem
peel, per differencebinary-u.122/d=1350,m=2700,prefilter=true,batch=false,h2c=pornin-addendgf2_122-uper-element1.59 µs1.59 µs .. 1.59 µsper elem
peel, per differencebinary-u.122/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addendgf2_122-ubatch1.30 µs1.30 µs .. 1.30 µsper elem
peel, per differencebinary-u.122/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-ubatch1.06 µs1.06 µs .. 1.06 µsper elem
peel, per differencebinary-u.122/d=150,m=300,prefilter=false,batch=false,h2c=pornin-addendgf2_122-uper-element1.33 µs1.32 µs .. 1.33 µsper elem
peel, per differencebinary-u.122/d=150,m=300,prefilter=false,batch=true,h2c=pornin-addendgf2_122-ubatch837 ns834 ns .. 839 nsper elem
peel, per differencebinary-u.122/d=150,m=300,prefilter=true,batch=false,h2c=pornin-addendgf2_122-uper-element1.31 µs1.30 µs .. 1.31 µsper elem
peel, per differencebinary-u.122/d=150,m=300,prefilter=true,batch=true,h2c=pornin-addendgf2_122-ubatch1.03 µs1.02 µs .. 1.04 µsper elem
peel, per differencebinary-u.122/d=20,m=40,prefilter=false,batch=false,h2c=pornin-addendgf2_122-uper-element1.05 µs1.05 µs .. 1.05 µsper elem
peel, per differencebinary-u.122/d=20,m=40,prefilter=false,batch=true,h2c=pornin-addendgf2_122-ubatch690 ns688 ns .. 692 nsper elem
peel, per differencebinary-u.122/d=20,m=40,prefilter=true,batch=false,h2c=pornin-addendgf2_122-uper-element1.05 µs1.04 µs .. 1.05 µsper elem
peel, per differencebinary-u.122/d=20,m=40,prefilter=true,batch=true,h2c=pornin-addendgf2_122-ubatch826 ns823 ns .. 830 nsper elem
peel, per differencebinary-u.122/d=4,m=10,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-ubatch751 ns745 ns .. 757 nsper elem
peel, per differencebinary-u.122/d=4,m=8,prefilter=false,batch=false,h2c=pornin-addendgf2_122-uper-element713 ns712 ns .. 714 nsper elem
peel, per differencebinary-u.122/d=4,m=8,prefilter=false,batch=true,h2c=pornin-addendgf2_122-ubatch603 ns597 ns .. 611 nsper elem
peel, per differencebinary-u.122/d=4,m=8,prefilter=true,batch=false,h2c=pornin-addendgf2_122-uper-element793 ns791 ns .. 795 nsper elem
peel, per differencebinary-u.122/d=4,m=8,prefilter=true,batch=true,h2c=pornin-addendgf2_122-ubatch675 ns673 ns .. 676 nsper elem
peel, per differencebinary-w.122/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin-addendgf2_122-wbatch1.68 µs1.68 µs .. 1.69 µsper elem
peel, per differencebinary-w.122/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-wbatch1.43 µs1.43 µs .. 1.44 µsper elem
peel, per differencebinary-w.122/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addendgf2_122-wbatch1.38 µs1.38 µs .. 1.39 µsper elem
peel, per differencebinary-w.122/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-wbatch1.14 µs1.14 µs .. 1.14 µsper elem
peel, per differencebinary-w.122/d=4,m=10,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-wbatch730 ns728 ns .. 733 nsper elem
peel, per differencebinary-w.122/d=4,m=8,prefilter=true,batch=true,h2c=pornin-addendgf2_122-wbatch680 ns677 ns .. 684 nsper elem
peel, per differencebinary.127/d=10000,m=20000,prefilter=true,batch=true,h2c=porningf2_127batch1.66 µs1.66 µs .. 1.67 µsper elem
peel, per differencebinary.127/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin,proj=gf2_127,mapproj=gf2_127gf2_127batch1.44 µs1.44 µs .. 1.45 µsper elem
peel, per differencebinary.127/d=1350,m=2700,prefilter=true,batch=true,h2c=porningf2_127batch1.37 µs1.37 µs .. 1.37 µsper elem
peel, per differencebinary.127/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin,proj=gf2_127,mapproj=gf2_127gf2_127batch1.15 µs1.15 µs .. 1.15 µsper elem
peel, per differencebinary.127/d=4,m=10,prefilter=true,batch=true,h2c=pornin,proj=gf2_127,mapproj=gf2_127gf2_127batch660 ns657 ns .. 663 nsper elem
peel, per differencebinary.127/d=4,m=8,prefilter=true,batch=true,h2c=porningf2_127batch601 ns599 ns .. 603 nsper elem
peel, per differencebinary-lambda.127/d=10000,m=20000,prefilter=false,batch=false,h2c=pornin-addendgf2_127-lambdaper-element1.64 µs1.64 µs .. 1.65 µsper elem
peel, per differencebinary-lambda.127/d=10000,m=20000,prefilter=false,batch=true,h2c=pornin-addendgf2_127-lambdabatch1.40 µs1.40 µs .. 1.40 µsper elem
peel, per differencebinary-lambda.127/d=10000,m=20000,prefilter=true,batch=false,h2c=pornin-addendgf2_127-lambdaper-element1.77 µs1.77 µs .. 1.78 µsper elem
peel, per differencebinary-lambda.127/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin-addendgf2_127-lambdabatch1.63 µs1.63 µs .. 1.64 µsper elem
peel, per differencebinary-lambda.127/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_127-lambdabatch1.40 µs1.40 µs .. 1.41 µsper elem
peel, per differencebinary-lambda.127/d=1350,m=2700,prefilter=false,batch=false,h2c=pornin-addendgf2_127-lambdaper-element1.38 µs1.38 µs .. 1.39 µsper elem
peel, per differencebinary-lambda.127/d=1350,m=2700,prefilter=false,batch=true,h2c=pornin-addendgf2_127-lambdabatch1.16 µs1.15 µs .. 1.16 µsper elem
peel, per differencebinary-lambda.127/d=1350,m=2700,prefilter=true,batch=false,h2c=pornin-addendgf2_127-lambdaper-element1.49 µs1.48 µs .. 1.50 µsper elem
peel, per differencebinary-lambda.127/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addendgf2_127-lambdabatch1.35 µs1.35 µs .. 1.35 µsper elem
peel, per differencebinary-lambda.127/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_127-lambdabatch1.12 µs1.12 µs .. 1.13 µsper elem
peel, per differencebinary-lambda.127/d=150,m=300,prefilter=false,batch=false,h2c=pornin-addendgf2_127-lambdaper-element1.08 µs1.08 µs .. 1.08 µsper elem
peel, per differencebinary-lambda.127/d=150,m=300,prefilter=false,batch=true,h2c=pornin-addendgf2_127-lambdabatch848 ns846 ns .. 851 nsper elem
peel, per differencebinary-lambda.127/d=150,m=300,prefilter=true,batch=false,h2c=pornin-addendgf2_127-lambdaper-element1.16 µs1.16 µs .. 1.16 µsper elem
peel, per differencebinary-lambda.127/d=150,m=300,prefilter=true,batch=true,h2c=pornin-addendgf2_127-lambdabatch1.03 µs1.03 µs .. 1.04 µsper elem
peel, per differencebinary-lambda.127/d=20,m=40,prefilter=false,batch=false,h2c=pornin-addendgf2_127-lambdaper-element827 ns825 ns .. 829 nsper elem
peel, per differencebinary-lambda.127/d=20,m=40,prefilter=false,batch=true,h2c=pornin-addendgf2_127-lambdabatch665 ns663 ns .. 668 nsper elem
peel, per differencebinary-lambda.127/d=20,m=40,prefilter=true,batch=false,h2c=pornin-addendgf2_127-lambdaper-element890 ns888 ns .. 891 nsper elem
peel, per differencebinary-lambda.127/d=20,m=40,prefilter=true,batch=true,h2c=pornin-addendgf2_127-lambdabatch796 ns794 ns .. 798 nsper elem
peel, per differencebinary-lambda.127/d=4,m=10,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_127-lambdabatch605 ns604 ns .. 606 nsper elem
peel, per differencebinary-lambda.127/d=4,m=8,prefilter=false,batch=false,h2c=pornin-addendgf2_127-lambdaper-element542 ns540 ns .. 543 nsper elem
peel, per differencebinary-lambda.127/d=4,m=8,prefilter=false,batch=true,h2c=pornin-addendgf2_127-lambdabatch495 ns493 ns .. 497 nsper elem
peel, per differencebinary-lambda.127/d=4,m=8,prefilter=true,batch=false,h2c=pornin-addendgf2_127-lambdaper-element623 ns621 ns .. 626 nsper elem
peel, per differencebinary-lambda.127/d=4,m=8,prefilter=true,batch=true,h2c=pornin-addendgf2_127-lambdabatch576 ns574 ns .. 578 nsper elem
peel, per differencebinary-u.127/d=10000,m=20000,prefilter=false,batch=false,h2c=pornin-addendgf2_127-uper-element1.56 µs1.56 µs .. 1.56 µsper elem
peel, per differencebinary-u.127/d=10000,m=20000,prefilter=false,batch=true,h2c=pornin-addendgf2_127-ubatch1.32 µs1.32 µs .. 1.32 µsper elem
peel, per differencebinary-u.127/d=10000,m=20000,prefilter=true,batch=false,h2c=pornin-addendgf2_127-uper-element1.70 µs1.70 µs .. 1.71 µsper elem
peel, per differencebinary-u.127/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin-addendgf2_127-ubatch1.57 µs1.57 µs .. 1.58 µsper elem
peel, per differencebinary-u.127/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_127-ubatch1.33 µs1.33 µs .. 1.34 µsper elem
peel, per differencebinary-u.127/d=1350,m=2700,prefilter=false,batch=false,h2c=pornin-addendgf2_127-uper-element1.33 µs1.32 µs .. 1.33 µsper elem
peel, per differencebinary-u.127/d=1350,m=2700,prefilter=false,batch=true,h2c=pornin-addendgf2_127-ubatch1.09 µs1.09 µs .. 1.09 µsper elem
peel, per differencebinary-u.127/d=1350,m=2700,prefilter=true,batch=false,h2c=pornin-addendgf2_127-uper-element1.42 µs1.42 µs .. 1.42 µsper elem
peel, per differencebinary-u.127/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addendgf2_127-ubatch1.29 µs1.28 µs .. 1.29 µsper elem
peel, per differencebinary-u.127/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_127-ubatch1.06 µs1.06 µs .. 1.06 µsper elem
peel, per differencebinary-u.127/d=150,m=300,prefilter=false,batch=false,h2c=pornin-addendgf2_127-uper-element1.05 µs1.05 µs .. 1.05 µsper elem
peel, per differencebinary-u.127/d=150,m=300,prefilter=false,batch=true,h2c=pornin-addendgf2_127-ubatch819 ns818 ns .. 821 nsper elem
peel, per differencebinary-u.127/d=150,m=300,prefilter=true,batch=false,h2c=pornin-addendgf2_127-uper-element1.14 µs1.13 µs .. 1.14 µsper elem
peel, per differencebinary-u.127/d=150,m=300,prefilter=true,batch=true,h2c=pornin-addendgf2_127-ubatch1.00 µs1.00 µs .. 1.01 µsper elem
peel, per differencebinary-u.127/d=20,m=40,prefilter=false,batch=false,h2c=pornin-addendgf2_127-uper-element819 ns817 ns .. 821 nsper elem
peel, per differencebinary-u.127/d=20,m=40,prefilter=false,batch=true,h2c=pornin-addendgf2_127-ubatch661 ns659 ns .. 663 nsper elem
peel, per differencebinary-u.127/d=20,m=40,prefilter=true,batch=false,h2c=pornin-addendgf2_127-uper-element884 ns880 ns .. 891 nsper elem
peel, per differencebinary-u.127/d=20,m=40,prefilter=true,batch=true,h2c=pornin-addendgf2_127-ubatch789 ns787 ns .. 792 nsper elem
peel, per differencebinary-u.127/d=4,m=10,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_127-ubatch625 ns621 ns .. 629 nsper elem
peel, per differencebinary-u.127/d=4,m=8,prefilter=false,batch=false,h2c=pornin-addendgf2_127-uper-element551 ns550 ns .. 553 nsper elem
peel, per differencebinary-u.127/d=4,m=8,prefilter=false,batch=true,h2c=pornin-addendgf2_127-ubatch510 ns509 ns .. 512 nsper elem
peel, per differencebinary-u.127/d=4,m=8,prefilter=true,batch=false,h2c=pornin-addendgf2_127-uper-element632 ns630 ns .. 634 nsper elem
peel, per differencebinary-u.127/d=4,m=8,prefilter=true,batch=true,h2c=pornin-addendgf2_127-ubatch589 ns588 ns .. 591 nsper elem
peel, per differencebinary-w.127/d=10000,m=20000,prefilter=false,batch=false,h2c=pornin-addendgf2_127-wper-element1.66 µs1.65 µs .. 1.66 µsper elem
peel, per differencebinary-w.127/d=10000,m=20000,prefilter=false,batch=true,h2c=pornin-addendgf2_127-wbatch1.42 µs1.41 µs .. 1.42 µsper elem
peel, per differencebinary-w.127/d=10000,m=20000,prefilter=true,batch=false,h2c=pornin-addendgf2_127-wper-element1.78 µs1.78 µs .. 1.78 µsper elem
peel, per differencebinary-w.127/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin-addendgf2_127-wbatch1.65 µs1.65 µs .. 1.65 µsper elem
peel, per differencebinary-w.127/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_127-wbatch1.40 µs1.40 µs .. 1.41 µsper elem
peel, per differencebinary-w.127/d=1350,m=2700,prefilter=false,batch=false,h2c=pornin-addendgf2_127-wper-element1.39 µs1.39 µs .. 1.39 µsper elem
peel, per differencebinary-w.127/d=1350,m=2700,prefilter=false,batch=true,h2c=pornin-addendgf2_127-wbatch1.16 µs1.16 µs .. 1.17 µsper elem
peel, per differencebinary-w.127/d=1350,m=2700,prefilter=true,batch=false,h2c=pornin-addendgf2_127-wper-element1.49 µs1.48 µs .. 1.49 µsper elem
peel, per differencebinary-w.127/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addendgf2_127-wbatch1.36 µs1.36 µs .. 1.36 µsper elem
peel, per differencebinary-w.127/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_127-wbatch1.12 µs1.12 µs .. 1.13 µsper elem
peel, per differencebinary-w.127/d=150,m=300,prefilter=false,batch=false,h2c=pornin-addendgf2_127-wper-element1.09 µs1.09 µs .. 1.10 µsper elem
peel, per differencebinary-w.127/d=150,m=300,prefilter=false,batch=true,h2c=pornin-addendgf2_127-wbatch861 ns856 ns .. 865 nsper elem
peel, per differencebinary-w.127/d=150,m=300,prefilter=true,batch=false,h2c=pornin-addendgf2_127-wper-element1.18 µs1.18 µs .. 1.18 µsper elem
peel, per differencebinary-w.127/d=150,m=300,prefilter=true,batch=true,h2c=pornin-addendgf2_127-wbatch1.04 µs1.04 µs .. 1.05 µsper elem
peel, per differencebinary-w.127/d=20,m=40,prefilter=false,batch=false,h2c=pornin-addendgf2_127-wper-element829 ns826 ns .. 831 nsper elem
peel, per differencebinary-w.127/d=20,m=40,prefilter=false,batch=true,h2c=pornin-addendgf2_127-wbatch668 ns664 ns .. 671 nsper elem
peel, per differencebinary-w.127/d=20,m=40,prefilter=true,batch=false,h2c=pornin-addendgf2_127-wper-element887 ns885 ns .. 888 nsper elem
peel, per differencebinary-w.127/d=20,m=40,prefilter=true,batch=true,h2c=pornin-addendgf2_127-wbatch794 ns791 ns .. 797 nsper elem
peel, per differencebinary-w.127/d=4,m=10,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_127-wbatch612 ns610 ns .. 615 nsper elem
peel, per differencebinary-w.127/d=4,m=8,prefilter=false,batch=false,h2c=pornin-addendgf2_127-wper-element551 ns548 ns .. 553 nsper elem
peel, per differencebinary-w.127/d=4,m=8,prefilter=false,batch=true,h2c=pornin-addendgf2_127-wbatch508 ns505 ns .. 510 nsper elem
peel, per differencebinary-w.127/d=4,m=8,prefilter=true,batch=false,h2c=pornin-addendgf2_127-wper-element626 ns624 ns .. 627 nsper elem
peel, per differencebinary-w.127/d=4,m=8,prefilter=true,batch=true,h2c=pornin-addendgf2_127-wbatch584 ns581 ns .. 587 nsper elem
peel, per differenceedwards.107/d=1350,m=2700,prefilter=true,batch=true,h2c=tiedwards107batch2.39 µs2.38 µs .. 2.40 µsper elem
peel, per differenceedwards.127/d=1350,m=2700,prefilter=true,batch=true,h2c=tiedwards127batch2.64 µs2.64 µs .. 2.65 µsper elem
peel, per differenceedwards.61x2/d=1350,m=2700,prefilter=true,batch=true,h2c=tiedwards61x2batch2.12 µs2.11 µs .. 2.12 µsper elem
peel, per differencetwisted.goldilocks2/d=1350,m=2700,prefilter=true,batch=true,h2c=titwisted-goldilocks2batch3.81 µs3.80 µs .. 3.82 µsper elem
peel, per differencetwisted.128/d=1350,m=2700,prefilter=true,batch=true,h2c=titwisted128batch3.64 µs3.63 µs .. 3.64 µsper elem
peel, per differencetwisted.61x2/d=1350,m=2700,prefilter=true,batch=true,h2c=titwisted61x2batch2.08 µs2.07 µs .. 2.08 µsper elem
peel, per differencetwisted.64x2/d=1350,m=2700,prefilter=true,batch=true,h2c=titwisted64x2batch2.51 µs2.50 µs .. 2.52 µsper elem
peel, per differenceweier.107/d=1350,m=2700,prefilter=true,batch=true,h2c=tiweier107batch2.67 µs2.66 µs .. 2.68 µsper elem
peel, per differenceweier-jacobian.107/d=1350,m=2700,prefilter=true,batch=true,h2c=tiweier107-jacobianbatch2.57 µs2.56 µs .. 2.58 µsper elem
peel, per differenceweier.127/d=1350,m=2700,prefilter=true,batch=true,h2c=tiweier127batch3.04 µs3.04 µs .. 3.05 µsper elem
peel, per differenceweier-jacobian.127/d=1350,m=2700,prefilter=true,batch=true,h2c=tiweier127-jacobianbatch2.81 µs2.80 µs .. 2.82 µsper elem
peel, per differenceweier.61x2/d=1350,m=2700,prefilter=true,batch=true,h2c=tiweier61x2batch2.45 µs2.44 µs .. 2.46 µsper elem
peel, per differenceweier-jacobian.61x2/d=1350,m=2700,prefilter=true,batch=true,h2c=tiweier61x2-jacobianbatch2.37 µs2.37 µs .. 2.38 µsper elem
peel, per differenceristretto255/d=1350,m=2700,prefilter=true,batch=trueristretto255batch9.13 µs9.11 µs .. 9.15 µsper elem
rateless encode and decode, per differencexor-sha256.64/d=10xorper-element758 ns754 ns .. 764 nsper elem
rateless encode and decode, per differencexor-sha256.64/d=100xorper-element1.34 µs1.34 µs .. 1.35 µsper elem
rateless encode and decode, per differencexor-sha256.64/d=1000xorper-element2.28 µs2.28 µs .. 2.29 µsper elem
rateless encode and decode, per differencexor-sha256.64/d=10000xorper-element4.24 µs4.22 µs .. 4.26 µsper elem
rateless encode and decode, per differencexor-sha256.64/d=100000xorper-element11.1 µs11.0 µs .. 11.1 µsper elem
rateless encode and decode, per differencexor-sha256.64/d=20xorper-element921 ns917 ns .. 927 nsper elem
rateless encode and decode, per differencexor-sha256.64/d=40xorper-element1.06 µs1.06 µs .. 1.07 µsper elem
rateless encode and decode, per differencexor-sha256.64/d=50000xorper-element7.98 µs7.94 µs .. 8.03 µsper elem
rateless encode and decode, per differencexor-siphash.64/d=10xor-siphashper-element617 ns616 ns .. 619 nsper elem
rateless encode and decode, per differencexor-siphash.64/d=10,map=mcg64xor-siphashper-element611 ns609 ns .. 613 nsper elem
rateless encode and decode, per differencexor-siphash.64/d=100xor-siphashper-element1.15 µs1.15 µs .. 1.15 µsper elem
rateless encode and decode, per differencexor-siphash.64/d=100,map=mcg64xor-siphashper-element1.14 µs1.13 µs .. 1.15 µsper elem
rateless encode and decode, per differencexor-siphash.64/d=1000xor-siphashper-element2.05 µs2.05 µs .. 2.06 µsper elem
rateless encode and decode, per differencexor-siphash.64/d=1000,map=mcg64xor-siphashper-element1.99 µs1.99 µs .. 2.00 µsper elem
rateless encode and decode, per differencexor-siphash.64/d=10000xor-siphashper-element3.88 µs3.87 µs .. 3.88 µsper elem
rateless encode and decode, per differencexor-siphash.64/d=10000,map=chacha8xor-siphashper-element4.47 µs4.44 µs .. 4.50 µsper elem
rateless encode and decode, per differencexor-siphash.64/d=10000,map=mcg64xor-siphashper-element3.88 µs3.87 µs .. 3.89 µsper elem
rateless encode and decode, per differencexor-siphash.64/d=100000xor-siphashper-element10.7 µs10.7 µs .. 10.8 µsper elem
rateless encode and decode, per differencexor-siphash.64/d=100000,map=chacha8xor-siphashper-element16.4 µs16.4 µs .. 16.4 µsper elem
rateless encode and decode, per differencexor-siphash.64/d=100000,map=mcg64xor-siphashper-element10.6 µs10.6 µs .. 10.7 µsper elem
rateless encode and decode, per differencexor-siphash.64/d=20xor-siphashper-element765 ns763 ns .. 768 nsper elem
rateless encode and decode, per differencexor-siphash.64/d=20,map=mcg64xor-siphashper-element757 ns755 ns .. 759 nsper elem
rateless encode and decode, per differencexor-siphash.64/d=40xor-siphashper-element893 ns891 ns .. 895 nsper elem
rateless encode and decode, per differencexor-siphash.64/d=40,map=mcg64xor-siphashper-element894 ns892 ns .. 897 nsper elem
rateless encode and decode, per differencexor-siphash.64/d=50000xor-siphashper-element7.72 µs7.68 µs .. 7.76 µsper elem
rateless encode and decode, per differencexor-siphash.64/d=50000,map=mcg64xor-siphashper-element7.15 µs7.08 µs .. 7.23 µsper elem
rateless encode and decode, per differencebinary.109/d=10,h2c=porningf2_109per-element2.69 µs2.68 µs .. 2.69 µsper elem
rateless encode and decode, per differencebinary.109/d=1000,h2c=porningf2_109per-element5.53 µs5.52 µs .. 5.54 µsper elem
rateless encode and decode, per differencebinary.109/d=100000,h2c=porningf2_109per-element19.0 µs19.0 µs .. 19.1 µsper elem
rateless encode and decode, per differencebinary-lambda.109/d=10,h2c=pornin-addendgf2_109-lambdaper-element2.62 µs2.62 µs .. 2.63 µsper elem
rateless encode and decode, per differencebinary-lambda.109/d=1000,h2c=pornin-addendgf2_109-lambdaper-element5.47 µs5.46 µs .. 5.48 µsper elem
rateless encode and decode, per differencebinary-lambda.109/d=100000,h2c=pornin-addendgf2_109-lambdaper-element18.2 µs18.2 µs .. 18.2 µsper elem
rateless encode and decode, per differencebinary-u.109/d=10,h2c=pornin-addendgf2_109-uper-element2.55 µs2.55 µs .. 2.56 µsper elem
rateless encode and decode, per differencebinary-u.109/d=100,h2c=pornin-addendgf2_109-uper-element3.76 µs3.76 µs .. 3.77 µsper elem
rateless encode and decode, per differencebinary-u.109/d=1000,h2c=pornin-addendgf2_109-uper-element5.15 µs5.15 µs .. 5.16 µsper elem
rateless encode and decode, per differencebinary-u.109/d=10000,h2c=pornin-addendgf2_109-uper-element7.44 µs7.41 µs .. 7.46 µsper elem
rateless encode and decode, per differencebinary-u.109/d=100000,h2c=pornin-addendgf2_109-uper-element19.5 µs19.4 µs .. 19.8 µsper elem
rateless encode and decode, per differencebinary-u.109/d=20,h2c=pornin-addendgf2_109-uper-element2.95 µs2.95 µs .. 2.96 µsper elem
rateless encode and decode, per differencebinary-u.109/d=40,h2c=pornin-addendgf2_109-uper-element3.29 µs3.29 µs .. 3.30 µsper elem
rateless encode and decode, per differencebinary-u.109/d=50000,h2c=pornin-addendgf2_109-uper-element13.8 µs13.7 µs .. 13.9 µsper elem
rateless encode and decode, per differencebinary-w.109/d=10,h2c=pornin-addendgf2_109-wper-element2.63 µs2.62 µs .. 2.63 µsper elem
rateless encode and decode, per differencebinary-w.109/d=1000,h2c=pornin-addendgf2_109-wper-element5.46 µs5.45 µs .. 5.48 µsper elem
rateless encode and decode, per differencebinary-w.109/d=100000,h2c=pornin-addendgf2_109-wper-element18.1 µs18.0 µs .. 18.1 µsper elem
rateless encode and decode, per differencebinary.122/d=10,h2c=porningf2_122per-element2.05 µs2.05 µs .. 2.06 µsper elem
rateless encode and decode, per differencebinary.122/d=1000,h2c=porningf2_122per-element4.70 µs4.69 µs .. 4.71 µsper elem
rateless encode and decode, per differencebinary.122/d=100000,h2c=porningf2_122per-element18.3 µs18.2 µs .. 18.3 µsper elem
rateless encode and decode, per differencebinary.122-gls/d=10,h2c=porningf2_122-glsper-element2.03 µs2.03 µs .. 2.03 µsper elem
rateless encode and decode, per differencebinary.122-gls/d=1000,h2c=porningf2_122-glsper-element4.61 µs4.61 µs .. 4.62 µsper elem
rateless encode and decode, per differencebinary.122-gls/d=100000,h2c=porningf2_122-glsper-element18.0 µs18.0 µs .. 18.0 µsper elem
rateless encode and decode, per differencebinary-lambda.122-gls/d=10,h2c=pornin-addendgf2_122-gls-lambdaper-element1.99 µs1.99 µs .. 2.00 µsper elem
rateless encode and decode, per differencebinary-lambda.122-gls/d=1000,h2c=pornin-addendgf2_122-gls-lambdaper-element4.61 µs4.60 µs .. 4.62 µsper elem
rateless encode and decode, per differencebinary-lambda.122-gls/d=100000,h2c=pornin-addendgf2_122-gls-lambdaper-element17.9 µs17.8 µs .. 18.1 µsper elem
rateless encode and decode, per differencebinary-u.122-gls/d=10,h2c=pornin-addendgf2_122-gls-uper-element1.93 µs1.93 µs .. 1.93 µsper elem
rateless encode and decode, per differencebinary-u.122-gls/d=100,h2c=pornin-addendgf2_122-gls-uper-element2.98 µs2.98 µs .. 2.99 µsper elem
rateless encode and decode, per differencebinary-u.122-gls/d=1000,h2c=pornin-addendgf2_122-gls-uper-element4.33 µs4.33 µs .. 4.34 µsper elem
rateless encode and decode, per differencebinary-u.122-gls/d=10000,h2c=pornin-addendgf2_122-gls-uper-element6.85 µs6.83 µs .. 6.86 µsper elem
rateless encode and decode, per differencebinary-u.122-gls/d=100000,h2c=pornin-addendgf2_122-gls-uper-element18.9 µs18.9 µs .. 19.0 µsper elem
rateless encode and decode, per differencebinary-u.122-gls/d=20,h2c=pornin-addendgf2_122-gls-uper-element2.29 µs2.28 µs .. 2.31 µsper elem
rateless encode and decode, per differencebinary-u.122-gls/d=40,h2c=pornin-addendgf2_122-gls-uper-element2.55 µs2.55 µs .. 2.56 µsper elem
rateless encode and decode, per differencebinary-u.122-gls/d=50000,h2c=pornin-addendgf2_122-gls-uper-element13.1 µs13.1 µs .. 13.2 µsper elem
rateless encode and decode, per differencebinary-w.122-gls/d=10,h2c=pornin-addendgf2_122-gls-wper-element2.00 µs2.00 µs .. 2.00 µsper elem
rateless encode and decode, per differencebinary-w.122-gls/d=1000,h2c=pornin-addendgf2_122-gls-wper-element4.65 µs4.64 µs .. 4.65 µsper elem
rateless encode and decode, per differencebinary-w.122-gls/d=100000,h2c=pornin-addendgf2_122-gls-wper-element18.1 µs18.0 µs .. 18.1 µsper elem
rateless encode and decode, per differencebinary-lambda.122/d=10,h2c=pornin-addendgf2_122-lambdaper-element2.01 µs2.00 µs .. 2.01 µsper elem
rateless encode and decode, per differencebinary-lambda.122/d=1000,h2c=pornin-addendgf2_122-lambdaper-element4.64 µs4.63 µs .. 4.66 µsper elem
rateless encode and decode, per differencebinary-lambda.122/d=100000,h2c=pornin-addendgf2_122-lambdaper-element18.0 µs18.0 µs .. 18.1 µsper elem
rateless encode and decode, per differencebinary-u.122/d=10,h2c=pornin-addendgf2_122-uper-element1.93 µs1.93 µs .. 1.93 µsper elem
rateless encode and decode, per differencebinary-u.122/d=100,h2c=pornin-addendgf2_122-uper-element2.97 µs2.96 µs .. 2.98 µsper elem
rateless encode and decode, per differencebinary-u.122/d=1000,h2c=pornin-addendgf2_122-uper-element4.33 µs4.32 µs .. 4.35 µsper elem
rateless encode and decode, per differencebinary-u.122/d=10000,h2c=pornin-addendgf2_122-uper-element6.70 µs6.69 µs .. 6.71 µsper elem
rateless encode and decode, per differencebinary-u.122/d=100000,h2c=pornin-addendgf2_122-uper-element17.5 µs17.5 µs .. 17.6 µsper elem
rateless encode and decode, per differencebinary-u.122/d=20,h2c=pornin-addendgf2_122-uper-element2.26 µs2.25 µs .. 2.26 µsper elem
rateless encode and decode, per differencebinary-u.122/d=40,h2c=pornin-addendgf2_122-uper-element2.54 µs2.53 µs .. 2.55 µsper elem
rateless encode and decode, per differencebinary-u.122/d=50000,h2c=pornin-addendgf2_122-uper-element12.5 µs12.5 µs .. 12.5 µsper elem
rateless encode and decode, per differencebinary-w.122/d=10,h2c=pornin-addendgf2_122-wper-element2.02 µs2.00 µs .. 2.04 µsper elem
rateless encode and decode, per differencebinary-w.122/d=1000,h2c=pornin-addendgf2_122-wper-element4.63 µs4.62 µs .. 4.64 µsper elem
rateless encode and decode, per differencebinary-w.122/d=100000,h2c=pornin-addendgf2_122-wper-element17.8 µs17.8 µs .. 17.9 µsper elem
rateless encode and decode, per differencebinary.127/d=10,h2c=porningf2_127per-element1.65 µs1.65 µs .. 1.66 µsper elem
rateless encode and decode, per differencebinary.127/d=10,h2c=pornin,map=mcg64gf2_127per-element1.65 µs1.64 µs .. 1.65 µsper elem
rateless encode and decode, per differencebinary.127/d=100,h2c=pornin,map=mcg64gf2_127per-element2.65 µs2.65 µs .. 2.66 µsper elem
rateless encode and decode, per differencebinary.127/d=1000,h2c=porningf2_127per-element4.14 µs4.13 µs .. 4.14 µsper elem
rateless encode and decode, per differencebinary.127/d=1000,h2c=pornin,map=mcg64gf2_127per-element4.05 µs4.04 µs .. 4.07 µsper elem
rateless encode and decode, per differencebinary.127/d=10000,h2c=pornin,map=chacha8gf2_127per-element7.71 µs7.67 µs .. 7.77 µsper elem
rateless encode and decode, per differencebinary.127/d=10000,h2c=pornin,map=mcg64gf2_127per-element6.58 µs6.50 µs .. 6.69 µsper elem
rateless encode and decode, per differencebinary.127/d=100000,h2c=porningf2_127per-element19.7 µs19.7 µs .. 19.8 µsper elem
rateless encode and decode, per differencebinary.127/d=100000,h2c=pornin,map=chacha8gf2_127per-element23.9 µs23.9 µs .. 24.0 µsper elem
rateless encode and decode, per differencebinary.127/d=100000,h2c=pornin,map=mcg64gf2_127per-element16.3 µs16.2 µs .. 16.3 µsper elem
rateless encode and decode, per differencebinary.127/d=20,h2c=pornin,map=mcg64gf2_127per-element1.94 µs1.94 µs .. 1.94 µsper elem
rateless encode and decode, per differencebinary.127/d=40,h2c=pornin,map=mcg64gf2_127per-element2.22 µs2.22 µs .. 2.23 µsper elem
rateless encode and decode, per differencebinary.127/d=50000,h2c=pornin,map=mcg64gf2_127per-element12.1 µs12.0 µs .. 12.1 µsper elem
rateless encode and decode, per differencebinary-lambda.127/d=10,h2c=pornin-addendgf2_127-lambdaper-element1.57 µs1.57 µs .. 1.57 µsper elem
rateless encode and decode, per differencebinary-lambda.127/d=100,h2c=pornin-addendgf2_127-lambdaper-element2.63 µs2.62 µs .. 2.63 µsper elem
rateless encode and decode, per differencebinary-lambda.127/d=1000,h2c=pornin-addendgf2_127-lambdaper-element4.05 µs4.04 µs .. 4.06 µsper elem
rateless encode and decode, per differencebinary-lambda.127/d=10000,h2c=pornin-addendgf2_127-lambdaper-element6.54 µs6.51 µs .. 6.58 µsper elem
rateless encode and decode, per differencebinary-lambda.127/d=100000,h2c=pornin-addendgf2_127-lambdaper-element17.5 µs17.5 µs .. 17.6 µsper elem
rateless encode and decode, per differencebinary-lambda.127/d=20,h2c=pornin-addendgf2_127-lambdaper-element1.89 µs1.88 µs .. 1.89 µsper elem
rateless encode and decode, per differencebinary-lambda.127/d=40,h2c=pornin-addendgf2_127-lambdaper-element2.17 µs2.17 µs .. 2.18 µsper elem
rateless encode and decode, per differencebinary-lambda.127/d=50000,h2c=pornin-addendgf2_127-lambdaper-element12.5 µs12.4 µs .. 12.6 µsper elem
rateless encode and decode, per differencebinary-u.127/d=10,h2c=pornin-addendgf2_127-uper-element1.53 µs1.53 µs .. 1.53 µsper elem
rateless encode and decode, per differencebinary-u.127/d=100,h2c=pornin-addendgf2_127-uper-element2.47 µs2.46 µs .. 2.47 µsper elem
rateless encode and decode, per differencebinary-u.127/d=1000,h2c=pornin-addendgf2_127-uper-element3.84 µs3.81 µs .. 3.90 µsper elem
rateless encode and decode, per differencebinary-u.127/d=10000,h2c=pornin-addendgf2_127-uper-element6.21 µs6.20 µs .. 6.23 µsper elem
rateless encode and decode, per differencebinary-u.127/d=100000,h2c=pornin-addendgf2_127-uper-element17.1 µs17.0 µs .. 17.3 µsper elem
rateless encode and decode, per differencebinary-u.127/d=20,h2c=pornin-addendgf2_127-uper-element1.81 µs1.80 µs .. 1.81 µsper elem
rateless encode and decode, per differencebinary-u.127/d=40,h2c=pornin-addendgf2_127-uper-element2.07 µs2.07 µs .. 2.07 µsper elem
rateless encode and decode, per differencebinary-u.127/d=50000,h2c=pornin-addendgf2_127-uper-element11.9 µs11.9 µs .. 12.0 µsper elem
rateless encode and decode, per differencebinary-w.127/d=10,h2c=pornin-addendgf2_127-wper-element1.58 µs1.57 µs .. 1.58 µsper elem
rateless encode and decode, per differencebinary-w.127/d=100,h2c=pornin-addendgf2_127-wper-element2.62 µs2.62 µs .. 2.62 µsper elem
rateless encode and decode, per differencebinary-w.127/d=1000,h2c=pornin-addendgf2_127-wper-element4.05 µs4.05 µs .. 4.06 µsper elem
rateless encode and decode, per differencebinary-w.127/d=10000,h2c=pornin-addendgf2_127-wper-element6.50 µs6.49 µs .. 6.51 µsper elem
rateless encode and decode, per differencebinary-w.127/d=100000,h2c=pornin-addendgf2_127-wper-element17.3 µs17.3 µs .. 17.4 µsper elem
rateless encode and decode, per differencebinary-w.127/d=20,h2c=pornin-addendgf2_127-wper-element1.89 µs1.89 µs .. 1.90 µsper elem
rateless encode and decode, per differencebinary-w.127/d=40,h2c=pornin-addendgf2_127-wper-element2.18 µs2.17 µs .. 2.18 µsper elem
rateless encode and decode, per differencebinary-w.127/d=50000,h2c=pornin-addendgf2_127-wper-element12.3 µs12.3 µs .. 12.4 µsper elem
rateless encode and decode, per differenceedwards.107/d=1000,h2c=tiedwards107per-element9.04 µs9.02 µs .. 9.07 µsper elem
rateless encode and decode, per differenceedwards.127/d=1000,h2c=tiedwards127per-element9.89 µs9.87 µs .. 9.91 µsper elem
rateless encode and decode, per differenceedwards.61x2/d=1000,h2c=tiedwards61x2per-element6.93 µs6.92 µs .. 6.95 µsper elem
rateless encode and decode, per differencetwisted.goldilocks2/d=1000,h2c=titwisted-goldilocks2per-element11.7 µs11.7 µs .. 11.7 µsper elem
rateless encode and decode, per differencetwisted.128/d=1000,h2c=titwisted128per-element11.2 µs11.1 µs .. 11.2 µsper elem
rateless encode and decode, per differencetwisted.61x2/d=1000,h2c=titwisted61x2per-element6.15 µs6.13 µs .. 6.18 µsper elem
rateless encode and decode, per differencetwisted.64x2/d=1000,h2c=titwisted64x2per-element7.46 µs7.44 µs .. 7.48 µsper elem
rateless encode and decode, per differenceweier.107/d=1000,h2c=tiweier107per-element8.14 µs8.12 µs .. 8.16 µsper elem
rateless encode and decode, per differenceweier-jacobian.107/d=1000,h2c=tiweier107-jacobianper-element7.72 µs7.70 µs .. 7.75 µsper elem
rateless encode and decode, per differenceweier.127/d=1000,h2c=tiweier127per-element9.39 µs9.37 µs .. 9.42 µsper elem
rateless encode and decode, per differenceweier-jacobian.127/d=1000,h2c=tiweier127-jacobianper-element8.62 µs8.61 µs .. 8.64 µsper elem
rateless encode and decode, per differenceweier.61x2/d=1000,h2c=tiweier61x2per-element7.42 µs7.41 µs .. 7.43 µsper elem
rateless encode and decode, per differenceweier-jacobian.61x2/d=1000,h2c=tiweier61x2-jacobianper-element7.21 µs7.20 µs .. 7.22 µsper elem
rateless encode and decode, per differenceristretto255/d=10ristretto255per-element17.8 µs17.8 µs .. 17.9 µsper elem
rateless encode and decode, per differenceristretto255/d=10,map=mcg64ristretto255per-element17.9 µs17.8 µs .. 17.9 µsper elem
rateless encode and decode, per differenceristretto255/d=100ristretto255per-element24.3 µs24.2 µs .. 24.4 µsper elem
rateless encode and decode, per differenceristretto255/d=100,map=mcg64ristretto255per-element24.3 µs24.2 µs .. 24.4 µsper elem
rateless encode and decode, per differenceristretto255/d=1000ristretto255per-element28.8 µs28.7 µs .. 28.9 µsper elem
rateless encode and decode, per differenceristretto255/d=1000,map=mcg64ristretto255per-element28.7 µs28.6 µs .. 28.8 µsper elem
rateless encode and decode, per differenceristretto255/d=10000ristretto255per-element33.9 µs33.8 µs .. 34.0 µsper elem
rateless encode and decode, per differenceristretto255/d=10000,map=chacha8ristretto255per-element36.3 µs36.1 µs .. 36.5 µsper elem
rateless encode and decode, per differenceristretto255/d=10000,map=mcg64ristretto255per-element34.2 µs33.6 µs .. 35.1 µsper elem
rateless encode and decode, per differenceristretto255/d=100000ristretto255per-element48.0 µs47.9 µs .. 48.1 µsper elem
rateless encode and decode, per differenceristretto255/d=100000,map=chacha8ristretto255per-element54.1 µs54.0 µs .. 54.3 µsper elem
rateless encode and decode, per differenceristretto255/d=100000,map=mcg64ristretto255per-element47.0 µs46.7 µs .. 47.4 µsper elem
rateless encode and decode, per differenceristretto255/d=20ristretto255per-element20.3 µs20.2 µs .. 20.3 µsper elem
rateless encode and decode, per differenceristretto255/d=20,map=mcg64ristretto255per-element20.2 µs20.1 µs .. 20.3 µsper elem
rateless encode and decode, per differenceristretto255/d=40ristretto255per-element22.2 µs22.2 µs .. 22.3 µsper elem
rateless encode and decode, per differenceristretto255/d=40,map=mcg64ristretto255per-element22.2 µs22.1 µs .. 22.3 µsper elem
rateless encode and decode, per differenceristretto255/d=50000ristretto255per-element43.3 µs43.2 µs .. 43.5 µsper elem
rateless encode and decode, per differenceristretto255/d=50000,map=mcg64ristretto255per-element42.2 µs42.1 µs .. 42.4 µsper elem
mapping, per indexchacha8/nextmappingper-element10.5 ns10.5 ns .. 10.5 nsper elem
mapping, per indexmcg64/nextmappingper-element4.09 ns4.08 ns .. 4.10 nsper elem
mapping, per indexsha256-ctr/nextmappingper-element22.6 ns22.5 ns .. 22.6 nsper elem
mapping, per indexxoshiro256pp/nextmappingper-element4.43 ns4.42 ns .. 4.43 nsper elem
mapping, per itemchacha8/item,m=12150mappingper-element216 ns215 ns .. 216 nsper elem
mapping, per itemchacha8/item,m=1350mappingper-element180 ns180 ns .. 181 nsper elem
mapping, per itemchacha8/item,m=150mappingper-element141 ns141 ns .. 141 nsper elem
mapping, per itemchacha8/item,m=20mappingper-element105 ns104 ns .. 105 nsper elem
mapping, per itemchacha8/item,m=5mappingper-element81.1 ns80.8 ns .. 81.4 nsper elem
mapping, per itemmcg64/item,m=12150mappingper-element157 ns157 ns .. 158 nsper elem
mapping, per itemmcg64/item,m=1350mappingper-element122 ns122 ns .. 122 nsper elem
mapping, per itemmcg64/item,m=150mappingper-element83.8 ns83.6 ns .. 83.9 nsper elem
mapping, per itemmcg64/item,m=20mappingper-element46.1 ns46.0 ns .. 46.2 nsper elem
mapping, per itemmcg64/item,m=5mappingper-element21.4 ns21.3 ns .. 21.4 nsper elem
mapping, per itemsha256-ctr/item,m=12150mappingper-element430 ns429 ns .. 431 nsper elem
mapping, per itemsha256-ctr/item,m=1350mappingper-element334 ns334 ns .. 335 nsper elem
mapping, per itemsha256-ctr/item,m=150mappingper-element237 ns236 ns .. 237 nsper elem
mapping, per itemsha256-ctr/item,m=20mappingper-element148 ns147 ns .. 148 nsper elem
mapping, per itemsha256-ctr/item,m=5mappingper-element89.9 ns89.7 ns .. 90.1 nsper elem
mapping, per itemxoshiro256pp/item,m=12150mappingper-element159 ns158 ns .. 159 nsper elem
mapping, per itemxoshiro256pp/item,m=1350mappingper-element124 ns123 ns .. 124 nsper elem
mapping, per itemxoshiro256pp/item,m=150mappingper-element86.0 ns85.9 ns .. 86.1 nsper elem
mapping, per itemxoshiro256pp/item,m=20mappingper-element49.0 ns49.0 ns .. 49.1 nsper elem
mapping, per itemxoshiro256pp/item,m=5mappingper-element26.4 ns26.4 ns .. 26.5 nsper elem
map digest of an IDprojection-fp127/digest of idmappingper-element13.6 ns13.6 ns .. 13.7 nsper elem
map digest of an IDprojection-fp130/digest of idmappingper-element26.0 ns26.0 ns .. 26.1 nsper elem
map digest of an IDprojection-gf2_127/digest of idmappingper-element9.67 ns9.65 ns .. 9.69 nsper elem
map digest of an IDsalted-sha256/digest of idmappingper-element51.4 ns51.3 ns .. 51.5 nsper elem
per-salt keysprojection-fp127/keysmappingper-element404 ns403 ns .. 406 nsper elem
per-salt keysprojection-fp130/keysmappingper-element406 ns406 ns .. 407 nsper elem
per-salt keysprojection-gf2_127/keysmappingper-element375 ns375 ns .. 376 nsper elem
per-salt keyssalted-sha256/keysmappingper-element127 ns127 ns .. 127 nsper elem
item IDsha256/idxorper-element50.2 ns50.0 ns .. 50.3 nsper elem
map digestsalted-sha256/digestmappingper-element51.8 ns51.7 ns .. 51.9 nsper elem

digest

Figure

digest: a bar per benchmark and its 95% confidence-interval box with an estimate line, a panel per operation, on a log scale.digest: a bar per benchmark and its 95% confidence-interval box with an estimate line, a panel per operation, on a log scale.

11 benchmarks
operationbenchmarkfamilymodetime95% CIunit
digestxor-sha256xorper-element55.1 ns54.3 ns .. 55.9 nsper elem
digestgf2_109/batchgf2_109batch147 ns146 ns .. 147 nsper elem
digestgf2_122/batchgf2_122batch138 ns136 ns .. 139 nsper elem
digestgf2_122-gls/batchgf2_122-glsbatch136 ns135 ns .. 136 nsper elem
digestgf2_127/batchgf2_127batch127 ns127 ns .. 128 nsper elem
digestedwards107/batchedwards107batch961 ns958 ns .. 964 nsper elem
digestedwards127/batchedwards127batch1.24 µs1.23 µs .. 1.24 µsper elem
digestweier107/batchweier107batch937 ns933 ns .. 941 nsper elem
digestweier127/batchweier127batch1.21 µs1.21 µs .. 1.21 µsper elem
digestristretto255/streamingristretto255streaming6.18 µs6.16 µs .. 6.20 µsper elem
digestsecp256k1/try-and-increment + combine_keyssecp256k1batch6.34 µs6.32 µs .. 6.36 µsper elem

curve generation

Figure

Curve generation: a dot per seed for each family, a panel per stage, on log scales.Curve generation: a dot per seed for each family, a panel per stage, on log scales.

85 benchmarks
operationbenchmarkfamilymodetime95% CIunit
accept certificategf2_109/0gf2_109total74.4 µs74.2 µs .. 74.5 µsper iter
accept certificategf2_122/0gf2_122total70.1 µs69.9 µs .. 70.2 µsper iter
accept certificategf2_122-gls/0gf2_122-glstotal78.3 µs78.0 µs .. 78.6 µsper iter
accept certificategf2_127/0gf2_127total69.9 µs69.8 µs .. 70.1 µsper iter
accept certificateedwards107/0edwards107total78.4 µs78.1 µs .. 78.7 µsper iter
accept certificateedwards127/0edwards127total78.3 µs78.0 µs .. 78.7 µsper iter
accept certificateedwards61x2/0edwards61x2total82.6 µs82.3 µs .. 83.1 µsper iter
accept certificatetwisted-goldilocks2/0twisted-goldilocks2total83.5 µs82.9 µs .. 84.1 µsper iter
accept certificatetwisted128/0twisted128total87.5 µs87.3 µs .. 88.0 µsper iter
accept certificatetwisted61x2/0twisted61x2total80.7 µs80.5 µs .. 81.0 µsper iter
accept certificatetwisted64x2/0twisted64x2total86.9 µs86.4 µs .. 87.4 µsper iter
accept certificateweier107/0weier107total82.4 µs82.1 µs .. 82.8 µsper iter
accept certificateweier127/0weier127total91.2 µs91.0 µs .. 91.4 µsper iter
accept certificateweier61x2/0weier61x2total87.0 µs86.8 µs .. 87.2 µsper iter
verify certificategf2_109/198 rejections/0gf2_109total258 µs258 µs .. 259 µsper iter
verify certificategf2_122/4 rejections/0gf2_122total73.5 µs73.2 µs .. 73.9 µsper iter
verify certificategf2_122-gls/60 rejections/0gf2_122-glstotal147 µs147 µs .. 147 µsper iter
verify certificategf2_127/30 rejections/0gf2_127total84.5 µs84.3 µs .. 84.9 µsper iter
verify certificateedwards107/28 rejections/0edwards107total183 µs183 µs .. 184 µsper iter
verify certificateedwards127/56 rejections/0edwards127total307 µs299 µs .. 317 µsper iter
verify certificateedwards61x2/118 rejections/0edwards61x2total374 µs372 µs .. 376 µsper iter
verify certificatetwisted-goldilocks2/32 rejections/0twisted-goldilocks2total221 µs221 µs .. 222 µsper iter
verify certificatetwisted128/4 rejections/0twisted128total98.3 µs98.0 µs .. 98.7 µsper iter
verify certificatetwisted61x2/344 rejections/0twisted61x2total696 µs696 µs .. 697 µsper iter
verify certificatetwisted64x2/36 rejections/0twisted64x2total177 µs176 µs .. 177 µsper iter
verify certificateweier107/519 rejections/0weier107total475 µs474 µs .. 476 µsper iter
verify certificateweier127/125 rejections/0weier127total203 µs202 µs .. 205 µsper iter
verify certificateweier61x2/123 rejections/0weier61x2total193 µs192 µs .. 193 µsper iter
embedding-degree boundgf2_109/0gf2_109total43.6 µs43.4 µs .. 43.8 µsper iter
embedding-degree boundgf2_122/0gf2_122total43.2 µs42.9 µs .. 43.6 µsper iter
embedding-degree boundgf2_122-gls/0gf2_122-glstotal43.8 µs43.2 µs .. 44.2 µsper iter
embedding-degree boundgf2_127/0gf2_127total43.3 µs43.0 µs .. 43.6 µsper iter
embedding-degree boundedwards107/0edwards107total43.1 µs42.4 µs .. 43.5 µsper iter
embedding-degree boundedwards127/0edwards127total43.3 µs43.2 µs .. 43.4 µsper iter
embedding-degree boundedwards61x2/0edwards61x2total43.4 µs43.0 µs .. 44.0 µsper iter
embedding-degree boundtwisted-goldilocks2/0twisted-goldilocks2total42.1 µs42.0 µs .. 42.2 µsper iter
embedding-degree boundtwisted128/0twisted128total44.3 µs44.0 µs .. 44.5 µsper iter
embedding-degree boundtwisted61x2/0twisted61x2total43.7 µs43.4 µs .. 44.3 µsper iter
embedding-degree boundtwisted64x2/0twisted64x2total43.3 µs43.2 µs .. 43.4 µsper iter
embedding-degree boundweier107/0weier107total43.6 µs43.3 µs .. 43.7 µsper iter
embedding-degree boundweier127/0weier127total44.4 µs43.7 µs .. 45.1 µsper iter
embedding-degree boundweier61x2/0weier61x2total44.2 µs43.9 µs .. 44.4 µsper iter
find (Rust: AGM + sieve)gf2_127 agm+sieve/index 114/1gf2_127total24.8 ms24.7 ms .. 25.0 msper iter
find (Rust: AGM + sieve)gf2_127 agm+sieve/index 14/3gf2_127total2.49 ms2.49 ms .. 2.50 msper iter
find (Rust: AGM + sieve)gf2_127 agm+sieve/index 30/0gf2_127total4.92 ms4.90 ms .. 4.95 msper iter
find (Rust: AGM + sieve)gf2_127 agm+sieve/index 54/2gf2_127total12.2 ms12.2 ms .. 12.3 msper iter
certify (Rust: AGM + sieve + order witnesses)gf2_127 agm+sieve/index 114/1gf2_127total25.3 ms25.1 ms .. 25.4 msper iter
certify (Rust: AGM + sieve + order witnesses)gf2_127 agm+sieve/index 14/3gf2_127total2.63 ms2.62 ms .. 2.64 msper iter
certify (Rust: AGM + sieve + order witnesses)gf2_127 agm+sieve/index 30/0gf2_127total5.08 ms5.07 ms .. 5.10 msper iter
certify (Rust: AGM + sieve + order witnesses)gf2_127 agm+sieve/index 54/2gf2_127total12.4 ms12.4 ms .. 12.5 msper iter
point count (PARI)gf2_127gf2_127total3.53 ms3.51 ms .. 3.56 msper iter
point count (PARI)edwards127edwards127total77.0 ms76.9 ms .. 77.1 msper iter
point count (PARI)edwards61x2edwards61x2total64.1 ms64.0 ms .. 64.2 msper iter
point count (PARI)twisted-goldilocks2twisted-goldilocks2total79.1 ms78.8 ms .. 79.5 msper iter
point count (PARI)twisted61x2twisted61x2total70.4 ms70.2 ms .. 70.6 msper iter
point count (PARI)twisted64x2twisted64x2total84.7 ms84.5 ms .. 84.9 msper iter
point count (PARI)weier127weier127total87.9 ms87.7 ms .. 88.2 msper iter
point count (PARI)weier61x2weier61x2total61.6 ms61.5 ms .. 61.7 msper iter
point count (Rust AGM)ordergf2_127total484 µs482 µs .. 486 µsper iter
AGM stepstablesgf2_127total1.76 ms1.75 ms .. 1.77 msper iter
AGM stepstracegf2_127total491 µs489 µs .. 493 µsper iter
Z_q ring opmulgf2_127total2.45 µs2.44 µs .. 2.46 µsper iter
Z_q ring opsigmagf2_127total2.71 µs2.70 µs .. 2.73 µsper iter
Z_q ring opsigma_invgf2_127total2.50 µs2.49 µs .. 2.51 µsper iter
Z_q ring opsquaregf2_127total1.48 µs1.47 µs .. 1.48 µsper iter
sieve, one lgf2_127/11gf2_127total365 µs364 µs .. 366 µsper iter
sieve, one lgf2_127/13gf2_127total701 µs700 µs .. 702 µsper iter
sieve, one lgf2_127/3gf2_127total3.78 µs3.77 µs .. 3.79 µsper iter
sieve, one lgf2_127/5gf2_127total18.1 µs18.0 µs .. 18.2 µsper iter
sieve, one lgf2_127/7gf2_127total63.9 µs63.7 µs .. 64.0 µsper iter
sieve, one ledwards127/11edwards127total2.47 ms2.47 ms .. 2.48 msper iter
sieve, one ledwards127/13edwards127total4.79 ms4.78 ms .. 4.80 msper iter
sieve, one ledwards127/3edwards127total15.4 µs15.3 µs .. 15.4 µsper iter
sieve, one ledwards127/5edwards127total109 µs108 µs .. 109 µsper iter
sieve, one ledwards127/7edwards127total413 µs412 µs .. 414 µsper iter
sieve, one ledwards127/8edwards127total1.13 µs1.13 µs .. 1.14 µsper iter
sieve, one lweier127/11weier127total2.47 ms2.47 ms .. 2.48 msper iter
sieve, one lweier127/13weier127total4.79 ms4.78 ms .. 4.79 msper iter
sieve, one lweier127/2weier127total9.75 µs9.73 µs .. 9.76 µsper iter
sieve, one lweier127/3weier127total15.3 µs15.2 µs .. 15.3 µsper iter
sieve, one lweier127/5weier127total109 µs109 µs .. 109 µsper iter
sieve, one lweier127/7weier127total411 µs410 µs .. 411 µsper iter
sieve, per candidategf2_127/7gf2_127per-element42.8 µs42.8 µs .. 42.9 µsper elem
sieve, per candidateedwards127/13edwards127per-element1.70 ms1.70 ms .. 1.70 msper elem
sieve, per candidateweier127/13weier127per-element1.05 ms1.05 ms .. 1.05 msper elem
Lower bound, every family

One hash plus an addition to each of the cells an item maps to in a sketch of cells (: ; : ; : ; : ; : ), from each family’s fastest hash and addition in any representation, without conversions; the only estimate for families without group-trait benchmarks.

familyhashinghashhash timeaddadd timem=5m=20m=150m=1350m=12150
xorone at a timesha256 (XOR baseline)53.4 nsxor-sha256/xor 32B, 1 accumulator0.26 ns54.1 ns54.8 ns55.7 ns56.9 ns58.0 ns
gf2_109one at a timegf2_109/pornin map x1675 nsbinary.109/mode=throughput20.4 ns734 ns783 ns862 ns951 ns1.04 µs
gf2_109batchedgf2_109/pornin map x1, batched114 nsbinary.109/mode=throughput20.4 ns173 ns222 ns301 ns390 ns480 ns
gf2_109-lambdaone at a timegf2_109-lambda/pornin map x1 to (x, λ)655 nsbinary-lambda.109/mode=throughput18.9 ns710 ns755 ns829 ns911 ns994 ns
gf2_109-lambdabatchedgf2_109-lambda/pornin map x1 to (x, λ), batched105 nsbinary-lambda.109/mode=throughput18.9 ns159 ns205 ns278 ns361 ns444 ns
gf2_109-uone at a timegf2_109-u/pornin map x1 to (u, v)657 nsbinary-u.109/mode=throughput13.5 ns697 ns729 ns782 ns841 ns900 ns
gf2_109-ubatchedgf2_109-u/pornin map x1 to (u, v), batched110 nsbinary-u.109/mode=throughput13.5 ns149 ns181 ns234 ns293 ns352 ns
gf2_109-wone at a timegf2_109-w/pornin map x1 to (x, λ)652 nsbinary-w.109/mode=throughput18.9 ns707 ns752 ns826 ns909 ns992 ns
gf2_109-wbatchedgf2_109-w/pornin map x1 to (x, λ), batched104 nsbinary-w.109/mode=throughput18.9 ns159 ns204 ns278 ns361 ns444 ns
gf2_122one at a timegf2_122/pornin map x1392 nsbinary.122/mode=throughput19.9 ns449 ns497 ns575 ns662 ns750 ns
gf2_122batchedgf2_122/pornin map x1, batched103 nsbinary.122/mode=throughput19.9 ns161 ns208 ns286 ns373 ns461 ns
gf2_122-glsone at a timegf2_122-gls/pornin map x1394 nsbinary.122-gls/mode=throughput19.3 ns450 ns497 ns572 ns657 ns741 ns
gf2_122-glsbatchedgf2_122-gls/pornin map x1, batched101 nsbinary.122-gls/mode=throughput19.3 ns157 ns204 ns279 ns363 ns448 ns
gf2_122-gls-lambdaone at a timegf2_122-gls-lambda/pornin map x1 to (x, λ)385 nsbinary-lambda.122-gls/mode=throughput20.3 ns443 ns492 ns571 ns660 ns749 ns
gf2_122-gls-lambdabatchedgf2_122-gls-lambda/pornin map x1 to (x, λ), batched95.0 nsbinary-lambda.122-gls/mode=throughput20.3 ns154 ns202 ns281 ns370 ns459 ns
gf2_122-gls-uone at a timegf2_122-gls-u/pornin map x1 to (u, v)390 nsbinary-u.122-gls/mode=throughput13.7 ns429 ns462 ns516 ns576 ns636 ns
gf2_122-gls-ubatchedgf2_122-gls-u/pornin map x1 to (u, v), batched97.6 nsbinary-u.122-gls/mode=throughput13.7 ns137 ns170 ns224 ns284 ns344 ns
gf2_122-gls-wone at a timegf2_122-gls-w/pornin map x1 to (x, λ)385 nsbinary-w.122-gls/mode=throughput20.3 ns444 ns492 ns572 ns660 ns750 ns
gf2_122-gls-wbatchedgf2_122-gls-w/pornin map x1 to (x, λ), batched94.6 nsbinary-w.122-gls/mode=throughput20.3 ns154 ns202 ns281 ns370 ns459 ns
gf2_122-lambdaone at a timegf2_122-lambda/pornin map x1 to (x, λ)381 nsbinary-lambda.122/mode=throughput20.2 ns440 ns488 ns568 ns656 ns745 ns
gf2_122-lambdabatchedgf2_122-lambda/pornin map x1 to (x, λ), batched95.0 nsbinary-lambda.122/mode=throughput20.2 ns154 ns202 ns281 ns370 ns459 ns
gf2_122-uone at a timegf2_122-u/pornin map x1 to (u, v)391 nsbinary-u.122/mode=throughput14.3 ns432 ns467 ns523 ns585 ns648 ns
gf2_122-ubatchedgf2_122-u/pornin map x1 to (u, v), batched99.3 nsbinary-u.122/mode=throughput14.3 ns141 ns175 ns231 ns294 ns357 ns
gf2_122-wone at a timegf2_122-w/pornin map x1 to (x, λ)381 nsbinary-w.122/mode=throughput20.5 ns440 ns489 ns570 ns659 ns749 ns
gf2_122-wbatchedgf2_122-w/pornin map x1 to (x, λ), batched95.2 nsbinary-w.122/mode=throughput20.5 ns155 ns204 ns284 ns374 ns464 ns
gf2_127one at a timegf2_127/pornin map x1256 nsbinary.127/mode=throughput19.5 ns313 ns360 ns436 ns521 ns607 ns
gf2_127batchedgf2_127/pornin map x1, batched103 nsbinary.127/mode=throughput19.5 ns159 ns206 ns282 ns368 ns454 ns
gf2_127-lambdaone at a timegf2_127-lambda/pornin map x1 to (x, λ)245 nsbinary-lambda.127/mode=throughput17.6 ns296 ns338 ns407 ns484 ns562 ns
gf2_127-lambdabatchedgf2_127-lambda/pornin map x1 to (x, λ), batched92.7 nsbinary-lambda.127/mode=throughput17.6 ns144 ns186 ns255 ns332 ns409 ns
gf2_127-uone at a timegf2_127-u/pornin map x1 to (u, v)249 nsbinary-u.127/mode=throughput13.2 ns287 ns319 ns371 ns428 ns486 ns
gf2_127-ubatchedgf2_127-u/pornin map x1 to (u, v), batched98.0 nsbinary-u.127/mode=throughput13.2 ns136 ns168 ns219 ns277 ns335 ns
gf2_127-wone at a timegf2_127-w/pornin map x1 to (x, λ)244 nsbinary-w.127/mode=throughput17.7 ns295 ns337 ns406 ns484 ns562 ns
gf2_127-wbatchedgf2_127-w/pornin map x1 to (x, λ), batched92.8 nsbinary-w.127/mode=throughput17.7 ns144 ns186 ns255 ns333 ns411 ns
edwards107one at a timeedwards.107/mode=indep919 nsedwards.107/mode=throughput27.6 ns999 ns1.06 µs1.17 µs1.29 µs1.41 µs
edwards107batchededwards.107/mode=batch,n=1024916 nsedwards.107/mode=throughput27.6 ns996 ns1.06 µs1.17 µs1.29 µs1.41 µs
edwards127one at a timeedwards.127/mode=indep1.22 µsedwards.127/mode=throughput27.5 ns1.30 µs1.37 µs1.48 µs1.60 µs1.72 µs
edwards127batchededwards.127/mode=batch,n=10241.24 µsedwards.127/mode=throughput27.5 ns1.32 µs1.38 µs1.49 µs1.61 µs1.73 µs
edwards61x2one at a timeedwards.61x2/mode=indep707 nsedwards.61x2/mode=throughput25.8 ns781 ns843 ns944 ns1.06 µs1.17 µs
edwards61x2batchededwards.61x2/mode=batch,n=1024706 nsedwards.61x2/mode=throughput25.8 ns781 ns842 ns943 ns1.06 µs1.17 µs
twisted-goldilocks2one at a timetwisted.goldilocks2/mode=indep2.21 µstwisted.goldilocks2/mode=throughput28.7 ns2.30 µs2.37 µs2.48 µs2.60 µs2.73 µs
twisted-goldilocks2batchedtwisted.goldilocks2/mode=batch,n=10242.24 µstwisted.goldilocks2/mode=throughput28.7 ns2.32 µs2.39 µs2.50 µs2.63 µs2.75 µs
twisted128one at a timetwisted.128/mode=indep1.97 µstwisted.128/mode=throughput31.1 ns2.06 µs2.13 µs2.25 µs2.39 µs2.53 µs
twisted128batchedtwisted.128/mode=batch,n=10241.96 µstwisted.128/mode=throughput31.1 ns2.05 µs2.12 µs2.25 µs2.38 µs2.52 µs
twisted61x2one at a timetwisted.61x2/mode=indep706 nstwisted.61x2/mode=throughput24.9 ns778 ns838 ns935 ns1.04 µs1.15 µs
twisted61x2batchedtwisted.61x2/mode=batch,n=1024711 nstwisted.61x2/mode=throughput24.9 ns783 ns842 ns940 ns1.05 µs1.16 µs
twisted64x2one at a timetwisted.64x2/mode=indep1.00 µstwisted.64x2/mode=throughput33.3 ns1.10 µs1.18 µs1.31 µs1.45 µs1.60 µs
twisted64x2batchedtwisted.64x2/mode=batch,n=10241.00 µstwisted.64x2/mode=throughput33.3 ns1.10 µs1.18 µs1.31 µs1.46 µs1.60 µs
weier107one at a timeweier.107/mode=indep892 nsweier.107/mode=throughput48.6 ns1.03 µs1.15 µs1.34 µs1.55 µs1.76 µs
weier107batchedweier.107/mode=batch,n=1024901 nsweier.107/mode=throughput48.6 ns1.04 µs1.16 µs1.35 µs1.56 µs1.77 µs
weier107-jacobianone at a timeweier-jacobian.107/mode=indep886 nsweier-jacobian.107/mode=throughput44.1 ns1.01 µs1.12 µs1.29 µs1.49 µs1.68 µs
weier107-jacobianbatchedweier-jacobian.107/mode=batch,n=1024893 nsweier-jacobian.107/mode=throughput44.1 ns1.02 µs1.13 µs1.30 µs1.49 µs1.69 µs
weier127one at a timeweier.127/mode=indep1.16 µsweier.127/mode=throughput58.7 ns1.33 µs1.47 µs1.70 µs1.96 µs2.22 µs
weier127batchedweier.127/mode=batch,n=10241.17 µsweier.127/mode=throughput58.7 ns1.34 µs1.48 µs1.71 µs1.96 µs2.22 µs
weier127-jacobianone at a timeweier-jacobian.127/mode=indep1.15 µsweier-jacobian.127/mode=throughput48.1 ns1.29 µs1.41 µs1.60 µs1.81 µs2.02 µs
weier127-jacobianbatchedweier-jacobian.127/mode=batch,n=10241.16 µsweier-jacobian.127/mode=throughput48.1 ns1.30 µs1.41 µs1.60 µs1.81 µs2.02 µs
weier61x2one at a timeweier.61x2/mode=indep696 nsweier.61x2/mode=throughput50.6 ns842 ns963 ns1.16 µs1.38 µs1.60 µs
weier61x2batchedweier.61x2/mode=batch,n=1024698 nsweier.61x2/mode=throughput50.6 ns844 ns965 ns1.16 µs1.38 µs1.61 µs
weier61x2-jacobianone at a timeweier-jacobian.61x2/mode=indep702 nsweier-jacobian.61x2/mode=throughput50.2 ns847 ns967 ns1.16 µs1.38 µs1.60 µs
weier61x2-jacobianbatchedweier-jacobian.61x2/mode=batch,n=1024698 nsweier-jacobian.61x2/mode=throughput50.2 ns844 ns964 ns1.16 µs1.38 µs1.60 µs
ristretto255one at a timeristretto255/hash_from_bytes<Sha512>6.03 µsristretto255/+=, 8 accumulators116 ns6.37 µs6.65 µs7.10 µs7.60 µs8.11 µs

Intel(R) Xeon(R) W-1390P @ 3.50GHz · rustc 1.98.1 · RUSTFLAGS=-C target-cpu=x86-64-v3 -C target-feature=+pclmulqdq · ef9e82d39fbf · full profile · 2026-10-08