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 Apple M4 · apple-m4 · full · ef9e82d3

Run Apple M4 · apple-m4 · full · ef9e82d3 started 2026-10-08T02:49:59Z on Apple M4 (macOS 27.0.1, arm64) and timed commit ef9e82d39fbf06c605e1740360370f0003dc4ca4, built by rustc 1.98.1 (48a229cea 2026-09-01) with RUSTFLAGS -C target-cpu=apple-m4, in the full profile.

1523 benchmarks from run Apple M4 · apple-m4 · 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 84 to 100% 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.814.1 ns (1.44× the best)13.1 ns (1.62× the best)14.0 ns (1.06× the best)61.5 ns (1.15× the best)252 ns (1.31× the best)19.2 ms (1.44× the best)14.6 ms150 µsagm+sieveRust (AGM), PARInone
gf2_127-lambdaincompleteλ-projective (X:L:Z) accumulators; Pornin x1: hash to addend; output already an addend62.814.9 ns (1.53× the best)10.1 ns (1.25× the best)14.0 ns (1.06× the best)53.5 ns (tied for the best, within noise)256 ns (1.33× the best)20.3 ms (1.52× the best)14.6 ms150 µsagm+sieveRust (AGM), PARInone
gf2_127-wincompleteλ-projective, w codec: hashes and decodes to λ-affine; Pornin x1: hash to addend; output already an addend62.814.9 ns (1.53× the best)10.3 ns (1.28× the best)15.1 ns (1.14× the best)53.5 ns (tied for the best, within noise)256 ns (1.32× the best)20.3 ms (1.52× the best)14.6 ms150 µsagm+sieveRust (AGM), PARInone
gf2_127-uunscaled (X:S:Z), w codec, direct addend hashes; Pornin x1: hash to addend; output already an addend62.810.7 ns (1.09× the best)9.17 ns (1.14× the best)18.3 ns (1.39× the best)57.2 ns (1.07× the best)202 ns (1.05× the best)14.6 ms (1.09× the best)14.6 ms150 µ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.317.8 ns (1.83× the best)15.7 ns (1.94× the best)13.5 ns (1.02× the best)62.8 ns (1.17× the best)305 ns (1.58× the best)24.3 ms (1.82× the best)17.6 ms86.8 µsagmRust (AGM), PARInone
gf2_122-lambdaincompleteλ-projective; Pornin x1: hash to addend; output already an addend60.316.6 ns (1.70× the best)11.9 ns (1.48× the best)13.5 ns (1.02× the best)53.9 ns (1.01× the best)279 ns (1.44× the best)22.6 ms (1.69× the best)17.6 ms86.8 µsagmRust (AGM), PARInone
gf2_122-wincompleteλ-projective, w codec; Pornin x1: hash to addend; output already an addend60.316.6 ns (1.70× the best)14.4 ns (1.79× the best)14.4 ns (1.09× the best)54.0 ns (1.01× the best)279 ns (1.44× the best)22.6 ms (1.69× the best)17.6 ms86.8 µsagmRust (AGM), PARIgf2_127-lambda
gf2_122-uunscaled (X:S:Z), w codec; Pornin x1: hash to addend; output already an addend60.313.1 ns (1.34× the best)12.1 ns (1.49× the best)18.7 ns (1.42× the best)57.1 ns (1.07× the best)234 ns (1.21× the best)17.8 ms (1.34× the best)17.6 ms86.8 µ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.816.8 ns (1.72× the best)15.2 ns (1.88× the best)13.2 ns (tied for the best, within noise)62.0 ns (1.16× the best)290 ns (1.50× the best)22.9 ms (1.71× the best)5.48 ms107 µsagmRust (AGM), PARInone
gf2_122-gls-lambdaincompleteλ-projective; Pornin x1: hash to addend; output already an addend59.816.6 ns (1.70× the best)11.6 ns (1.44× the best)13.2 ns (tied for the best, within noise, 1.00×)55.4 ns (1.04× the best)280 ns (1.45× the best)22.6 ms (1.69× the best)5.48 ms107 µsagmRust (AGM), PARInone
gf2_122-gls-wincompleteλ-projective, w codec; Pornin x1: hash to addend; output already an addend59.816.6 ns (1.70× the best)14.4 ns (1.79× the best)14.3 ns (1.08× the best)55.4 ns (1.04× the best)280 ns (1.45× the best)22.6 ms (1.69× the best)5.48 ms107 µsagmRust (AGM), PARIgf2_127-lambda
gf2_122-gls-uunscaled (X:S:Z), w codec; Pornin x1: hash to addend; output already an addend59.813.1 ns (1.34× the best)12.3 ns (1.52× the best)16.8 ns (1.27× the best)55.7 ns (1.04× the best)233 ns (1.21× the best)17.9 ms (1.34× the best)5.48 ms107 µsagmRust (AGM), PARInone
GF(2^109), 14 bytes
gf2_109(X:S:Z:T) extended; Pornin x1: hash to addend; output already an addend53.812.8 ns (1.32× the best)10.9 ns (1.36× the best)14.2 ns (1.08× the best)63.7 ns (1.19× the best)238 ns (1.23× the best)17.5 ms (1.31× the best)17.8 ms93.6 µsagm+factorRust (AGM), PARInone
gf2_109-lambdaincompleteλ-projective; Pornin x1: hash to addend; output already an addend53.812.0 ns (1.23× the best)8.13 ns (1.01× the best)14.1 ns (1.07× the best)55.2 ns (1.03× the best)218 ns (1.13× the best)16.4 ms (1.23× the best)17.8 ms93.6 µsagm+factorRust (AGM), PARInone
gf2_109-wincompleteλ-projective, w codec; Pornin x1: hash to addend; output already an addend53.812.0 ns (1.23× the best)10.4 ns (1.28× the best)15.5 ns (1.17× the best)54.5 ns (1.02× the best)217 ns (1.12× the best)16.3 ms (1.22× the best)17.8 ms93.6 µsagm+factorRust (AGM), PARInone
gf2_109-uunscaled (X:S:Z), w codec; Pornin x1: hash to addend; output already an addend53.89.76 ns (best)9.88 ns (1.22× the best)18.4 ns (1.39× the best)60.7 ns (1.13× the best)193 ns (best)13.3 ms (best)17.8 ms93.6 µsagm+factorRust (AGM), PARInone
F_p, p = 2^127 − 1, 16 bytes
edwards127a = 1 Edwards, extended += cached62.320.1 ns (2.06× the best)22.0 ns (2.72× the best)486 ns (36.80× the best)1.10 µs (20.50× the best)1.37 µs (7.09× the best)29.0 ms (2.17× the best)760 ms435 µspari+sievePARIgf2_127, gf2_127-lambda, gf2_127-u, gf2_127-w
weier127short Weierstrass, projective += affine63.345.4 ns (4.65× the best)10.1 ns (1.25× the best)485 ns (36.73× the best)1.04 µs (19.37× the best)1.65 µs (8.56× the best)63.3 ms (4.74× the best)888 ms210 µspari+sievePARInone
weier127-jacobianincompleteshort Weierstrass, Jacobian += affine63.337.5 ns (3.84× the best)15.7 ns (1.94× the best)485 ns (36.77× the best)1.04 µs (19.42× the best)1.55 µs (8.01× the best)52.6 ms (3.94× the best)888 ms210 µspari+sievePARInone
F_p, p = 2^107 − 1, 14 bytes
edwards107a = 1 Edwards, extended += cached52.315.5 ns (1.59× the best)20.3 ns (2.51× the best)354 ns (26.79× the best)828 ns (15.47× the best)1.04 µs (5.37× the best)22.3 ms (1.67× the best)Sagegf2_109, gf2_109-lambda, gf2_109-u, gf2_109-w, gf2_122-gls-u, gf2_122-u, gf2_127, gf2_127-lambda, gf2_127-u, gf2_127-w
weier107short Weierstrass, projective += affine53.330.5 ns (3.12× the best)11.5 ns (1.42× the best)352 ns (26.66× the best)749 ns (13.99× the best)1.16 µs (6.02× the best)42.6 ms (3.19× the best)Sagegf2_109, gf2_109-lambda, gf2_109-u, gf2_109-w, gf2_127-lambda, gf2_127-u, gf2_127-w
weier107-jacobianincompleteshort Weierstrass, Jacobian += affine53.328.7 ns (2.94× the best)15.3 ns (1.90× the best)352 ns (26.63× the best)746 ns (13.94× the best)1.13 µs (5.88× the best)40.2 ms (3.01× the best)Sagegf2_109, gf2_109-lambda, gf2_109-u, gf2_109-w, 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.823.9 ns (2.45× the best)16.0 ns (1.98× the best)952 ns (72.09× the best)1.93 µs (36.08× the best)2.25 µs (11.68× the best)35.7 ms (2.67× the best)Sagegf2_127, gf2_127-lambda, gf2_127-u, gf2_127-w, twisted64x2
F_{p²}, p = 2^61 − 1, 16 bytes
edwards61x2a = 1 Edwards, signed-x codec, extended += cached59.813.3 ns (1.37× the best)16.2 ns (2.01× the best)404 ns (30.63× the best)639 ns (11.94× the best)820 ns (4.25× the best)19.3 ms (1.45× the best)360 ms200 µspari+sievePARIgf2_122-gls-u, gf2_122-u, gf2_127-u
weier61x2short Weierstrass, signed-x codec, projective += affine60.826.8 ns (2.74× the best)8.11 ns (tied for the best, within noise, 1.00×)412 ns (31.22× the best)637 ns (11.91× the best)1.00 µs (5.18× the best)37.5 ms (2.81× the best)401 ms132 µspari+sievePARInone
weier61x2-jacobianincompleteshort Weierstrass, signed-x codec, Jacobian += affine60.831.6 ns (3.24× the best)11.7 ns (1.45× the best)413 ns (31.25× the best)638 ns (11.92× the best)1.07 µs (5.53× the best)44.2 ms (3.31× the best)401 ms132 µspari+sievePARIgf2_127-lambda, gf2_127-u, gf2_127-w
twisted61x2a = −1 Edwards modulo 2-torsion, extended += cached59.812.5 ns (1.28× the best)8.07 ns (tied for the best, within noise)420 ns (31.80× the best)636 ns (11.88× the best)805 ns (4.17× the best)18.2 ms (1.36× the best)803 ms272 µspari+sievePARInone
F_{p²}, p = 2^64 − 59, 16 bytes
twisted64x2a = −1 Edwards modulo 2-torsion, extended += cached62.817.2 ns (1.77× the best)10.3 ns (1.28× the best)718 ns (54.39× the best)1.11 µs (20.66× the best)1.34 µs (6.94× the best)25.5 ms (1.91× the best)1.33 s545 µspari+sievePARIgf2_127-lambda, gf2_127-u
F_{p²}, p = 2^64 − 2^32 + 1, 16 bytes
twisted-goldilocks2a = −1 Edwards modulo 2-torsion, extended += cached62.815.0 ns (1.54× the best)11.3 ns (1.40× the best)1.52 µs (114.99× the best)1.76 µs (32.80× the best)1.96 µs (10.14× the best)24.2 ms (1.81× the best)1.19 s596 µ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

Apple M4 · apple-m4 · full · ef9e82d3
CPUApple M4, 10 cores, 24 GiB
OSmacOS 27.0.1 (Darwin 27.0.0, arm64)
rustcrustc 1.98.1 (48a229cea 2026-09-01)
RUSTFLAGS-C target-cpu=apple-m4
field backend featuresaes, neon
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-08T02:49:59Z .. 2026-10-08T07:06:13Z

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

phaseseconds1-minute average, meanrunnable, meanrunnable, most
idle before253.471.874.0
compare6703.863.9526.0
compare1072453.893.7214.0
compare1092504.585.0311.0
compare1224105.074.7215.0
compare_fp25653.413.436.0
group36601.991.9918.0
group wide27402.282.2559.1
riblt mapping3101.781.8710.1
riblt plan202.522.754.0
riblt56802.022.0150.1
agm852.252.7512.0
sieve2252.001.914.1
curvegen902.002.066.2
curvegen searches2352.192.357.9
idle after252.662.393.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.109lead
binary-u.127lead
binary-w.109lead
binary-lambda.109lead
binary-u.122-glslead
binary-u.122lead
binary.109lead
binary.127lead
binary-w.127lead
binary-lambda.127lead
binary-lambda.122lead
binary-w.122lead
binary-w.122-glslead
binary-lambda.122-glslead
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-addendfullgf2_127gf2_127
binary-lambda.122pornin-addendbuffergf2_127gf2_127
binary-lambda.122-glspornin-addendbuffergf2_127gf2_127
binary-lambda.127pornin-addendbuffergf2_127gf2_127
binary-u.109pornin-addendfullgf2_127gf2_127
binary-u.122pornin-addendbuffergf2_127gf2_127
binary-u.122-glspornin-addendbuffergf2_127gf2_127
binary-u.127pornin-addendfullgf2_127gf2_127
binary-w.109pornin-addendfullgf2_127gf2_127
binary-w.122pornin-addendbuffergf2_127gf2_127
binary-w.122-glspornin-addendbuffergf2_127gf2_127
binary-w.127pornin-addendbuffergf2_127gf2_127
binary.109porninbuffergf2_127gf2_127
binary.122porninbuffer
binary.122-glsporninbuffer
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): 39.4 ns at , 44.6 ns at , 54.4 ns at , 68.8 ns at , 90.0 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 formulas72.9 ns (1.36× the best)3.54 ns (7.69× the best)14.1 ns (1.44× the best)157 ns (1.23× the best)195 ns (1.25× the best)260 ns (1.27× the best)336 ns (1.28× the best)419 ns (1.29× the best)
gf2_127compare suitePornin x1: hash to addend; output already an addend61.5 ns (1.15× the best)in the hash14.1 ns (1.44× the best)142 ns (1.11× the best)180 ns (1.15× the best)245 ns (1.20× the best)321 ns (1.23× the best)404 ns (1.24× the best)
gf2_127-lambdaincompleteλ-projective (X:L:Z) accumulators75.6 ns (1.41× the best)6.33 ns (13.74× the best)14.9 ns (1.53× the best)165 ns (1.29× the best)205 ns (1.31× the best)274 ns (1.34× the best)353 ns (1.35× the best)440 ns (1.35× the best)
gf2_127-lambdaincompletecompare suitehashed straight to : no prepare72.8 ns (1.36× the best)in the hash14.9 ns (1.53× the best)156 ns (1.22× the best)196 ns (1.25× the best)264 ns (1.29× the best)344 ns (1.31× the best)431 ns (1.32× the best)
gf2_127-lambdaincompletecompare suitePornin x1: hash to addend; output already an addend53.5 ns (tied for the best, within noise)in the hash14.9 ns (1.53× the best)136 ns (1.07× the best)177 ns (1.13× the best)245 ns (1.20× the best)325 ns (1.24× the best)412 ns (1.26× the best)
gf2_127-wincompleteλ-projective, w codec: hashes and decodes to λ-affine83.3 ns (1.56× the best)0.48 ns (1.05× the best)14.9 ns (1.53× the best)166 ns (1.30× the best)207 ns (1.32× the best)275 ns (1.34× the best)355 ns (1.35× the best)441 ns (1.35× the best)
gf2_127-wincompletecompare suitePornin x1: hash to addend; output already an addend53.5 ns (tied for the best, within noise)in the hash14.9 ns (1.53× the best)136 ns (1.07× the best)177 ns (1.13× the best)245 ns (1.20× the best)324 ns (1.24× the best)411 ns (1.26× the best)
gf2_127-uunscaled (X:S:Z), w codec, direct addend hashes85.8 ns (1.60× the best)0.49 ns (1.06× the best)10.7 ns (1.09× the best)157 ns (1.23× the best)187 ns (1.19× the best)239 ns (1.17× the best)300 ns (1.14× the best)368 ns (1.13× the best)
gf2_127-ucompare suitePornin x1: hash to addend; output already an addend57.2 ns (1.07× the best)in the hash10.7 ns (1.09× the best)128 ns (tied for the best, within noise)158 ns (tied for the best, within noise, 1.01×)210 ns (1.02× the best)271 ns (1.03× the best)339 ns (1.04× the best)
GF(2^122) = GF(2^61)[u], dense constant, 16 bytes
gf2_122(X:S:Z:T) extended74.9 ns (1.40× the best)5.02 ns (10.91× the best)17.8 ns (1.83× the best)171 ns (1.34× the best)219 ns (1.40× the best)298 ns (1.46× the best)391 ns (1.49× the best)490 ns (1.50× the best)
gf2_122compare suitePornin x1: hash to addend; output already an addend62.8 ns (1.17× the best)in the hash17.8 ns (1.83× the best)154 ns (1.21× the best)202 ns (1.29× the best)281 ns (1.37× the best)374 ns (1.43× the best)473 ns (1.45× the best)
gf2_122-lambdaincompleteλ-projective74.9 ns (1.40× the best)7.55 ns (16.38× the best)16.6 ns (1.70× the best)170 ns (1.33× the best)215 ns (1.37× the best)289 ns (1.41× the best)376 ns (1.44× the best)470 ns (1.44× the best)
gf2_122-lambdaincompletecompare suitehashed straight to : no prepare72.3 ns (1.35× the best)in the hash16.6 ns (1.70× the best)160 ns (1.25× the best)204 ns (1.30× the best)279 ns (1.36× the best)366 ns (1.40× the best)460 ns (1.41× the best)
gf2_122-lambdaincompletecompare suitePornin x1: hash to addend; output already an addend53.9 ns (1.01× the best)in the hash16.6 ns (1.70× the best)141 ns (1.11× the best)186 ns (1.19× the best)261 ns (1.27× the best)347 ns (1.33× the best)441 ns (1.35× the best)
gf2_122-wincompleteλ-projective, w codec76.8 ns (1.43× the best)0.46 ns (tied for the best, within noise)16.6 ns (1.70× the best)165 ns (1.29× the best)209 ns (1.34× the best)284 ns (1.39× the best)371 ns (1.42× the best)465 ns (1.43× the best)
gf2_122-wincompletecompare suitePornin x1: hash to addend; output already an addend54.0 ns (1.01× the best)in the hash16.6 ns (1.70× the best)141 ns (1.11× the best)186 ns (1.19× the best)261 ns (1.27× the best)348 ns (1.33× the best)442 ns (1.35× the best)
gf2_122-uunscaled (X:S:Z), w codec87.6 ns (1.64× the best)0.48 ns (1.04× the best)13.1 ns (1.34× the best)165 ns (1.30× the best)202 ns (1.29× the best)263 ns (1.28× the best)334 ns (1.28× the best)413 ns (1.27× the best)
gf2_122-ucompare suitePornin x1: hash to addend; output already an addend57.1 ns (1.07× the best)in the hash13.1 ns (1.34× the best)134 ns (1.05× the best)171 ns (1.09× the best)232 ns (1.13× the best)303 ns (1.16× the best)382 ns (1.17× the best)
GF(2^122), constant in GF(2^61) (GLS-shaped), 16 bytes
gf2_122-gls(X:S:Z:T) extended74.7 ns (1.40× the best)4.44 ns (9.63× the best)16.8 ns (1.72× the best)167 ns (1.31× the best)213 ns (1.35× the best)288 ns (1.41× the best)376 ns (1.43× the best)471 ns (1.44× the best)
gf2_122-glscompare suitePornin x1: hash to addend; output already an addend62.0 ns (1.16× the best)in the hash16.8 ns (1.72× the best)150 ns (1.18× the best)195 ns (1.25× the best)271 ns (1.32× the best)358 ns (1.37× the best)453 ns (1.39× the best)
gf2_122-gls-lambdaincompleteλ-projective76.5 ns (1.43× the best)7.53 ns (16.36× the best)16.6 ns (1.70× the best)171 ns (1.34× the best)216 ns (1.38× the best)291 ns (1.42× the best)378 ns (1.44× the best)472 ns (1.45× the best)
gf2_122-gls-lambdaincompletecompare suitehashed straight to : no prepare73.8 ns (1.38× the best)in the hash16.6 ns (1.70× the best)161 ns (1.26× the best)206 ns (1.31× the best)281 ns (1.37× the best)367 ns (1.40× the best)461 ns (1.42× the best)
gf2_122-gls-lambdaincompletecompare suitePornin x1: hash to addend; output already an addend55.4 ns (1.04× the best)in the hash16.6 ns (1.70× the best)143 ns (1.12× the best)188 ns (1.20× the best)262 ns (1.28× the best)349 ns (1.33× the best)443 ns (1.36× the best)
gf2_122-gls-wincompleteλ-projective, w codec78.6 ns (1.47× the best)0.49 ns (1.06× the best)16.6 ns (1.70× the best)167 ns (1.31× the best)211 ns (1.35× the best)286 ns (1.40× the best)373 ns (1.42× the best)467 ns (1.43× the best)
gf2_122-gls-wincompletecompare suitePornin x1: hash to addend; output already an addend55.4 ns (1.04× the best)in the hash16.6 ns (1.70× the best)143 ns (1.12× the best)188 ns (1.20× the best)262 ns (1.28× the best)349 ns (1.33× the best)443 ns (1.36× the best)
gf2_122-gls-uunscaled (X:S:Z), w codec80.2 ns (1.50× the best)0.48 ns (1.04× the best)13.1 ns (1.34× the best)158 ns (1.24× the best)195 ns (1.24× the best)255 ns (1.25× the best)327 ns (1.25× the best)406 ns (1.25× the best)
gf2_122-gls-ucompare suitePornin x1: hash to addend; output already an addend55.7 ns (1.04× the best)in the hash13.1 ns (1.34× the best)133 ns (1.04× the best)170 ns (1.08× the best)231 ns (1.13× the best)302 ns (1.15× the best)381 ns (1.17× the best)
GF(2^109), 14 bytes
gf2_109(X:S:Z:T) extended81.7 ns (1.53× the best)2.79 ns (6.06× the best)12.8 ns (1.32× the best)161 ns (1.26× the best)197 ns (1.26× the best)257 ns (1.25× the best)328 ns (1.25× the best)405 ns (1.24× the best)
gf2_109compare suitePornin x1: hash to addend; output already an addend63.7 ns (1.19× the best)in the hash12.8 ns (1.32× the best)140 ns (1.10× the best)176 ns (1.12× the best)236 ns (1.15× the best)307 ns (1.17× the best)385 ns (1.18× the best)
gf2_109-lambdaincompleteλ-projective82.0 ns (1.53× the best)5.17 ns (11.22× the best)12.0 ns (1.23× the best)161 ns (1.27× the best)195 ns (1.24× the best)252 ns (1.23× the best)319 ns (1.22× the best)392 ns (1.20× the best)
gf2_109-lambdaincompletecompare suitehashed straight to : no prepare77.6 ns (1.45× the best)in the hash12.0 ns (1.23× the best)152 ns (1.19× the best)186 ns (1.18× the best)242 ns (1.18× the best)309 ns (1.18× the best)383 ns (1.17× the best)
gf2_109-lambdaincompletecompare suitePornin x1: hash to addend; output already an addend55.2 ns (1.03× the best)in the hash12.0 ns (1.23× the best)129 ns (1.01× the best)163 ns (1.04× the best)220 ns (1.07× the best)287 ns (1.09× the best)361 ns (1.11× the best)
gf2_109-wincompleteλ-projective, w codec79.4 ns (1.48× the best)0.48 ns (1.04× the best)12.0 ns (1.23× the best)154 ns (1.21× the best)188 ns (1.20× the best)244 ns (1.19× the best)311 ns (1.19× the best)385 ns (1.18× the best)
gf2_109-wincompletecompare suitePornin x1: hash to addend; output already an addend54.5 ns (1.02× the best)in the hash12.0 ns (1.23× the best)129 ns (tied for the best, within noise, 1.01×)162 ns (1.04× the best)219 ns (1.07× the best)286 ns (1.09× the best)360 ns (1.10× the best)
gf2_109-uunscaled (X:S:Z), w codec81.2 ns (1.52× the best)0.49 ns (1.05× the best)9.76 ns (tied for the best, within noise)149 ns (1.17× the best)178 ns (1.13× the best)226 ns (1.10× the best)283 ns (1.08× the best)347 ns (1.06× the best)
gf2_109-ucompare suitePornin x1: hash to addend; output already an addend60.7 ns (1.13× the best)in the hash9.76 ns (tied for the best, within noise)128 ns (tied for the best, within noise, 1.01×)157 ns (tied for the best, within noise)205 ns (best)262 ns (best)326 ns (best)
F_p, p = 2^127 − 1, 16 bytes
edwards127a = 1 Edwards, extended += cached1.07 µs (19.97× the best)28.3 ns (61.37× the best)20.1 ns (2.06× the best)1.19 µs (9.37× the best)1.25 µs (7.95× the best)1.34 µs (6.52× the best)1.44 µs (5.49× the best)1.55 µs (4.75× the best)
weier127short Weierstrass, projective += affine1.04 µs (19.36× the best)0.46 ns (tied for the best, within noise, 1.00×)45.4 ns (4.65× the best)1.21 µs (9.47× the best)1.32 µs (8.42× the best)1.51 µs (7.36× the best)1.72 µs (6.57× the best)1.94 µs (5.96× the best)
weier127-jacobianincompleteshort Weierstrass, Jacobian += affine1.04 µs (19.41× the best)0.49 ns (1.06× the best)37.5 ns (3.84× the best)1.19 µs (9.31× the best)1.28 µs (8.17× the best)1.44 µs (7.02× the best)1.62 µs (6.17× the best)1.80 µs (5.53× the best)
F_p, p = 2^107 − 1, 14 bytes
edwards107a = 1 Edwards, extended += cached805 ns (15.04× the best)22.7 ns (49.36× the best)15.5 ns (1.59× the best)912 ns (7.15× the best)954 ns (6.08× the best)1.02 µs (5.00× the best)1.11 µs (4.23× the best)1.20 µs (3.67× the best)
weier107short Weierstrass, projective += affine748 ns (13.98× the best)0.49 ns (1.07× the best)30.5 ns (3.12× the best)876 ns (6.87× the best)954 ns (6.08× the best)1.08 µs (5.29× the best)1.23 µs (4.70× the best)1.39 µs (4.25× the best)
weier107-jacobianincompleteshort Weierstrass, Jacobian += affine745 ns (13.93× the best)0.48 ns (1.04× the best)28.7 ns (2.94× the best)868 ns (6.81× the best)942 ns (6.01× the best)1.06 µs (5.19× the best)1.20 µs (4.60× the best)1.35 µs (4.14× the best)
F_p, p = 2^128 − 275, 16 bytes
twisted128a = −1 twisted Edwards modulo 2-torsion, extended += cached1.92 µs (35.93× the best)8.08 ns (17.55× the best)23.9 ns (2.45× the best)2.04 µs (15.99× the best)2.10 µs (13.40× the best)2.20 µs (10.77× the best)2.32 µs (8.87× the best)2.45 µs (7.51× the best)
F_{p²}, p = 2^61 − 1, 16 bytes
edwards61x2a = 1 Edwards, signed-x codec, extended += cached620 ns (11.59× the best)18.8 ns (40.87× the best)13.3 ns (1.37× the best)717 ns (5.62× the best)754 ns (4.81× the best)816 ns (3.98× the best)889 ns (3.39× the best)969 ns (2.97× the best)
weier61x2short Weierstrass, signed-x codec, projective += affine637 ns (11.90× the best)0.72 ns (1.56× the best)26.8 ns (2.74× the best)754 ns (5.92× the best)824 ns (5.25× the best)938 ns (4.58× the best)1.07 µs (4.08× the best)1.21 µs (3.71× the best)
weier61x2-jacobianincompleteshort Weierstrass, signed-x codec, Jacobian += affine638 ns (11.91× the best)0.54 ns (1.18× the best)31.6 ns (3.24× the best)769 ns (6.03× the best)850 ns (5.42× the best)984 ns (4.80× the best)1.14 µs (4.34× the best)1.30 µs (3.98× the best)
twisted61x2a = −1 Edwards modulo 2-torsion, extended += cached632 ns (11.81× the best)3.60 ns (7.81× the best)12.5 ns (1.28× the best)711 ns (5.58× the best)746 ns (4.76× the best)805 ns (3.93× the best)874 ns (3.34× the best)950 ns (2.91× the best)
F_{p²}, p = 2^64 − 59, 16 bytes
twisted64x2a = −1 Edwards modulo 2-torsion, extended += cached1.10 µs (20.55× the best)5.51 ns (11.96× the best)17.2 ns (1.77× the best)1.19 µs (9.37× the best)1.24 µs (7.91× the best)1.32 µs (6.44× the best)1.41 µs (5.38× the best)1.51 µs (4.62× the best)
F_{p²}, p = 2^64 − 2^32 + 1, 16 bytes
twisted-goldilocks2a = −1 Edwards modulo 2-torsion, extended += cached1.75 µs (32.71× the best)4.51 ns (9.78× the best)15.0 ns (1.54× the best)1.84 µs (14.41× the best)1.88 µs (11.98× the best)1.95 µs (9.51× the best)2.03 µs (7.74× the best)2.11 µs (6.49× 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 prepare24.2 nsin the hash0.71 ns65.6 ns72.5 ns85.1 ns103 ns127 ns
GF(2^127), 16 bytes
gf2_127(X:S:Z:T) extended accumulators, Pornin's formulas779 ns (2.47× the best)3.88 ns (6.33× the best)14.1 ns (1.44× the best)863 ns (2.18× the best)902 ns (2.08× the best)967 ns (1.96× the best)1.04 µs (1.84× the best)1.13 µs (1.75× the best)
gf2_127compare suitePornin x1: hash to addend; output already an addend485 ns (1.54× the best)in the hash14.1 ns (1.44× the best)566 ns (1.43× the best)604 ns (1.40× the best)669 ns (1.36× the best)745 ns (1.32× the best)828 ns (1.29× the best)
gf2_127compare suitePornin x2: hash to addend; output already an addend916 ns (2.91× the best)in the hash14.1 ns (1.44× the best)996 ns (2.51× the best)1.03 µs (2.39× the best)1.10 µs (2.23× the best)1.18 µs (2.08× the best)1.26 µs (1.95× the best)
gf2_127-lambdaincompleteλ-projective (X:L:Z) accumulators806 ns (2.56× the best)340 ns (553.91× the best)14.9 ns (1.53× the best)1.23 µs (3.10× the best)1.27 µs (2.93× the best)1.34 µs (2.71× the best)1.42 µs (2.51× the best)1.50 µs (2.33× the best)
gf2_127-lambdaincompletecompare suitehashed straight to : no prepare761 ns (2.42× the best)in the hash14.9 ns (1.53× the best)843 ns (2.13× the best)884 ns (2.04× the best)952 ns (1.93× the best)1.03 µs (1.83× the best)1.12 µs (1.74× the best)
gf2_127-lambdaincompletecompare suitePornin x1: hash to addend; output already an addend456 ns (1.45× the best)in the hash14.9 ns (1.53× the best)538 ns (1.36× the best)579 ns (1.34× the best)647 ns (1.31× the best)727 ns (1.29× the best)814 ns (1.26× the best)
gf2_127-wincompleteλ-projective, w codec: hashes and decodes to λ-affine865 ns (2.75× the best)0.63 ns (1.02× the best)14.9 ns (1.53× the best)948 ns (2.39× the best)989 ns (2.28× the best)1.06 µs (2.14× the best)1.14 µs (2.01× the best)1.22 µs (1.90× the best)
gf2_127-wincompletecompare suitePornin x1: hash to addend; output already an addend455 ns (1.44× the best)in the hash14.9 ns (1.53× the best)538 ns (1.36× the best)578 ns (1.34× the best)646 ns (1.31× the best)726 ns (1.28× the best)812 ns (1.26× the best)
gf2_127-uunscaled (X:S:Z), w codec, direct addend hashes869 ns (2.76× the best)0.63 ns (1.03× the best)10.7 ns (1.09× the best)940 ns (2.37× the best)971 ns (2.24× the best)1.02 µs (2.07× the best)1.08 µs (1.92× the best)1.15 µs (1.79× the best)
gf2_127-ucompare suitePornin x1: hash to addend; output already an addend461 ns (1.46× the best)in the hash10.7 ns (1.09× the best)531 ns (1.34× the best)562 ns (1.30× the best)613 ns (1.24× the best)674 ns (1.19× the best)742 ns (1.15× the best)
GF(2^122) = GF(2^61)[u], dense constant, 16 bytes
gf2_122(X:S:Z:T) extended510 ns (1.62× the best)4.92 ns (8.02× the best)17.8 ns (1.83× the best)606 ns (1.53× the best)653 ns (1.51× the best)733 ns (1.48× the best)825 ns (1.46× the best)925 ns (1.44× the best)
gf2_122compare suitePornin x1: hash to addend; output already an addend373 ns (1.18× the best)in the hash17.8 ns (1.83× the best)464 ns (1.17× the best)512 ns (1.18× the best)591 ns (1.20× the best)684 ns (1.21× the best)783 ns (1.22× the best)
gf2_122-lambdaincompleteλ-projective509 ns (1.62× the best)166 ns (271.21× the best)16.6 ns (1.70× the best)762 ns (1.92× the best)807 ns (1.86× the best)882 ns (1.79× the best)968 ns (1.71× the best)1.06 µs (1.65× the best)
gf2_122-lambdaincompletecompare suitehashed straight to : no prepare520 ns (1.65× the best)in the hash16.6 ns (1.70× the best)607 ns (1.53× the best)652 ns (1.51× the best)727 ns (1.47× the best)813 ns (1.44× the best)907 ns (1.41× the best)
gf2_122-lambdaincompletecompare suitePornin x1: hash to addend; output already an addend326 ns (1.04× the best)in the hash16.6 ns (1.70× the best)414 ns (1.04× the best)459 ns (1.06× the best)533 ns (1.08× the best)620 ns (1.10× the best)714 ns (1.11× the best)
gf2_122-wincompleteλ-projective, w codec517 ns (1.64× the best)0.63 ns (1.03× the best)16.6 ns (1.70× the best)605 ns (1.53× the best)650 ns (1.50× the best)724 ns (1.47× the best)811 ns (1.43× the best)905 ns (1.40× the best)
gf2_122-wincompletecompare suitePornin x1: hash to addend; output already an addend326 ns (1.04× the best)in the hash16.6 ns (1.70× the best)414 ns (1.04× the best)459 ns (1.06× the best)533 ns (1.08× the best)620 ns (1.10× the best)714 ns (1.11× the best)
gf2_122-uunscaled (X:S:Z), w codec531 ns (1.69× the best)0.61 ns (tied for the best, within noise, 1.00×)13.1 ns (1.34× the best)609 ns (1.54× the best)646 ns (1.49× the best)706 ns (1.43× the best)778 ns (1.38× the best)857 ns (1.33× the best)
gf2_122-ucompare suitePornin x1: hash to addend; output already an addend326 ns (1.03× the best)in the hash13.1 ns (1.34× the best)403 ns (1.02× the best)440 ns (1.02× the best)500 ns (1.01× the best)572 ns (1.01× the best)651 ns (1.01× the best)
GF(2^122), constant in GF(2^61) (GLS-shaped), 16 bytes
gf2_122-gls(X:S:Z:T) extended535 ns (1.70× the best)4.31 ns (7.02× the best)16.8 ns (1.72× the best)628 ns (1.58× the best)673 ns (1.55× the best)748 ns (1.52× the best)836 ns (1.48× the best)931 ns (1.44× the best)
gf2_122-glscompare suitePornin x1: hash to addend; output already an addend369 ns (1.17× the best)in the hash16.8 ns (1.72× the best)457 ns (1.15× the best)502 ns (1.16× the best)577 ns (1.17× the best)665 ns (1.18× the best)760 ns (1.18× the best)
gf2_122-gls-lambdaincompleteλ-projective515 ns (1.64× the best)167 ns (273.01× the best)16.6 ns (1.70× the best)770 ns (1.94× the best)815 ns (1.88× the best)889 ns (1.80× the best)976 ns (1.73× the best)1.07 µs (1.66× the best)
gf2_122-gls-lambdaincompletecompare suitehashed straight to : no prepare504 ns (1.60× the best)in the hash16.6 ns (1.70× the best)592 ns (1.49× the best)637 ns (1.47× the best)711 ns (1.44× the best)798 ns (1.41× the best)892 ns (1.38× the best)
gf2_122-gls-lambdaincompletecompare suitePornin x1: hash to addend; output already an addend315 ns (tied for the best, within noise)in the hash16.6 ns (1.70× the best)402 ns (1.01× the best)447 ns (1.03× the best)522 ns (1.06× the best)608 ns (1.08× the best)703 ns (1.09× the best)
gf2_122-gls-wincompleteλ-projective, w codec509 ns (1.62× the best)0.63 ns (1.03× the best)16.6 ns (1.70× the best)597 ns (1.51× the best)642 ns (1.48× the best)716 ns (1.45× the best)803 ns (1.42× the best)897 ns (1.39× the best)
gf2_122-gls-wincompletecompare suitePornin x1: hash to addend; output already an addend316 ns (tied for the best, within noise, 1.00×)in the hash16.6 ns (1.70× the best)403 ns (1.02× the best)448 ns (1.03× the best)522 ns (1.06× the best)609 ns (1.08× the best)703 ns (1.09× the best)
gf2_122-gls-uunscaled (X:S:Z), w codec522 ns (1.66× the best)0.63 ns (1.02× the best)13.1 ns (1.34× the best)600 ns (1.51× the best)637 ns (1.47× the best)698 ns (1.41× the best)769 ns (1.36× the best)848 ns (1.32× the best)
gf2_122-gls-ucompare suitePornin x1: hash to addend; output already an addend319 ns (1.01× the best)in the hash13.1 ns (1.34× the best)396 ns (best)433 ns (best)494 ns (best)565 ns (best)644 ns (best)
GF(2^109), 14 bytes
gf2_109(X:S:Z:T) extended870 ns (2.76× the best)2.77 ns (4.51× the best)12.8 ns (1.32× the best)949 ns (2.40× the best)985 ns (2.28× the best)1.05 µs (2.12× the best)1.12 µs (1.97× the best)1.19 µs (1.85× the best)
gf2_109compare suitePornin x1: hash to addend; output already an addend560 ns (1.78× the best)in the hash12.8 ns (1.32× the best)637 ns (1.61× the best)673 ns (1.55× the best)733 ns (1.48× the best)803 ns (1.42× the best)881 ns (1.37× the best)
gf2_109-lambdaincompleteλ-projective873 ns (2.77× the best)349 ns (568.88× the best)12.0 ns (1.23× the best)1.30 µs (3.27× the best)1.33 µs (3.07× the best)1.39 µs (2.81× the best)1.45 µs (2.57× the best)1.53 µs (2.37× the best)
gf2_109-lambdaincompletecompare suitehashed straight to : no prepare938 ns (2.98× the best)in the hash12.0 ns (1.23× the best)1.01 µs (2.55× the best)1.05 µs (2.42× the best)1.10 µs (2.23× the best)1.17 µs (2.07× the best)1.24 µs (1.93× the best)
gf2_109-lambdaincompletecompare suitePornin x1: hash to addend; output already an addend550 ns (1.75× the best)in the hash12.0 ns (1.23× the best)624 ns (1.58× the best)658 ns (1.52× the best)715 ns (1.45× the best)782 ns (1.38× the best)856 ns (1.33× the best)
gf2_109-wincompleteλ-projective, w codec855 ns (2.72× the best)0.61 ns (tied for the best, within noise)12.0 ns (1.23× the best)930 ns (2.35× the best)964 ns (2.23× the best)1.02 µs (2.07× the best)1.09 µs (1.92× the best)1.16 µs (1.80× the best)
gf2_109-wincompletecompare suitePornin x1: hash to addend; output already an addend535 ns (1.70× the best)in the hash12.0 ns (1.23× the best)609 ns (1.54× the best)643 ns (1.48× the best)699 ns (1.42× the best)766 ns (1.35× the best)840 ns (1.30× the best)
gf2_109-uunscaled (X:S:Z), w codec874 ns (2.77× the best)0.63 ns (1.02× the best)9.76 ns (tied for the best, within noise)942 ns (2.38× the best)970 ns (2.24× the best)1.02 µs (2.06× the best)1.08 µs (1.90× the best)1.14 µs (1.77× the best)
gf2_109-ucompare suitePornin x1: hash to addend; output already an addend533 ns (1.69× the best)in the hash9.76 ns (tied for the best, within noise)600 ns (1.51× the best)629 ns (1.45× the best)677 ns (1.37× the best)734 ns (1.30× the best)798 ns (1.24× the best)
F_p, p = 2^127 − 1, 16 bytes
edwards127a = 1 Edwards, extended += cached1.07 µs (3.39× the best)582 ns (948.36× the best)20.1 ns (2.06× the best)1.75 µs (4.41× the best)1.80 µs (4.16× the best)1.89 µs (3.83× the best)1.99 µs (3.52× the best)2.10 µs (3.26× the best)
edwards127compare suiteElligator 2 x1: hash + prepare1.29 µs (4.08× the best)582 ns (948.36× the best)20.1 ns (2.06× the best)1.96 µs (4.96× the best)2.02 µs (4.66× the best)2.11 µs (4.26× the best)2.21 µs (3.90× the best)2.32 µs (3.60× the best)
weier127short Weierstrass, projective += affine1.03 µs (3.26× the best)0.61 ns (tied for the best, within noise, 1.00×)45.4 ns (4.65× the best)1.20 µs (3.02× the best)1.31 µs (3.03× the best)1.50 µs (3.04× the best)1.71 µs (3.03× the best)1.93 µs (3.00× the best)
weier127compare suiteSSWU x1: hash + prepare1.10 µs (3.50× the best)0.61 ns (tied for the best, within noise, 1.00×)45.4 ns (4.65× the best)1.27 µs (3.21× the best)1.39 µs (3.20× the best)1.57 µs (3.19× the best)1.79 µs (3.16× the best)2.01 µs (3.12× the best)
weier127-jacobianincompleteshort Weierstrass, Jacobian += affine1.03 µs (3.28× the best)0.62 ns (tied for the best, within noise, 1.01×)37.5 ns (3.84× the best)1.18 µs (2.98× the best)1.28 µs (2.95× the best)1.43 µs (2.90× the best)1.61 µs (2.85× the best)1.80 µs (2.79× the best)
F_p, p = 2^107 − 1, 14 bytes
edwards107a = 1 Edwards, extended += cached806 ns (2.56× the best)546 ns (889.89× the best)15.5 ns (1.59× the best)1.44 µs (3.62× the best)1.48 µs (3.41× the best)1.55 µs (3.14× the best)1.63 µs (2.88× the best)1.72 µs (2.67× the best)
edwards107compare suiteElligator 2 x1: hash + prepare1.07 µs (3.38× the best)546 ns (889.89× the best)15.5 ns (1.59× the best)1.70 µs (4.28× the best)1.74 µs (4.01× the best)1.81 µs (3.66× the best)1.89 µs (3.34× the best)1.98 µs (3.07× the best)
weier107short Weierstrass, projective += affine746 ns (2.37× the best)0.62 ns (tied for the best, within noise, 1.01×)30.5 ns (3.12× the best)874 ns (2.21× the best)952 ns (2.20× the best)1.08 µs (2.19× the best)1.23 µs (2.17× the best)1.38 µs (2.15× the best)
weier107compare suiteSSWU x1: hash + prepare1.04 µs (3.30× the best)0.62 ns (tied for the best, within noise, 1.01×)30.5 ns (3.12× the best)1.17 µs (2.95× the best)1.25 µs (2.88× the best)1.37 µs (2.78× the best)1.52 µs (2.69× the best)1.68 µs (2.60× the best)
weier107-jacobianincompleteshort Weierstrass, Jacobian += affine742 ns (2.36× the best)0.62 ns (tied for the best, within noise, 1.00×)28.7 ns (2.94× the best)866 ns (2.18× the best)939 ns (2.17× the best)1.06 µs (2.15× the best)1.20 µs (2.12× the best)1.35 µs (2.09× the best)
F_p, p = 2^128 − 275, 16 bytes
twisted128a = −1 twisted Edwards modulo 2-torsion, extended += cached1.92 µs (6.11× the best)8.24 ns (13.43× the best)23.9 ns (2.45× the best)2.04 µs (5.15× the best)2.10 µs (4.86× the best)2.21 µs (4.47× the best)2.33 µs (4.11× the best)2.45 µs (3.81× the best)
twisted128compare suiteElligator 2 x1: hash + prepare3.32 µs (10.55× the best)8.24 ns (13.43× the best)23.9 ns (2.45× the best)3.44 µs (8.68× the best)3.50 µs (8.09× the best)3.60 µs (7.30× the best)3.72 µs (6.58× the best)3.85 µs (5.98× the best)
F_{p²}, p = 2^61 − 1, 16 bytes
edwards61x2a = 1 Edwards, signed-x codec, extended += cached624 ns (1.98× the best)216 ns (352.47× the best)13.3 ns (1.37× the best)918 ns (2.32× the best)956 ns (2.21× the best)1.02 µs (2.06× the best)1.09 µs (1.93× the best)1.17 µs (1.82× the best)
edwards61x2compare suiteElligator 2 x1: hash + prepare734 ns (2.33× the best)216 ns (352.47× the best)13.3 ns (1.37× the best)1.03 µs (2.59× the best)1.07 µs (2.46× the best)1.13 µs (2.28× the best)1.20 µs (2.12× the best)1.28 µs (1.99× the best)
weier61x2short Weierstrass, signed-x codec, projective += affine637 ns (2.02× the best)0.63 ns (1.02× the best)26.8 ns (2.74× the best)755 ns (1.90× the best)824 ns (1.90× the best)938 ns (1.90× the best)1.07 µs (1.89× the best)1.21 µs (1.88× the best)
weier61x2compare suiteSSWU x1: hash + prepare703 ns (2.23× the best)0.63 ns (1.02× the best)26.8 ns (2.74× the best)820 ns (2.07× the best)889 ns (2.05× the best)1.00 µs (2.03× the best)1.14 µs (2.01× the best)1.27 µs (1.98× the best)
weier61x2-jacobianincompleteshort Weierstrass, signed-x codec, Jacobian += affine638 ns (2.03× the best)0.63 ns (1.02× the best)31.6 ns (3.24× the best)770 ns (1.94× the best)851 ns (1.97× the best)985 ns (1.99× the best)1.14 µs (2.01× the best)1.30 µs (2.01× the best)
twisted61x2a = −1 Edwards modulo 2-torsion, extended += cached630 ns (2.00× the best)3.41 ns (5.55× the best)12.5 ns (1.28× the best)709 ns (1.79× the best)744 ns (1.72× the best)803 ns (1.63× the best)872 ns (1.54× the best)948 ns (1.47× the best)
twisted61x2compare suiteElligator 2 x1: hash + prepare892 ns (2.83× the best)3.41 ns (5.55× the best)12.5 ns (1.28× the best)971 ns (2.45× the best)1.01 µs (2.33× the best)1.07 µs (2.16× the best)1.13 µs (2.01× the best)1.21 µs (1.88× the best)
F_{p²}, p = 2^64 − 59, 16 bytes
twisted64x2a = −1 Edwards modulo 2-torsion, extended += cached1.10 µs (3.49× the best)5.43 ns (8.85× the best)17.2 ns (1.77× the best)1.19 µs (3.01× the best)1.24 µs (2.86× the best)1.32 µs (2.67× the best)1.41 µs (2.49× the best)1.50 µs (2.33× the best)
twisted64x2compare suiteElligator 2 x1: hash + prepare1.53 µs (4.85× the best)5.43 ns (8.85× the best)17.2 ns (1.77× the best)1.62 µs (4.09× the best)1.67 µs (3.85× the best)1.75 µs (3.53× the best)1.84 µs (3.25× the best)1.93 µs (3.00× the best)
F_{p²}, p = 2^64 − 2^32 + 1, 16 bytes
twisted-goldilocks2a = −1 Edwards modulo 2-torsion, extended += cached1.73 µs (5.50× the best)4.48 ns (7.30× the best)15.0 ns (1.54× the best)1.82 µs (4.59× the best)1.86 µs (4.30× the best)1.93 µs (3.90× the best)2.01 µs (3.55× the best)2.10 µs (3.25× the best)
twisted-goldilocks2compare suiteElligator 2 x1: hash + prepare2.16 µs (6.87× the best)4.48 ns (7.30× the best)15.0 ns (1.54× the best)2.25 µs (5.68× the best)2.29 µs (5.29× the best)2.36 µs (4.78× the best)2.44 µs (4.31× the best)2.53 µs (3.92× the best)
references, 32 and 33 bytes
ristretto255compare suitehash output added as is: no prepare4.72 µs (14.98× the best)in the hash65.1 ns (6.67× the best)4.95 µs (12.48× the best)5.11 µs (11.80× the best)5.37 µs (10.87× the best)5.67 µs (10.03× the best)5.98 µs (9.28× 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 formulas779 ns72.9 ns (best)10.7×2.33.88 ns3.54 ns (7.69× the best)1.1×0371 ns13.1 ns (1.62× the best)28.3×1.1367 ns14.0 ns (1.06× the best)26.2×1.1
gf2_127-lambdaincompleteλ-projective (X:L:Z) accumulators806 ns75.6 ns (1.04× the best)10.7×2.3340 ns6.33 ns (13.74× the best)53.7×1.1361 ns10.1 ns (1.25× the best)35.7×1.1364 ns14.0 ns (1.06× the best)26.1×1.1
gf2_127-wincompleteλ-projective, w codec: hashes and decodes to λ-affine865 ns83.3 ns (1.14× the best)10.4×2.50.63 ns0.48 ns (1.05× the best)1.3×0361 ns10.3 ns (1.28× the best)35.0×1.1361 ns15.1 ns (1.14× the best)24.0×1.1
gf2_127-uunscaled (X:S:Z), w codec, direct addend hashes869 ns85.8 ns (1.18× the best)10.1×2.50.63 ns0.49 ns (1.06× the best)1.3×0355 ns9.17 ns (1.14× the best)38.7×1.1376 ns18.3 ns (1.39× the best)20.5×1.1
GF(2^122) = GF(2^61)[u], dense constant, 16 bytes
gf2_122(X:S:Z:T) extended510 ns74.9 ns (1.03× the best)6.8×2.84.92 ns5.02 ns (10.91× the best)1.0×0211 ns15.7 ns (1.94× the best)13.5×1.3197 ns13.5 ns (1.02× the best)14.5×1.2
gf2_122-lambdaincompleteλ-projective509 ns74.9 ns (1.03× the best)6.8×2.8166 ns7.55 ns (16.38× the best)22.0×1189 ns11.9 ns (1.48× the best)15.9×1.1196 ns13.5 ns (1.02× the best)14.5×1.2
gf2_122-wincompleteλ-projective, w codec517 ns76.8 ns (1.05× the best)6.7×2.80.63 ns0.46 ns (best)1.4×0204 ns14.4 ns (1.79× the best)14.2×1.2193 ns14.4 ns (1.09× the best)13.3×1.2
gf2_122-uunscaled (X:S:Z), w codec531 ns87.6 ns (1.20× the best)6.1×2.90.61 ns0.48 ns (1.04× the best)1.3×0206 ns12.1 ns (1.49× the best)17.1×1.3223 ns18.7 ns (1.42× the best)11.9×1.3
GF(2^122), constant in GF(2^61) (GLS-shaped), 16 bytes
gf2_122-gls(X:S:Z:T) extended535 ns74.7 ns (1.02× the best)7.2×34.31 ns4.44 ns (9.63× the best)1.0×0209 ns15.2 ns (1.88× the best)13.7×1.3195 ns13.2 ns (best)14.7×1.2
gf2_122-gls-lambdaincompleteλ-projective515 ns76.5 ns (1.05× the best)6.7×2.8167 ns7.53 ns (16.36× the best)22.2×1189 ns11.6 ns (1.44× the best)16.3×1.1187 ns13.2 ns (1.00× the best)14.2×1.1
gf2_122-gls-wincompleteλ-projective, w codec509 ns78.6 ns (1.08× the best)6.5×2.80.63 ns0.49 ns (1.06× the best)1.3×0204 ns14.4 ns (1.79× the best)14.1×1.2191 ns14.3 ns (1.08× the best)13.3×1.1
gf2_122-gls-uunscaled (X:S:Z), w codec522 ns80.2 ns (1.10× the best)6.5×2.90.63 ns0.48 ns (1.04× the best)1.3×0195 ns12.3 ns (1.52× the best)15.9×1.2207 ns16.8 ns (1.27× the best)12.3×1.2
GF(2^109), 14 bytes
gf2_109(X:S:Z:T) extended870 ns81.7 ns (1.12× the best)10.7×2.32.77 ns2.79 ns (6.06× the best)1.0×0381 ns10.9 ns (1.36× the best)34.8×1.1380 ns14.2 ns (1.08× the best)26.8×1.1
gf2_109-lambdaincompleteλ-projective873 ns82.0 ns (1.12× the best)10.6×2.3349 ns5.17 ns (11.22× the best)67.5×1366 ns8.13 ns (1.01× the best)45.0×1.1381 ns14.1 ns (1.07× the best)27.0×1.1
gf2_109-wincompleteλ-projective, w codec855 ns79.4 ns (1.09× the best)10.8×2.30.61 ns0.48 ns (1.04× the best)1.3×0359 ns10.4 ns (1.28× the best)34.6×1378 ns15.5 ns (1.17× the best)24.4×1.1
gf2_109-uunscaled (X:S:Z), w codec874 ns81.2 ns (1.11× the best)10.8×2.30.63 ns0.49 ns (1.05× the best)1.3×0397 ns9.88 ns (1.22× the best)40.2×1.1398 ns18.4 ns (1.39× the best)21.7×1.1
F_p, p = 2^127 − 1, 16 bytes
edwards127a = 1 Edwards, extended += cached1.07 µs1.07 µs (14.65× the best)1.0×0582 ns28.3 ns (61.37× the best)20.6×1.1549 ns22.0 ns (2.72× the best)25.0×1489 ns486 ns (36.80× the best)1.0×0
weier127short Weierstrass, projective += affine1.03 µs1.04 µs (14.20× the best)1.0×00.61 ns0.46 ns (1.00× the best)1.3×0536 ns10.1 ns (1.25× the best)53.2×1489 ns485 ns (36.73× the best)1.0×0
weier127-jacobianincompleteshort Weierstrass, Jacobian += affine1.03 µs1.04 µs (14.24× the best)1.0×00.62 ns0.49 ns (1.06× the best)1.3×0533 ns15.7 ns (1.94× the best)33.9×1492 ns485 ns (36.77× the best)1.0×0
F_p, p = 2^107 − 1, 14 bytes
edwards107a = 1 Edwards, extended += cached806 ns805 ns (11.04× the best)1.0×0546 ns22.7 ns (49.36× the best)24.0×1.1506 ns20.3 ns (2.51× the best)25.0×1359 ns354 ns (26.79× the best)1.0×0
weier107short Weierstrass, projective += affine746 ns748 ns (10.26× the best)1.0×00.62 ns0.49 ns (1.07× the best)1.3×0497 ns11.5 ns (1.42× the best)43.2×1358 ns352 ns (26.66× the best)1.0×0
weier107-jacobianincompleteshort Weierstrass, Jacobian += affine742 ns745 ns (10.22× the best)1.0×00.62 ns0.48 ns (1.04× the best)1.3×0502 ns15.3 ns (1.90× the best)32.8×1351 ns352 ns (26.63× the best)1.0×0
F_p, p = 2^128 − 275, 16 bytes
twisted128a = −1 twisted Edwards modulo 2-torsion, extended += cached1.92 µs1.92 µs (26.36× the best)1.0×8.24 ns8.08 ns (17.55× the best)1.0×939 ns16.0 ns (1.98× the best)58.7×949 ns952 ns (72.09× the best)1.0×
F_{p²}, p = 2^61 − 1, 16 bytes
edwards61x2a = 1 Edwards, signed-x codec, extended += cached624 ns620 ns (8.50× the best)1.0×0216 ns18.8 ns (40.87× the best)11.5×1.3181 ns16.2 ns (2.01× the best)11.1×1.1405 ns404 ns (30.63× the best)1.0×0
weier61x2short Weierstrass, signed-x codec, projective += affine637 ns637 ns (8.73× the best)1.0×00.63 ns0.72 ns (1.56× the best)0.9×0170 ns8.11 ns (1.00× the best)20.9×1416 ns412 ns (31.22× the best)1.0×0
weier61x2-jacobianincompleteshort Weierstrass, signed-x codec, Jacobian += affine638 ns638 ns (8.74× the best)1.0×00.63 ns0.54 ns (1.18× the best)1.2×0179 ns11.7 ns (1.45× the best)15.3×1.1417 ns413 ns (31.25× the best)1.0×0
twisted61x2a = −1 Edwards modulo 2-torsion, extended += cached630 ns632 ns (8.66× the best)1.0×03.41 ns3.60 ns (7.81× the best)0.9×0179 ns8.07 ns (best)22.1×1.1425 ns420 ns (31.80× the best)1.0×0
F_{p²}, p = 2^64 − 59, 16 bytes
twisted64x2a = −1 Edwards modulo 2-torsion, extended += cached1.10 µs1.10 µs (15.08× the best)1.0×05.43 ns5.51 ns (11.96× the best)1.0×0290 ns10.3 ns (1.28× the best)28.1×1721 ns718 ns (54.39× the best)1.0×0
F_{p²}, p = 2^64 − 2^32 + 1, 16 bytes
twisted-goldilocks2a = −1 Edwards modulo 2-torsion, extended += cached1.73 µs1.75 µs (24.00× the best)1.0×-0.14.48 ns4.51 ns (9.78× the best)1.0×0197 ns11.3 ns (1.40× the best)17.5×11.53 µs1.52 µs (114.99× the best)1.0×0.1

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 formulas779 ns (1.53× the best)322 ns (1.30× the best)127 ns (1.16× the best)72.9 ns (best)3.88 ns (6.33× the best)4.37 ns (3.14× the best)3.68 ns (7.31× the best)3.54 ns (7.69× the best)371 ns (2.19× the best)71.6 ns (1.58× the best)21.7 ns (1.57× the best)13.1 ns (1.62× the best)367 ns (1.96× the best)76.4 ns (1.33× the best)22.1 ns (1.14× the best)14.0 ns (1.06× the best)
gf2_127-lambdaincompleteλ-projective (X:L:Z) accumulators806 ns (1.58× the best)318 ns (1.28× the best)127 ns (1.15× the best)75.6 ns (1.04× the best)340 ns (553.91× the best)64.1 ns (46.03× the best)14.2 ns (28.19× the best)6.33 ns (13.74× the best)361 ns (2.13× the best)68.2 ns (1.50× the best)18.4 ns (1.33× the best)10.1 ns (1.25× the best)364 ns (1.95× the best)76.3 ns (1.33× the best)22.1 ns (1.14× the best)14.0 ns (1.06× the best)
gf2_127-wincompleteλ-projective, w codec: hashes and decodes to λ-affine865 ns (1.70× the best)346 ns (1.39× the best)138 ns (1.26× the best)83.3 ns (1.14× the best)0.63 ns (1.02× the best)1.40 ns (tied for the best, within noise, 1.01×)0.51 ns (1.01× the best)0.48 ns (1.05× the best)361 ns (2.13× the best)67.8 ns (1.49× the best)18.6 ns (1.34× the best)10.3 ns (1.28× the best)361 ns (1.93× the best)78.2 ns (1.36× the best)23.0 ns (1.18× the best)15.1 ns (1.14× the best)
gf2_127-uunscaled (X:S:Z), w codec, direct addend hashes869 ns (1.71× the best)351 ns (1.41× the best)142 ns (1.29× the best)85.8 ns (1.18× the best)0.63 ns (1.03× the best)1.41 ns (1.01× the best)0.51 ns (1.01× the best)0.49 ns (1.06× the best)355 ns (2.09× the best)65.7 ns (1.45× the best)17.2 ns (1.24× the best)9.17 ns (1.14× the best)376 ns (2.01× the best)82.4 ns (1.44× the best)26.9 ns (1.39× the best)18.3 ns (1.39× the best)
GF(2^122) = GF(2^61)[u], dense constant, 16 bytes
gf2_122(X:S:Z:T) extended510 ns (tied for the best, within noise, 1.00×)74.9 ns (1.03× the best)4.92 ns (8.02× the best)5.02 ns (10.91× the best)211 ns (1.24× the best)15.7 ns (1.94× the best)197 ns (1.05× the best)13.5 ns (1.02× the best)
gf2_122-lambdaincompleteλ-projective509 ns (tied for the best, within noise)249 ns (best)110 ns (best)74.9 ns (1.03× the best)166 ns (271.21× the best)46.9 ns (33.69× the best)13.1 ns (26.00× the best)7.55 ns (16.38× the best)189 ns (1.12× the best)52.8 ns (1.16× the best)17.8 ns (1.28× the best)11.9 ns (1.48× the best)196 ns (1.04× the best)57.4 ns (best)19.8 ns (1.02× the best)13.5 ns (1.02× the best)
gf2_122-wincompleteλ-projective, w codec517 ns (1.02× the best)257 ns (1.04× the best)114 ns (1.04× the best)76.8 ns (1.05× the best)0.63 ns (1.03× the best)1.39 ns (tied for the best, within noise)0.51 ns (tied for the best, within noise, 1.00×)0.46 ns (tied for the best, within noise)204 ns (1.21× the best)55.6 ns (1.22× the best)20.6 ns (1.49× the best)14.4 ns (1.79× the best)193 ns (1.03× the best)59.0 ns (1.03× the best)20.6 ns (1.06× the best)14.4 ns (1.09× the best)
gf2_122-uunscaled (X:S:Z), w codec531 ns (1.04× the best)268 ns (1.08× the best)125 ns (1.14× the best)87.6 ns (1.20× the best)0.61 ns (tied for the best, within noise, 1.00×)1.41 ns (1.01× the best)0.50 ns (tied for the best, within noise)0.48 ns (1.04× the best)206 ns (1.22× the best)50.6 ns (1.11× the best)18.1 ns (1.31× the best)12.1 ns (1.49× the best)223 ns (1.19× the best)65.6 ns (1.14× the best)25.2 ns (1.30× the best)18.7 ns (1.42× the best)
GF(2^122), constant in GF(2^61) (GLS-shaped), 16 bytes
gf2_122-gls(X:S:Z:T) extended535 ns (1.05× the best)74.7 ns (1.02× the best)4.31 ns (7.02× the best)4.44 ns (9.63× the best)209 ns (1.23× the best)15.2 ns (1.88× the best)195 ns (1.04× the best)13.2 ns (tied for the best, within noise)
gf2_122-gls-lambdaincompleteλ-projective515 ns (1.01× the best)265 ns (1.07× the best)114 ns (1.04× the best)76.5 ns (1.05× the best)167 ns (273.01× the best)47.8 ns (34.38× the best)13.1 ns (26.05× the best)7.53 ns (16.36× the best)189 ns (1.12× the best)53.2 ns (1.17× the best)17.7 ns (1.28× the best)11.6 ns (1.44× the best)187 ns (best)57.7 ns (1.01× the best)19.4 ns (best)13.2 ns (tied for the best, within noise, 1.00×)
gf2_122-gls-wincompleteλ-projective, w codec509 ns (tied for the best, within noise, 1.00×)256 ns (1.03× the best)115 ns (1.05× the best)78.6 ns (1.08× the best)0.63 ns (1.03× the best)1.42 ns (1.02× the best)0.51 ns (1.01× the best)0.49 ns (1.06× the best)204 ns (1.21× the best)55.5 ns (1.22× the best)20.6 ns (1.49× the best)14.4 ns (1.79× the best)191 ns (1.02× the best)58.4 ns (1.02× the best)20.1 ns (1.03× the best)14.3 ns (1.08× the best)
gf2_122-gls-uunscaled (X:S:Z), w codec522 ns (1.03× the best)258 ns (1.04× the best)117 ns (1.06× the best)80.2 ns (1.10× the best)0.63 ns (1.02× the best)1.42 ns (1.02× the best)0.51 ns (1.01× the best)0.48 ns (1.04× the best)195 ns (1.15× the best)51.2 ns (1.13× the best)18.1 ns (1.31× the best)12.3 ns (1.52× the best)207 ns (1.10× the best)62.1 ns (1.08× the best)22.6 ns (1.16× the best)16.8 ns (1.27× the best)
GF(2^109), 14 bytes
gf2_109(X:S:Z:T) extended870 ns (1.71× the best)360 ns (1.45× the best)139 ns (1.27× the best)81.7 ns (1.12× the best)2.77 ns (4.51× the best)4.00 ns (2.87× the best)2.83 ns (5.61× the best)2.79 ns (6.06× the best)381 ns (2.25× the best)76.6 ns (1.69× the best)20.3 ns (1.47× the best)10.9 ns (1.36× the best)380 ns (2.03× the best)82.3 ns (1.43× the best)23.5 ns (1.21× the best)14.2 ns (1.08× the best)
gf2_109-lambdaincompleteλ-projective873 ns (1.72× the best)360 ns (1.45× the best)139 ns (1.26× the best)82.0 ns (1.12× the best)349 ns (568.88× the best)68.7 ns (49.37× the best)14.0 ns (27.78× the best)5.17 ns (11.22× the best)366 ns (2.16× the best)73.3 ns (1.62× the best)17.5 ns (1.26× the best)8.13 ns (1.01× the best)381 ns (2.04× the best)82.3 ns (1.44× the best)23.6 ns (1.21× the best)14.1 ns (1.07× the best)
gf2_109-wincompleteλ-projective, w codec855 ns (1.68× the best)346 ns (1.39× the best)131 ns (1.20× the best)79.4 ns (1.09× the best)0.61 ns (tied for the best, within noise)1.40 ns (1.01× the best)0.51 ns (1.01× the best)0.48 ns (1.04× the best)359 ns (2.12× the best)76.3 ns (1.68× the best)19.7 ns (1.42× the best)10.4 ns (1.28× the best)378 ns (2.02× the best)83.9 ns (1.46× the best)24.4 ns (1.26× the best)15.5 ns (1.17× the best)
gf2_109-uunscaled (X:S:Z), w codec874 ns (1.72× the best)349 ns (1.41× the best)135 ns (1.23× the best)81.2 ns (1.11× the best)0.63 ns (1.02× the best)1.42 ns (1.02× the best)0.51 ns (1.01× the best)0.49 ns (1.05× the best)397 ns (2.34× the best)74.5 ns (1.64× the best)19.1 ns (1.38× the best)9.88 ns (1.22× the best)398 ns (2.13× the best)87.4 ns (1.52× the best)26.7 ns (1.38× the best)18.4 ns (1.39× the best)
F_p, p = 2^127 − 1, 16 bytes
edwards127a = 1 Edwards, extended += cached1.07 µs (2.10× the best)1.07 µs (14.65× the best)582 ns (948.36× the best)28.3 ns (61.37× the best)549 ns (3.24× the best)22.0 ns (2.72× the best)489 ns (2.61× the best)486 ns (36.80× the best)
weier127short Weierstrass, projective += affine1.03 µs (2.02× the best)1.04 µs (14.20× the best)0.61 ns (tied for the best, within noise, 1.00×)0.46 ns (tied for the best, within noise, 1.00×)536 ns (3.16× the best)10.1 ns (1.25× the best)489 ns (2.61× the best)485 ns (36.73× the best)
weier127-jacobianincompleteshort Weierstrass, Jacobian += affine1.03 µs (2.03× the best)1.04 µs (14.24× the best)0.62 ns (tied for the best, within noise, 1.01×)0.49 ns (1.06× the best)533 ns (3.14× the best)15.7 ns (1.94× the best)492 ns (2.63× the best)485 ns (36.77× the best)
F_p, p = 2^107 − 1, 14 bytes
edwards107a = 1 Edwards, extended += cached806 ns (1.58× the best)805 ns (11.04× the best)546 ns (889.89× the best)22.7 ns (49.36× the best)506 ns (2.99× the best)20.3 ns (2.51× the best)359 ns (1.92× the best)354 ns (26.79× the best)
weier107short Weierstrass, projective += affine746 ns (1.47× the best)748 ns (10.26× the best)0.62 ns (tied for the best, within noise, 1.01×)0.49 ns (1.07× the best)497 ns (2.93× the best)11.5 ns (1.42× the best)358 ns (1.91× the best)352 ns (26.66× the best)
weier107-jacobianincompleteshort Weierstrass, Jacobian += affine742 ns (1.46× the best)745 ns (10.22× the best)0.62 ns (tied for the best, within noise, 1.00×)0.48 ns (1.04× the best)502 ns (2.96× the best)15.3 ns (1.90× the best)351 ns (1.88× the best)352 ns (26.63× the best)
F_p, p = 2^128 − 275, 16 bytes
twisted128a = −1 twisted Edwards modulo 2-torsion, extended += cached1.92 µs (3.78× the best)1.92 µs (26.36× the best)8.24 ns (13.43× the best)8.08 ns (17.55× the best)939 ns (5.54× the best)16.0 ns (1.98× the best)949 ns (5.07× the best)952 ns (72.09× the best)
F_{p²}, p = 2^61 − 1, 16 bytes
edwards61x2a = 1 Edwards, signed-x codec, extended += cached624 ns (1.23× the best)620 ns (8.50× the best)216 ns (352.47× the best)18.8 ns (40.87× the best)181 ns (1.07× the best)16.2 ns (2.01× the best)405 ns (2.16× the best)404 ns (30.63× the best)
weier61x2short Weierstrass, signed-x codec, projective += affine637 ns (1.25× the best)637 ns (8.73× the best)0.63 ns (1.02× the best)0.72 ns (1.56× the best)170 ns (best)8.11 ns (tied for the best, within noise, 1.00×)416 ns (2.22× the best)412 ns (31.22× the best)
weier61x2-jacobianincompleteshort Weierstrass, signed-x codec, Jacobian += affine638 ns (1.26× the best)638 ns (8.74× the best)0.63 ns (1.02× the best)0.54 ns (1.18× the best)179 ns (1.06× the best)11.7 ns (1.45× the best)417 ns (2.23× the best)413 ns (31.25× the best)
twisted61x2a = −1 Edwards modulo 2-torsion, extended += cached630 ns (1.24× the best)646 ns (2.60× the best)641 ns (5.84× the best)632 ns (8.66× the best)3.41 ns (5.55× the best)6.03 ns (4.34× the best)3.80 ns (7.54× the best)3.60 ns (7.81× the best)179 ns (1.05× the best)45.4 ns (best)13.8 ns (best)8.07 ns (tied for the best, within noise)425 ns (2.27× the best)423 ns (7.37× the best)418 ns (21.53× the best)420 ns (31.80× the best)
F_{p²}, p = 2^64 − 59, 16 bytes
twisted64x2a = −1 Edwards modulo 2-torsion, extended += cached1.10 µs (2.16× the best)1.10 µs (15.08× the best)5.43 ns (8.85× the best)5.51 ns (11.96× the best)290 ns (1.71× the best)10.3 ns (1.28× the best)721 ns (3.85× the best)718 ns (54.39× the best)
F_{p²}, p = 2^64 − 2^32 + 1, 16 bytes
twisted-goldilocks2a = −1 Edwards modulo 2-torsion, extended += cached1.73 µs (3.40× the best)1.75 µs (24.00× the best)4.48 ns (7.30× the best)4.51 ns (9.78× the best)197 ns (1.16× the best)11.3 ns (1.40× the best)1.53 µs (8.18× the best)1.52 µs (114.99× 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-25633.1 ns33.1 ns
per saltaccept the curve55.2 µs55.2 µs
per saltchecksum keys74.7 ns257 ns
per saltmapping keys74.7 ns257 ns
per salt and itemhash to the addend64.2 ns41.7 ns
per salt and itemmapping seed33.0 ns5.11 ns
per salt and itemmapping walk below m = 135034.2 ns34.2 ns
per celladd12.8 ns12.8 ns
per cellencode10.9 ns10.9 ns
per celldecode14.2 ns14.2 ns
measuredinsertion per item, k = 13.57 cells324 ns265 ns

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

lifetimetermsalted SHA-256projection
per itemID, the item’s SHA-25633.1 ns33.1 ns
per saltaccept the curve55.2 µs55.2 µs
per saltchecksum keys74.7 ns257 ns
per saltmapping keys74.7 ns257 ns
per salt and itemhash to the addend57.7 ns34.2 ns
per salt and itemmapping seed33.0 ns5.11 ns
per salt and itemmapping walk below m = 135034.2 ns34.2 ns
per celladd12.0 ns12.0 ns
per cellencode8.13 ns8.13 ns
per celldecode14.1 ns14.1 ns
measuredinsertion per item, k = 13.57 cells303 ns244 ns

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

lifetimetermsalted SHA-256projection
per itemID, the item’s SHA-25633.1 ns33.1 ns
per saltaccept the curve55.2 µs55.2 µs
per saltchecksum keys74.7 ns257 ns
per saltmapping keys74.7 ns257 ns
per salt and itemhash to the addend61.6 ns38.1 ns
per salt and itemmapping seed33.0 ns5.11 ns
per salt and itemmapping walk below m = 135034.2 ns34.2 ns
per celladd9.76 ns9.76 ns
per cellencode9.88 ns9.88 ns
per celldecode18.4 ns18.4 ns
measuredinsertion per item, k = 13.57 cells282 ns222 ns

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

lifetimetermsalted SHA-256projection
per itemID, the item’s SHA-25633.1 ns33.1 ns
per saltaccept the curve55.2 µs55.2 µs
per saltchecksum keys74.7 ns257 ns
per saltmapping keys74.7 ns257 ns
per salt and itemhash to the addend57.6 ns34.2 ns
per salt and itemmapping seed33.0 ns5.11 ns
per salt and itemmapping walk below m = 135034.2 ns34.2 ns
per celladd12.0 ns12.0 ns
per cellencode10.4 ns10.4 ns
per celldecode15.5 ns15.5 ns
measuredinsertion per item, k = 13.57 cells302 ns239 ns

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

lifetimetermsalted SHA-256projection
per itemID, the item’s SHA-25633.1 ns33.1 ns
per saltaccept the curve58.6 µs58.6 µs
per saltchecksum keys74.7 ns257 ns
per saltmapping keys74.7 ns257 ns
per salt and itemhash to the addend58.8 ns35.0 ns
per salt and itemmapping seed33.0 ns5.11 ns
per salt and itemmapping walk below m = 135034.2 ns34.2 ns
per celladd16.6 ns16.6 ns
per cellencode11.6 ns11.6 ns
per celldecode13.2 ns13.2 ns
measuredinsertion per item, k = 13.57 cells342 ns286 ns

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

lifetimetermsalted SHA-256projection
per itemID, the item’s SHA-25633.1 ns33.1 ns
per saltaccept the curve58.6 µs58.6 µs
per saltchecksum keys74.7 ns257 ns
per saltmapping keys74.7 ns257 ns
per salt and itemhash to the addend60.2 ns36.1 ns
per salt and itemmapping seed33.0 ns5.11 ns
per salt and itemmapping walk below m = 135034.2 ns34.2 ns
per celladd13.1 ns13.1 ns
per cellencode12.3 ns12.3 ns
per celldecode16.8 ns16.8 ns
measuredinsertion per item, k = 13.57 cells306 ns252 ns

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

lifetimetermsalted SHA-256projection
per itemID, the item’s SHA-25633.1 ns33.1 ns
per saltaccept the curve58.6 µs58.6 µs
per saltchecksum keys74.7 ns257 ns
per saltmapping keys74.7 ns257 ns
per salt and itemhash to the addend59.3 ns34.9 ns
per salt and itemmapping seed33.0 ns5.11 ns
per salt and itemmapping walk below m = 135034.2 ns34.2 ns
per celladd16.6 ns16.6 ns
per cellencode14.4 ns14.4 ns
per celldecode14.3 ns14.3 ns
measuredinsertion per item, k = 13.57 cells340 ns281 ns

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

lifetimetermsalted SHA-256projection
per itemID, the item’s SHA-25633.1 ns33.1 ns
per saltaccept the curve55.2 µs55.2 µs
per saltchecksum keys74.7 ns257 ns
per saltmapping keys74.7 ns257 ns
per salt and itemhash to the addend59.3 ns33.6 ns
per salt and itemmapping seed33.0 ns5.11 ns
per salt and itemmapping walk below m = 135034.2 ns34.2 ns
per celladd16.6 ns16.6 ns
per cellencode11.9 ns11.9 ns
per celldecode13.5 ns13.5 ns
measuredinsertion per item, k = 13.57 cells341 ns284 ns

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

lifetimetermsalted SHA-256projection
per itemID, the item’s SHA-25633.1 ns33.1 ns
per saltaccept the curve55.2 µs55.2 µs
per saltchecksum keys74.7 ns257 ns
per saltmapping keys74.7 ns257 ns
per salt and itemhash to the addend63.2 ns38.8 ns
per salt and itemmapping seed33.0 ns5.11 ns
per salt and itemmapping walk below m = 135034.2 ns34.2 ns
per celladd13.1 ns13.1 ns
per cellencode12.1 ns12.1 ns
per celldecode18.7 ns18.7 ns
measuredinsertion per item, k = 13.57 cells308 ns253 ns

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

lifetimetermsalted SHA-256projection
per itemID, the item’s SHA-25633.1 ns33.1 ns
per saltaccept the curve55.2 µs55.2 µs
per saltchecksum keys74.7 ns257 ns
per saltmapping keys74.7 ns257 ns
per salt and itemhash to the addend58.6 ns33.2 ns
per salt and itemmapping seed33.0 ns5.11 ns
per salt and itemmapping walk below m = 135034.2 ns34.2 ns
per celladd16.6 ns16.6 ns
per cellencode14.4 ns14.4 ns
per celldecode14.4 ns14.4 ns
measuredinsertion per item, k = 13.57 cells341 ns285 ns

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

lifetimetermsalted SHA-256projection
per itemID, the item’s SHA-25633.1 ns33.1 ns
per saltaccept the curve56.1 µs56.1 µs
per saltchecksum keys74.7 ns257 ns
per saltmapping keys74.7 ns257 ns
per salt and itemhash to the addend62.6 ns39.1 ns
per salt and itemmapping seed33.0 ns5.11 ns
per salt and itemmapping walk below m = 135034.2 ns34.2 ns
per celladd14.1 ns14.1 ns
per cellencode13.1 ns13.1 ns
per celldecode14.0 ns14.0 ns
measuredinsertion per item, k = 13.57 cells329 ns273 ns

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

lifetimetermsalted SHA-256projection
per itemID, the item’s SHA-25633.1 ns33.1 ns
per saltaccept the curve56.1 µs56.1 µs
per saltchecksum keys74.7 ns257 ns
per saltmapping keys74.7 ns257 ns
per salt and itemhash to the addend58.4 ns34.1 ns
per salt and itemmapping seed33.0 ns5.11 ns
per salt and itemmapping walk below m = 135034.2 ns34.2 ns
per celladd14.9 ns14.9 ns
per cellencode10.1 ns10.1 ns
per celldecode14.0 ns14.0 ns
measuredinsertion per item, k = 13.57 cells326 ns268 ns

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

lifetimetermsalted SHA-256projection
per itemID, the item’s SHA-25633.1 ns33.1 ns
per saltaccept the curve56.1 µs56.1 µs
per saltchecksum keys74.7 ns257 ns
per saltmapping keys74.7 ns257 ns
per salt and itemhash to the addend61.4 ns37.2 ns
per salt and itemmapping seed33.0 ns5.11 ns
per salt and itemmapping walk below m = 135034.2 ns34.2 ns
per celladd10.7 ns10.7 ns
per cellencode9.17 ns9.17 ns
per celldecode18.3 ns18.3 ns
measuredinsertion per item, k = 13.57 cells288 ns227 ns

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

lifetimetermsalted SHA-256projection
per itemID, the item’s SHA-25633.1 ns33.1 ns
per saltaccept the curve56.1 µs56.1 µs
per saltchecksum keys74.7 ns257 ns
per saltmapping keys74.7 ns257 ns
per salt and itemhash to the addend58.5 ns34.2 ns
per salt and itemmapping seed33.0 ns5.11 ns
per salt and itemmapping walk below m = 135034.2 ns34.2 ns
per celladd14.9 ns14.9 ns
per cellencode10.3 ns10.3 ns
per celldecode15.1 ns15.1 ns
measuredinsertion per item, k = 13.57 cells325 ns268 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 (55.2 µs to 67.6 µs, curvegen/verify_accept) includes the embedding-degree bound, a baby-step giant-step search for with , which alone takes 29.6 µs to 30.7 µs (curvegen/embedding), 45% to 55% 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.4760 ms1.05 s435 µs87%
edwards61x2pari+sieveyes16122.710.7360 ms503 ms200 µs91%
gf2_109agm1650.150.118.1 ms18.3 ms107 µs97%
gf2_109agm+factoryes1650.150.117.8 ms24.5 ms93.6 µs73%
gf2_109pari1650.150.157.2 ms64.3 ms93.6 µs89%
gf2_122agmyes1639.539.517.6 ms17.2 ms86.8 µs97%
gf2_122pari1639.539.568.0 ms68.0 ms87.7 µs99%
gf2_122-glsagmyes1647.247.25.48 ms5.80 ms107 µs92%
gf2_122-glspari1647.247.279.6 ms80.4 ms111 µs99%
gf2_127agm+sieveyes1683.625.114.6 ms14.5 ms150 µs75%
gf2_127pari1683.683.6184 ms213 ms124 µs87%
twisted-goldilocks2pari+sieveyes16306.928.41.19 s1.67 s596 µs87%
twisted61x2pari+sieveyes16247.922.4803 ms1.06 s272 µs90%
twisted64x2pari+sieveyes16347.128.21.33 s1.79 s545 µs87%
weier127pari+sieveyes16179.019.6888 ms1.25 s210 µs87%
weier61x2pari+sieveyes1697.511.1401 ms533 ms132 µs90%

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 bytes24.2 ns0.71 ns0.38 ns
GF(2^127), 16 bytes
gf2_127(X:S:Z:T) extended accumulators, Pornin's formulas485 ns (1.32× the best)61.5 ns (best)3.88 ns (6.33× the best)3.54 ns (7.69× the best)14.1 ns (1.44× the best)22.0 ns (1.26× the best)14.7 ns (1.49× the best)0.64 ns (1.11× the best)0.81 ns (2.38× the best)2.98 ns (1.86× the best)2.87 ns (1.79× the best)371 ns (2.19× the best)13.1 ns (1.62× the best)367 ns (1.96× the best)14.0 ns (1.06× the best)
gf2_127-lambdaincompleteλ-projective (X:L:Z) accumulators806 ns (2.19× the best)75.6 ns (1.23× the best)456 ns (1.45× the best)53.5 ns (tied for the best, within noise)340 ns (553.91× the best)6.33 ns (13.74× the best)14.9 ns (1.53× the best)20.2 ns (1.15× the best)15.1 ns (1.53× the best)0.65 ns (1.11× the best)0.84 ns (2.47× the best)3.84 ns (2.40× the best)3.81 ns (2.38× the best)361 ns (2.13× the best)10.1 ns (1.25× the best)364 ns (1.95× the best)14.0 ns (1.06× the best)
gf2_127-wincompleteλ-projective, w codec: hashes and decodes to λ-affine865 ns (2.35× the best)83.3 ns (1.36× the best)455 ns (1.44× the best)53.5 ns (tied for the best, within noise)0.63 ns (1.02× the best)0.48 ns (1.05× the best)14.9 ns (1.53× the best)20.2 ns (1.15× the best)14.7 ns (1.49× the best)0.65 ns (1.12× the best)0.84 ns (2.47× the best)3.86 ns (2.41× the best)3.84 ns (2.40× the best)361 ns (2.13× the best)10.3 ns (1.28× the best)361 ns (1.93× the best)15.1 ns (1.14× the best)
gf2_127-uunscaled (X:S:Z), w codec, direct addend hashes869 ns (2.36× the best)85.8 ns (1.40× the best)461 ns (1.46× the best)57.2 ns (1.07× the best)0.63 ns (1.03× the best)0.49 ns (1.06× the best)10.7 ns (1.09× the best)17.5 ns (best)10.8 ns (1.09× the best)0.64 ns (1.09× the best)0.84 ns (2.47× the best)4.67 ns (2.92× the best)4.68 ns (2.92× the best)355 ns (2.09× the best)9.17 ns (1.14× the best)376 ns (2.01× the best)18.3 ns (1.39× the best)
GF(2^122) = GF(2^61)[u], dense constant, 16 bytes
gf2_122(X:S:Z:T) extended373 ns (1.01× the best)62.8 ns (1.02× the best)4.92 ns (8.02× the best)5.02 ns (10.91× the best)17.8 ns (1.83× the best)26.1 ns (1.49× the best)0.63 ns (1.08× the best)0.77 ns (2.28× the best)3.75 ns (2.34× the best)211 ns (1.24× the best)15.7 ns (1.94× the best)197 ns (1.05× the best)13.5 ns (1.02× the best)
gf2_122-lambdaincompleteλ-projective509 ns (1.38× the best)74.9 ns (1.22× the best)326 ns (1.04× the best)53.9 ns (1.01× the best)166 ns (271.21× the best)7.55 ns (16.38× the best)16.6 ns (1.70× the best)23.0 ns (1.32× the best)16.7 ns (1.69× the best)0.65 ns (1.12× the best)0.77 ns (2.28× the best)3.78 ns (2.36× the best)3.79 ns (2.37× the best)189 ns (1.12× the best)11.9 ns (1.48× the best)196 ns (1.04× the best)13.5 ns (1.02× the best)
gf2_122-wincompleteλ-projective, w codec517 ns (1.40× the best)76.8 ns (1.25× the best)326 ns (1.04× the best)54.0 ns (1.01× the best)0.63 ns (1.03× the best)0.46 ns (tied for the best, within noise)16.6 ns (1.70× the best)23.0 ns (1.31× the best)17.1 ns (1.73× the best)0.65 ns (1.12× the best)0.77 ns (2.28× the best)3.77 ns (2.36× the best)3.79 ns (2.37× the best)204 ns (1.21× the best)14.4 ns (1.79× the best)193 ns (1.03× the best)14.4 ns (1.09× the best)
gf2_122-uunscaled (X:S:Z), w codec531 ns (1.44× the best)87.6 ns (1.43× the best)326 ns (1.03× the best)57.1 ns (1.07× the best)0.61 ns (tied for the best, within noise, 1.00×)0.48 ns (1.04× the best)13.1 ns (1.34× the best)18.8 ns (1.08× the best)13.2 ns (1.34× the best)0.65 ns (1.12× the best)0.77 ns (2.28× the best)5.31 ns (3.32× the best)5.34 ns (3.34× the best)206 ns (1.22× the best)12.1 ns (1.49× the best)223 ns (1.19× the best)18.7 ns (1.42× the best)
GF(2^122), constant in GF(2^61) (GLS-shaped), 16 bytes
gf2_122-gls(X:S:Z:T) extended369 ns (best)62.0 ns (1.01× the best)4.31 ns (7.02× the best)4.44 ns (9.63× the best)16.8 ns (1.72× the best)23.7 ns (1.36× the best)1.12 ns (1.93× the best)0.77 ns (2.27× the best)3.79 ns (2.37× the best)209 ns (1.23× the best)15.2 ns (1.88× the best)195 ns (1.04× the best)13.2 ns (tied for the best, within noise)
gf2_122-gls-lambdaincompleteλ-projective515 ns (1.40× the best)76.5 ns (1.24× the best)315 ns (tied for the best, within noise)55.4 ns (1.04× the best)167 ns (273.01× the best)7.53 ns (16.36× the best)16.6 ns (1.70× the best)23.1 ns (1.32× the best)16.7 ns (1.69× the best)0.65 ns (1.11× the best)0.78 ns (2.28× the best)3.79 ns (2.37× the best)3.79 ns (2.37× the best)189 ns (1.12× the best)11.6 ns (1.44× the best)187 ns (best)13.2 ns (tied for the best, within noise, 1.00×)
gf2_122-gls-wincompleteλ-projective, w codec509 ns (1.38× the best)78.6 ns (1.28× the best)316 ns (tied for the best, within noise, 1.00×)55.4 ns (1.04× the best)0.63 ns (1.03× the best)0.49 ns (1.06× the best)16.6 ns (1.70× the best)23.1 ns (1.32× the best)16.8 ns (1.70× the best)0.65 ns (1.12× the best)0.78 ns (2.28× the best)3.79 ns (2.37× the best)3.79 ns (2.37× the best)204 ns (1.21× the best)14.4 ns (1.79× the best)191 ns (1.02× the best)14.3 ns (1.08× the best)
gf2_122-gls-uunscaled (X:S:Z), w codec522 ns (1.42× the best)80.2 ns (1.30× the best)319 ns (1.01× the best)55.7 ns (1.04× the best)0.63 ns (1.02× the best)0.48 ns (1.04× the best)13.1 ns (1.34× the best)18.9 ns (1.08× the best)13.2 ns (1.34× the best)0.65 ns (1.12× the best)0.78 ns (2.29× the best)5.32 ns (3.32× the best)5.31 ns (3.32× the best)195 ns (1.15× the best)12.3 ns (1.52× the best)207 ns (1.10× the best)16.8 ns (1.27× the best)
GF(2^109), 14 bytes
gf2_109(X:S:Z:T) extended560 ns (1.52× the best)63.7 ns (1.04× the best)2.77 ns (4.51× the best)2.79 ns (6.06× the best)12.8 ns (1.32× the best)24.3 ns (1.39× the best)13.2 ns (1.34× the best)0.63 ns (1.08× the best)0.64 ns (1.87× the best)2.24 ns (1.40× the best)2.28 ns (1.43× the best)381 ns (2.25× the best)10.9 ns (1.36× the best)380 ns (2.03× the best)14.2 ns (1.08× the best)
gf2_109-lambdaincompleteλ-projective873 ns (2.37× the best)82.0 ns (1.33× the best)550 ns (1.75× the best)55.2 ns (1.03× the best)349 ns (568.88× the best)5.17 ns (11.22× the best)12.0 ns (1.23× the best)24.2 ns (1.38× the best)12.1 ns (1.22× the best)0.65 ns (1.11× the best)0.56 ns (1.64× the best)1.60 ns (best)1.60 ns (best)366 ns (2.16× the best)8.13 ns (1.01× the best)381 ns (2.04× the best)14.1 ns (1.07× the best)
gf2_109-wincompleteλ-projective, w codec855 ns (2.32× the best)79.4 ns (1.29× the best)535 ns (1.70× the best)54.5 ns (1.02× the best)0.61 ns (tied for the best, within noise)0.48 ns (1.04× the best)12.0 ns (1.23× the best)24.2 ns (1.38× the best)12.1 ns (1.23× the best)0.65 ns (1.12× the best)0.56 ns (1.64× the best)1.82 ns (1.13× the best)1.82 ns (1.14× the best)359 ns (2.12× the best)10.4 ns (1.28× the best)378 ns (2.02× the best)15.5 ns (1.17× the best)
gf2_109-uunscaled (X:S:Z), w codec874 ns (2.37× the best)81.2 ns (1.32× the best)533 ns (1.69× the best)60.7 ns (1.13× the best)0.63 ns (1.02× the best)0.49 ns (1.05× the best)9.76 ns (best)19.0 ns (1.09× the best)9.88 ns (best)0.65 ns (1.12× the best)0.56 ns (1.64× the best)3.46 ns (2.16× the best)3.50 ns (2.19× the best)397 ns (2.34× the best)9.88 ns (1.22× the best)398 ns (2.13× the best)18.4 ns (1.39× the best)
F_p, p = 2^127 − 1, 16 bytes
edwards127a = 1 Edwards, extended += cached1.07 µs (2.90× the best)1.07 µs (17.39× the best)582 ns (948.36× the best)28.3 ns (61.37× the best)20.1 ns (2.06× the best)22.2 ns (1.27× the best)1.34 ns (2.30× the best)0.38 ns (1.12× the best)1.97 ns (1.23× the best)549 ns (3.24× the best)22.0 ns (2.72× the best)489 ns (2.61× the best)486 ns (36.80× the best)
weier127short Weierstrass, projective += affine1.03 µs (2.79× the best)1.04 µs (16.85× the best)0.61 ns (tied for the best, within noise, 1.00×)0.46 ns (tied for the best, within noise, 1.00×)45.4 ns (4.65× the best)46.7 ns (2.67× the best)0.69 ns (1.18× the best)0.34 ns (tied for the best, within noise, 1.00×)2.05 ns (1.28× the best)536 ns (3.16× the best)10.1 ns (1.25× the best)489 ns (2.61× the best)485 ns (36.73× the best)
weier127-jacobianincompleteshort Weierstrass, Jacobian += affine1.03 µs (2.80× the best)1.04 µs (16.90× the best)0.62 ns (tied for the best, within noise, 1.01×)0.49 ns (1.06× the best)37.5 ns (3.84× the best)45.3 ns (2.59× the best)0.69 ns (1.18× the best)0.34 ns (tied for the best, within noise)4.53 ns (2.83× the best)533 ns (3.14× the best)15.7 ns (1.94× the best)492 ns (2.63× the best)485 ns (36.77× the best)
F_p, p = 2^107 − 1, 14 bytes
edwards107a = 1 Edwards, extended += cached806 ns (2.19× the best)805 ns (13.10× the best)546 ns (889.89× the best)22.7 ns (49.36× the best)15.5 ns (1.59× the best)18.4 ns (1.05× the best)0.83 ns (1.42× the best)0.75 ns (2.20× the best)3.05 ns (1.91× the best)506 ns (2.99× the best)20.3 ns (2.51× the best)359 ns (1.92× the best)354 ns (26.79× the best)
weier107short Weierstrass, projective += affine746 ns (2.02× the best)748 ns (12.17× the best)0.62 ns (tied for the best, within noise, 1.01×)0.49 ns (1.07× the best)30.5 ns (3.12× the best)32.4 ns (1.85× the best)0.58 ns (tied for the best, within noise)0.84 ns (2.48× the best)3.63 ns (2.27× the best)497 ns (2.93× the best)11.5 ns (1.42× the best)358 ns (1.91× the best)352 ns (26.66× the best)
weier107-jacobianincompleteshort Weierstrass, Jacobian += affine742 ns (2.01× the best)745 ns (12.13× the best)0.62 ns (tied for the best, within noise, 1.00×)0.48 ns (1.04× the best)28.7 ns (2.94× the best)35.5 ns (2.03× the best)0.58 ns (tied for the best, within noise)0.84 ns (2.48× the best)5.96 ns (3.73× the best)502 ns (2.96× the best)15.3 ns (1.90× the best)351 ns (1.88× the best)352 ns (26.63× the best)
F_p, p = 2^128 − 275, 16 bytes
twisted128a = −1 twisted Edwards modulo 2-torsion, extended += cached1.92 µs (5.22× the best)1.92 µs (31.28× the best)8.24 ns (13.43× the best)8.08 ns (17.55× the best)23.9 ns (2.45× the best)28.8 ns (1.65× the best)0.85 ns (1.46× the best)0.34 ns (1.01× the best)7.51 ns (4.69× the best)939 ns (5.54× the best)16.0 ns (1.98× the best)949 ns (5.07× the best)952 ns (72.09× the best)
F_{p²}, p = 2^61 − 1, 16 bytes
edwards61x2a = 1 Edwards, signed-x codec, extended += cached624 ns (1.69× the best)620 ns (10.09× the best)216 ns (352.47× the best)18.8 ns (40.87× the best)13.3 ns (1.37× the best)22.5 ns (1.29× the best)0.88 ns (1.51× the best)0.38 ns (1.12× the best)1.65 ns (1.03× the best)181 ns (1.07× the best)16.2 ns (2.01× the best)405 ns (2.16× the best)404 ns (30.63× the best)
weier61x2short Weierstrass, signed-x codec, projective += affine637 ns (1.73× the best)637 ns (10.36× the best)0.63 ns (1.02× the best)0.72 ns (1.56× the best)26.8 ns (2.74× the best)36.2 ns (2.07× the best)0.66 ns (1.13× the best)0.52 ns (1.55× the best)1.70 ns (1.06× the best)170 ns (best)8.11 ns (tied for the best, within noise, 1.00×)416 ns (2.22× the best)412 ns (31.22× the best)
weier61x2-jacobianincompleteshort Weierstrass, signed-x codec, Jacobian += affine638 ns (1.73× the best)638 ns (10.37× the best)0.63 ns (1.02× the best)0.54 ns (1.18× the best)31.6 ns (3.24× the best)37.2 ns (2.13× the best)0.66 ns (1.13× the best)0.52 ns (1.54× the best)3.59 ns (2.24× the best)179 ns (1.06× the best)11.7 ns (1.45× the best)417 ns (2.23× the best)413 ns (31.25× the best)
twisted61x2a = −1 Edwards modulo 2-torsion, extended += cached630 ns (1.71× the best)632 ns (10.28× the best)3.41 ns (5.55× the best)3.60 ns (7.81× the best)12.5 ns (1.28× the best)22.3 ns (1.28× the best)12.8 ns (1.29× the best)0.91 ns (1.56× the best)0.34 ns (1.01× the best)3.32 ns (2.07× the best)3.32 ns (2.07× the best)179 ns (1.05× the best)8.07 ns (tied for the best, within noise)425 ns (2.27× the best)420 ns (31.80× the best)
F_{p²}, p = 2^64 − 59, 16 bytes
twisted64x2a = −1 Edwards modulo 2-torsion, extended += cached1.10 µs (2.98× the best)1.10 µs (17.90× the best)5.43 ns (8.85× the best)5.51 ns (11.96× the best)17.2 ns (1.77× the best)28.6 ns (1.64× the best)0.91 ns (1.56× the best)0.34 ns (1.02× the best)5.39 ns (3.36× the best)290 ns (1.71× the best)10.3 ns (1.28× the best)721 ns (3.85× the best)718 ns (54.39× the best)
F_{p²}, p = 2^64 − 2^32 + 1, 16 bytes
twisted-goldilocks2a = −1 Edwards modulo 2-torsion, extended += cached1.73 µs (4.70× the best)1.75 µs (28.48× the best)4.48 ns (7.30× the best)4.51 ns (9.78× the best)15.0 ns (1.54× the best)19.0 ns (1.09× the best)1.49 ns (2.55× the best)0.52 ns (1.55× the best)4.92 ns (3.07× the best)197 ns (1.16× the best)11.3 ns (1.40× the best)1.53 µs (8.18× the best)1.52 µs (114.99× the best)
references, 32 and 33 bytes
ristretto255curve25519-dalek4.72 µs (12.80× the best)65.1 ns (6.67× the best)63.8 ns (3.65× the best)64.4 ns (6.52× the best)6.20 ns (10.64× the best)
secp256k1libsecp256k14.49 µs (12.17× the best)12.8 ns (22.01× 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.21 ns (1.17× the best)3.75 ns (1.29× the best)0.70 ns (best)2.08 ns (best)xor1.26 ns (best)4.11 ns (1.53× the best)317 ns (2.00× the best)3.60 ns (1.03× the best)
gf2_122GF(2^61)[u]/(u^2 + u + 1)1.21 ns (1.17× the best)4.90 ns (1.69× the best)1.09 ns (1.55× the best)4.44 ns (2.13× the best)xor2.95 ns (2.35× the best)2.69 ns (best)159 ns (tied for the best, within noise, 1.00×)4.47 ns (1.28× the best)
gf2_109F_2[z]/(z^109 + z^5 + z^4 + z^2 + 1)1.04 ns (best)3.92 ns (1.35× the best)0.83 ns (1.19× the best)2.17 ns (1.04× the best)xor2.77 ns (2.21× the best)3.32 ns (1.24× the best)341 ns (2.15× the best)3.49 ns (best)
prime
fp127p = 2^127 − 11.50 ns (1.45× the best)3.82 ns (1.32× the best)1.78 ns (2.54× the best)3.57 ns (1.71× the best)0.83 ns (1.62× the best)470 ns (374.16× the best)518 ns (1.87× the best)520 ns (3.28× the best)5.64 ns (1.61× the best)0.34 ns (1.01× the best)0.51 ns (best)
fp107p = 2^107 − 11.15 ns (1.11× the best)3.20 ns (1.10× the best)0.97 ns (1.39× the best)3.01 ns (1.44× the best)0.51 ns (best)341 ns (271.16× the best)482 ns (1.74× the best)477 ns (3.01× the best)5.23 ns (1.50× the best)0.67 ns (1.96× the best)0.51 ns (1.00× the best)
fp128p = 2^128 − 275, for twisted1282.77 ns (2.66× the best)6.58 ns (2.27× the best)2.58 ns (3.68× the best)6.37 ns (3.06× the best)0.89 ns (1.74× the best)878 ns (698.88× the best)932 ns (3.36× the best)933 ns (5.88× the best)0.34 ns (1.00× the best)0.51 ns (1.00× the best)
quadratic extensions of prime fields
fp61x2GF(p^2) = F_p[i]/(i^2 + 1), p = 2^61 − 11.26 ns (1.21× the best)3.30 ns (1.14× the best)1.40 ns (1.99× the best)3.48 ns (1.67× the best)0.53 ns (1.04× the best)277 ns (220.65× the best)277 ns (best)159 ns (tied for the best, within noise)4.67 ns (1.34× the best)0.34 ns (best)0.72 ns (1.42× the best)
fp64x2GF(p^2) = F_p[i]/(i^2 − 2), p = 2^64 − 592.24 ns (2.15× the best)5.08 ns (1.75× the best)2.23 ns (3.19× the best)4.92 ns (2.36× the best)0.56 ns (1.10× the best)485 ns (385.97× the best)481 ns (1.74× the best)281 ns (1.77× the best)5.77 ns (1.65× the best)0.34 ns (1.00× the best)0.55 ns (1.08× the best)
goldilocks2GF(p^2) = F_p[i]/(i^2 − 7), p = 2^64 − 2^32 + 11.36 ns (1.31× the best)2.90 ns (best)1.69 ns (2.42× the best)3.43 ns (1.65× the best)0.59 ns (1.16× the best)727 ns (578.68× the best)677 ns (2.44× the best)186 ns (1.17× the best)5.87 ns (1.68× the best)0.40 ns (1.16× the best)0.55 ns (1.09× 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.

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.21 ns1.21 ns .. 1.21 ns
field mul, throughputgf2_109field/gf2_109/mul throughput (8 chains)1.04 ns1.04 ns .. 1.04 ns
field mul, throughputgf2_122field/gf2_122/mul throughput (8 chains)1.21 ns1.21 ns .. 1.21 ns
field mul, throughputfp127field/fp127/mul throughput (8 chains)1.50 ns1.50 ns .. 1.50 ns
field mul, throughputfp107field/fp107 schoolbook/mul throughput (8 chains)1.15 ns1.15 ns .. 1.15 ns
field mul, throughputfp128field/fp128/mul throughput (8 chains)2.77 ns2.77 ns .. 2.77 ns
field mul, throughputfp61x2field/fp61x2/mul throughput (8 chains)1.26 ns1.26 ns .. 1.26 ns
field mul, throughputfp64x2field/fp64x2/mul throughput (8 chains)2.24 ns2.24 ns .. 2.24 ns
field mul, throughputgoldilocks2field/goldilocks2/mul throughput (8 chains)1.36 ns1.35 ns .. 1.38 ns
field mul, latencygf2_127field/gf2_127/mul latency (dependent chain)3.75 ns3.74 ns .. 3.77 ns
field mul, latencygf2_109field/gf2_109/mul latency (dependent chain)3.92 ns3.91 ns .. 3.93 ns
field mul, latencygf2_122field/gf2_122/mul latency (dependent chain)4.90 ns4.90 ns .. 4.90 ns
field mul, latencyfp127field/fp127/mul latency (dependent chain)3.82 ns3.81 ns .. 3.82 ns
field mul, latencyfp107field/fp107 schoolbook/mul latency (dependent chain)3.20 ns3.20 ns .. 3.21 ns
field mul, latencyfp128field/fp128/mul latency (dependent chain)6.58 ns6.57 ns .. 6.58 ns
field mul, latencyfp61x2field/fp61x2/mul latency (dependent chain)3.30 ns3.30 ns .. 3.31 ns
field mul, latencyfp64x2field/fp64x2/mul latency (dependent chain)5.08 ns5.07 ns .. 5.09 ns
field mul, latencygoldilocks2field/goldilocks2/mul latency (dependent chain)2.90 ns2.90 ns .. 2.90 ns
field square, throughputgf2_127field/gf2_127/square throughput (8 chains)0.70 ns0.70 ns .. 0.70 ns
field square, throughputgf2_109field/gf2_109/square throughput (8 chains)0.83 ns0.83 ns .. 0.84 ns
field square, throughputgf2_122field/gf2_122/square throughput (8 chains)1.09 ns1.09 ns .. 1.09 ns
field square, throughputfp127field/fp127/square throughput (8 chains)1.78 ns1.78 ns .. 1.78 ns
field square, throughputfp107field/fp107/square throughput (8 chains)0.97 ns0.97 ns .. 0.97 ns
field square, throughputfp128field/fp128/square throughput (8 chains)2.58 ns2.58 ns .. 2.58 ns
field square, throughputfp61x2field/fp61x2/square throughput (8 chains)1.40 ns1.39 ns .. 1.40 ns
field square, throughputfp64x2field/fp64x2/square throughput (8 chains)2.23 ns2.23 ns .. 2.24 ns
field square, throughputgoldilocks2field/goldilocks2/square throughput (8 chains)1.69 ns1.68 ns .. 1.71 ns
field square, latencygf2_127field/gf2_127/square latency (dependent chain)2.08 ns2.08 ns .. 2.09 ns
field square, latencygf2_109field/gf2_109/square latency (dependent chain)2.17 ns2.16 ns .. 2.17 ns
field square, latencygf2_122field/gf2_122/square latency (dependent chain)4.44 ns4.43 ns .. 4.44 ns
field square, latencyfp127field/fp127/square latency (dependent chain)3.57 ns3.56 ns .. 3.57 ns
field square, latencyfp107field/fp107/square latency (dependent chain)3.01 ns3.00 ns .. 3.02 ns
field square, latencyfp128field/fp128/square latency (dependent chain)6.37 ns6.36 ns .. 6.37 ns
field square, latencyfp61x2field/fp61x2/square latency (dependent chain)3.48 ns3.48 ns .. 3.49 ns
field square, latencyfp64x2field/fp64x2/square latency (dependent chain)4.92 ns4.91 ns .. 4.92 ns
field square, latencygoldilocks2field/goldilocks2/square latency (dependent chain)3.43 ns3.43 ns .. 3.44 ns
field addfp127field/fp127/add0.83 ns0.83 ns .. 0.83 ns
field addfp107field/fp107/add0.51 ns0.50 ns .. 0.52 ns
field addfp128field/fp128/add0.89 ns0.89 ns .. 0.89 ns
field addfp61x2field/fp61x2/add0.53 ns0.53 ns .. 0.53 ns
field addfp64x2field/fp64x2/add0.56 ns0.56 ns .. 0.57 ns
field addgoldilocks2field/goldilocks2/add0.59 ns0.59 ns .. 0.59 ns
field sqrtgf2_127field/gf2_127/sqrt1.26 ns1.26 ns .. 1.26 ns
field sqrtgf2_109field/gf2_109/sqrt2.77 ns2.77 ns .. 2.78 ns
field sqrtgf2_122field/gf2_122/sqrt2.95 ns2.95 ns .. 2.95 ns
field sqrtfp127field/fp127/sqrt (x^(2^125))470 ns468 ns .. 472 ns
field sqrtfp107field/fp107/sqrt (x^(2^105))341 ns340 ns .. 341 ns
field sqrtfp128field/fp128/sqrt878 ns877 ns .. 878 ns
field sqrtfp61x2field/fp61x2/sqrt277 ns277 ns .. 277 ns
field sqrtfp64x2field/fp64x2/sqrt485 ns485 ns .. 485 ns
field sqrtgoldilocks2field/goldilocks2/sqrt727 ns724 ns .. 730 ns
field sqrt ratiofp127field/fp127/sqrt_ratio518 ns517 ns .. 519 ns
field sqrt ratiofp107field/fp107/sqrt_ratio482 ns482 ns .. 482 ns
field sqrt ratiofp128field/fp128/sqrt_ratio932 ns932 ns .. 933 ns
field sqrt ratiofp61x2field/fp61x2/sqrt_ratio277 ns277 ns .. 278 ns
field sqrt ratiofp64x2field/fp64x2/sqrt_ratio481 ns481 ns .. 482 ns
field sqrt ratiogoldilocks2field/goldilocks2/sqrt_ratio677 ns676 ns .. 678 ns
field halftracegf2_127field/gf2_127/halftrace (byte tables)4.11 ns4.11 ns .. 4.11 ns
field halftracegf2_109field/gf2_109/halftrace (byte tables)3.32 ns3.32 ns .. 3.33 ns
field halftracegf2_122field/gf2_122/qsolve (z^2 + z = c, 2 base halftraces)2.69 ns2.68 ns .. 2.69 ns
field invert, one at a timegf2_127field/gf2_127/invert317 ns317 ns .. 318 ns
field invert, one at a timegf2_109field/gf2_109/invert341 ns340 ns .. 343 ns
field invert, one at a timegf2_122field/gf2_122/invert159 ns159 ns .. 159 ns
field invert, one at a timefp127field/fp127/invert520 ns518 ns .. 522 ns
field invert, one at a timefp107field/fp107/invert477 ns477 ns .. 478 ns
field invert, one at a timefp128field/fp128/invert933 ns932 ns .. 934 ns
field invert, one at a timefp61x2field/fp61x2/invert159 ns159 ns .. 159 ns
field invert, one at a timefp64x2field/fp64x2/invert281 ns280 ns .. 281 ns
field invert, one at a timegoldilocks2field/goldilocks2/invert186 ns182 ns .. 190 ns
field invert, batchedgf2_127field/gf2_127/batch invert (product tree)3.60 ns3.60 ns .. 3.61 ns
field invert, batchedgf2_109field/gf2_109/batch invert (product tree)3.49 ns3.49 ns .. 3.50 ns
field invert, batchedgf2_122field/gf2_122/batch invert (product tree)4.47 ns4.47 ns .. 4.47 ns
field invert, batchedfp127field/fp127/batch invert (product tree)5.64 ns5.64 ns .. 5.64 ns
field invert, batchedfp107field/fp107/batch invert (product tree)5.23 ns5.22 ns .. 5.23 ns
field invert, batchedfp61x2field/fp61x2/batch invert (product tree)4.67 ns4.66 ns .. 4.67 ns
field invert, batchedfp64x2field/fp64x2/batch invert (product tree)5.77 ns5.77 ns .. 5.78 ns
field invert, batchedgoldilocks2field/goldilocks2/batch invert (product tree)5.87 ns5.85 ns .. 5.89 ns
field packfp127field/fp127/pack0.34 ns0.34 ns .. 0.34 ns
field packfp107field/fp107/pack0.67 ns0.67 ns .. 0.67 ns
field packfp128field/fp128/pack0.34 ns0.34 ns .. 0.34 ns
field packfp61x2field/fp61x2/pack0.34 ns0.34 ns .. 0.34 ns
field packfp64x2field/fp64x2/pack0.34 ns0.34 ns .. 0.34 ns
field packgoldilocks2field/goldilocks2/pack0.40 ns0.40 ns .. 0.40 ns
field unpackfp127field/fp127/unpack0.51 ns0.51 ns .. 0.51 ns
field unpackfp107field/fp107/unpack0.51 ns0.51 ns .. 0.51 ns
field unpackfp128field/fp128/unpack0.51 ns0.51 ns .. 0.51 ns
field unpackfp61x2field/fp61x2/unpack0.72 ns0.72 ns .. 0.72 ns
field unpackfp64x2field/fp64x2/unpack0.55 ns0.55 ns .. 0.55 ns
field unpackgoldilocks2field/goldilocks2/unpack0.55 ns0.55 ns .. 0.55 ns
point add, throughputxoradd/xor-sha256/xor 32B, 8 accumulators0.71 ns0.70 ns .. 0.71 ns
point add, throughputgf2_127group.add/binary.127/mode=throughput14.1 ns14.1 ns .. 14.1 ns
point add, throughputgf2_127-lambdagroup.add/binary-lambda.127/mode=throughput14.9 ns14.9 ns .. 14.9 ns
point add, throughputgf2_127-wgroup.add/binary-w.127/mode=throughput14.9 ns14.8 ns .. 14.9 ns
point add, throughputgf2_127-ugroup.add/binary-u.127/mode=throughput10.7 ns10.6 ns .. 10.7 ns
point add, throughputgf2_109group.add/binary.109/mode=throughput12.8 ns12.8 ns .. 12.9 ns
point add, throughputgf2_109-lambdagroup.add/binary-lambda.109/mode=throughput12.0 ns12.0 ns .. 12.0 ns
point add, throughputgf2_109-wgroup.add/binary-w.109/mode=throughput12.0 ns11.9 ns .. 12.0 ns
point add, throughputgf2_109-ugroup.add/binary-u.109/mode=throughput9.76 ns9.74 ns .. 9.78 ns
point add, throughputgf2_122group.add/binary.122/mode=throughput17.8 ns17.8 ns .. 17.9 ns
point add, throughputgf2_122-lambdagroup.add/binary-lambda.122/mode=throughput16.6 ns16.5 ns .. 16.6 ns
point add, throughputgf2_122-wgroup.add/binary-w.122/mode=throughput16.6 ns16.5 ns .. 16.6 ns
point add, throughputgf2_122-ugroup.add/binary-u.122/mode=throughput13.1 ns13.0 ns .. 13.1 ns
point add, throughputgf2_122-glsgroup.add/binary.122-gls/mode=throughput16.8 ns16.7 ns .. 16.8 ns
point add, throughputgf2_122-gls-lambdagroup.add/binary-lambda.122-gls/mode=throughput16.6 ns16.5 ns .. 16.6 ns
point add, throughputgf2_122-gls-wgroup.add/binary-w.122-gls/mode=throughput16.6 ns16.5 ns .. 16.6 ns
point add, throughputgf2_122-gls-ugroup.add/binary-u.122-gls/mode=throughput13.1 ns13.1 ns .. 13.1 ns
point add, throughputedwards127group.add/edwards.127/mode=throughput20.1 ns20.0 ns .. 20.1 ns
point add, throughputedwards107group.add/edwards.107/mode=throughput15.5 ns15.4 ns .. 15.5 ns
point add, throughputtwisted128group.add/twisted.128/mode=throughput23.9 ns23.8 ns .. 24.0 ns
point add, throughputweier127group.add/weier.127/mode=throughput45.4 ns45.3 ns .. 45.5 ns
point add, throughputweier127-jacobiangroup.add/weier-jacobian.127/mode=throughput37.5 ns37.4 ns .. 37.6 ns
point add, throughputweier107group.add/weier.107/mode=throughput30.5 ns30.4 ns .. 30.5 ns
point add, throughputweier107-jacobiangroup.add/weier-jacobian.107/mode=throughput28.7 ns28.6 ns .. 28.7 ns
point add, throughputedwards61x2group.add/edwards.61x2/mode=throughput13.3 ns13.3 ns .. 13.4 ns
point add, throughputweier61x2group.add/weier.61x2/mode=throughput26.8 ns26.7 ns .. 26.8 ns
point add, throughputweier61x2-jacobiangroup.add/weier-jacobian.61x2/mode=throughput31.6 ns31.6 ns .. 31.7 ns
point add, throughputtwisted61x2group.add/twisted.61x2/mode=throughput12.5 ns12.4 ns .. 12.6 ns
point add, throughputtwisted64x2group.add/twisted.64x2/mode=throughput17.2 ns17.2 ns .. 17.3 ns
point add, throughputtwisted-goldilocks2group.add/twisted.goldilocks2/mode=throughput15.0 ns15.0 ns .. 15.1 ns
point add, throughputristretto255add/ristretto255/+=, 8 accumulators65.1 ns64.8 ns .. 65.5 ns
point add, latencyxoradd/xor-sha256/xor 32B, 1 accumulator0.38 ns0.37 ns .. 0.38 ns
point add, latencygf2_127group.add/binary.127/mode=latency22.0 ns21.9 ns .. 22.0 ns
point add, latencygf2_127-lambdagroup.add/binary-lambda.127/mode=latency20.2 ns20.1 ns .. 20.2 ns
point add, latencygf2_127-wgroup.add/binary-w.127/mode=latency20.2 ns20.1 ns .. 20.2 ns
point add, latencygf2_127-ugroup.add/binary-u.127/mode=latency17.5 ns17.4 ns .. 17.5 ns
point add, latencygf2_109group.add/binary.109/mode=latency24.3 ns24.2 ns .. 24.4 ns
point add, latencygf2_109-lambdagroup.add/binary-lambda.109/mode=latency24.2 ns24.1 ns .. 24.3 ns
point add, latencygf2_109-wgroup.add/binary-w.109/mode=latency24.2 ns24.2 ns .. 24.3 ns
point add, latencygf2_109-ugroup.add/binary-u.109/mode=latency19.0 ns18.9 ns .. 19.0 ns
point add, latencygf2_122group.add/binary.122/mode=latency26.1 ns26.1 ns .. 26.2 ns
point add, latencygf2_122-lambdagroup.add/binary-lambda.122/mode=latency23.0 ns23.0 ns .. 23.1 ns
point add, latencygf2_122-wgroup.add/binary-w.122/mode=latency23.0 ns22.9 ns .. 23.0 ns
point add, latencygf2_122-ugroup.add/binary-u.122/mode=latency18.8 ns18.8 ns .. 18.9 ns
point add, latencygf2_122-glsgroup.add/binary.122-gls/mode=latency23.7 ns23.7 ns .. 23.8 ns
point add, latencygf2_122-gls-lambdagroup.add/binary-lambda.122-gls/mode=latency23.1 ns23.1 ns .. 23.2 ns
point add, latencygf2_122-gls-wgroup.add/binary-w.122-gls/mode=latency23.1 ns23.0 ns .. 23.1 ns
point add, latencygf2_122-gls-ugroup.add/binary-u.122-gls/mode=latency18.9 ns18.8 ns .. 18.9 ns
point add, latencyedwards127group.add/edwards.127/mode=latency22.2 ns22.2 ns .. 22.2 ns
point add, latencyedwards107group.add/edwards.107/mode=latency18.4 ns18.3 ns .. 18.4 ns
point add, latencytwisted128group.add/twisted.128/mode=latency28.8 ns28.7 ns .. 28.8 ns
point add, latencyweier127group.add/weier.127/mode=latency46.7 ns46.5 ns .. 46.8 ns
point add, latencyweier127-jacobiangroup.add/weier-jacobian.127/mode=latency45.3 ns45.1 ns .. 45.6 ns
point add, latencyweier107group.add/weier.107/mode=latency32.4 ns32.3 ns .. 32.4 ns
point add, latencyweier107-jacobiangroup.add/weier-jacobian.107/mode=latency35.5 ns35.4 ns .. 35.6 ns
point add, latencyedwards61x2group.add/edwards.61x2/mode=latency22.5 ns22.4 ns .. 22.5 ns
point add, latencyweier61x2group.add/weier.61x2/mode=latency36.2 ns36.2 ns .. 36.3 ns
point add, latencyweier61x2-jacobiangroup.add/weier-jacobian.61x2/mode=latency37.2 ns37.1 ns .. 37.3 ns
point add, latencytwisted61x2group.add/twisted.61x2/mode=latency22.3 ns22.3 ns .. 22.3 ns
point add, latencytwisted64x2group.add/twisted.64x2/mode=latency28.6 ns28.5 ns .. 28.7 ns
point add, latencytwisted-goldilocks2group.add/twisted.goldilocks2/mode=latency19.0 ns18.9 ns .. 19.0 ns
point add, latencyristretto255add/ristretto255/+=, 1 accumulator63.8 ns63.7 ns .. 63.8 ns
point subtractgf2_127group.sub/binary.127/mode=throughput14.7 ns14.7 ns .. 14.7 ns
point subtractgf2_127-lambdagroup.sub/binary-lambda.127/mode=throughput15.1 ns15.1 ns .. 15.2 ns
point subtractgf2_127-wgroup.sub/binary-w.127/mode=throughput14.7 ns14.6 ns .. 14.8 ns
point subtractgf2_127-ugroup.sub/binary-u.127/mode=throughput10.8 ns10.7 ns .. 10.8 ns
point subtractgf2_109group.sub/binary.109/mode=throughput13.2 ns13.2 ns .. 13.3 ns
point subtractgf2_109-lambdagroup.sub/binary-lambda.109/mode=throughput12.1 ns12.1 ns .. 12.1 ns
point subtractgf2_109-wgroup.sub/binary-w.109/mode=throughput12.1 ns12.1 ns .. 12.1 ns
point subtractgf2_109-ugroup.sub/binary-u.109/mode=throughput9.88 ns9.86 ns .. 9.90 ns
point subtractgf2_122-lambdagroup.sub/binary-lambda.122/mode=throughput16.7 ns16.7 ns .. 16.8 ns
point subtractgf2_122-wgroup.sub/binary-w.122/mode=throughput17.1 ns16.7 ns .. 17.5 ns
point subtractgf2_122-ugroup.sub/binary-u.122/mode=throughput13.2 ns13.2 ns .. 13.2 ns
point subtractgf2_122-gls-lambdagroup.sub/binary-lambda.122-gls/mode=throughput16.7 ns16.7 ns .. 16.8 ns
point subtractgf2_122-gls-wgroup.sub/binary-w.122-gls/mode=throughput16.8 ns16.7 ns .. 16.9 ns
point subtractgf2_122-gls-ugroup.sub/binary-u.122-gls/mode=throughput13.2 ns13.2 ns .. 13.2 ns
point subtracttwisted61x2group.sub/twisted.61x2/mode=throughput12.8 ns12.7 ns .. 12.8 ns
point subtractristretto255add/ristretto255/-=, 8 accumulators64.4 ns64.1 ns .. 64.7 ns
point negategf2_127negate/gf2_127/affine (y += x)0.64 ns0.64 ns .. 0.64 ns
point negategf2_127-lambdagroup.neg/binary-lambda.1270.65 ns0.65 ns .. 0.65 ns
point negategf2_127-wgroup.neg/binary-w.1270.65 ns0.65 ns .. 0.65 ns
point negategf2_127-ugroup.neg/binary-u.1270.64 ns0.63 ns .. 0.64 ns
point negategf2_109negate/gf2_109/affine (y += x)0.63 ns0.63 ns .. 0.63 ns
point negategf2_109-lambdagroup.neg/binary-lambda.1090.65 ns0.65 ns .. 0.65 ns
point negategf2_109-wgroup.neg/binary-w.1090.65 ns0.65 ns .. 0.65 ns
point negategf2_109-ugroup.neg/binary-u.1090.65 ns0.65 ns .. 0.65 ns
point negategf2_122negate/gf2_122/affine (y += x)0.63 ns0.63 ns .. 0.63 ns
point negategf2_122-lambdagroup.neg/binary-lambda.1220.65 ns0.65 ns .. 0.65 ns
point negategf2_122-wgroup.neg/binary-w.1220.65 ns0.65 ns .. 0.65 ns
point negategf2_122-ugroup.neg/binary-u.1220.65 ns0.65 ns .. 0.65 ns
point negategf2_122-glsgroup.neg/binary.122-gls1.12 ns1.12 ns .. 1.13 ns
point negategf2_122-gls-lambdagroup.neg/binary-lambda.122-gls0.65 ns0.65 ns .. 0.65 ns
point negategf2_122-gls-wgroup.neg/binary-w.122-gls0.65 ns0.65 ns .. 0.65 ns
point negategf2_122-gls-ugroup.neg/binary-u.122-gls0.65 ns0.65 ns .. 0.65 ns
point negateedwards127group.neg/edwards.1271.34 ns1.33 ns .. 1.34 ns
point negateedwards107group.neg/edwards.1070.83 ns0.82 ns .. 0.83 ns
point negatetwisted128group.neg/twisted.1280.85 ns0.85 ns .. 0.86 ns
point negateweier127group.neg/weier.1270.69 ns0.69 ns .. 0.69 ns
point negateweier127-jacobiangroup.neg/weier-jacobian.1270.69 ns0.69 ns .. 0.69 ns
point negateweier107group.neg/weier.1070.58 ns0.58 ns .. 0.58 ns
point negateweier107-jacobiangroup.neg/weier-jacobian.1070.58 ns0.58 ns .. 0.58 ns
point negateedwards61x2group.neg/edwards.61x20.88 ns0.88 ns .. 0.88 ns
point negateweier61x2group.neg/weier.61x20.66 ns0.66 ns .. 0.66 ns
point negateweier61x2-jacobiangroup.neg/weier-jacobian.61x20.66 ns0.66 ns .. 0.66 ns
point negatetwisted61x2group.neg/twisted.61x20.91 ns0.90 ns .. 0.92 ns
point negatetwisted64x2group.neg/twisted.64x20.91 ns0.90 ns .. 0.91 ns
point negatetwisted-goldilocks2group.neg/twisted.goldilocks21.49 ns1.48 ns .. 1.49 ns
point negateristretto255negate/ristretto255/-P6.20 ns6.17 ns .. 6.22 ns
point negatesecp256k1negate/secp256k1/PublicKey::negate12.8 ns12.7 ns .. 12.9 ns
point prepare, one at a timegf2_127group.prepare/binary.127/mode=indep3.88 ns3.87 ns .. 3.91 ns
point prepare, one at a timegf2_127-lambdagroup.prepare/binary-lambda.127/mode=indep340 ns339 ns .. 340 ns
point prepare, one at a timegf2_127-wgroup.prepare/binary-w.127/mode=indep0.63 ns0.62 ns .. 0.63 ns
point prepare, one at a timegf2_127-ugroup.prepare/binary-u.127/mode=indep0.63 ns0.63 ns .. 0.63 ns
point prepare, one at a timegf2_109group.prepare/binary.109/mode=indep2.77 ns2.76 ns .. 2.77 ns
point prepare, one at a timegf2_109-lambdagroup.prepare/binary-lambda.109/mode=indep349 ns348 ns .. 350 ns
point prepare, one at a timegf2_109-wgroup.prepare/binary-w.109/mode=indep0.61 ns0.61 ns .. 0.62 ns
point prepare, one at a timegf2_109-ugroup.prepare/binary-u.109/mode=indep0.63 ns0.63 ns .. 0.63 ns
point prepare, one at a timegf2_122group.prepare/binary.122/mode=indep4.92 ns4.90 ns .. 4.93 ns
point prepare, one at a timegf2_122-lambdagroup.prepare/binary-lambda.122/mode=indep166 ns166 ns .. 167 ns
point prepare, one at a timegf2_122-wgroup.prepare/binary-w.122/mode=indep0.63 ns0.63 ns .. 0.63 ns
point prepare, one at a timegf2_122-ugroup.prepare/binary-u.122/mode=indep0.61 ns0.61 ns .. 0.62 ns
point prepare, one at a timegf2_122-glsgroup.prepare/binary.122-gls/mode=indep4.31 ns4.29 ns .. 4.32 ns
point prepare, one at a timegf2_122-gls-lambdagroup.prepare/binary-lambda.122-gls/mode=indep167 ns167 ns .. 168 ns
point prepare, one at a timegf2_122-gls-wgroup.prepare/binary-w.122-gls/mode=indep0.63 ns0.63 ns .. 0.63 ns
point prepare, one at a timegf2_122-gls-ugroup.prepare/binary-u.122-gls/mode=indep0.63 ns0.63 ns .. 0.63 ns
point prepare, one at a timeedwards127group.prepare/edwards.127/mode=indep582 ns581 ns .. 583 ns
point prepare, one at a timeedwards107group.prepare/edwards.107/mode=indep546 ns544 ns .. 548 ns
point prepare, one at a timetwisted128group.prepare/twisted.128/mode=indep8.24 ns8.22 ns .. 8.26 ns
point prepare, one at a timeweier127group.prepare/weier.127/mode=indep0.61 ns0.61 ns .. 0.62 ns
point prepare, one at a timeweier127-jacobiangroup.prepare/weier-jacobian.127/mode=indep0.62 ns0.62 ns .. 0.62 ns
point prepare, one at a timeweier107group.prepare/weier.107/mode=indep0.62 ns0.62 ns .. 0.62 ns
point prepare, one at a timeweier107-jacobiangroup.prepare/weier-jacobian.107/mode=indep0.62 ns0.61 ns .. 0.62 ns
point prepare, one at a timeedwards61x2group.prepare/edwards.61x2/mode=indep216 ns216 ns .. 217 ns
point prepare, one at a timeweier61x2group.prepare/weier.61x2/mode=indep0.63 ns0.63 ns .. 0.63 ns
point prepare, one at a timeweier61x2-jacobiangroup.prepare/weier-jacobian.61x2/mode=indep0.63 ns0.63 ns .. 0.63 ns
point prepare, one at a timetwisted61x2group.prepare/twisted.61x2/mode=indep3.41 ns3.40 ns .. 3.41 ns
point prepare, one at a timetwisted64x2group.prepare/twisted.64x2/mode=indep5.43 ns5.41 ns .. 5.44 ns
point prepare, one at a timetwisted-goldilocks2group.prepare/twisted.goldilocks2/mode=indep4.48 ns4.46 ns .. 4.49 ns
point prepare, batchedgf2_127group.prepare/binary.127/mode=batch,n=10243.54 ns3.54 ns .. 3.54 ns
point prepare, batchedgf2_127-lambdagroup.prepare/binary-lambda.127/mode=batch,n=10246.33 ns6.30 ns .. 6.35 ns
point prepare, batchedgf2_127-wgroup.prepare/binary-w.127/mode=batch,n=10240.48 ns0.47 ns .. 0.49 ns
point prepare, batchedgf2_127-ugroup.prepare/binary-u.127/mode=batch,n=10240.49 ns0.48 ns .. 0.49 ns
point prepare, batchedgf2_109group.prepare/binary.109/mode=batch,n=10242.79 ns2.79 ns .. 2.80 ns
point prepare, batchedgf2_109-lambdagroup.prepare/binary-lambda.109/mode=batch,n=10245.17 ns5.16 ns .. 5.18 ns
point prepare, batchedgf2_109-wgroup.prepare/binary-w.109/mode=batch,n=10240.48 ns0.47 ns .. 0.48 ns
point prepare, batchedgf2_109-ugroup.prepare/binary-u.109/mode=batch,n=10240.49 ns0.48 ns .. 0.49 ns
point prepare, batchedgf2_122group.prepare/binary.122/mode=batch,n=10245.02 ns5.01 ns .. 5.03 ns
point prepare, batchedgf2_122-lambdagroup.prepare/binary-lambda.122/mode=batch,n=10247.55 ns7.53 ns .. 7.56 ns
point prepare, batchedgf2_122-wgroup.prepare/binary-w.122/mode=batch,n=10240.46 ns0.45 ns .. 0.47 ns
point prepare, batchedgf2_122-ugroup.prepare/binary-u.122/mode=batch,n=10240.48 ns0.47 ns .. 0.48 ns
point prepare, batchedgf2_122-glsgroup.prepare/binary.122-gls/mode=batch,n=10244.44 ns4.42 ns .. 4.45 ns
point prepare, batchedgf2_122-gls-lambdagroup.prepare/binary-lambda.122-gls/mode=batch,n=10247.53 ns7.52 ns .. 7.55 ns
point prepare, batchedgf2_122-gls-wgroup.prepare/binary-w.122-gls/mode=batch,n=10240.49 ns0.48 ns .. 0.50 ns
point prepare, batchedgf2_122-gls-ugroup.prepare/binary-u.122-gls/mode=batch,n=10240.48 ns0.47 ns .. 0.48 ns
point prepare, batchededwards127group.prepare/edwards.127/mode=batch,n=102428.3 ns28.2 ns .. 28.3 ns
point prepare, batchededwards107group.prepare/edwards.107/mode=batch,n=102422.7 ns22.6 ns .. 22.8 ns
point prepare, batchedtwisted128group.prepare/twisted.128/mode=batch,n=10248.08 ns8.06 ns .. 8.10 ns
point prepare, batchedweier127group.prepare/weier.127/mode=batch,n=10240.46 ns0.46 ns .. 0.47 ns
point prepare, batchedweier127-jacobiangroup.prepare/weier-jacobian.127/mode=batch,n=10240.49 ns0.48 ns .. 0.50 ns
point prepare, batchedweier107group.prepare/weier.107/mode=batch,n=10240.49 ns0.48 ns .. 0.50 ns
point prepare, batchedweier107-jacobiangroup.prepare/weier-jacobian.107/mode=batch,n=10240.48 ns0.48 ns .. 0.49 ns
point prepare, batchededwards61x2group.prepare/edwards.61x2/mode=batch,n=102418.8 ns18.8 ns .. 18.9 ns
point prepare, batchedweier61x2group.prepare/weier.61x2/mode=batch,n=10240.72 ns0.66 ns .. 0.78 ns
point prepare, batchedweier61x2-jacobiangroup.prepare/weier-jacobian.61x2/mode=batch,n=10240.54 ns0.52 ns .. 0.58 ns
point prepare, batchedtwisted61x2group.prepare/twisted.61x2/mode=batch,n=10243.60 ns3.59 ns .. 3.60 ns
point prepare, batchedtwisted64x2group.prepare/twisted.64x2/mode=batch,n=10245.51 ns5.49 ns .. 5.53 ns
point prepare, batchedtwisted-goldilocks2group.prepare/twisted.goldilocks2/mode=batch,n=10244.51 ns4.48 ns .. 4.53 ns
is identitygf2_127group.is_identity/binary.1270.81 ns0.81 ns .. 0.81 ns
is identitygf2_127-lambdagroup.is_identity/binary-lambda.1270.84 ns0.84 ns .. 0.84 ns
is identitygf2_127-wgroup.is_identity/binary-w.1270.84 ns0.84 ns .. 0.84 ns
is identitygf2_127-ugroup.is_identity/binary-u.1270.84 ns0.84 ns .. 0.84 ns
is identitygf2_109group.is_identity/binary.1090.64 ns0.63 ns .. 0.64 ns
is identitygf2_109-lambdagroup.is_identity/binary-lambda.1090.56 ns0.55 ns .. 0.56 ns
is identitygf2_109-wgroup.is_identity/binary-w.1090.56 ns0.56 ns .. 0.56 ns
is identitygf2_109-ugroup.is_identity/binary-u.1090.56 ns0.55 ns .. 0.56 ns
is identitygf2_122group.is_identity/binary.1220.77 ns0.77 ns .. 0.78 ns
is identitygf2_122-lambdagroup.is_identity/binary-lambda.1220.77 ns0.77 ns .. 0.78 ns
is identitygf2_122-wgroup.is_identity/binary-w.1220.77 ns0.77 ns .. 0.78 ns
is identitygf2_122-ugroup.is_identity/binary-u.1220.77 ns0.77 ns .. 0.78 ns
is identitygf2_122-glsgroup.is_identity/binary.122-gls0.77 ns0.77 ns .. 0.77 ns
is identitygf2_122-gls-lambdagroup.is_identity/binary-lambda.122-gls0.78 ns0.77 ns .. 0.78 ns
is identitygf2_122-gls-wgroup.is_identity/binary-w.122-gls0.78 ns0.77 ns .. 0.78 ns
is identitygf2_122-gls-ugroup.is_identity/binary-u.122-gls0.78 ns0.77 ns .. 0.78 ns
is identityedwards127group.is_identity/edwards.1270.38 ns0.38 ns .. 0.38 ns
is identityedwards107group.is_identity/edwards.1070.75 ns0.74 ns .. 0.75 ns
is identitytwisted128group.is_identity/twisted.1280.34 ns0.34 ns .. 0.35 ns
is identityweier127group.is_identity/weier.1270.34 ns0.34 ns .. 0.34 ns
is identityweier127-jacobiangroup.is_identity/weier-jacobian.1270.34 ns0.34 ns .. 0.34 ns
is identityweier107group.is_identity/weier.1070.84 ns0.84 ns .. 0.84 ns
is identityweier107-jacobiangroup.is_identity/weier-jacobian.1070.84 ns0.84 ns .. 0.84 ns
is identityedwards61x2group.is_identity/edwards.61x20.38 ns0.38 ns .. 0.38 ns
is identityweier61x2group.is_identity/weier.61x20.52 ns0.52 ns .. 0.53 ns
is identityweier61x2-jacobiangroup.is_identity/weier-jacobian.61x20.52 ns0.52 ns .. 0.53 ns
is identitytwisted61x2group.is_identity/twisted.61x20.34 ns0.34 ns .. 0.35 ns
is identitytwisted64x2group.is_identity/twisted.64x20.34 ns0.34 ns .. 0.35 ns
is identitytwisted-goldilocks2group.is_identity/twisted.goldilocks20.52 ns0.52 ns .. 0.53 ns
equals addend, matchgf2_127group.equals/binary.127/mode=match2.98 ns2.97 ns .. 2.99 ns
equals addend, matchgf2_127-lambdagroup.equals/binary-lambda.127/mode=match3.84 ns3.83 ns .. 3.85 ns
equals addend, matchgf2_127-wgroup.equals/binary-w.127/mode=match3.86 ns3.84 ns .. 3.89 ns
equals addend, matchgf2_127-ugroup.equals/binary-u.127/mode=match4.67 ns4.66 ns .. 4.68 ns
equals addend, matchgf2_109group.equals/binary.109/mode=match2.24 ns2.23 ns .. 2.26 ns
equals addend, matchgf2_109-lambdagroup.equals/binary-lambda.109/mode=match1.60 ns1.60 ns .. 1.61 ns
equals addend, matchgf2_109-wgroup.equals/binary-w.109/mode=match1.82 ns1.81 ns .. 1.82 ns
equals addend, matchgf2_109-ugroup.equals/binary-u.109/mode=match3.46 ns3.46 ns .. 3.47 ns
equals addend, matchgf2_122-lambdagroup.equals/binary-lambda.122/mode=match3.78 ns3.77 ns .. 3.79 ns
equals addend, matchgf2_122-wgroup.equals/binary-w.122/mode=match3.77 ns3.77 ns .. 3.78 ns
equals addend, matchgf2_122-ugroup.equals/binary-u.122/mode=match5.31 ns5.30 ns .. 5.32 ns
equals addend, matchgf2_122-gls-lambdagroup.equals/binary-lambda.122-gls/mode=match3.79 ns3.78 ns .. 3.80 ns
equals addend, matchgf2_122-gls-wgroup.equals/binary-w.122-gls/mode=match3.79 ns3.78 ns .. 3.80 ns
equals addend, matchgf2_122-gls-ugroup.equals/binary-u.122-gls/mode=match5.32 ns5.30 ns .. 5.33 ns
equals addend, matchtwisted61x2group.equals/twisted.61x2/mode=match3.32 ns3.31 ns .. 3.33 ns
equals addend, mismatchgf2_127group.equals/binary.127/mode=mismatch2.87 ns2.87 ns .. 2.88 ns
equals addend, mismatchgf2_127-lambdagroup.equals/binary-lambda.127/mode=mismatch3.81 ns3.79 ns .. 3.82 ns
equals addend, mismatchgf2_127-wgroup.equals/binary-w.127/mode=mismatch3.84 ns3.83 ns .. 3.84 ns
equals addend, mismatchgf2_127-ugroup.equals/binary-u.127/mode=mismatch4.68 ns4.68 ns .. 4.69 ns
equals addend, mismatchgf2_109group.equals/binary.109/mode=mismatch2.28 ns2.28 ns .. 2.29 ns
equals addend, mismatchgf2_109-lambdagroup.equals/binary-lambda.109/mode=mismatch1.60 ns1.60 ns .. 1.60 ns
equals addend, mismatchgf2_109-wgroup.equals/binary-w.109/mode=mismatch1.82 ns1.82 ns .. 1.82 ns
equals addend, mismatchgf2_109-ugroup.equals/binary-u.109/mode=mismatch3.50 ns3.48 ns .. 3.53 ns
equals addend, mismatchgf2_122group.equals/binary.122/mode=mismatch3.75 ns3.73 ns .. 3.76 ns
equals addend, mismatchgf2_122-lambdagroup.equals/binary-lambda.122/mode=mismatch3.79 ns3.79 ns .. 3.80 ns
equals addend, mismatchgf2_122-wgroup.equals/binary-w.122/mode=mismatch3.79 ns3.78 ns .. 3.79 ns
equals addend, mismatchgf2_122-ugroup.equals/binary-u.122/mode=mismatch5.34 ns5.32 ns .. 5.36 ns
equals addend, mismatchgf2_122-glsgroup.equals/binary.122-gls/mode=mismatch3.79 ns3.78 ns .. 3.79 ns
equals addend, mismatchgf2_122-gls-lambdagroup.equals/binary-lambda.122-gls/mode=mismatch3.79 ns3.79 ns .. 3.80 ns
equals addend, mismatchgf2_122-gls-wgroup.equals/binary-w.122-gls/mode=mismatch3.79 ns3.78 ns .. 3.79 ns
equals addend, mismatchgf2_122-gls-ugroup.equals/binary-u.122-gls/mode=mismatch5.31 ns5.30 ns .. 5.32 ns
equals addend, mismatchedwards127group.equals/edwards.127/mode=mismatch1.97 ns1.97 ns .. 1.98 ns
equals addend, mismatchedwards107group.equals/edwards.107/mode=mismatch3.05 ns3.04 ns .. 3.06 ns
equals addend, mismatchtwisted128group.equals/twisted.128/mode=mismatch7.51 ns7.49 ns .. 7.53 ns
equals addend, mismatchweier127group.equals/weier.127/mode=mismatch2.05 ns2.04 ns .. 2.06 ns
equals addend, mismatchweier127-jacobiangroup.equals/weier-jacobian.127/mode=mismatch4.53 ns4.52 ns .. 4.54 ns
equals addend, mismatchweier107group.equals/weier.107/mode=mismatch3.63 ns3.62 ns .. 3.64 ns
equals addend, mismatchweier107-jacobiangroup.equals/weier-jacobian.107/mode=mismatch5.96 ns5.95 ns .. 5.98 ns
equals addend, mismatchedwards61x2group.equals/edwards.61x2/mode=mismatch1.65 ns1.64 ns .. 1.66 ns
equals addend, mismatchweier61x2group.equals/weier.61x2/mode=mismatch1.70 ns1.69 ns .. 1.71 ns
equals addend, mismatchweier61x2-jacobiangroup.equals/weier-jacobian.61x2/mode=mismatch3.59 ns3.57 ns .. 3.62 ns
equals addend, mismatchtwisted61x2group.equals/twisted.61x2/mode=mismatch3.32 ns3.31 ns .. 3.32 ns
equals addend, mismatchtwisted64x2group.equals/twisted.64x2/mode=mismatch5.39 ns5.37 ns .. 5.40 ns
equals addend, mismatchtwisted-goldilocks2group.equals/twisted.goldilocks2/mode=mismatch4.92 ns4.89 ns .. 4.95 ns
encode, one at a timegf2_127group.encode/binary.127/mode=indep371 ns370 ns .. 372 ns
encode, one at a timegf2_127-lambdagroup.encode/binary-lambda.127/mode=indep361 ns360 ns .. 362 ns
encode, one at a timegf2_127-wgroup.encode/binary-w.127/mode=indep361 ns360 ns .. 361 ns
encode, one at a timegf2_127-ugroup.encode/binary-u.127/mode=indep355 ns354 ns .. 355 ns
encode, one at a timegf2_109group.encode/binary.109/mode=indep381 ns381 ns .. 382 ns
encode, one at a timegf2_109-lambdagroup.encode/binary-lambda.109/mode=indep366 ns364 ns .. 368 ns
encode, one at a timegf2_109-wgroup.encode/binary-w.109/mode=indep359 ns357 ns .. 361 ns
encode, one at a timegf2_109-ugroup.encode/binary-u.109/mode=indep397 ns394 ns .. 401 ns
encode, one at a timegf2_122group.encode/binary.122/mode=indep211 ns210 ns .. 212 ns
encode, one at a timegf2_122-lambdagroup.encode/binary-lambda.122/mode=indep189 ns189 ns .. 189 ns
encode, one at a timegf2_122-wgroup.encode/binary-w.122/mode=indep204 ns204 ns .. 205 ns
encode, one at a timegf2_122-ugroup.encode/binary-u.122/mode=indep206 ns206 ns .. 207 ns
encode, one at a timegf2_122-glsgroup.encode/binary.122-gls/mode=indep209 ns208 ns .. 209 ns
encode, one at a timegf2_122-gls-lambdagroup.encode/binary-lambda.122-gls/mode=indep189 ns189 ns .. 190 ns
encode, one at a timegf2_122-gls-wgroup.encode/binary-w.122-gls/mode=indep204 ns204 ns .. 205 ns
encode, one at a timegf2_122-gls-ugroup.encode/binary-u.122-gls/mode=indep195 ns195 ns .. 196 ns
encode, one at a timeedwards127group.encode/edwards.127/mode=indep549 ns548 ns .. 551 ns
encode, one at a timeedwards107group.encode/edwards.107/mode=indep506 ns505 ns .. 507 ns
encode, one at a timetwisted128group.encode/twisted.128/mode=indep939 ns937 ns .. 941 ns
encode, one at a timeweier127group.encode/weier.127/mode=indep536 ns534 ns .. 537 ns
encode, one at a timeweier127-jacobiangroup.encode/weier-jacobian.127/mode=indep533 ns530 ns .. 536 ns
encode, one at a timeweier107group.encode/weier.107/mode=indep497 ns496 ns .. 498 ns
encode, one at a timeweier107-jacobiangroup.encode/weier-jacobian.107/mode=indep502 ns501 ns .. 503 ns
encode, one at a timeedwards61x2group.encode/edwards.61x2/mode=indep181 ns180 ns .. 181 ns
encode, one at a timeweier61x2group.encode/weier.61x2/mode=indep170 ns169 ns .. 170 ns
encode, one at a timeweier61x2-jacobiangroup.encode/weier-jacobian.61x2/mode=indep179 ns179 ns .. 180 ns
encode, one at a timetwisted61x2group.encode/twisted.61x2/mode=indep179 ns178 ns .. 179 ns
encode, one at a timetwisted64x2group.encode/twisted.64x2/mode=indep290 ns290 ns .. 291 ns
encode, one at a timetwisted-goldilocks2group.encode/twisted.goldilocks2/mode=indep197 ns194 ns .. 201 ns
encode, batchedgf2_127group.encode/binary.127/mode=batch,n=102413.1 ns13.0 ns .. 13.2 ns
encode, batchedgf2_127-lambdagroup.encode/binary-lambda.127/mode=batch,n=102410.1 ns10.1 ns .. 10.2 ns
encode, batchedgf2_127-wgroup.encode/binary-w.127/mode=batch,n=102410.3 ns10.3 ns .. 10.3 ns
encode, batchedgf2_127-ugroup.encode/binary-u.127/mode=batch,n=10249.17 ns9.15 ns .. 9.20 ns
encode, batchedgf2_109group.encode/binary.109/mode=batch,n=102410.9 ns10.9 ns .. 11.0 ns
encode, batchedgf2_109-lambdagroup.encode/binary-lambda.109/mode=batch,n=10248.13 ns8.12 ns .. 8.15 ns
encode, batchedgf2_109-wgroup.encode/binary-w.109/mode=batch,n=102410.4 ns10.3 ns .. 10.4 ns
encode, batchedgf2_109-ugroup.encode/binary-u.109/mode=batch,n=10249.88 ns9.84 ns .. 9.92 ns
encode, batchedgf2_122group.encode/binary.122/mode=batch,n=102415.7 ns15.6 ns .. 15.7 ns
encode, batchedgf2_122-lambdagroup.encode/binary-lambda.122/mode=batch,n=102411.9 ns11.9 ns .. 11.9 ns
encode, batchedgf2_122-wgroup.encode/binary-w.122/mode=batch,n=102414.4 ns14.4 ns .. 14.5 ns
encode, batchedgf2_122-ugroup.encode/binary-u.122/mode=batch,n=102412.1 ns12.0 ns .. 12.1 ns
encode, batchedgf2_122-glsgroup.encode/binary.122-gls/mode=batch,n=102415.2 ns15.2 ns .. 15.2 ns
encode, batchedgf2_122-gls-lambdagroup.encode/binary-lambda.122-gls/mode=batch,n=102411.6 ns11.6 ns .. 11.6 ns
encode, batchedgf2_122-gls-wgroup.encode/binary-w.122-gls/mode=batch,n=102414.4 ns14.4 ns .. 14.5 ns
encode, batchedgf2_122-gls-ugroup.encode/binary-u.122-gls/mode=batch,n=102412.3 ns12.3 ns .. 12.3 ns
encode, batchededwards127group.encode/edwards.127/mode=batch,n=102422.0 ns21.9 ns .. 22.0 ns
encode, batchededwards107group.encode/edwards.107/mode=batch,n=102420.3 ns20.2 ns .. 20.3 ns
encode, batchedtwisted128group.encode/twisted.128/mode=batch,n=102416.0 ns16.0 ns .. 16.0 ns
encode, batchedweier127group.encode/weier.127/mode=batch,n=102410.1 ns10.1 ns .. 10.1 ns
encode, batchedweier127-jacobiangroup.encode/weier-jacobian.127/mode=batch,n=102415.7 ns15.7 ns .. 15.7 ns
encode, batchedweier107group.encode/weier.107/mode=batch,n=102411.5 ns11.5 ns .. 11.5 ns
encode, batchedweier107-jacobiangroup.encode/weier-jacobian.107/mode=batch,n=102415.3 ns15.3 ns .. 15.3 ns
encode, batchededwards61x2group.encode/edwards.61x2/mode=batch,n=102416.2 ns16.2 ns .. 16.3 ns
encode, batchedweier61x2group.encode/weier.61x2/mode=batch,n=10248.11 ns8.09 ns .. 8.12 ns
encode, batchedweier61x2-jacobiangroup.encode/weier-jacobian.61x2/mode=batch,n=102411.7 ns11.7 ns .. 11.7 ns
encode, batchedtwisted61x2group.encode/twisted.61x2/mode=batch,n=10248.07 ns8.05 ns .. 8.09 ns
encode, batchedtwisted64x2group.encode/twisted.64x2/mode=batch,n=102410.3 ns10.3 ns .. 10.4 ns
encode, batchedtwisted-goldilocks2group.encode/twisted.goldilocks2/mode=batch,n=102411.3 ns11.2 ns .. 11.3 ns
decode, one at a timegf2_127group.decode/binary.127/mode=indep367 ns366 ns .. 368 ns
decode, one at a timegf2_127-lambdagroup.decode/binary-lambda.127/mode=indep364 ns364 ns .. 365 ns
decode, one at a timegf2_127-wgroup.decode/binary-w.127/mode=indep361 ns361 ns .. 362 ns
decode, one at a timegf2_127-ugroup.decode/binary-u.127/mode=indep376 ns375 ns .. 377 ns
decode, one at a timegf2_109group.decode/binary.109/mode=indep380 ns379 ns .. 381 ns
decode, one at a timegf2_109-lambdagroup.decode/binary-lambda.109/mode=indep381 ns381 ns .. 382 ns
decode, one at a timegf2_109-wgroup.decode/binary-w.109/mode=indep378 ns377 ns .. 379 ns
decode, one at a timegf2_109-ugroup.decode/binary-u.109/mode=indep398 ns397 ns .. 400 ns
decode, one at a timegf2_122group.decode/binary.122/mode=indep197 ns196 ns .. 197 ns
decode, one at a timegf2_122-lambdagroup.decode/binary-lambda.122/mode=indep196 ns195 ns .. 196 ns
decode, one at a timegf2_122-wgroup.decode/binary-w.122/mode=indep193 ns192 ns .. 193 ns
decode, one at a timegf2_122-ugroup.decode/binary-u.122/mode=indep223 ns222 ns .. 223 ns
decode, one at a timegf2_122-glsgroup.decode/binary.122-gls/mode=indep195 ns194 ns .. 195 ns
decode, one at a timegf2_122-gls-lambdagroup.decode/binary-lambda.122-gls/mode=indep187 ns187 ns .. 188 ns
decode, one at a timegf2_122-gls-wgroup.decode/binary-w.122-gls/mode=indep191 ns191 ns .. 191 ns
decode, one at a timegf2_122-gls-ugroup.decode/binary-u.122-gls/mode=indep207 ns206 ns .. 207 ns
decode, one at a timeedwards127group.decode/edwards.127/mode=indep489 ns488 ns .. 490 ns
decode, one at a timeedwards107group.decode/edwards.107/mode=indep359 ns359 ns .. 360 ns
decode, one at a timetwisted128group.decode/twisted.128/mode=indep949 ns946 ns .. 953 ns
decode, one at a timeweier127group.decode/weier.127/mode=indep489 ns487 ns .. 490 ns
decode, one at a timeweier127-jacobiangroup.decode/weier-jacobian.127/mode=indep492 ns490 ns .. 493 ns
decode, one at a timeweier107group.decode/weier.107/mode=indep358 ns357 ns .. 358 ns
decode, one at a timeweier107-jacobiangroup.decode/weier-jacobian.107/mode=indep351 ns350 ns .. 352 ns
decode, one at a timeedwards61x2group.decode/edwards.61x2/mode=indep405 ns404 ns .. 406 ns
decode, one at a timeweier61x2group.decode/weier.61x2/mode=indep416 ns416 ns .. 417 ns
decode, one at a timeweier61x2-jacobiangroup.decode/weier-jacobian.61x2/mode=indep417 ns415 ns .. 418 ns
decode, one at a timetwisted61x2group.decode/twisted.61x2/mode=indep425 ns425 ns .. 426 ns
decode, one at a timetwisted64x2group.decode/twisted.64x2/mode=indep721 ns719 ns .. 722 ns
decode, one at a timetwisted-goldilocks2group.decode/twisted.goldilocks2/mode=indep1.53 µs1.53 µs .. 1.54 µs
decode, batchedgf2_127group.decode/binary.127/mode=batch,n=102414.0 ns14.0 ns .. 14.0 ns
decode, batchedgf2_127-lambdagroup.decode/binary-lambda.127/mode=batch,n=102414.0 ns14.0 ns .. 14.0 ns
decode, batchedgf2_127-wgroup.decode/binary-w.127/mode=batch,n=102415.1 ns15.1 ns .. 15.1 ns
decode, batchedgf2_127-ugroup.decode/binary-u.127/mode=batch,n=102418.3 ns18.3 ns .. 18.4 ns
decode, batchedgf2_109group.decode/binary.109/mode=batch,n=102414.2 ns14.2 ns .. 14.2 ns
decode, batchedgf2_109-lambdagroup.decode/binary-lambda.109/mode=batch,n=102414.1 ns14.1 ns .. 14.2 ns
decode, batchedgf2_109-wgroup.decode/binary-w.109/mode=batch,n=102415.5 ns15.4 ns .. 15.5 ns
decode, batchedgf2_109-ugroup.decode/binary-u.109/mode=batch,n=102418.4 ns18.4 ns .. 18.4 ns
decode, batchedgf2_122group.decode/binary.122/mode=batch,n=102413.5 ns13.5 ns .. 13.5 ns
decode, batchedgf2_122-lambdagroup.decode/binary-lambda.122/mode=batch,n=102413.5 ns13.5 ns .. 13.5 ns
decode, batchedgf2_122-wgroup.decode/binary-w.122/mode=batch,n=102414.4 ns14.4 ns .. 14.5 ns
decode, batchedgf2_122-ugroup.decode/binary-u.122/mode=batch,n=102418.7 ns18.7 ns .. 18.8 ns
decode, batchedgf2_122-glsgroup.decode/binary.122-gls/mode=batch,n=102413.2 ns13.2 ns .. 13.2 ns
decode, batchedgf2_122-gls-lambdagroup.decode/binary-lambda.122-gls/mode=batch,n=102413.2 ns13.2 ns .. 13.2 ns
decode, batchedgf2_122-gls-wgroup.decode/binary-w.122-gls/mode=batch,n=102414.3 ns14.3 ns .. 14.3 ns
decode, batchedgf2_122-gls-ugroup.decode/binary-u.122-gls/mode=batch,n=102416.8 ns16.8 ns .. 16.8 ns
decode, batchededwards127group.decode/edwards.127/mode=batch,n=1024486 ns484 ns .. 488 ns
decode, batchededwards107group.decode/edwards.107/mode=batch,n=1024354 ns353 ns .. 355 ns
decode, batchedtwisted128group.decode/twisted.128/mode=batch,n=1024952 ns948 ns .. 956 ns
decode, batchedweier127group.decode/weier.127/mode=batch,n=1024485 ns483 ns .. 487 ns
decode, batchedweier127-jacobiangroup.decode/weier-jacobian.127/mode=batch,n=1024485 ns484 ns .. 487 ns
decode, batchedweier107group.decode/weier.107/mode=batch,n=1024352 ns351 ns .. 353 ns
decode, batchedweier107-jacobiangroup.decode/weier-jacobian.107/mode=batch,n=1024352 ns351 ns .. 352 ns
decode, batchededwards61x2group.decode/edwards.61x2/mode=batch,n=1024404 ns403 ns .. 405 ns
decode, batchedweier61x2group.decode/weier.61x2/mode=batch,n=1024412 ns411 ns .. 413 ns
decode, batchedweier61x2-jacobiangroup.decode/weier-jacobian.61x2/mode=batch,n=1024413 ns412 ns .. 414 ns
decode, batchedtwisted61x2group.decode/twisted.61x2/mode=batch,n=1024420 ns419 ns .. 421 ns
decode, batchedtwisted64x2group.decode/twisted.64x2/mode=batch,n=1024718 ns717 ns .. 720 ns
decode, batchedtwisted-goldilocks2group.decode/twisted.goldilocks2/mode=batch,n=10241.52 µs1.51 µs .. 1.52 µs
hash to curve, one at a timexorhash_to_curve/sha256 (XOR baseline)24.2 ns23.9 ns .. 24.6 ns
hash to curve, one at a timegf2_127hash_to_curve/gf2_127/pornin map x1485 ns485 ns .. 486 ns
hash to curve, one at a timegf2_127-lambdah2c/binary-lambda.127/mode=indep806 ns804 ns .. 808 ns
hash to curve, one at a timegf2_127-wh2c/binary-w.127/mode=indep865 ns863 ns .. 866 ns
hash to curve, one at a timegf2_127-uh2c/binary-u.127/mode=indep869 ns865 ns .. 874 ns
hash to curve, one at a timegf2_109hash_to_curve/gf2_109/pornin map x1560 ns559 ns .. 561 ns
hash to curve, one at a timegf2_109-lambdah2c/binary-lambda.109/mode=indep873 ns871 ns .. 875 ns
hash to curve, one at a timegf2_109-wh2c/binary-w.109/mode=indep855 ns854 ns .. 857 ns
hash to curve, one at a timegf2_109-uh2c/binary-u.109/mode=indep874 ns872 ns .. 875 ns
hash to curve, one at a timegf2_122hash_to_curve/gf2_122/pornin map x1373 ns373 ns .. 373 ns
hash to curve, one at a timegf2_122-lambdah2c/binary-lambda.122/mode=indep509 ns507 ns .. 510 ns
hash to curve, one at a timegf2_122-wh2c/binary-w.122/mode=indep517 ns516 ns .. 518 ns
hash to curve, one at a timegf2_122-uh2c/binary-u.122/mode=indep531 ns530 ns .. 532 ns
hash to curve, one at a timegf2_122-glshash_to_curve/gf2_122-gls/pornin map x1369 ns367 ns .. 370 ns
hash to curve, one at a timegf2_122-gls-lambdah2c/binary-lambda.122-gls/mode=indep515 ns513 ns .. 517 ns
hash to curve, one at a timegf2_122-gls-wh2c/binary-w.122-gls/mode=indep509 ns507 ns .. 511 ns
hash to curve, one at a timegf2_122-gls-uh2c/binary-u.122-gls/mode=indep522 ns521 ns .. 524 ns
hash to curve, one at a timeedwards127h2c/edwards.127/mode=indep1.07 µs1.06 µs .. 1.07 µs
hash to curve, one at a timeedwards107h2c/edwards.107/mode=indep806 ns802 ns .. 809 ns
hash to curve, one at a timetwisted128h2c/twisted.128/mode=indep1.92 µs1.92 µs .. 1.93 µs
hash to curve, one at a timeweier127h2c/weier.127/mode=indep1.03 µs1.02 µs .. 1.03 µs
hash to curve, one at a timeweier127-jacobianh2c/weier-jacobian.127/mode=indep1.03 µs1.03 µs .. 1.03 µs
hash to curve, one at a timeweier107h2c/weier.107/mode=indep746 ns744 ns .. 747 ns
hash to curve, one at a timeweier107-jacobianh2c/weier-jacobian.107/mode=indep742 ns741 ns .. 744 ns
hash to curve, one at a timeedwards61x2h2c/edwards.61x2/mode=indep624 ns622 ns .. 626 ns
hash to curve, one at a timeweier61x2h2c/weier.61x2/mode=indep637 ns635 ns .. 639 ns
hash to curve, one at a timeweier61x2-jacobianh2c/weier-jacobian.61x2/mode=indep638 ns637 ns .. 640 ns
hash to curve, one at a timetwisted61x2h2c/twisted.61x2/mode=indep630 ns629 ns .. 631 ns
hash to curve, one at a timetwisted64x2h2c/twisted.64x2/mode=indep1.10 µs1.10 µs .. 1.10 µs
hash to curve, one at a timetwisted-goldilocks2h2c/twisted.goldilocks2/mode=indep1.73 µs1.72 µs .. 1.74 µs
hash to curve, one at a timeristretto255hash_to_curve/ristretto255/hash_from_bytes<Sha512>4.72 µs4.70 µs .. 4.73 µs
hash to curve, one at a timesecp256k1hash_to_curve/secp256k1/try-and-increment (parse)4.49 µs4.48 µs .. 4.49 µs
hash to curve, batchedgf2_127hash_to_curve/gf2_127/pornin map x1, batched61.5 ns61.4 ns .. 61.5 ns
hash to curve, batchedgf2_127-lambdah2c/binary-lambda.127/mode=batch,n=102475.6 ns75.5 ns .. 75.7 ns
hash to curve, batchedgf2_127-wh2c/binary-w.127/mode=batch,n=102483.3 ns83.2 ns .. 83.4 ns
hash to curve, batchedgf2_127-uh2c/binary-u.127/mode=batch,n=102485.8 ns85.5 ns .. 86.1 ns
hash to curve, batchedgf2_109hash_to_curve/gf2_109/pornin map x1, batched63.7 ns63.7 ns .. 63.8 ns
hash to curve, batchedgf2_109-lambdah2c/binary-lambda.109/mode=batch,n=102482.0 ns81.9 ns .. 82.1 ns
hash to curve, batchedgf2_109-wh2c/binary-w.109/mode=batch,n=102479.4 ns79.3 ns .. 79.5 ns
hash to curve, batchedgf2_109-uh2c/binary-u.109/mode=batch,n=102481.2 ns81.1 ns .. 81.4 ns
hash to curve, batchedgf2_122hash_to_curve/gf2_122/pornin map x1, batched62.8 ns62.8 ns .. 62.8 ns
hash to curve, batchedgf2_122-lambdah2c/binary-lambda.122/mode=batch,n=102474.9 ns74.8 ns .. 75.1 ns
hash to curve, batchedgf2_122-wh2c/binary-w.122/mode=batch,n=102476.8 ns76.6 ns .. 76.9 ns
hash to curve, batchedgf2_122-uh2c/binary-u.122/mode=batch,n=102487.6 ns87.5 ns .. 87.7 ns
hash to curve, batchedgf2_122-glshash_to_curve/gf2_122-gls/pornin map x1, batched62.0 ns61.9 ns .. 62.0 ns
hash to curve, batchedgf2_122-gls-lambdah2c/binary-lambda.122-gls/mode=batch,n=102476.5 ns76.3 ns .. 76.6 ns
hash to curve, batchedgf2_122-gls-wh2c/binary-w.122-gls/mode=batch,n=102478.6 ns78.5 ns .. 78.8 ns
hash to curve, batchedgf2_122-gls-uh2c/binary-u.122-gls/mode=batch,n=102480.2 ns80.1 ns .. 80.3 ns
hash to curve, batchededwards127h2c/edwards.127/mode=batch,n=10241.07 µs1.07 µs .. 1.07 µs
hash to curve, batchededwards107h2c/edwards.107/mode=batch,n=1024805 ns801 ns .. 810 ns
hash to curve, batchedtwisted128h2c/twisted.128/mode=batch,n=10241.92 µs1.92 µs .. 1.93 µs
hash to curve, batchedweier127h2c/weier.127/mode=batch,n=10241.04 µs1.03 µs .. 1.04 µs
hash to curve, batchedweier127-jacobianh2c/weier-jacobian.127/mode=batch,n=10241.04 µs1.04 µs .. 1.04 µs
hash to curve, batchedweier107h2c/weier.107/mode=batch,n=1024748 ns747 ns .. 750 ns
hash to curve, batchedweier107-jacobianh2c/weier-jacobian.107/mode=batch,n=1024745 ns743 ns .. 748 ns
hash to curve, batchededwards61x2h2c/edwards.61x2/mode=batch,n=1024620 ns617 ns .. 623 ns
hash to curve, batchedweier61x2h2c/weier.61x2/mode=batch,n=1024637 ns635 ns .. 638 ns
hash to curve, batchedweier61x2-jacobianh2c/weier-jacobian.61x2/mode=batch,n=1024638 ns636 ns .. 639 ns
hash to curve, batchedtwisted61x2h2c/twisted.61x2/mode=batch,n=1024632 ns630 ns .. 634 ns
hash to curve, batchedtwisted64x2h2c/twisted.64x2/mode=batch,n=10241.10 µs1.10 µs .. 1.10 µs
hash to curve, batchedtwisted-goldilocks2h2c/twisted.goldilocks2/mode=batch,n=10241.75 µs1.74 µs .. 1.76 µs
hash to addend, one at a timegf2_127-lambdahash_to_curve/gf2_127-lambda/pornin map x1 to (x, λ)456 ns455 ns .. 457 ns
hash to addend, one at a timegf2_127-whash_to_curve/gf2_127-w/pornin map x1 to (x, λ)455 ns454 ns .. 456 ns
hash to addend, one at a timegf2_127-uhash_to_curve/gf2_127-u/pornin map x1 to (u, v)461 ns460 ns .. 462 ns
hash to addend, one at a timegf2_109-lambdahash_to_curve/gf2_109-lambda/pornin map x1 to (x, λ)550 ns548 ns .. 553 ns
hash to addend, one at a timegf2_109-whash_to_curve/gf2_109-w/pornin map x1 to (x, λ)535 ns534 ns .. 535 ns
hash to addend, one at a timegf2_109-uhash_to_curve/gf2_109-u/pornin map x1 to (u, v)533 ns532 ns .. 533 ns
hash to addend, one at a timegf2_122-lambdahash_to_curve/gf2_122-lambda/pornin map x1 to (x, λ)326 ns326 ns .. 327 ns
hash to addend, one at a timegf2_122-whash_to_curve/gf2_122-w/pornin map x1 to (x, λ)326 ns326 ns .. 327 ns
hash to addend, one at a timegf2_122-uhash_to_curve/gf2_122-u/pornin map x1 to (u, v)326 ns325 ns .. 326 ns
hash to addend, one at a timegf2_122-gls-lambdahash_to_curve/gf2_122-gls-lambda/pornin map x1 to (x, λ)315 ns314 ns .. 316 ns
hash to addend, one at a timegf2_122-gls-whash_to_curve/gf2_122-gls-w/pornin map x1 to (x, λ)316 ns315 ns .. 317 ns
hash to addend, one at a timegf2_122-gls-uhash_to_curve/gf2_122-gls-u/pornin map x1 to (u, v)319 ns318 ns .. 320 ns
hash to addend, batchedgf2_127-lambdahash_to_curve/gf2_127-lambda/pornin map x1 to (x, λ), batched53.5 ns53.4 ns .. 53.6 ns
hash to addend, batchedgf2_127-whash_to_curve/gf2_127-w/pornin map x1 to (x, λ), batched53.5 ns53.4 ns .. 53.6 ns
hash to addend, batchedgf2_127-uhash_to_curve/gf2_127-u/pornin map x1 to (u, v), batched57.2 ns57.2 ns .. 57.3 ns
hash to addend, batchedgf2_109-lambdahash_to_curve/gf2_109-lambda/pornin map x1 to (x, λ), batched55.2 ns55.0 ns .. 55.5 ns
hash to addend, batchedgf2_109-whash_to_curve/gf2_109-w/pornin map x1 to (x, λ), batched54.5 ns54.5 ns .. 54.5 ns
hash to addend, batchedgf2_109-uhash_to_curve/gf2_109-u/pornin map x1 to (u, v), batched60.7 ns60.3 ns .. 61.0 ns
hash to addend, batchedgf2_122-lambdahash_to_curve/gf2_122-lambda/pornin map x1 to (x, λ), batched53.9 ns53.9 ns .. 54.0 ns
hash to addend, batchedgf2_122-whash_to_curve/gf2_122-w/pornin map x1 to (x, λ), batched54.0 ns53.9 ns .. 54.0 ns
hash to addend, batchedgf2_122-uhash_to_curve/gf2_122-u/pornin map x1 to (u, v), batched57.1 ns57.0 ns .. 57.1 ns
hash to addend, batchedgf2_122-gls-lambdahash_to_curve/gf2_122-gls-lambda/pornin map x1 to (x, λ), batched55.4 ns55.4 ns .. 55.5 ns
hash to addend, batchedgf2_122-gls-whash_to_curve/gf2_122-gls-w/pornin map x1 to (x, λ), batched55.4 ns55.4 ns .. 55.4 ns
hash to addend, batchedgf2_122-gls-uhash_to_curve/gf2_122-gls-u/pornin map x1 to (u, v), batched55.7 ns55.7 ns .. 55.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) accumulators442111244636
gf2_127-wincompleteλ-projective, w codec: hashes and decodes to λ-affine442111244636
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) extended22321122333
gf2_122-lambdaincompleteλ-projective442111244636
gf2_122-wincompleteλ-projective, w codec442111244636
gf2_122-uunscaled (X:S:Z), w codec442111244636
GF(2^122), constant in GF(2^61) (GLS-shaped), 16 bytes
gf2_122-gls(X:S:Z:T) extended22311122333
gf2_122-gls-lambdaincompleteλ-projective442111244636
gf2_122-gls-wincompleteλ-projective, w codec442111244636
gf2_122-gls-uunscaled (X:S:Z), w codec442111244636
GF(2^109), 14 bytes
gf2_109(X:S:Z:T) extended443121244636
gf2_109-lambdaincompleteλ-projective4421112448523
gf2_109-wincompleteλ-projective, w codec4421112448523
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_109batch3.49 ns3.49 ns .. 3.50 nsper elem
batch invertgf2_122/batch invert (product tree)gf2_122batch4.47 ns4.47 ns .. 4.47 nsper elem
batch invertgf2_127/batch invert (product tree)gf2_127batch3.60 ns3.60 ns .. 3.61 nsper elem
batch invertfp107/batch invert (product tree)fp107batch5.23 ns5.22 ns .. 5.23 nsper elem
batch invertfp127/batch invert (product tree)fp127batch5.64 ns5.64 ns .. 5.64 nsper elem
batch invertfp61x2/batch invert (product tree)fp61x2batch4.67 ns4.66 ns .. 4.67 nsper elem
batch invertfp64x2/batch invert (product tree)fp64x2batch5.77 ns5.77 ns .. 5.78 nsper elem
batch invertgoldilocks2/batch invert (product tree)goldilocks2batch5.87 ns5.85 ns .. 5.89 nsper elem
halftracegf2_109/halftracegf2_109per-element37.2 ns37.2 ns .. 37.2 nsper elem
halftracegf2_109/halftrace (byte tables)gf2_109per-element3.32 ns3.32 ns .. 3.33 nsper elem
halftracegf2_122/qsolve (z^2 + z = c, 2 base halftraces)gf2_122per-element2.69 ns2.68 ns .. 2.69 nsper elem
halftracegf2_127/halftracegf2_127per-element30.0 ns29.9 ns .. 30.0 nsper elem
halftracegf2_127/halftrace (byte tables)gf2_127per-element4.11 ns4.11 ns .. 4.11 nsper elem
halftracegf2_127/halftrace (nibble tables)gf2_127per-element17.2 ns17.2 ns .. 17.2 nsper elem
packfp107/packfp107per-element0.67 ns0.67 ns .. 0.67 nsper elem
packfp127/packfp127per-element0.34 ns0.34 ns .. 0.34 nsper elem
packfp128/packfp128per-element0.34 ns0.34 ns .. 0.34 nsper elem
packfp61x2/packfp61x2per-element0.34 ns0.34 ns .. 0.34 nsper elem
packfp64x2/packfp64x2per-element0.34 ns0.34 ns .. 0.34 nsper elem
packgoldilocks2/packgoldilocks2per-element0.40 ns0.40 ns .. 0.40 nsper elem
tracegf2_109/tracegf2_109per-element0.46 ns0.46 ns .. 0.46 nsper elem
tracegf2_122/tracegf2_122per-element0.35 ns0.34 ns .. 0.35 nsper elem
tracegf2_127/tracegf2_127per-element0.33 ns0.33 ns .. 0.33 nsper elem
negfp107/negfp107per-element0.42 ns0.42 ns .. 0.43 nsper elem
negfp127/negfp127per-element0.66 ns0.66 ns .. 0.66 nsper elem
negfp128/negfp128per-element0.40 ns0.40 ns .. 0.40 nsper elem
negfp61x2/negfp61x2per-element0.38 ns0.38 ns .. 0.38 nsper elem
negfp64x2/negfp64x2per-element0.40 ns0.40 ns .. 0.40 nsper elem
neggoldilocks2/neggoldilocks2per-element0.39 ns0.39 ns .. 0.39 nsper elem
mul_u2gf2_122/mul_u2 (by a^2 = 1 + a) latency (dependent chain)gf2_122latency0.63 ns0.63 ns .. 0.63 nsper elem
mul_u2gf2_122/mul_u2 (by a^2 = 1 + a) throughput (8 chains)gf2_122throughput0.20 ns0.20 ns .. 0.20 nsper elem
normalizegf2_109/normalize (to_u128)gf2_109per-element0.45 ns0.45 ns .. 0.45 nsper elem
normalizegf2_122/normalize (to_u128)gf2_122per-element0.65 ns0.65 ns .. 0.65 nsper elem
normalizegf2_127/normalize (to_u128)gf2_127per-element0.41 ns0.41 ns .. 0.41 nsper elem
unpackfp107/unpackfp107per-element0.51 ns0.51 ns .. 0.51 nsper elem
unpackfp127/unpackfp127per-element0.51 ns0.51 ns .. 0.51 nsper elem
unpackfp128/unpackfp128per-element0.51 ns0.51 ns .. 0.51 nsper elem
unpackfp61x2/unpackfp61x2per-element0.72 ns0.72 ns .. 0.72 nsper elem
unpackfp64x2/unpackfp64x2per-element0.55 ns0.55 ns .. 0.55 nsper elem
unpackgoldilocks2/unpackgoldilocks2per-element0.55 ns0.55 ns .. 0.55 nsper elem
subfp128/subfp128per-element0.60 ns0.60 ns .. 0.60 nsper elem
subfp61x2/subfp61x2per-element0.55 ns0.55 ns .. 0.55 nsper elem
subfp64x2/subfp64x2per-element0.53 ns0.53 ns .. 0.54 nsper elem
subgoldilocks2/subgoldilocks2per-element0.59 ns0.59 ns .. 0.60 nsper elem
addfp107/addfp107per-element0.51 ns0.50 ns .. 0.52 nsper elem
addfp127/addfp127per-element0.83 ns0.83 ns .. 0.83 nsper elem
addfp128/addfp128per-element0.89 ns0.89 ns .. 0.89 nsper elem
addfp61x2/addfp61x2per-element0.53 ns0.53 ns .. 0.53 nsper elem
addfp64x2/addfp64x2per-element0.56 ns0.56 ns .. 0.57 nsper elem
addgoldilocks2/addgoldilocks2per-element0.59 ns0.59 ns .. 0.59 nsper elem
squaregf2_109/square latency (dependent chain)gf2_109latency2.17 ns2.16 ns .. 2.17 nsper elem
squaregf2_109/square throughput (8 chains)gf2_109throughput0.83 ns0.83 ns .. 0.84 nsper elem
squaregf2_122/square latency (dependent chain)gf2_122latency4.44 ns4.43 ns .. 4.44 nsper elem
squaregf2_122/square throughput (8 chains)gf2_122throughput1.09 ns1.09 ns .. 1.09 nsper elem
squaregf2_127/square latency (dependent chain)gf2_127latency2.08 ns2.08 ns .. 2.09 nsper elem
squaregf2_127/square throughput (8 chains)gf2_127throughput0.70 ns0.70 ns .. 0.70 nsper elem
squarefp107/square latency (dependent chain)fp107latency3.01 ns3.00 ns .. 3.02 nsper elem
squarefp107/square throughput (8 chains)fp107throughput0.97 ns0.97 ns .. 0.97 nsper elem
squarefp127/square latency (dependent chain)fp127latency3.57 ns3.56 ns .. 3.57 nsper elem
squarefp127/square throughput (8 chains)fp127throughput1.78 ns1.78 ns .. 1.78 nsper elem
squarefp128/square latency (dependent chain)fp128latency6.37 ns6.36 ns .. 6.37 nsper elem
squarefp128/square throughput (8 chains)fp128throughput2.58 ns2.58 ns .. 2.58 nsper elem
squarefp61x2/square latency (dependent chain)fp61x2latency3.48 ns3.48 ns .. 3.49 nsper elem
squarefp61x2/square throughput (8 chains)fp61x2throughput1.40 ns1.39 ns .. 1.40 nsper elem
squarefp64x2/square latency (dependent chain)fp64x2latency4.92 ns4.91 ns .. 4.92 nsper elem
squarefp64x2/square throughput (8 chains)fp64x2throughput2.23 ns2.23 ns .. 2.24 nsper elem
squaregoldilocks2/square latency (dependent chain)goldilocks2latency3.43 ns3.43 ns .. 3.44 nsper elem
squaregoldilocks2/square throughput (8 chains)goldilocks2throughput1.69 ns1.68 ns .. 1.71 nsper elem
mul_basegf2_122/mul_base (by a GF(2^61) constant) latency (dependent chain)gf2_122latency3.52 ns3.52 ns .. 3.52 nsper elem
mul_basegf2_122/mul_base (by a GF(2^61) constant) throughput (8 chains)gf2_122throughput1.14 ns1.14 ns .. 1.14 nsper elem
mulgf2_109/mul latency (dependent chain)gf2_109latency3.92 ns3.91 ns .. 3.93 nsper elem
mulgf2_109/mul throughput (8 chains)gf2_109throughput1.04 ns1.04 ns .. 1.04 nsper elem
mulgf2_122/mul latency (dependent chain)gf2_122latency4.90 ns4.90 ns .. 4.90 nsper elem
mulgf2_122/mul throughput (8 chains)gf2_122throughput1.21 ns1.21 ns .. 1.21 nsper elem
mulgf2_127/mul latency (dependent chain)gf2_127latency3.75 ns3.74 ns .. 3.77 nsper elem
mulgf2_127/mul throughput (8 chains)gf2_127throughput1.21 ns1.21 ns .. 1.21 nsper elem
mulfp107 schoolbook/mul latency (dependent chain)fp107latency3.20 ns3.20 ns .. 3.21 nsper elem
mulfp107 schoolbook/mul throughput (8 chains)fp107throughput1.15 ns1.15 ns .. 1.15 nsper elem
mulfp107/mul latency (dependent chain)fp107latency3.49 ns3.48 ns .. 3.50 nsper elem
mulfp107/mul throughput (8 chains)fp107throughput1.29 ns1.29 ns .. 1.29 nsper elem
mulfp127/mul latency (dependent chain)fp127latency3.82 ns3.81 ns .. 3.82 nsper elem
mulfp127/mul throughput (8 chains)fp127throughput1.50 ns1.50 ns .. 1.50 nsper elem
mulfp128/mul latency (dependent chain)fp128latency6.58 ns6.57 ns .. 6.58 nsper elem
mulfp128/mul throughput (8 chains)fp128throughput2.77 ns2.77 ns .. 2.77 nsper elem
mulfp61x2/mul latency (dependent chain)fp61x2latency3.30 ns3.30 ns .. 3.31 nsper elem
mulfp61x2/mul throughput (8 chains)fp61x2throughput1.26 ns1.26 ns .. 1.26 nsper elem
mulfp64x2/mul latency (dependent chain)fp64x2latency5.08 ns5.07 ns .. 5.09 nsper elem
mulfp64x2/mul throughput (8 chains)fp64x2throughput2.24 ns2.24 ns .. 2.24 nsper elem
mulgoldilocks2/mul latency (dependent chain)goldilocks2latency2.90 ns2.90 ns .. 2.90 nsper elem
mulgoldilocks2/mul throughput (8 chains)goldilocks2throughput1.36 ns1.35 ns .. 1.38 nsper elem
invertgf2_109/invertgf2_109per-element341 ns340 ns .. 343 nsper elem
invertgf2_122/invertgf2_122per-element159 ns159 ns .. 159 nsper elem
invertgf2_127/invertgf2_127per-element317 ns317 ns .. 318 nsper elem
invertfp107/invertfp107per-element477 ns477 ns .. 478 nsper elem
invertfp127/invertfp127per-element520 ns518 ns .. 522 nsper elem
invertfp128/invertfp128per-element933 ns932 ns .. 934 nsper elem
invertfp61x2/invertfp61x2per-element159 ns159 ns .. 159 nsper elem
invertfp64x2/invertfp64x2per-element281 ns280 ns .. 281 nsper elem
invertgoldilocks2/invertgoldilocks2per-element186 ns182 ns .. 190 nsper elem
sqrtgf2_109/sqrtgf2_109per-element2.77 ns2.77 ns .. 2.78 nsper elem
sqrtgf2_122/sqrtgf2_122per-element2.95 ns2.95 ns .. 2.95 nsper elem
sqrtgf2_127/sqrtgf2_127per-element1.26 ns1.26 ns .. 1.26 nsper elem
sqrtfp107/sqrt (x^(2^105))fp107per-element341 ns340 ns .. 341 nsper elem
sqrtfp127/sqrt (x^(2^125))fp127per-element470 ns468 ns .. 472 nsper elem
sqrtfp128/sqrtfp128per-element878 ns877 ns .. 878 nsper elem
sqrtfp61x2/sqrtfp61x2per-element277 ns277 ns .. 277 nsper elem
sqrtfp64x2/sqrtfp64x2per-element485 ns485 ns .. 485 nsper elem
sqrtgoldilocks2/sqrtgoldilocks2per-element727 ns724 ns .. 730 nsper elem
pow_p34fp107/pow_p34 (x^(2^105-1))fp107per-element469 ns468 ns .. 470 nsper elem
pow_p34fp127/pow_p34 (x^(2^125-1))fp127per-element494 ns493 ns .. 495 nsper elem
sqrt_ratiofp107/sqrt_ratiofp107per-element482 ns482 ns .. 482 nsper elem
sqrt_ratiofp127/sqrt_ratiofp127per-element518 ns517 ns .. 519 nsper elem
sqrt_ratiofp128/sqrt_ratiofp128per-element932 ns932 ns .. 933 nsper elem
sqrt_ratiofp61x2/sqrt_ratiofp61x2per-element277 ns277 ns .. 278 nsper elem
sqrt_ratiofp64x2/sqrt_ratiofp64x2per-element481 ns481 ns .. 482 nsper elem
sqrt_ratiogoldilocks2/sqrt_ratiogoldilocks2per-element677 ns676 ns .. 678 nsper elem

group ops

470 benchmarks
operationbenchmarkfamilymodetime95% CIunit
preparebinary.109/mode=batch,n=1024gf2_109batch2.79 ns2.79 ns .. 2.80 nsper elem
preparebinary.109/mode=batch,n=64gf2_109batch2.83 ns2.82 ns .. 2.83 nsper elem
preparebinary.109/mode=batch,n=8gf2_109batch4.00 ns3.99 ns .. 4.01 nsper elem
preparebinary.109/mode=indepgf2_109per-element2.77 ns2.76 ns .. 2.77 nsper elem
preparebinary-lambda.109/mode=batch,n=1024gf2_109-lambdabatch5.17 ns5.16 ns .. 5.18 nsper elem
preparebinary-lambda.109/mode=batch,n=64gf2_109-lambdabatch14.0 ns14.0 ns .. 14.0 nsper elem
preparebinary-lambda.109/mode=batch,n=8gf2_109-lambdabatch68.7 ns68.5 ns .. 68.9 nsper elem
preparebinary-lambda.109/mode=indepgf2_109-lambdaper-element349 ns348 ns .. 350 nsper elem
preparebinary-u.109/mode=batch,n=1024gf2_109-ubatch0.49 ns0.48 ns .. 0.49 nsper elem
preparebinary-u.109/mode=batch,n=64gf2_109-ubatch0.51 ns0.51 ns .. 0.51 nsper elem
preparebinary-u.109/mode=batch,n=8gf2_109-ubatch1.42 ns1.41 ns .. 1.42 nsper elem
preparebinary-u.109/mode=indepgf2_109-uper-element0.63 ns0.63 ns .. 0.63 nsper elem
preparebinary-w.109/mode=batch,n=1024gf2_109-wbatch0.48 ns0.47 ns .. 0.48 nsper elem
preparebinary-w.109/mode=batch,n=64gf2_109-wbatch0.51 ns0.51 ns .. 0.51 nsper elem
preparebinary-w.109/mode=batch,n=8gf2_109-wbatch1.40 ns1.40 ns .. 1.41 nsper elem
preparebinary-w.109/mode=indepgf2_109-wper-element0.61 ns0.61 ns .. 0.62 nsper elem
preparebinary.122/mode=batch,n=1024gf2_122batch5.02 ns5.01 ns .. 5.03 nsper elem
preparebinary.122/mode=indepgf2_122per-element4.92 ns4.90 ns .. 4.93 nsper elem
preparebinary.122-gls/mode=batch,n=1024gf2_122-glsbatch4.44 ns4.42 ns .. 4.45 nsper elem
preparebinary.122-gls/mode=indepgf2_122-glsper-element4.31 ns4.29 ns .. 4.32 nsper elem
preparebinary-lambda.122-gls/mode=batch,n=1024gf2_122-gls-lambdabatch7.53 ns7.52 ns .. 7.55 nsper elem
preparebinary-lambda.122-gls/mode=batch,n=64gf2_122-gls-lambdabatch13.1 ns13.1 ns .. 13.2 nsper elem
preparebinary-lambda.122-gls/mode=batch,n=8gf2_122-gls-lambdabatch47.8 ns47.7 ns .. 48.0 nsper elem
preparebinary-lambda.122-gls/mode=indepgf2_122-gls-lambdaper-element167 ns167 ns .. 168 nsper elem
preparebinary-u.122-gls/mode=batch,n=1024gf2_122-gls-ubatch0.48 ns0.47 ns .. 0.48 nsper elem
preparebinary-u.122-gls/mode=batch,n=64gf2_122-gls-ubatch0.51 ns0.51 ns .. 0.51 nsper elem
preparebinary-u.122-gls/mode=batch,n=8gf2_122-gls-ubatch1.42 ns1.41 ns .. 1.42 nsper elem
preparebinary-u.122-gls/mode=indepgf2_122-gls-uper-element0.63 ns0.63 ns .. 0.63 nsper elem
preparebinary-w.122-gls/mode=batch,n=1024gf2_122-gls-wbatch0.49 ns0.48 ns .. 0.50 nsper elem
preparebinary-w.122-gls/mode=batch,n=64gf2_122-gls-wbatch0.51 ns0.51 ns .. 0.51 nsper elem
preparebinary-w.122-gls/mode=batch,n=8gf2_122-gls-wbatch1.42 ns1.41 ns .. 1.42 nsper elem
preparebinary-w.122-gls/mode=indepgf2_122-gls-wper-element0.63 ns0.63 ns .. 0.63 nsper elem
preparebinary-lambda.122/mode=batch,n=1024gf2_122-lambdabatch7.55 ns7.53 ns .. 7.56 nsper elem
preparebinary-lambda.122/mode=batch,n=64gf2_122-lambdabatch13.1 ns13.1 ns .. 13.1 nsper elem
preparebinary-lambda.122/mode=batch,n=8gf2_122-lambdabatch46.9 ns46.8 ns .. 47.0 nsper elem
preparebinary-lambda.122/mode=indepgf2_122-lambdaper-element166 ns166 ns .. 167 nsper elem
preparebinary-u.122/mode=batch,n=1024gf2_122-ubatch0.48 ns0.47 ns .. 0.48 nsper elem
preparebinary-u.122/mode=batch,n=64gf2_122-ubatch0.50 ns0.50 ns .. 0.51 nsper elem
preparebinary-u.122/mode=batch,n=8gf2_122-ubatch1.41 ns1.41 ns .. 1.42 nsper elem
preparebinary-u.122/mode=indepgf2_122-uper-element0.61 ns0.61 ns .. 0.62 nsper elem
preparebinary-w.122/mode=batch,n=1024gf2_122-wbatch0.46 ns0.45 ns .. 0.47 nsper elem
preparebinary-w.122/mode=batch,n=64gf2_122-wbatch0.51 ns0.50 ns .. 0.51 nsper elem
preparebinary-w.122/mode=batch,n=8gf2_122-wbatch1.39 ns1.39 ns .. 1.40 nsper elem
preparebinary-w.122/mode=indepgf2_122-wper-element0.63 ns0.63 ns .. 0.63 nsper elem
preparebinary.127/mode=batch,n=1024gf2_127batch3.54 ns3.54 ns .. 3.54 nsper elem
preparebinary.127/mode=batch,n=64gf2_127batch3.68 ns3.68 ns .. 3.69 nsper elem
preparebinary.127/mode=batch,n=8gf2_127batch4.37 ns4.36 ns .. 4.38 nsper elem
preparebinary.127/mode=indepgf2_127per-element3.88 ns3.87 ns .. 3.91 nsper elem
preparebinary-lambda.127/mode=batch,n=1024gf2_127-lambdabatch6.33 ns6.30 ns .. 6.35 nsper elem
preparebinary-lambda.127/mode=batch,n=64gf2_127-lambdabatch14.2 ns14.2 ns .. 14.2 nsper elem
preparebinary-lambda.127/mode=batch,n=8gf2_127-lambdabatch64.1 ns63.9 ns .. 64.2 nsper elem
preparebinary-lambda.127/mode=indepgf2_127-lambdaper-element340 ns339 ns .. 340 nsper elem
preparebinary-u.127/mode=batch,n=1024gf2_127-ubatch0.49 ns0.48 ns .. 0.49 nsper elem
preparebinary-u.127/mode=batch,n=64gf2_127-ubatch0.51 ns0.51 ns .. 0.51 nsper elem
preparebinary-u.127/mode=batch,n=8gf2_127-ubatch1.41 ns1.40 ns .. 1.41 nsper elem
preparebinary-u.127/mode=indepgf2_127-uper-element0.63 ns0.63 ns .. 0.63 nsper elem
preparebinary-w.127/mode=batch,n=1024gf2_127-wbatch0.48 ns0.47 ns .. 0.49 nsper elem
preparebinary-w.127/mode=batch,n=64gf2_127-wbatch0.51 ns0.51 ns .. 0.51 nsper elem
preparebinary-w.127/mode=batch,n=8gf2_127-wbatch1.40 ns1.40 ns .. 1.41 nsper elem
preparebinary-w.127/mode=indepgf2_127-wper-element0.63 ns0.62 ns .. 0.63 nsper elem
prepareedwards.107/mode=batch,n=1024edwards107batch22.7 ns22.6 ns .. 22.8 nsper elem
prepareedwards.107/mode=indepedwards107per-element546 ns544 ns .. 548 nsper elem
prepareedwards.127/mode=batch,n=1024edwards127batch28.3 ns28.2 ns .. 28.3 nsper elem
prepareedwards.127/mode=indepedwards127per-element582 ns581 ns .. 583 nsper elem
prepareedwards.61x2/mode=batch,n=1024edwards61x2batch18.8 ns18.8 ns .. 18.9 nsper elem
prepareedwards.61x2/mode=indepedwards61x2per-element216 ns216 ns .. 217 nsper elem
preparetwisted.goldilocks2/mode=batch,n=1024twisted-goldilocks2batch4.51 ns4.48 ns .. 4.53 nsper elem
preparetwisted.goldilocks2/mode=indeptwisted-goldilocks2per-element4.48 ns4.46 ns .. 4.49 nsper elem
preparetwisted.128/mode=batch,n=1024twisted128batch8.08 ns8.06 ns .. 8.10 nsper elem
preparetwisted.128/mode=indeptwisted128per-element8.24 ns8.22 ns .. 8.26 nsper elem
preparetwisted.61x2/mode=batch,n=1024twisted61x2batch3.60 ns3.59 ns .. 3.60 nsper elem
preparetwisted.61x2/mode=batch,n=64twisted61x2batch3.80 ns3.79 ns .. 3.81 nsper elem
preparetwisted.61x2/mode=batch,n=8twisted61x2batch6.03 ns6.02 ns .. 6.05 nsper elem
preparetwisted.61x2/mode=indeptwisted61x2per-element3.41 ns3.40 ns .. 3.41 nsper elem
preparetwisted.64x2/mode=batch,n=1024twisted64x2batch5.51 ns5.49 ns .. 5.53 nsper elem
preparetwisted.64x2/mode=indeptwisted64x2per-element5.43 ns5.41 ns .. 5.44 nsper elem
prepareweier.107/mode=batch,n=1024weier107batch0.49 ns0.48 ns .. 0.50 nsper elem
prepareweier.107/mode=indepweier107per-element0.62 ns0.62 ns .. 0.62 nsper elem
prepareweier-jacobian.107/mode=batch,n=1024weier107-jacobianbatch0.48 ns0.48 ns .. 0.49 nsper elem
prepareweier-jacobian.107/mode=indepweier107-jacobianper-element0.62 ns0.61 ns .. 0.62 nsper elem
prepareweier.127/mode=batch,n=1024weier127batch0.46 ns0.46 ns .. 0.47 nsper elem
prepareweier.127/mode=indepweier127per-element0.61 ns0.61 ns .. 0.62 nsper elem
prepareweier-jacobian.127/mode=batch,n=1024weier127-jacobianbatch0.49 ns0.48 ns .. 0.50 nsper elem
prepareweier-jacobian.127/mode=indepweier127-jacobianper-element0.62 ns0.62 ns .. 0.62 nsper elem
prepareweier.61x2/mode=batch,n=1024weier61x2batch0.72 ns0.66 ns .. 0.78 nsper elem
prepareweier.61x2/mode=indepweier61x2per-element0.63 ns0.63 ns .. 0.63 nsper elem
prepareweier-jacobian.61x2/mode=batch,n=1024weier61x2-jacobianbatch0.54 ns0.52 ns .. 0.58 nsper elem
prepareweier-jacobian.61x2/mode=indepweier61x2-jacobianper-element0.63 ns0.63 ns .. 0.63 nsper elem
addxor-sha256/xor 32B, 1 accumulatorxorlatency0.38 ns0.37 ns .. 0.38 nsper elem
addxor-sha256/xor 32B, 8 accumulatorsxorthroughput0.71 ns0.70 ns .. 0.71 nsper elem
addbinary.109/mode=latencygf2_109latency24.3 ns24.2 ns .. 24.4 nsper elem
addbinary.109/mode=throughputgf2_109throughput12.8 ns12.8 ns .. 12.9 nsper elem
addgf2_109/extended += affine, 8 accumulatorsgf2_109throughput16.0 ns16.0 ns .. 16.0 nsper elem
addbinary-lambda.109/mode=latencygf2_109-lambdalatency24.2 ns24.1 ns .. 24.3 nsper elem
addbinary-lambda.109/mode=throughputgf2_109-lambdathroughput12.0 ns12.0 ns .. 12.0 nsper elem
addbinary-u.109/mode=latencygf2_109-ulatency19.0 ns18.9 ns .. 19.0 nsper elem
addbinary-u.109/mode=throughputgf2_109-uthroughput9.76 ns9.74 ns .. 9.78 nsper elem
addbinary-w.109/mode=latencygf2_109-wlatency24.2 ns24.2 ns .. 24.3 nsper elem
addbinary-w.109/mode=throughputgf2_109-wthroughput12.0 ns11.9 ns .. 12.0 nsper elem
addbinary.122/mode=latencygf2_122latency26.1 ns26.1 ns .. 26.2 nsper elem
addbinary.122/mode=throughputgf2_122throughput17.8 ns17.8 ns .. 17.9 nsper elem
addgf2_122/extended += affine, 8 accumulatorsgf2_122throughput22.2 ns22.2 ns .. 22.2 nsper elem
addbinary.122-gls/mode=latencygf2_122-glslatency23.7 ns23.7 ns .. 23.8 nsper elem
addbinary.122-gls/mode=throughputgf2_122-glsthroughput16.8 ns16.7 ns .. 16.8 nsper elem
addgf2_122-gls/extended += affine, 8 accumulatorsgf2_122-glsthroughput20.1 ns20.1 ns .. 20.1 nsper elem
addbinary-lambda.122-gls/mode=latencygf2_122-gls-lambdalatency23.1 ns23.1 ns .. 23.2 nsper elem
addbinary-lambda.122-gls/mode=throughputgf2_122-gls-lambdathroughput16.6 ns16.5 ns .. 16.6 nsper elem
addbinary-u.122-gls/mode=latencygf2_122-gls-ulatency18.9 ns18.8 ns .. 18.9 nsper elem
addbinary-u.122-gls/mode=throughputgf2_122-gls-uthroughput13.1 ns13.1 ns .. 13.1 nsper elem
addbinary-w.122-gls/mode=latencygf2_122-gls-wlatency23.1 ns23.0 ns .. 23.1 nsper elem
addbinary-w.122-gls/mode=throughputgf2_122-gls-wthroughput16.6 ns16.5 ns .. 16.6 nsper elem
addbinary-lambda.122/mode=latencygf2_122-lambdalatency23.0 ns23.0 ns .. 23.1 nsper elem
addbinary-lambda.122/mode=throughputgf2_122-lambdathroughput16.6 ns16.5 ns .. 16.6 nsper elem
addbinary-u.122/mode=latencygf2_122-ulatency18.8 ns18.8 ns .. 18.9 nsper elem
addbinary-u.122/mode=throughputgf2_122-uthroughput13.1 ns13.0 ns .. 13.1 nsper elem
addbinary-w.122/mode=latencygf2_122-wlatency23.0 ns22.9 ns .. 23.0 nsper elem
addbinary-w.122/mode=throughputgf2_122-wthroughput16.6 ns16.5 ns .. 16.6 nsper elem
addbinary.127/mode=latencygf2_127latency22.0 ns21.9 ns .. 22.0 nsper elem
addbinary.127/mode=throughputgf2_127throughput14.1 ns14.1 ns .. 14.1 nsper elem
addgf2_127/extended += affine, 8 accumulatorsgf2_127throughput18.8 ns18.8 ns .. 18.9 nsper elem
addbinary-lambda.127/mode=latencygf2_127-lambdalatency20.2 ns20.1 ns .. 20.2 nsper elem
addbinary-lambda.127/mode=throughputgf2_127-lambdathroughput14.9 ns14.9 ns .. 14.9 nsper elem
addbinary-u.127/mode=latencygf2_127-ulatency17.5 ns17.4 ns .. 17.5 nsper elem
addbinary-u.127/mode=throughputgf2_127-uthroughput10.7 ns10.6 ns .. 10.7 nsper elem
addbinary-w.127/mode=latencygf2_127-wlatency20.2 ns20.1 ns .. 20.2 nsper elem
addbinary-w.127/mode=throughputgf2_127-wthroughput14.9 ns14.8 ns .. 14.9 nsper elem
addedwards.107/mode=latencyedwards107latency18.4 ns18.3 ns .. 18.4 nsper elem
addedwards.107/mode=throughputedwards107throughput15.5 ns15.4 ns .. 15.5 nsper elem
addedwards107/+= montgomery affine, 8 accumulatorsedwards107throughput29.1 ns29.1 ns .. 29.1 nsper elem
addedwards.127/mode=latencyedwards127latency22.2 ns22.2 ns .. 22.2 nsper elem
addedwards.127/mode=throughputedwards127throughput20.1 ns20.0 ns .. 20.1 nsper elem
addedwards127/+= montgomery affine, 8 accumulatorsedwards127throughput40.1 ns40.1 ns .. 40.1 nsper elem
addedwards.61x2/mode=latencyedwards61x2latency22.5 ns22.4 ns .. 22.5 nsper elem
addedwards.61x2/mode=throughputedwards61x2throughput13.3 ns13.3 ns .. 13.4 nsper elem
addtwisted.goldilocks2/mode=latencytwisted-goldilocks2latency19.0 ns18.9 ns .. 19.0 nsper elem
addtwisted.goldilocks2/mode=throughputtwisted-goldilocks2throughput15.0 ns15.0 ns .. 15.1 nsper elem
addtwisted.128/mode=latencytwisted128latency28.8 ns28.7 ns .. 28.8 nsper elem
addtwisted.128/mode=throughputtwisted128throughput23.9 ns23.8 ns .. 24.0 nsper elem
addtwisted.61x2/mode=latencytwisted61x2latency22.3 ns22.3 ns .. 22.3 nsper elem
addtwisted.61x2/mode=throughputtwisted61x2throughput12.5 ns12.4 ns .. 12.6 nsper elem
addtwisted.64x2/mode=latencytwisted64x2latency28.6 ns28.5 ns .. 28.7 nsper elem
addtwisted.64x2/mode=throughputtwisted64x2throughput17.2 ns17.2 ns .. 17.3 nsper elem
addweier.107/mode=latencyweier107latency32.4 ns32.3 ns .. 32.4 nsper elem
addweier.107/mode=throughputweier107throughput30.5 ns30.4 ns .. 30.5 nsper elem
addweier-jacobian.107/mode=latencyweier107-jacobianlatency35.5 ns35.4 ns .. 35.6 nsper elem
addweier-jacobian.107/mode=throughputweier107-jacobianthroughput28.7 ns28.6 ns .. 28.7 nsper elem
addweier.127/mode=latencyweier127latency46.7 ns46.5 ns .. 46.8 nsper elem
addweier.127/mode=throughputweier127throughput45.4 ns45.3 ns .. 45.5 nsper elem
addweier-jacobian.127/mode=latencyweier127-jacobianlatency45.3 ns45.1 ns .. 45.6 nsper elem
addweier-jacobian.127/mode=throughputweier127-jacobianthroughput37.5 ns37.4 ns .. 37.6 nsper elem
addweier.61x2/mode=latencyweier61x2latency36.2 ns36.2 ns .. 36.3 nsper elem
addweier.61x2/mode=throughputweier61x2throughput26.8 ns26.7 ns .. 26.8 nsper elem
addweier-jacobian.61x2/mode=latencyweier61x2-jacobianlatency37.2 ns37.1 ns .. 37.3 nsper elem
addweier-jacobian.61x2/mode=throughputweier61x2-jacobianthroughput31.6 ns31.6 ns .. 31.7 nsper elem
addristretto255/+=, 1 accumulatorristretto255latency63.8 ns63.7 ns .. 63.8 nsper elem
addristretto255/+=, 8 accumulatorsristretto255throughput65.1 ns64.8 ns .. 65.5 nsper elem
subtractbinary.109/mode=throughputgf2_109throughput13.2 ns13.2 ns .. 13.3 nsper elem
subtractbinary-lambda.109/mode=throughputgf2_109-lambdathroughput12.1 ns12.1 ns .. 12.1 nsper elem
subtractbinary-u.109/mode=throughputgf2_109-uthroughput9.88 ns9.86 ns .. 9.90 nsper elem
subtractbinary-w.109/mode=throughputgf2_109-wthroughput12.1 ns12.1 ns .. 12.1 nsper elem
subtractbinary-lambda.122-gls/mode=throughputgf2_122-gls-lambdathroughput16.7 ns16.7 ns .. 16.8 nsper elem
subtractbinary-u.122-gls/mode=throughputgf2_122-gls-uthroughput13.2 ns13.2 ns .. 13.2 nsper elem
subtractbinary-w.122-gls/mode=throughputgf2_122-gls-wthroughput16.8 ns16.7 ns .. 16.9 nsper elem
subtractbinary-lambda.122/mode=throughputgf2_122-lambdathroughput16.7 ns16.7 ns .. 16.8 nsper elem
subtractbinary-u.122/mode=throughputgf2_122-uthroughput13.2 ns13.2 ns .. 13.2 nsper elem
subtractbinary-w.122/mode=throughputgf2_122-wthroughput17.1 ns16.7 ns .. 17.5 nsper elem
subtractbinary.127/mode=throughputgf2_127throughput14.7 ns14.7 ns .. 14.7 nsper elem
subtractbinary-lambda.127/mode=throughputgf2_127-lambdathroughput15.1 ns15.1 ns .. 15.2 nsper elem
subtractbinary-u.127/mode=throughputgf2_127-uthroughput10.8 ns10.7 ns .. 10.8 nsper elem
subtractbinary-w.127/mode=throughputgf2_127-wthroughput14.7 ns14.6 ns .. 14.8 nsper elem
subtracttwisted.61x2/mode=throughputtwisted61x2throughput12.8 ns12.7 ns .. 12.8 nsper elem
subtractristretto255/-=, 8 accumulatorsristretto255throughput64.4 ns64.1 ns .. 64.7 nsper elem
negatebinary.109gf2_109per-element1.13 ns1.13 ns .. 1.13 nsper elem
negategf2_109/affine (y += x)gf2_109per-element0.63 ns0.63 ns .. 0.63 nsper elem
negatebinary-lambda.109gf2_109-lambdaper-element0.65 ns0.65 ns .. 0.65 nsper elem
negatebinary-u.109gf2_109-uper-element0.65 ns0.65 ns .. 0.65 nsper elem
negatebinary-w.109gf2_109-wper-element0.65 ns0.65 ns .. 0.65 nsper elem
negatebinary.122gf2_122per-element1.13 ns1.13 ns .. 1.13 nsper elem
negategf2_122/affine (y += x)gf2_122per-element0.63 ns0.63 ns .. 0.63 nsper elem
negatebinary.122-glsgf2_122-glsper-element1.12 ns1.12 ns .. 1.13 nsper elem
negatebinary-lambda.122-glsgf2_122-gls-lambdaper-element0.65 ns0.65 ns .. 0.65 nsper elem
negatebinary-u.122-glsgf2_122-gls-uper-element0.65 ns0.65 ns .. 0.65 nsper elem
negatebinary-w.122-glsgf2_122-gls-wper-element0.65 ns0.65 ns .. 0.65 nsper elem
negatebinary-lambda.122gf2_122-lambdaper-element0.65 ns0.65 ns .. 0.65 nsper elem
negatebinary-u.122gf2_122-uper-element0.65 ns0.65 ns .. 0.65 nsper elem
negatebinary-w.122gf2_122-wper-element0.65 ns0.65 ns .. 0.65 nsper elem
negatebinary.127gf2_127per-element1.08 ns1.08 ns .. 1.09 nsper elem
negategf2_127/affine (y += x)gf2_127per-element0.64 ns0.64 ns .. 0.64 nsper elem
negatebinary-lambda.127gf2_127-lambdaper-element0.65 ns0.65 ns .. 0.65 nsper elem
negatebinary-u.127gf2_127-uper-element0.64 ns0.63 ns .. 0.64 nsper elem
negatebinary-w.127gf2_127-wper-element0.65 ns0.65 ns .. 0.65 nsper elem
negateedwards.107edwards107per-element0.83 ns0.82 ns .. 0.83 nsper elem
negateedwards107/extended (-X, -T)edwards107per-element1.02 ns1.02 ns .. 1.02 nsper elem
negateedwards.127edwards127per-element1.34 ns1.33 ns .. 1.34 nsper elem
negateedwards127/extended (-X, -T)edwards127per-element1.44 ns1.43 ns .. 1.45 nsper elem
negateedwards.61x2edwards61x2per-element0.88 ns0.88 ns .. 0.88 nsper elem
negatetwisted.goldilocks2twisted-goldilocks2per-element1.49 ns1.48 ns .. 1.49 nsper elem
negatetwisted.128twisted128per-element0.85 ns0.85 ns .. 0.86 nsper elem
negatetwisted.61x2twisted61x2per-element0.91 ns0.90 ns .. 0.92 nsper elem
negatetwisted.64x2twisted64x2per-element0.91 ns0.90 ns .. 0.91 nsper elem
negateweier.107weier107per-element0.58 ns0.58 ns .. 0.58 nsper elem
negateweier107/projective (-Y)weier107per-element0.80 ns0.80 ns .. 0.80 nsper elem
negateweier-jacobian.107weier107-jacobianper-element0.58 ns0.58 ns .. 0.58 nsper elem
negateweier.127weier127per-element0.69 ns0.69 ns .. 0.69 nsper elem
negateweier127/projective (-Y)weier127per-element0.93 ns0.92 ns .. 0.93 nsper elem
negateweier-jacobian.127weier127-jacobianper-element0.69 ns0.69 ns .. 0.69 nsper elem
negateweier.61x2weier61x2per-element0.66 ns0.66 ns .. 0.66 nsper elem
negateweier-jacobian.61x2weier61x2-jacobianper-element0.66 ns0.66 ns .. 0.66 nsper elem
negateristretto255/-Pristretto255per-element6.20 ns6.17 ns .. 6.22 nsper elem
negatesecp256k1/PublicKey::negatesecp256k1per-element12.8 ns12.7 ns .. 12.9 nsper elem
is identitybinary.109gf2_109per-element0.64 ns0.63 ns .. 0.64 nsper elem
is identitybinary-lambda.109gf2_109-lambdaper-element0.56 ns0.55 ns .. 0.56 nsper elem
is identitybinary-u.109gf2_109-uper-element0.56 ns0.55 ns .. 0.56 nsper elem
is identitybinary-w.109gf2_109-wper-element0.56 ns0.56 ns .. 0.56 nsper elem
is identitybinary.122gf2_122per-element0.77 ns0.77 ns .. 0.78 nsper elem
is identitybinary.122-glsgf2_122-glsper-element0.77 ns0.77 ns .. 0.77 nsper elem
is identitybinary-lambda.122-glsgf2_122-gls-lambdaper-element0.78 ns0.77 ns .. 0.78 nsper elem
is identitybinary-u.122-glsgf2_122-gls-uper-element0.78 ns0.77 ns .. 0.78 nsper elem
is identitybinary-w.122-glsgf2_122-gls-wper-element0.78 ns0.77 ns .. 0.78 nsper elem
is identitybinary-lambda.122gf2_122-lambdaper-element0.77 ns0.77 ns .. 0.78 nsper elem
is identitybinary-u.122gf2_122-uper-element0.77 ns0.77 ns .. 0.78 nsper elem
is identitybinary-w.122gf2_122-wper-element0.77 ns0.77 ns .. 0.78 nsper elem
is identitybinary.127gf2_127per-element0.81 ns0.81 ns .. 0.81 nsper elem
is identitybinary-lambda.127gf2_127-lambdaper-element0.84 ns0.84 ns .. 0.84 nsper elem
is identitybinary-u.127gf2_127-uper-element0.84 ns0.84 ns .. 0.84 nsper elem
is identitybinary-w.127gf2_127-wper-element0.84 ns0.84 ns .. 0.84 nsper elem
is identityedwards.107edwards107per-element0.75 ns0.74 ns .. 0.75 nsper elem
is identityedwards.127edwards127per-element0.38 ns0.38 ns .. 0.38 nsper elem
is identityedwards.61x2edwards61x2per-element0.38 ns0.38 ns .. 0.38 nsper elem
is identitytwisted.goldilocks2twisted-goldilocks2per-element0.52 ns0.52 ns .. 0.53 nsper elem
is identitytwisted.128twisted128per-element0.34 ns0.34 ns .. 0.35 nsper elem
is identitytwisted.61x2twisted61x2per-element0.34 ns0.34 ns .. 0.35 nsper elem
is identitytwisted.64x2twisted64x2per-element0.34 ns0.34 ns .. 0.35 nsper elem
is identityweier.107weier107per-element0.84 ns0.84 ns .. 0.84 nsper elem
is identityweier-jacobian.107weier107-jacobianper-element0.84 ns0.84 ns .. 0.84 nsper elem
is identityweier.127weier127per-element0.34 ns0.34 ns .. 0.34 nsper elem
is identityweier-jacobian.127weier127-jacobianper-element0.34 ns0.34 ns .. 0.34 nsper elem
is identityweier.61x2weier61x2per-element0.52 ns0.52 ns .. 0.53 nsper elem
is identityweier-jacobian.61x2weier61x2-jacobianper-element0.52 ns0.52 ns .. 0.53 nsper elem
equals addendbinary.109/mode=matchgf2_109match2.24 ns2.23 ns .. 2.26 nsper elem
equals addendbinary.109/mode=mismatchgf2_109mismatch2.28 ns2.28 ns .. 2.29 nsper elem
equals addendbinary-lambda.109/mode=matchgf2_109-lambdamatch1.60 ns1.60 ns .. 1.61 nsper elem
equals addendbinary-lambda.109/mode=mismatchgf2_109-lambdamismatch1.60 ns1.60 ns .. 1.60 nsper elem
equals addendbinary-u.109/mode=matchgf2_109-umatch3.46 ns3.46 ns .. 3.47 nsper elem
equals addendbinary-u.109/mode=mismatchgf2_109-umismatch3.50 ns3.48 ns .. 3.53 nsper elem
equals addendbinary-w.109/mode=matchgf2_109-wmatch1.82 ns1.81 ns .. 1.82 nsper elem
equals addendbinary-w.109/mode=mismatchgf2_109-wmismatch1.82 ns1.82 ns .. 1.82 nsper elem
equals addendbinary.122/mode=mismatchgf2_122mismatch3.75 ns3.73 ns .. 3.76 nsper elem
equals addendbinary.122-gls/mode=mismatchgf2_122-glsmismatch3.79 ns3.78 ns .. 3.79 nsper elem
equals addendbinary-lambda.122-gls/mode=matchgf2_122-gls-lambdamatch3.79 ns3.78 ns .. 3.80 nsper elem
equals addendbinary-lambda.122-gls/mode=mismatchgf2_122-gls-lambdamismatch3.79 ns3.79 ns .. 3.80 nsper elem
equals addendbinary-u.122-gls/mode=matchgf2_122-gls-umatch5.32 ns5.30 ns .. 5.33 nsper elem
equals addendbinary-u.122-gls/mode=mismatchgf2_122-gls-umismatch5.31 ns5.30 ns .. 5.32 nsper elem
equals addendbinary-w.122-gls/mode=matchgf2_122-gls-wmatch3.79 ns3.78 ns .. 3.80 nsper elem
equals addendbinary-w.122-gls/mode=mismatchgf2_122-gls-wmismatch3.79 ns3.78 ns .. 3.79 nsper elem
equals addendbinary-lambda.122/mode=matchgf2_122-lambdamatch3.78 ns3.77 ns .. 3.79 nsper elem
equals addendbinary-lambda.122/mode=mismatchgf2_122-lambdamismatch3.79 ns3.79 ns .. 3.80 nsper elem
equals addendbinary-u.122/mode=matchgf2_122-umatch5.31 ns5.30 ns .. 5.32 nsper elem
equals addendbinary-u.122/mode=mismatchgf2_122-umismatch5.34 ns5.32 ns .. 5.36 nsper elem
equals addendbinary-w.122/mode=matchgf2_122-wmatch3.77 ns3.77 ns .. 3.78 nsper elem
equals addendbinary-w.122/mode=mismatchgf2_122-wmismatch3.79 ns3.78 ns .. 3.79 nsper elem
equals addendbinary.127/mode=matchgf2_127match2.98 ns2.97 ns .. 2.99 nsper elem
equals addendbinary.127/mode=mismatchgf2_127mismatch2.87 ns2.87 ns .. 2.88 nsper elem
equals addendbinary-lambda.127/mode=matchgf2_127-lambdamatch3.84 ns3.83 ns .. 3.85 nsper elem
equals addendbinary-lambda.127/mode=mismatchgf2_127-lambdamismatch3.81 ns3.79 ns .. 3.82 nsper elem
equals addendbinary-u.127/mode=matchgf2_127-umatch4.67 ns4.66 ns .. 4.68 nsper elem
equals addendbinary-u.127/mode=mismatchgf2_127-umismatch4.68 ns4.68 ns .. 4.69 nsper elem
equals addendbinary-w.127/mode=matchgf2_127-wmatch3.86 ns3.84 ns .. 3.89 nsper elem
equals addendbinary-w.127/mode=mismatchgf2_127-wmismatch3.84 ns3.83 ns .. 3.84 nsper elem
equals addendedwards.107/mode=mismatchedwards107mismatch3.05 ns3.04 ns .. 3.06 nsper elem
equals addendedwards.127/mode=mismatchedwards127mismatch1.97 ns1.97 ns .. 1.98 nsper elem
equals addendedwards.61x2/mode=mismatchedwards61x2mismatch1.65 ns1.64 ns .. 1.66 nsper elem
equals addendtwisted.goldilocks2/mode=mismatchtwisted-goldilocks2mismatch4.92 ns4.89 ns .. 4.95 nsper elem
equals addendtwisted.128/mode=mismatchtwisted128mismatch7.51 ns7.49 ns .. 7.53 nsper elem
equals addendtwisted.61x2/mode=matchtwisted61x2match3.32 ns3.31 ns .. 3.33 nsper elem
equals addendtwisted.61x2/mode=mismatchtwisted61x2mismatch3.32 ns3.31 ns .. 3.32 nsper elem
equals addendtwisted.64x2/mode=mismatchtwisted64x2mismatch5.39 ns5.37 ns .. 5.40 nsper elem
equals addendweier.107/mode=mismatchweier107mismatch3.63 ns3.62 ns .. 3.64 nsper elem
equals addendweier-jacobian.107/mode=mismatchweier107-jacobianmismatch5.96 ns5.95 ns .. 5.98 nsper elem
equals addendweier.127/mode=mismatchweier127mismatch2.05 ns2.04 ns .. 2.06 nsper elem
equals addendweier-jacobian.127/mode=mismatchweier127-jacobianmismatch4.53 ns4.52 ns .. 4.54 nsper elem
equals addendweier.61x2/mode=mismatchweier61x2mismatch1.70 ns1.69 ns .. 1.71 nsper elem
equals addendweier-jacobian.61x2/mode=mismatchweier61x2-jacobianmismatch3.59 ns3.57 ns .. 3.62 nsper elem
encodebinary.109/mode=batch,n=1024gf2_109batch10.9 ns10.9 ns .. 11.0 nsper elem
encodebinary.109/mode=batch,n=64gf2_109batch20.3 ns20.3 ns .. 20.4 nsper elem
encodebinary.109/mode=batch,n=8gf2_109batch76.6 ns76.4 ns .. 76.8 nsper elem
encodebinary.109/mode=indepgf2_109per-element381 ns381 ns .. 382 nsper elem
encodebinary-lambda.109/mode=batch,n=1024gf2_109-lambdabatch8.13 ns8.12 ns .. 8.15 nsper elem
encodebinary-lambda.109/mode=batch,n=64gf2_109-lambdabatch17.5 ns17.4 ns .. 17.5 nsper elem
encodebinary-lambda.109/mode=batch,n=8gf2_109-lambdabatch73.3 ns73.1 ns .. 73.5 nsper elem
encodebinary-lambda.109/mode=indepgf2_109-lambdaper-element366 ns364 ns .. 368 nsper elem
encodebinary-u.109/mode=batch,n=1024gf2_109-ubatch9.88 ns9.84 ns .. 9.92 nsper elem
encodebinary-u.109/mode=batch,n=64gf2_109-ubatch19.1 ns19.0 ns .. 19.1 nsper elem
encodebinary-u.109/mode=batch,n=8gf2_109-ubatch74.5 ns74.3 ns .. 74.8 nsper elem
encodebinary-u.109/mode=indepgf2_109-uper-element397 ns394 ns .. 401 nsper elem
encodebinary-w.109/mode=batch,n=1024gf2_109-wbatch10.4 ns10.3 ns .. 10.4 nsper elem
encodebinary-w.109/mode=batch,n=64gf2_109-wbatch19.7 ns19.7 ns .. 19.7 nsper elem
encodebinary-w.109/mode=batch,n=8gf2_109-wbatch76.3 ns76.1 ns .. 76.5 nsper elem
encodebinary-w.109/mode=indepgf2_109-wper-element359 ns357 ns .. 361 nsper elem
encodebinary.122/mode=batch,n=1024gf2_122batch15.7 ns15.6 ns .. 15.7 nsper elem
encodebinary.122/mode=indepgf2_122per-element211 ns210 ns .. 212 nsper elem
encodebinary.122-gls/mode=batch,n=1024gf2_122-glsbatch15.2 ns15.2 ns .. 15.2 nsper elem
encodebinary.122-gls/mode=indepgf2_122-glsper-element209 ns208 ns .. 209 nsper elem
encodebinary-lambda.122-gls/mode=batch,n=1024gf2_122-gls-lambdabatch11.6 ns11.6 ns .. 11.6 nsper elem
encodebinary-lambda.122-gls/mode=batch,n=64gf2_122-gls-lambdabatch17.7 ns17.7 ns .. 17.7 nsper elem
encodebinary-lambda.122-gls/mode=batch,n=8gf2_122-gls-lambdabatch53.2 ns53.1 ns .. 53.4 nsper elem
encodebinary-lambda.122-gls/mode=indepgf2_122-gls-lambdaper-element189 ns189 ns .. 190 nsper elem
encodebinary-u.122-gls/mode=batch,n=1024gf2_122-gls-ubatch12.3 ns12.3 ns .. 12.3 nsper elem
encodebinary-u.122-gls/mode=batch,n=64gf2_122-gls-ubatch18.1 ns18.1 ns .. 18.2 nsper elem
encodebinary-u.122-gls/mode=batch,n=8gf2_122-gls-ubatch51.2 ns51.1 ns .. 51.3 nsper elem
encodebinary-u.122-gls/mode=indepgf2_122-gls-uper-element195 ns195 ns .. 196 nsper elem
encodebinary-w.122-gls/mode=batch,n=1024gf2_122-gls-wbatch14.4 ns14.4 ns .. 14.5 nsper elem
encodebinary-w.122-gls/mode=batch,n=64gf2_122-gls-wbatch20.6 ns20.6 ns .. 20.7 nsper elem
encodebinary-w.122-gls/mode=batch,n=8gf2_122-gls-wbatch55.5 ns55.4 ns .. 55.6 nsper elem
encodebinary-w.122-gls/mode=indepgf2_122-gls-wper-element204 ns204 ns .. 205 nsper elem
encodebinary-lambda.122/mode=batch,n=1024gf2_122-lambdabatch11.9 ns11.9 ns .. 11.9 nsper elem
encodebinary-lambda.122/mode=batch,n=64gf2_122-lambdabatch17.8 ns17.8 ns .. 17.8 nsper elem
encodebinary-lambda.122/mode=batch,n=8gf2_122-lambdabatch52.8 ns52.6 ns .. 52.9 nsper elem
encodebinary-lambda.122/mode=indepgf2_122-lambdaper-element189 ns189 ns .. 189 nsper elem
encodebinary-u.122/mode=batch,n=1024gf2_122-ubatch12.1 ns12.0 ns .. 12.1 nsper elem
encodebinary-u.122/mode=batch,n=64gf2_122-ubatch18.1 ns18.0 ns .. 18.1 nsper elem
encodebinary-u.122/mode=batch,n=8gf2_122-ubatch50.6 ns50.5 ns .. 50.7 nsper elem
encodebinary-u.122/mode=indepgf2_122-uper-element206 ns206 ns .. 207 nsper elem
encodebinary-w.122/mode=batch,n=1024gf2_122-wbatch14.4 ns14.4 ns .. 14.5 nsper elem
encodebinary-w.122/mode=batch,n=64gf2_122-wbatch20.6 ns20.6 ns .. 20.6 nsper elem
encodebinary-w.122/mode=batch,n=8gf2_122-wbatch55.6 ns55.4 ns .. 55.7 nsper elem
encodebinary-w.122/mode=indepgf2_122-wper-element204 ns204 ns .. 205 nsper elem
encodebinary.127/mode=batch,n=1024gf2_127batch13.1 ns13.0 ns .. 13.2 nsper elem
encodebinary.127/mode=batch,n=64gf2_127batch21.7 ns21.7 ns .. 21.8 nsper elem
encodebinary.127/mode=batch,n=8gf2_127batch71.6 ns71.4 ns .. 71.8 nsper elem
encodebinary.127/mode=indepgf2_127per-element371 ns370 ns .. 372 nsper elem
encodebinary-lambda.127/mode=batch,n=1024gf2_127-lambdabatch10.1 ns10.1 ns .. 10.2 nsper elem
encodebinary-lambda.127/mode=batch,n=64gf2_127-lambdabatch18.4 ns18.3 ns .. 18.4 nsper elem
encodebinary-lambda.127/mode=batch,n=8gf2_127-lambdabatch68.2 ns68.0 ns .. 68.3 nsper elem
encodebinary-lambda.127/mode=indepgf2_127-lambdaper-element361 ns360 ns .. 362 nsper elem
encodebinary-u.127/mode=batch,n=1024gf2_127-ubatch9.17 ns9.15 ns .. 9.20 nsper elem
encodebinary-u.127/mode=batch,n=64gf2_127-ubatch17.2 ns17.1 ns .. 17.2 nsper elem
encodebinary-u.127/mode=batch,n=8gf2_127-ubatch65.7 ns65.5 ns .. 65.9 nsper elem
encodebinary-u.127/mode=indepgf2_127-uper-element355 ns354 ns .. 355 nsper elem
encodebinary-w.127/mode=batch,n=1024gf2_127-wbatch10.3 ns10.3 ns .. 10.3 nsper elem
encodebinary-w.127/mode=batch,n=64gf2_127-wbatch18.6 ns18.6 ns .. 18.6 nsper elem
encodebinary-w.127/mode=batch,n=8gf2_127-wbatch67.8 ns67.7 ns .. 68.0 nsper elem
encodebinary-w.127/mode=indepgf2_127-wper-element361 ns360 ns .. 361 nsper elem
encodeedwards.107/mode=batch,n=1024edwards107batch20.3 ns20.2 ns .. 20.3 nsper elem
encodeedwards.107/mode=indepedwards107per-element506 ns505 ns .. 507 nsper elem
encodeedwards.127/mode=batch,n=1024edwards127batch22.0 ns21.9 ns .. 22.0 nsper elem
encodeedwards.127/mode=indepedwards127per-element549 ns548 ns .. 551 nsper elem
encodeedwards.61x2/mode=batch,n=1024edwards61x2batch16.2 ns16.2 ns .. 16.3 nsper elem
encodeedwards.61x2/mode=indepedwards61x2per-element181 ns180 ns .. 181 nsper elem
encodetwisted.goldilocks2/mode=batch,n=1024twisted-goldilocks2batch11.3 ns11.2 ns .. 11.3 nsper elem
encodetwisted.goldilocks2/mode=indeptwisted-goldilocks2per-element197 ns194 ns .. 201 nsper elem
encodetwisted.128/mode=batch,n=1024twisted128batch16.0 ns16.0 ns .. 16.0 nsper elem
encodetwisted.128/mode=indeptwisted128per-element939 ns937 ns .. 941 nsper elem
encodetwisted.61x2/mode=batch,n=1024twisted61x2batch8.07 ns8.05 ns .. 8.09 nsper elem
encodetwisted.61x2/mode=batch,n=64twisted61x2batch13.8 ns13.8 ns .. 13.9 nsper elem
encodetwisted.61x2/mode=batch,n=8twisted61x2batch45.4 ns45.3 ns .. 45.5 nsper elem
encodetwisted.61x2/mode=indeptwisted61x2per-element179 ns178 ns .. 179 nsper elem
encodetwisted.64x2/mode=batch,n=1024twisted64x2batch10.3 ns10.3 ns .. 10.4 nsper elem
encodetwisted.64x2/mode=indeptwisted64x2per-element290 ns290 ns .. 291 nsper elem
encodeweier.107/mode=batch,n=1024weier107batch11.5 ns11.5 ns .. 11.5 nsper elem
encodeweier.107/mode=indepweier107per-element497 ns496 ns .. 498 nsper elem
encodeweier-jacobian.107/mode=batch,n=1024weier107-jacobianbatch15.3 ns15.3 ns .. 15.3 nsper elem
encodeweier-jacobian.107/mode=indepweier107-jacobianper-element502 ns501 ns .. 503 nsper elem
encodeweier.127/mode=batch,n=1024weier127batch10.1 ns10.1 ns .. 10.1 nsper elem
encodeweier.127/mode=indepweier127per-element536 ns534 ns .. 537 nsper elem
encodeweier-jacobian.127/mode=batch,n=1024weier127-jacobianbatch15.7 ns15.7 ns .. 15.7 nsper elem
encodeweier-jacobian.127/mode=indepweier127-jacobianper-element533 ns530 ns .. 536 nsper elem
encodeweier.61x2/mode=batch,n=1024weier61x2batch8.11 ns8.09 ns .. 8.12 nsper elem
encodeweier.61x2/mode=indepweier61x2per-element170 ns169 ns .. 170 nsper elem
encodeweier-jacobian.61x2/mode=batch,n=1024weier61x2-jacobianbatch11.7 ns11.7 ns .. 11.7 nsper elem
encodeweier-jacobian.61x2/mode=indepweier61x2-jacobianper-element179 ns179 ns .. 180 nsper elem
decodebinary.109/mode=batch,n=1024gf2_109batch14.2 ns14.2 ns .. 14.2 nsper elem
decodebinary.109/mode=batch,n=64gf2_109batch23.5 ns23.4 ns .. 23.6 nsper elem
decodebinary.109/mode=batch,n=8gf2_109batch82.3 ns82.1 ns .. 82.5 nsper elem
decodebinary.109/mode=indepgf2_109per-element380 ns379 ns .. 381 nsper elem
decodebinary-lambda.109/mode=batch,n=1024gf2_109-lambdabatch14.1 ns14.1 ns .. 14.2 nsper elem
decodebinary-lambda.109/mode=batch,n=64gf2_109-lambdabatch23.6 ns23.5 ns .. 23.7 nsper elem
decodebinary-lambda.109/mode=batch,n=8gf2_109-lambdabatch82.3 ns82.1 ns .. 82.6 nsper elem
decodebinary-lambda.109/mode=indepgf2_109-lambdaper-element381 ns381 ns .. 382 nsper elem
decodebinary-u.109/mode=batch,n=1024gf2_109-ubatch18.4 ns18.4 ns .. 18.4 nsper elem
decodebinary-u.109/mode=batch,n=64gf2_109-ubatch26.7 ns26.6 ns .. 26.9 nsper elem
decodebinary-u.109/mode=batch,n=8gf2_109-ubatch87.4 ns87.2 ns .. 87.6 nsper elem
decodebinary-u.109/mode=indepgf2_109-uper-element398 ns397 ns .. 400 nsper elem
decodebinary-w.109/mode=batch,n=1024gf2_109-wbatch15.5 ns15.4 ns .. 15.5 nsper elem
decodebinary-w.109/mode=batch,n=64gf2_109-wbatch24.4 ns24.4 ns .. 24.5 nsper elem
decodebinary-w.109/mode=batch,n=8gf2_109-wbatch83.9 ns83.7 ns .. 84.1 nsper elem
decodebinary-w.109/mode=indepgf2_109-wper-element378 ns377 ns .. 379 nsper elem
decodebinary.122/mode=batch,n=1024gf2_122batch13.5 ns13.5 ns .. 13.5 nsper elem
decodebinary.122/mode=indepgf2_122per-element197 ns196 ns .. 197 nsper elem
decodebinary.122-gls/mode=batch,n=1024gf2_122-glsbatch13.2 ns13.2 ns .. 13.2 nsper elem
decodebinary.122-gls/mode=indepgf2_122-glsper-element195 ns194 ns .. 195 nsper elem
decodebinary-lambda.122-gls/mode=batch,n=1024gf2_122-gls-lambdabatch13.2 ns13.2 ns .. 13.2 nsper elem
decodebinary-lambda.122-gls/mode=batch,n=64gf2_122-gls-lambdabatch19.4 ns19.4 ns .. 19.5 nsper elem
decodebinary-lambda.122-gls/mode=batch,n=8gf2_122-gls-lambdabatch57.7 ns57.6 ns .. 57.9 nsper elem
decodebinary-lambda.122-gls/mode=indepgf2_122-gls-lambdaper-element187 ns187 ns .. 188 nsper elem
decodebinary-u.122-gls/mode=batch,n=1024gf2_122-gls-ubatch16.8 ns16.8 ns .. 16.8 nsper elem
decodebinary-u.122-gls/mode=batch,n=64gf2_122-gls-ubatch22.6 ns22.5 ns .. 22.6 nsper elem
decodebinary-u.122-gls/mode=batch,n=8gf2_122-gls-ubatch62.1 ns61.9 ns .. 62.4 nsper elem
decodebinary-u.122-gls/mode=indepgf2_122-gls-uper-element207 ns206 ns .. 207 nsper elem
decodebinary-w.122-gls/mode=batch,n=1024gf2_122-gls-wbatch14.3 ns14.3 ns .. 14.3 nsper elem
decodebinary-w.122-gls/mode=batch,n=64gf2_122-gls-wbatch20.1 ns20.0 ns .. 20.1 nsper elem
decodebinary-w.122-gls/mode=batch,n=8gf2_122-gls-wbatch58.4 ns58.3 ns .. 58.5 nsper elem
decodebinary-w.122-gls/mode=indepgf2_122-gls-wper-element191 ns191 ns .. 191 nsper elem
decodebinary-lambda.122/mode=batch,n=1024gf2_122-lambdabatch13.5 ns13.5 ns .. 13.5 nsper elem
decodebinary-lambda.122/mode=batch,n=64gf2_122-lambdabatch19.8 ns19.8 ns .. 19.8 nsper elem
decodebinary-lambda.122/mode=batch,n=8gf2_122-lambdabatch57.4 ns57.1 ns .. 57.6 nsper elem
decodebinary-lambda.122/mode=indepgf2_122-lambdaper-element196 ns195 ns .. 196 nsper elem
decodebinary-u.122/mode=batch,n=1024gf2_122-ubatch18.7 ns18.7 ns .. 18.8 nsper elem
decodebinary-u.122/mode=batch,n=64gf2_122-ubatch25.2 ns25.2 ns .. 25.3 nsper elem
decodebinary-u.122/mode=batch,n=8gf2_122-ubatch65.6 ns65.4 ns .. 65.8 nsper elem
decodebinary-u.122/mode=indepgf2_122-uper-element223 ns222 ns .. 223 nsper elem
decodebinary-w.122/mode=batch,n=1024gf2_122-wbatch14.4 ns14.4 ns .. 14.5 nsper elem
decodebinary-w.122/mode=batch,n=64gf2_122-wbatch20.6 ns20.6 ns .. 20.7 nsper elem
decodebinary-w.122/mode=batch,n=8gf2_122-wbatch59.0 ns58.9 ns .. 59.2 nsper elem
decodebinary-w.122/mode=indepgf2_122-wper-element193 ns192 ns .. 193 nsper elem
decodebinary.127/mode=batch,n=1024gf2_127batch14.0 ns14.0 ns .. 14.0 nsper elem
decodebinary.127/mode=batch,n=64gf2_127batch22.1 ns22.1 ns .. 22.1 nsper elem
decodebinary.127/mode=batch,n=8gf2_127batch76.4 ns76.3 ns .. 76.6 nsper elem
decodebinary.127/mode=indepgf2_127per-element367 ns366 ns .. 368 nsper elem
decodebinary-lambda.127/mode=batch,n=1024gf2_127-lambdabatch14.0 ns14.0 ns .. 14.0 nsper elem
decodebinary-lambda.127/mode=batch,n=64gf2_127-lambdabatch22.1 ns22.1 ns .. 22.1 nsper elem
decodebinary-lambda.127/mode=batch,n=8gf2_127-lambdabatch76.3 ns76.1 ns .. 76.6 nsper elem
decodebinary-lambda.127/mode=indepgf2_127-lambdaper-element364 ns364 ns .. 365 nsper elem
decodebinary-u.127/mode=batch,n=1024gf2_127-ubatch18.3 ns18.3 ns .. 18.4 nsper elem
decodebinary-u.127/mode=batch,n=64gf2_127-ubatch26.9 ns26.9 ns .. 27.0 nsper elem
decodebinary-u.127/mode=batch,n=8gf2_127-ubatch82.4 ns82.1 ns .. 82.6 nsper elem
decodebinary-u.127/mode=indepgf2_127-uper-element376 ns375 ns .. 377 nsper elem
decodebinary-w.127/mode=batch,n=1024gf2_127-wbatch15.1 ns15.1 ns .. 15.1 nsper elem
decodebinary-w.127/mode=batch,n=64gf2_127-wbatch23.0 ns22.9 ns .. 23.0 nsper elem
decodebinary-w.127/mode=batch,n=8gf2_127-wbatch78.2 ns78.0 ns .. 78.4 nsper elem
decodebinary-w.127/mode=indepgf2_127-wper-element361 ns361 ns .. 362 nsper elem
decodeedwards.107/mode=batch,n=1024edwards107batch354 ns353 ns .. 355 nsper elem
decodeedwards.107/mode=indepedwards107per-element359 ns359 ns .. 360 nsper elem
decodeedwards.127/mode=batch,n=1024edwards127batch486 ns484 ns .. 488 nsper elem
decodeedwards.127/mode=indepedwards127per-element489 ns488 ns .. 490 nsper elem
decodeedwards.61x2/mode=batch,n=1024edwards61x2batch404 ns403 ns .. 405 nsper elem
decodeedwards.61x2/mode=indepedwards61x2per-element405 ns404 ns .. 406 nsper elem
decodetwisted.goldilocks2/mode=batch,n=1024twisted-goldilocks2batch1.52 µs1.51 µs .. 1.52 µsper elem
decodetwisted.goldilocks2/mode=indeptwisted-goldilocks2per-element1.53 µs1.53 µs .. 1.54 µsper elem
decodetwisted.128/mode=batch,n=1024twisted128batch952 ns948 ns .. 956 nsper elem
decodetwisted.128/mode=indeptwisted128per-element949 ns946 ns .. 953 nsper elem
decodetwisted.61x2/mode=batch,n=1024twisted61x2batch420 ns419 ns .. 421 nsper elem
decodetwisted.61x2/mode=batch,n=64twisted61x2batch418 ns418 ns .. 419 nsper elem
decodetwisted.61x2/mode=batch,n=8twisted61x2batch423 ns421 ns .. 424 nsper elem
decodetwisted.61x2/mode=indeptwisted61x2per-element425 ns425 ns .. 426 nsper elem
decodetwisted.64x2/mode=batch,n=1024twisted64x2batch718 ns717 ns .. 720 nsper elem
decodetwisted.64x2/mode=indeptwisted64x2per-element721 ns719 ns .. 722 nsper elem
decodeweier.107/mode=batch,n=1024weier107batch352 ns351 ns .. 353 nsper elem
decodeweier.107/mode=indepweier107per-element358 ns357 ns .. 358 nsper elem
decodeweier-jacobian.107/mode=batch,n=1024weier107-jacobianbatch352 ns351 ns .. 352 nsper elem
decodeweier-jacobian.107/mode=indepweier107-jacobianper-element351 ns350 ns .. 352 nsper elem
decodeweier.127/mode=batch,n=1024weier127batch485 ns483 ns .. 487 nsper elem
decodeweier.127/mode=indepweier127per-element489 ns487 ns .. 490 nsper elem
decodeweier-jacobian.127/mode=batch,n=1024weier127-jacobianbatch485 ns484 ns .. 487 nsper elem
decodeweier-jacobian.127/mode=indepweier127-jacobianper-element492 ns490 ns .. 493 nsper elem
decodeweier.61x2/mode=batch,n=1024weier61x2batch412 ns411 ns .. 413 nsper elem
decodeweier.61x2/mode=indepweier61x2per-element416 ns416 ns .. 417 nsper elem
decodeweier-jacobian.61x2/mode=batch,n=1024weier61x2-jacobianbatch413 ns412 ns .. 414 nsper elem
decodeweier-jacobian.61x2/mode=indepweier61x2-jacobianper-element417 ns415 ns .. 418 nsper elem
normalizegf2_109/normalize, batchedgf2_109batch9.75 ns9.74 ns .. 9.76 nsper elem
normalizegf2_122/normalize, batchedgf2_122batch14.2 ns14.2 ns .. 14.2 nsper elem
normalizegf2_122-gls/normalize, batchedgf2_122-glsbatch13.2 ns13.2 ns .. 13.3 nsper elem
batch sumgf2_109/batch affine (tree sum)gf2_109batch14.9 ns14.9 ns .. 14.9 nsper elem
batch sumgf2_122/batch affine (tree sum)gf2_122batch15.8 ns15.8 ns .. 15.8 nsper elem
batch sumgf2_127/batch affine (tree sum)gf2_127batch16.0 ns16.0 ns .. 16.1 nsper elem
batch sumedwards107/batch montgomery affine (tree sum)edwards107batch24.5 ns24.5 ns .. 24.5 nsper elem
batch sumedwards127/batch montgomery affine (tree sum)edwards127batch30.3 ns30.2 ns .. 30.3 nsper elem
batch sumweier107/batch affine (tree sum)weier107batch23.1 ns23.1 ns .. 23.1 nsper elem
batch sumweier127/batch affine (tree sum)weier127batch28.6 ns28.5 ns .. 28.6 nsper elem
batch sumsecp256k1/combine_keys (jacobian += affine)secp256k1batch88.8 ns88.3 ns .. 89.3 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.

242 benchmarks
operationbenchmarkfamilymodetime95% CIunit
hash to curvesha256 (XOR baseline)xorper-element24.2 ns23.9 ns .. 24.6 nsper elem
hash to curvebinary.109/mode=batch,n=1024gf2_109batch81.7 ns81.4 ns .. 81.9 nsper elem
hash to curvebinary.109/mode=batch,n=64gf2_109batch139 ns139 ns .. 139 nsper elem
hash to curvebinary.109/mode=batch,n=8gf2_109batch360 ns359 ns .. 361 nsper elem
hash to curvebinary.109/mode=indepgf2_109per-element870 ns869 ns .. 871 nsper elem
hash to curvebinary-lambda.109/mode=batch,n=1024gf2_109-lambdabatch82.0 ns81.9 ns .. 82.1 nsper elem
hash to curvebinary-lambda.109/mode=batch,n=64gf2_109-lambdabatch139 ns138 ns .. 139 nsper elem
hash to curvebinary-lambda.109/mode=batch,n=8gf2_109-lambdabatch360 ns359 ns .. 361 nsper elem
hash to curvebinary-lambda.109/mode=indepgf2_109-lambdaper-element873 ns871 ns .. 875 nsper elem
hash to curvebinary-u.109/mode=batch,n=1024gf2_109-ubatch81.2 ns81.1 ns .. 81.4 nsper elem
hash to curvebinary-u.109/mode=batch,n=64gf2_109-ubatch135 ns135 ns .. 135 nsper elem
hash to curvebinary-u.109/mode=batch,n=8gf2_109-ubatch349 ns349 ns .. 350 nsper elem
hash to curvebinary-u.109/mode=indepgf2_109-uper-element874 ns872 ns .. 875 nsper elem
hash to curvebinary-w.109/mode=batch,n=1024gf2_109-wbatch79.4 ns79.3 ns .. 79.5 nsper elem
hash to curvebinary-w.109/mode=batch,n=64gf2_109-wbatch131 ns131 ns .. 132 nsper elem
hash to curvebinary-w.109/mode=batch,n=8gf2_109-wbatch346 ns345 ns .. 347 nsper elem
hash to curvebinary-w.109/mode=indepgf2_109-wper-element855 ns854 ns .. 857 nsper elem
hash to curvebinary.122/mode=batch,n=1024gf2_122batch74.9 ns74.8 ns .. 75.1 nsper elem
hash to curvebinary.122/mode=indepgf2_122per-element510 ns508 ns .. 511 nsper elem
hash to curvebinary.122-gls/mode=batch,n=1024gf2_122-glsbatch74.7 ns74.5 ns .. 74.9 nsper elem
hash to curvebinary.122-gls/mode=indepgf2_122-glsper-element535 ns534 ns .. 537 nsper elem
hash to curvebinary-lambda.122-gls/mode=batch,n=1024gf2_122-gls-lambdabatch76.5 ns76.3 ns .. 76.6 nsper elem
hash to curvebinary-lambda.122-gls/mode=batch,n=64gf2_122-gls-lambdabatch114 ns114 ns .. 114 nsper elem
hash to curvebinary-lambda.122-gls/mode=batch,n=8gf2_122-gls-lambdabatch265 ns265 ns .. 266 nsper elem
hash to curvebinary-lambda.122-gls/mode=indepgf2_122-gls-lambdaper-element515 ns513 ns .. 517 nsper elem
hash to curvebinary-u.122-gls/mode=batch,n=1024gf2_122-gls-ubatch80.2 ns80.1 ns .. 80.3 nsper elem
hash to curvebinary-u.122-gls/mode=batch,n=64gf2_122-gls-ubatch117 ns116 ns .. 117 nsper elem
hash to curvebinary-u.122-gls/mode=batch,n=8gf2_122-gls-ubatch258 ns257 ns .. 259 nsper elem
hash to curvebinary-u.122-gls/mode=indepgf2_122-gls-uper-element522 ns521 ns .. 524 nsper elem
hash to curvebinary-w.122-gls/mode=batch,n=1024gf2_122-gls-wbatch78.6 ns78.5 ns .. 78.8 nsper elem
hash to curvebinary-w.122-gls/mode=batch,n=64gf2_122-gls-wbatch115 ns115 ns .. 115 nsper elem
hash to curvebinary-w.122-gls/mode=batch,n=8gf2_122-gls-wbatch256 ns255 ns .. 256 nsper elem
hash to curvebinary-w.122-gls/mode=indepgf2_122-gls-wper-element509 ns507 ns .. 511 nsper elem
hash to curvebinary-lambda.122/mode=batch,n=1024gf2_122-lambdabatch74.9 ns74.8 ns .. 75.1 nsper elem
hash to curvebinary-lambda.122/mode=batch,n=64gf2_122-lambdabatch110 ns110 ns .. 110 nsper elem
hash to curvebinary-lambda.122/mode=batch,n=8gf2_122-lambdabatch249 ns248 ns .. 249 nsper elem
hash to curvebinary-lambda.122/mode=indepgf2_122-lambdaper-element509 ns507 ns .. 510 nsper elem
hash to curvebinary-u.122/mode=batch,n=1024gf2_122-ubatch87.6 ns87.5 ns .. 87.7 nsper elem
hash to curvebinary-u.122/mode=batch,n=64gf2_122-ubatch125 ns125 ns .. 126 nsper elem
hash to curvebinary-u.122/mode=batch,n=8gf2_122-ubatch268 ns267 ns .. 268 nsper elem
hash to curvebinary-u.122/mode=indepgf2_122-uper-element531 ns530 ns .. 532 nsper elem
hash to curvebinary-w.122/mode=batch,n=1024gf2_122-wbatch76.8 ns76.6 ns .. 76.9 nsper elem
hash to curvebinary-w.122/mode=batch,n=64gf2_122-wbatch114 ns113 ns .. 114 nsper elem
hash to curvebinary-w.122/mode=batch,n=8gf2_122-wbatch257 ns257 ns .. 258 nsper elem
hash to curvebinary-w.122/mode=indepgf2_122-wper-element517 ns516 ns .. 518 nsper elem
hash to curvebinary.127/mode=batch,n=1024gf2_127batch72.9 ns72.9 ns .. 73.0 nsper elem
hash to curvebinary.127/mode=batch,n=64gf2_127batch127 ns127 ns .. 127 nsper elem
hash to curvebinary.127/mode=batch,n=8gf2_127batch322 ns320 ns .. 325 nsper elem
hash to curvebinary.127/mode=indepgf2_127per-element779 ns778 ns .. 781 nsper elem
hash to curvebinary-lambda.127/mode=batch,n=1024gf2_127-lambdabatch75.6 ns75.5 ns .. 75.7 nsper elem
hash to curvebinary-lambda.127/mode=batch,n=64gf2_127-lambdabatch127 ns126 ns .. 127 nsper elem
hash to curvebinary-lambda.127/mode=batch,n=8gf2_127-lambdabatch318 ns317 ns .. 319 nsper elem
hash to curvebinary-lambda.127/mode=indepgf2_127-lambdaper-element806 ns804 ns .. 808 nsper elem
hash to curvebinary-u.127/mode=batch,n=1024gf2_127-ubatch85.8 ns85.5 ns .. 86.1 nsper elem
hash to curvebinary-u.127/mode=batch,n=64gf2_127-ubatch142 ns141 ns .. 142 nsper elem
hash to curvebinary-u.127/mode=batch,n=8gf2_127-ubatch351 ns350 ns .. 352 nsper elem
hash to curvebinary-u.127/mode=indepgf2_127-uper-element869 ns865 ns .. 874 nsper elem
hash to curvebinary-w.127/mode=batch,n=1024gf2_127-wbatch83.3 ns83.2 ns .. 83.4 nsper elem
hash to curvebinary-w.127/mode=batch,n=64gf2_127-wbatch138 ns138 ns .. 139 nsper elem
hash to curvebinary-w.127/mode=batch,n=8gf2_127-wbatch346 ns345 ns .. 347 nsper elem
hash to curvebinary-w.127/mode=indepgf2_127-wper-element865 ns863 ns .. 866 nsper elem
hash to curveedwards.107/mode=batch,n=1024edwards107batch805 ns801 ns .. 810 nsper elem
hash to curveedwards.107/mode=indepedwards107per-element806 ns802 ns .. 809 nsper elem
hash to curveedwards107/edwards-native try-and-incrementedwards107per-element1.07 µs1.07 µs .. 1.07 µsper elem
hash to curveedwards.127/mode=batch,n=1024edwards127batch1.07 µs1.07 µs .. 1.07 µsper elem
hash to curveedwards.127/mode=indepedwards127per-element1.07 µs1.06 µs .. 1.07 µsper elem
hash to curveedwards127/edwards-native try-and-incrementedwards127per-element1.10 µs1.10 µs .. 1.10 µsper elem
hash to curveedwards.61x2/mode=batch,n=1024edwards61x2batch620 ns617 ns .. 623 nsper elem
hash to curveedwards.61x2/mode=indepedwards61x2per-element624 ns622 ns .. 626 nsper elem
hash to curvetwisted.goldilocks2/mode=batch,n=1024twisted-goldilocks2batch1.75 µs1.74 µs .. 1.76 µsper elem
hash to curvetwisted.goldilocks2/mode=indeptwisted-goldilocks2per-element1.73 µs1.72 µs .. 1.74 µsper elem
hash to curvetwisted.128/mode=batch,n=1024twisted128batch1.92 µs1.92 µs .. 1.93 µsper elem
hash to curvetwisted.128/mode=indeptwisted128per-element1.92 µs1.92 µs .. 1.93 µsper elem
hash to curvetwisted.61x2/mode=batch,n=1024twisted61x2batch632 ns630 ns .. 634 nsper elem
hash to curvetwisted.61x2/mode=batch,n=64twisted61x2batch641 ns639 ns .. 643 nsper elem
hash to curvetwisted.61x2/mode=batch,n=8twisted61x2batch646 ns645 ns .. 648 nsper elem
hash to curvetwisted.61x2/mode=indeptwisted61x2per-element630 ns629 ns .. 631 nsper elem
hash to curvetwisted.64x2/mode=batch,n=1024twisted64x2batch1.10 µs1.10 µs .. 1.10 µsper elem
hash to curvetwisted.64x2/mode=indeptwisted64x2per-element1.10 µs1.10 µs .. 1.10 µsper elem
hash to curveweier.107/mode=batch,n=1024weier107batch748 ns747 ns .. 750 nsper elem
hash to curveweier.107/mode=indepweier107per-element746 ns744 ns .. 747 nsper elem
hash to curveweier-jacobian.107/mode=batch,n=1024weier107-jacobianbatch745 ns743 ns .. 748 nsper elem
hash to curveweier-jacobian.107/mode=indepweier107-jacobianper-element742 ns741 ns .. 744 nsper elem
hash to curveweier.127/mode=batch,n=1024weier127batch1.04 µs1.03 µs .. 1.04 µsper elem
hash to curveweier.127/mode=indepweier127per-element1.03 µs1.02 µs .. 1.03 µsper elem
hash to curveweier-jacobian.127/mode=batch,n=1024weier127-jacobianbatch1.04 µs1.04 µs .. 1.04 µsper elem
hash to curveweier-jacobian.127/mode=indepweier127-jacobianper-element1.03 µs1.03 µs .. 1.03 µsper elem
hash to curveweier.61x2/mode=batch,n=1024weier61x2batch637 ns635 ns .. 638 nsper elem
hash to curveweier.61x2/mode=indepweier61x2per-element637 ns635 ns .. 639 nsper elem
hash to curveweier-jacobian.61x2/mode=batch,n=1024weier61x2-jacobianbatch638 ns636 ns .. 639 nsper elem
hash to curveweier-jacobian.61x2/mode=indepweier61x2-jacobianper-element638 ns637 ns .. 640 nsper elem
hash to curveristretto255/hash_from_bytes<Sha512>ristretto255per-element4.72 µs4.70 µs .. 4.73 µsper elem
hash to curvesecp256k1/ellswift decodesecp256k1per-element4.97 µs4.96 µs .. 4.98 µsper elem
hash to curvesecp256k1/try-and-increment (parse)secp256k1per-element4.49 µs4.48 µs .. 4.49 µsper elem
ID to addendbinary.109/proj=fp127,h2c=pornin,mode=batch,n=1024gf2_109batch43.5 ns43.3 ns .. 43.6 nsper elem
ID to addendbinary.109/proj=fp127,h2c=ti,mode=batch,n=1024gf2_109batch47.0 ns46.9 ns .. 47.1 nsper elem
ID to addendbinary.109/proj=fp130,h2c=pornin,mode=batch,n=1024gf2_109batch48.1 ns48.0 ns .. 48.2 nsper elem
ID to addendbinary.109/proj=fp130,h2c=ti,mode=batch,n=1024gf2_109batch59.3 ns59.2 ns .. 59.5 nsper elem
ID to addendbinary.109/proj=gf2_127,h2c=pornin,mode=batch,n=1024gf2_109batch41.7 ns41.7 ns .. 41.8 nsper elem
ID to addendbinary.109/proj=gf2_127,h2c=ti,mode=batch,n=1024gf2_109batch43.9 ns43.7 ns .. 44.1 nsper elem
ID to addendbinary.109/proj=none,h2c=pornin,mode=batch,n=1024gf2_109batch64.2 ns64.1 ns .. 64.3 nsper elem
ID to addendbinary.109/proj=none,h2c=ti,mode=batch,n=1024gf2_109batch74.8 ns74.7 ns .. 74.9 nsper elem
ID to addendbinary-lambda.109/proj=fp127,h2c=pornin-addend,mode=batch,n=1024gf2_109-lambdabatch36.4 ns36.3 ns .. 36.4 nsper elem
ID to addendbinary-lambda.109/proj=fp127,h2c=ti,mode=batch,n=1024gf2_109-lambdabatch49.9 ns49.7 ns .. 50.0 nsper elem
ID to addendbinary-lambda.109/proj=fp127,h2c=ti-addend,mode=batch,n=1024gf2_109-lambdabatch45.1 ns45.0 ns .. 45.2 nsper elem
ID to addendbinary-lambda.109/proj=fp130,h2c=pornin-addend,mode=batch,n=1024gf2_109-lambdabatch40.8 ns40.7 ns .. 40.8 nsper elem
ID to addendbinary-lambda.109/proj=fp130,h2c=ti,mode=batch,n=1024gf2_109-lambdabatch62.1 ns61.9 ns .. 62.2 nsper elem
ID to addendbinary-lambda.109/proj=fp130,h2c=ti-addend,mode=batch,n=1024gf2_109-lambdabatch57.3 ns57.2 ns .. 57.4 nsper elem
ID to addendbinary-lambda.109/proj=gf2_127,h2c=pornin-addend,mode=batch,n=1024gf2_109-lambdabatch34.2 ns34.1 ns .. 34.2 nsper elem
ID to addendbinary-lambda.109/proj=gf2_127,h2c=ti,mode=batch,n=1024gf2_109-lambdabatch47.5 ns47.4 ns .. 47.6 nsper elem
ID to addendbinary-lambda.109/proj=gf2_127,h2c=ti-addend,mode=batch,n=1024gf2_109-lambdabatch42.8 ns42.7 ns .. 43.0 nsper elem
ID to addendbinary-lambda.109/proj=none,h2c=pornin-addend,mode=batch,n=1024gf2_109-lambdabatch57.7 ns57.6 ns .. 57.8 nsper elem
ID to addendbinary-lambda.109/proj=none,h2c=ti,mode=batch,n=1024gf2_109-lambdabatch77.8 ns77.5 ns .. 78.1 nsper elem
ID to addendbinary-lambda.109/proj=none,h2c=ti-addend,mode=batch,n=1024gf2_109-lambdabatch72.6 ns72.4 ns .. 72.7 nsper elem
ID to addendbinary-u.109/proj=fp127,h2c=pornin-addend,mode=batch,n=1024gf2_109-ubatch40.3 ns40.2 ns .. 40.3 nsper elem
ID to addendbinary-u.109/proj=fp127,h2c=ti,mode=batch,n=1024gf2_109-ubatch50.6 ns50.4 ns .. 50.7 nsper elem
ID to addendbinary-u.109/proj=fp130,h2c=pornin-addend,mode=batch,n=1024gf2_109-ubatch44.7 ns44.6 ns .. 44.8 nsper elem
ID to addendbinary-u.109/proj=fp130,h2c=ti,mode=batch,n=1024gf2_109-ubatch60.4 ns60.3 ns .. 60.5 nsper elem
ID to addendbinary-u.109/proj=gf2_127,h2c=pornin-addend,mode=batch,n=1024gf2_109-ubatch38.1 ns38.0 ns .. 38.1 nsper elem
ID to addendbinary-u.109/proj=gf2_127,h2c=ti,mode=batch,n=1024gf2_109-ubatch48.3 ns48.2 ns .. 48.4 nsper elem
ID to addendbinary-u.109/proj=none,h2c=pornin-addend,mode=batch,n=1024gf2_109-ubatch61.6 ns61.5 ns .. 61.7 nsper elem
ID to addendbinary-u.109/proj=none,h2c=ti,mode=batch,n=1024gf2_109-ubatch78.1 ns78.0 ns .. 78.3 nsper elem
ID to addendbinary-w.109/proj=fp127,h2c=pornin-addend,mode=batch,n=1024gf2_109-wbatch36.4 ns36.3 ns .. 36.4 nsper elem
ID to addendbinary-w.109/proj=fp127,h2c=ti,mode=batch,n=1024gf2_109-wbatch47.2 ns47.1 ns .. 47.3 nsper elem
ID to addendbinary-w.109/proj=fp130,h2c=pornin-addend,mode=batch,n=1024gf2_109-wbatch40.6 ns40.5 ns .. 40.7 nsper elem
ID to addendbinary-w.109/proj=fp130,h2c=ti,mode=batch,n=1024gf2_109-wbatch56.5 ns56.4 ns .. 56.7 nsper elem
ID to addendbinary-w.109/proj=gf2_127,h2c=pornin-addend,mode=batch,n=1024gf2_109-wbatch34.2 ns34.2 ns .. 34.3 nsper elem
ID to addendbinary-w.109/proj=gf2_127,h2c=ti,mode=batch,n=1024gf2_109-wbatch44.9 ns44.8 ns .. 45.0 nsper elem
ID to addendbinary-w.109/proj=none,h2c=pornin-addend,mode=batch,n=1024gf2_109-wbatch57.6 ns57.5 ns .. 57.7 nsper elem
ID to addendbinary-w.109/proj=none,h2c=ti,mode=batch,n=1024gf2_109-wbatch75.8 ns75.6 ns .. 75.9 nsper elem
ID to addendbinary-lambda.122-gls/proj=fp127,h2c=pornin-addend,mode=batch,n=1024gf2_122-gls-lambdabatch37.9 ns37.9 ns .. 38.0 nsper elem
ID to addendbinary-lambda.122-gls/proj=fp127,h2c=ti,mode=batch,n=1024gf2_122-gls-lambdabatch50.6 ns50.5 ns .. 50.7 nsper elem
ID to addendbinary-lambda.122-gls/proj=fp127,h2c=ti-addend,mode=batch,n=1024gf2_122-gls-lambdabatch43.6 ns43.5 ns .. 43.7 nsper elem
ID to addendbinary-lambda.122-gls/proj=fp130,h2c=pornin-addend,mode=batch,n=1024gf2_122-gls-lambdabatch42.3 ns42.1 ns .. 42.5 nsper elem
ID to addendbinary-lambda.122-gls/proj=fp130,h2c=ti,mode=batch,n=1024gf2_122-gls-lambdabatch61.0 ns60.8 ns .. 61.2 nsper elem
ID to addendbinary-lambda.122-gls/proj=fp130,h2c=ti-addend,mode=batch,n=1024gf2_122-gls-lambdabatch53.8 ns53.5 ns .. 54.1 nsper elem
ID to addendbinary-lambda.122-gls/proj=gf2_127,h2c=pornin-addend,mode=batch,n=1024gf2_122-gls-lambdabatch35.0 ns34.9 ns .. 35.1 nsper elem
ID to addendbinary-lambda.122-gls/proj=gf2_127,h2c=ti,mode=batch,n=1024gf2_122-gls-lambdabatch45.9 ns45.8 ns .. 46.0 nsper elem
ID to addendbinary-lambda.122-gls/proj=gf2_127,h2c=ti-addend,mode=batch,n=1024gf2_122-gls-lambdabatch38.2 ns38.0 ns .. 38.2 nsper elem
ID to addendbinary-lambda.122-gls/proj=none,h2c=pornin-addend,mode=batch,n=1024gf2_122-gls-lambdabatch58.8 ns58.7 ns .. 59.0 nsper elem
ID to addendbinary-lambda.122-gls/proj=none,h2c=ti,mode=batch,n=1024gf2_122-gls-lambdabatch73.6 ns73.4 ns .. 73.8 nsper elem
ID to addendbinary-lambda.122-gls/proj=none,h2c=ti-addend,mode=batch,n=1024gf2_122-gls-lambdabatch66.4 ns66.2 ns .. 66.6 nsper elem
ID to addendbinary-u.122-gls/proj=fp127,h2c=pornin-addend,mode=batch,n=1024gf2_122-gls-ubatch38.6 ns38.3 ns .. 38.9 nsper elem
ID to addendbinary-u.122-gls/proj=fp127,h2c=ti,mode=batch,n=1024gf2_122-gls-ubatch46.7 ns46.7 ns .. 46.8 nsper elem
ID to addendbinary-u.122-gls/proj=fp130,h2c=pornin-addend,mode=batch,n=1024gf2_122-gls-ubatch42.2 ns42.1 ns .. 42.3 nsper elem
ID to addendbinary-u.122-gls/proj=fp130,h2c=ti,mode=batch,n=1024gf2_122-gls-ubatch57.1 ns57.0 ns .. 57.2 nsper elem
ID to addendbinary-u.122-gls/proj=gf2_127,h2c=pornin-addend,mode=batch,n=1024gf2_122-gls-ubatch36.1 ns35.9 ns .. 36.4 nsper elem
ID to addendbinary-u.122-gls/proj=gf2_127,h2c=ti,mode=batch,n=1024gf2_122-gls-ubatch44.4 ns44.3 ns .. 44.5 nsper elem
ID to addendbinary-u.122-gls/proj=none,h2c=pornin-addend,mode=batch,n=1024gf2_122-gls-ubatch60.2 ns60.1 ns .. 60.4 nsper elem
ID to addendbinary-u.122-gls/proj=none,h2c=ti,mode=batch,n=1024gf2_122-gls-ubatch71.9 ns71.8 ns .. 72.1 nsper elem
ID to addendbinary-w.122-gls/proj=fp127,h2c=pornin-addend,mode=batch,n=1024gf2_122-gls-wbatch38.0 ns37.9 ns .. 38.1 nsper elem
ID to addendbinary-w.122-gls/proj=fp127,h2c=ti,mode=batch,n=1024gf2_122-gls-wbatch44.5 ns44.3 ns .. 44.6 nsper elem
ID to addendbinary-w.122-gls/proj=fp130,h2c=pornin-addend,mode=batch,n=1024gf2_122-gls-wbatch42.4 ns42.3 ns .. 42.5 nsper elem
ID to addendbinary-w.122-gls/proj=fp130,h2c=ti,mode=batch,n=1024gf2_122-gls-wbatch54.5 ns54.4 ns .. 54.6 nsper elem
ID to addendbinary-w.122-gls/proj=gf2_127,h2c=pornin-addend,mode=batch,n=1024gf2_122-gls-wbatch34.9 ns34.8 ns .. 34.9 nsper elem
ID to addendbinary-w.122-gls/proj=gf2_127,h2c=ti,mode=batch,n=1024gf2_122-gls-wbatch40.9 ns40.8 ns .. 41.0 nsper elem
ID to addendbinary-w.122-gls/proj=none,h2c=pornin-addend,mode=batch,n=1024gf2_122-gls-wbatch59.3 ns59.1 ns .. 59.5 nsper elem
ID to addendbinary-w.122-gls/proj=none,h2c=ti,mode=batch,n=1024gf2_122-gls-wbatch72.6 ns72.5 ns .. 72.8 nsper elem
ID to addendbinary-lambda.122/proj=fp127,h2c=pornin-addend,mode=batch,n=1024gf2_122-lambdabatch36.0 ns35.9 ns .. 36.1 nsper elem
ID to addendbinary-lambda.122/proj=fp127,h2c=ti,mode=batch,n=1024gf2_122-lambdabatch53.2 ns53.0 ns .. 53.4 nsper elem
ID to addendbinary-lambda.122/proj=fp127,h2c=ti-addend,mode=batch,n=1024gf2_122-lambdabatch45.6 ns45.5 ns .. 45.7 nsper elem
ID to addendbinary-lambda.122/proj=fp130,h2c=pornin-addend,mode=batch,n=1024gf2_122-lambdabatch40.8 ns40.7 ns .. 40.9 nsper elem
ID to addendbinary-lambda.122/proj=fp130,h2c=ti,mode=batch,n=1024gf2_122-lambdabatch61.8 ns61.5 ns .. 62.1 nsper elem
ID to addendbinary-lambda.122/proj=fp130,h2c=ti-addend,mode=batch,n=1024gf2_122-lambdabatch53.4 ns53.2 ns .. 53.7 nsper elem
ID to addendbinary-lambda.122/proj=gf2_127,h2c=pornin-addend,mode=batch,n=1024gf2_122-lambdabatch33.6 ns33.5 ns .. 33.7 nsper elem
ID to addendbinary-lambda.122/proj=gf2_127,h2c=ti,mode=batch,n=1024gf2_122-lambdabatch45.6 ns45.5 ns .. 45.7 nsper elem
ID to addendbinary-lambda.122/proj=gf2_127,h2c=ti-addend,mode=batch,n=1024gf2_122-lambdabatch37.8 ns37.7 ns .. 37.8 nsper elem
ID to addendbinary-lambda.122/proj=none,h2c=pornin-addend,mode=batch,n=1024gf2_122-lambdabatch59.3 ns58.9 ns .. 59.8 nsper elem
ID to addendbinary-lambda.122/proj=none,h2c=ti,mode=batch,n=1024gf2_122-lambdabatch77.1 ns77.0 ns .. 77.2 nsper elem
ID to addendbinary-lambda.122/proj=none,h2c=ti-addend,mode=batch,n=1024gf2_122-lambdabatch69.6 ns69.4 ns .. 69.7 nsper elem
ID to addendbinary-u.122/proj=fp127,h2c=pornin-addend,mode=batch,n=1024gf2_122-ubatch41.2 ns41.1 ns .. 41.3 nsper elem
ID to addendbinary-u.122/proj=fp127,h2c=ti,mode=batch,n=1024gf2_122-ubatch55.2 ns55.0 ns .. 55.3 nsper elem
ID to addendbinary-u.122/proj=fp130,h2c=pornin-addend,mode=batch,n=1024gf2_122-ubatch45.2 ns45.1 ns .. 45.3 nsper elem
ID to addendbinary-u.122/proj=fp130,h2c=ti,mode=batch,n=1024gf2_122-ubatch64.8 ns64.7 ns .. 65.0 nsper elem
ID to addendbinary-u.122/proj=gf2_127,h2c=pornin-addend,mode=batch,n=1024gf2_122-ubatch38.8 ns38.7 ns .. 38.8 nsper elem
ID to addendbinary-u.122/proj=gf2_127,h2c=ti,mode=batch,n=1024gf2_122-ubatch51.6 ns51.5 ns .. 51.7 nsper elem
ID to addendbinary-u.122/proj=none,h2c=pornin-addend,mode=batch,n=1024gf2_122-ubatch63.2 ns63.1 ns .. 63.3 nsper elem
ID to addendbinary-u.122/proj=none,h2c=ti,mode=batch,n=1024gf2_122-ubatch82.4 ns82.2 ns .. 82.5 nsper elem
ID to addendbinary-w.122/proj=fp127,h2c=pornin-addend,mode=batch,n=1024gf2_122-wbatch36.0 ns35.9 ns .. 36.1 nsper elem
ID to addendbinary-w.122/proj=fp127,h2c=ti,mode=batch,n=1024gf2_122-wbatch45.3 ns45.3 ns .. 45.4 nsper elem
ID to addendbinary-w.122/proj=fp130,h2c=pornin-addend,mode=batch,n=1024gf2_122-wbatch40.6 ns40.5 ns .. 40.7 nsper elem
ID to addendbinary-w.122/proj=fp130,h2c=ti,mode=batch,n=1024gf2_122-wbatch54.5 ns54.4 ns .. 54.6 nsper elem
ID to addendbinary-w.122/proj=gf2_127,h2c=pornin-addend,mode=batch,n=1024gf2_122-wbatch33.2 ns33.0 ns .. 33.4 nsper elem
ID to addendbinary-w.122/proj=gf2_127,h2c=ti,mode=batch,n=1024gf2_122-wbatch41.3 ns41.2 ns .. 41.3 nsper elem
ID to addendbinary-w.122/proj=none,h2c=pornin-addend,mode=batch,n=1024gf2_122-wbatch58.6 ns58.5 ns .. 58.7 nsper elem
ID to addendbinary-w.122/proj=none,h2c=ti,mode=batch,n=1024gf2_122-wbatch71.5 ns71.4 ns .. 71.6 nsper elem
ID to addendbinary.127/proj=fp127,h2c=pornin,mode=batch,n=1024gf2_127batch41.7 ns41.6 ns .. 41.8 nsper elem
ID to addendbinary.127/proj=fp127,h2c=ti,mode=batch,n=1024gf2_127batch49.5 ns49.3 ns .. 49.6 nsper elem
ID to addendbinary.127/proj=fp130,h2c=pornin,mode=batch,n=1024gf2_127batch45.9 ns45.8 ns .. 46.0 nsper elem
ID to addendbinary.127/proj=fp130,h2c=ti,mode=batch,n=1024gf2_127batch59.6 ns59.5 ns .. 59.8 nsper elem
ID to addendbinary.127/proj=gf2_127,h2c=pornin,mode=batch,n=1024gf2_127batch39.1 ns39.0 ns .. 39.2 nsper elem
ID to addendbinary.127/proj=gf2_127,h2c=ti,mode=batch,n=1024gf2_127batch43.0 ns42.8 ns .. 43.1 nsper elem
ID to addendbinary.127/proj=none,h2c=pornin,mode=batch,n=1024gf2_127batch62.6 ns62.5 ns .. 62.8 nsper elem
ID to addendbinary.127/proj=none,h2c=ti,mode=batch,n=1024gf2_127batch71.3 ns71.2 ns .. 71.4 nsper elem
ID to addendbinary-lambda.127/proj=fp127,h2c=pornin-addend,mode=batch,n=1024gf2_127-lambdabatch36.5 ns36.4 ns .. 36.6 nsper elem
ID to addendbinary-lambda.127/proj=fp127,h2c=ti,mode=batch,n=1024gf2_127-lambdabatch52.4 ns52.3 ns .. 52.5 nsper elem
ID to addendbinary-lambda.127/proj=fp127,h2c=ti-addend,mode=batch,n=1024gf2_127-lambdabatch45.4 ns45.3 ns .. 45.5 nsper elem
ID to addendbinary-lambda.127/proj=fp130,h2c=pornin-addend,mode=batch,n=1024gf2_127-lambdabatch40.9 ns40.8 ns .. 41.1 nsper elem
ID to addendbinary-lambda.127/proj=fp130,h2c=ti,mode=batch,n=1024gf2_127-lambdabatch62.7 ns62.6 ns .. 62.9 nsper elem
ID to addendbinary-lambda.127/proj=fp130,h2c=ti-addend,mode=batch,n=1024gf2_127-lambdabatch55.8 ns55.6 ns .. 55.9 nsper elem
ID to addendbinary-lambda.127/proj=gf2_127,h2c=pornin-addend,mode=batch,n=1024gf2_127-lambdabatch34.1 ns33.9 ns .. 34.2 nsper elem
ID to addendbinary-lambda.127/proj=gf2_127,h2c=ti,mode=batch,n=1024gf2_127-lambdabatch46.1 ns46.0 ns .. 46.2 nsper elem
ID to addendbinary-lambda.127/proj=gf2_127,h2c=ti-addend,mode=batch,n=1024gf2_127-lambdabatch39.4 ns39.3 ns .. 39.5 nsper elem
ID to addendbinary-lambda.127/proj=none,h2c=pornin-addend,mode=batch,n=1024gf2_127-lambdabatch58.4 ns58.2 ns .. 58.6 nsper elem
ID to addendbinary-lambda.127/proj=none,h2c=ti,mode=batch,n=1024gf2_127-lambdabatch74.5 ns74.4 ns .. 74.6 nsper elem
ID to addendbinary-lambda.127/proj=none,h2c=ti-addend,mode=batch,n=1024gf2_127-lambdabatch67.6 ns67.4 ns .. 67.7 nsper elem
ID to addendbinary-u.127/proj=fp127,h2c=pornin-addend,mode=batch,n=1024gf2_127-ubatch39.6 ns39.5 ns .. 39.7 nsper elem
ID to addendbinary-u.127/proj=fp127,h2c=ti,mode=batch,n=1024gf2_127-ubatch48.8 ns48.7 ns .. 48.9 nsper elem
ID to addendbinary-u.127/proj=fp130,h2c=pornin-addend,mode=batch,n=1024gf2_127-ubatch43.8 ns43.7 ns .. 43.8 nsper elem
ID to addendbinary-u.127/proj=fp130,h2c=ti,mode=batch,n=1024gf2_127-ubatch61.1 ns61.0 ns .. 61.2 nsper elem
ID to addendbinary-u.127/proj=gf2_127,h2c=pornin-addend,mode=batch,n=1024gf2_127-ubatch37.2 ns37.1 ns .. 37.3 nsper elem
ID to addendbinary-u.127/proj=gf2_127,h2c=ti,mode=batch,n=1024gf2_127-ubatch44.4 ns44.3 ns .. 44.5 nsper elem
ID to addendbinary-u.127/proj=none,h2c=pornin-addend,mode=batch,n=1024gf2_127-ubatch61.4 ns61.3 ns .. 61.6 nsper elem
ID to addendbinary-u.127/proj=none,h2c=ti,mode=batch,n=1024gf2_127-ubatch75.7 ns75.5 ns .. 75.8 nsper elem
ID to addendbinary-w.127/proj=fp127,h2c=pornin-addend,mode=batch,n=1024gf2_127-wbatch36.3 ns36.2 ns .. 36.4 nsper elem
ID to addendbinary-w.127/proj=fp127,h2c=ti,mode=batch,n=1024gf2_127-wbatch45.4 ns45.3 ns .. 45.5 nsper elem
ID to addendbinary-w.127/proj=fp130,h2c=pornin-addend,mode=batch,n=1024gf2_127-wbatch40.8 ns40.7 ns .. 40.9 nsper elem
ID to addendbinary-w.127/proj=fp130,h2c=ti,mode=batch,n=1024gf2_127-wbatch57.0 ns56.9 ns .. 57.2 nsper elem
ID to addendbinary-w.127/proj=gf2_127,h2c=pornin-addend,mode=batch,n=1024gf2_127-wbatch34.2 ns34.0 ns .. 34.3 nsper elem
ID to addendbinary-w.127/proj=gf2_127,h2c=ti,mode=batch,n=1024gf2_127-wbatch40.9 ns40.8 ns .. 41.0 nsper elem
ID to addendbinary-w.127/proj=none,h2c=pornin-addend,mode=batch,n=1024gf2_127-wbatch58.5 ns58.4 ns .. 58.7 nsper elem
ID to addendbinary-w.127/proj=none,h2c=ti,mode=batch,n=1024gf2_127-wbatch72.7 ns72.6 ns .. 72.9 nsper elem
ID to addendtwisted.61x2/proj=fp127,h2c=elligator2,mode=batch,n=1024twisted61x2batch881 ns879 ns .. 884 nsper elem
ID to addendtwisted.61x2/proj=fp127,h2c=ti,mode=batch,n=1024twisted61x2batch604 ns602 ns .. 605 nsper elem
ID to addendtwisted.61x2/proj=fp130,h2c=elligator2,mode=batch,n=1024twisted61x2batch882 ns879 ns .. 884 nsper elem
ID to addendtwisted.61x2/proj=fp130,h2c=ti,mode=batch,n=1024twisted61x2batch612 ns610 ns .. 613 nsper elem
ID to addendtwisted.61x2/proj=gf2_127,h2c=elligator2,mode=batch,n=1024twisted61x2batch871 ns870 ns .. 873 nsper elem
ID to addendtwisted.61x2/proj=gf2_127,h2c=ti,mode=batch,n=1024twisted61x2batch594 ns592 ns .. 595 nsper elem
ID to addendtwisted.61x2/proj=none,h2c=elligator2,mode=batch,n=1024twisted61x2batch916 ns914 ns .. 917 nsper elem
ID to addendtwisted.61x2/proj=none,h2c=ti,mode=batch,n=1024twisted61x2batch629 ns627 ns .. 630 nsper elem
hash to addendgf2_109-lambda/try-and-increment to (x, λ)gf2_109-lambdaper-element938 ns937 ns .. 939 nsper elem
hash to addendgf2_109-lambda/try-and-increment to (x, λ), batchedgf2_109-lambdabatch77.6 ns77.5 ns .. 77.6 nsper elem
hash to addendgf2_122-gls-lambda/try-and-increment to (x, λ)gf2_122-gls-lambdaper-element504 ns503 ns .. 505 nsper elem
hash to addendgf2_122-gls-lambda/try-and-increment to (x, λ), batchedgf2_122-gls-lambdabatch73.8 ns73.8 ns .. 73.9 nsper elem
hash to addendgf2_122-lambda/try-and-increment to (x, λ)gf2_122-lambdaper-element520 ns519 ns .. 520 nsper elem
hash to addendgf2_122-lambda/try-and-increment to (x, λ), batchedgf2_122-lambdabatch72.3 ns72.3 ns .. 72.3 nsper elem
hash to addendgf2_127-lambda/try-and-increment to (x, λ)gf2_127-lambdaper-element761 ns759 ns .. 762 nsper elem
hash to addendgf2_127-lambda/try-and-increment to (x, λ), batchedgf2_127-lambdabatch72.8 ns72.8 ns .. 72.9 nsper elem
steps: digestdigest/sha512 (ristretto input)ristretto255per-element60.9 ns60.7 ns .. 61.1 nsper elem
steps: ristretto255ristretto255/from_uniform_bytes (2 maps + add)ristretto255per-element4.78 µs4.76 µs .. 4.79 µsper elem
x on curveristretto255/decompress (valid, inv sqrt)ristretto255per-element2.32 µs2.31 µs .. 2.32 µsper elem
x on curvesecp256k1/x: parse compressed (sqrt)secp256k1per-element2.25 µs2.24 µs .. 2.25 µ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-element550 ns548 ns .. 553 nsper elem
one map to addendgf2_109-lambda/pornin map x1 to (x, λ), batchedgf2_109-lambdabatch55.2 ns55.0 ns .. 55.5 nsper elem
one map to addendgf2_109-u/pornin map x1 to (u, v)gf2_109-uper-element533 ns532 ns .. 533 nsper elem
one map to addendgf2_109-u/pornin map x1 to (u, v), batchedgf2_109-ubatch60.7 ns60.3 ns .. 61.0 nsper elem
one map to addendgf2_109-w/pornin map x1 to (x, λ)gf2_109-wper-element535 ns534 ns .. 535 nsper elem
one map to addendgf2_109-w/pornin map x1 to (x, λ), batchedgf2_109-wbatch54.5 ns54.5 ns .. 54.5 nsper elem
one map to addendgf2_122-gls-lambda/pornin map x1 to (x, λ)gf2_122-gls-lambdaper-element315 ns314 ns .. 316 nsper elem
one map to addendgf2_122-gls-lambda/pornin map x1 to (x, λ), batchedgf2_122-gls-lambdabatch55.4 ns55.4 ns .. 55.5 nsper elem
one map to addendgf2_122-gls-u/pornin map x1 to (u, v)gf2_122-gls-uper-element319 ns318 ns .. 320 nsper elem
one map to addendgf2_122-gls-u/pornin map x1 to (u, v), batchedgf2_122-gls-ubatch55.7 ns55.7 ns .. 55.8 nsper elem
one map to addendgf2_122-gls-w/pornin map x1 to (x, λ)gf2_122-gls-wper-element316 ns315 ns .. 317 nsper elem
one map to addendgf2_122-gls-w/pornin map x1 to (x, λ), batchedgf2_122-gls-wbatch55.4 ns55.4 ns .. 55.4 nsper elem
one map to addendgf2_122-lambda/pornin map x1 to (x, λ)gf2_122-lambdaper-element326 ns326 ns .. 327 nsper elem
one map to addendgf2_122-lambda/pornin map x1 to (x, λ), batchedgf2_122-lambdabatch53.9 ns53.9 ns .. 54.0 nsper elem
one map to addendgf2_122-u/pornin map x1 to (u, v)gf2_122-uper-element326 ns325 ns .. 326 nsper elem
one map to addendgf2_122-u/pornin map x1 to (u, v), batchedgf2_122-ubatch57.1 ns57.0 ns .. 57.1 nsper elem
one map to addendgf2_122-w/pornin map x1 to (x, λ)gf2_122-wper-element326 ns326 ns .. 327 nsper elem
one map to addendgf2_122-w/pornin map x1 to (x, λ), batchedgf2_122-wbatch54.0 ns53.9 ns .. 54.0 nsper elem
one map to addendgf2_127-lambda/pornin map x1 to (x, λ)gf2_127-lambdaper-element456 ns455 ns .. 457 nsper elem
one map to addendgf2_127-lambda/pornin map x1 to (x, λ), batchedgf2_127-lambdabatch53.5 ns53.4 ns .. 53.6 nsper elem
one map to addendgf2_127-u/pornin map x1 to (u, v)gf2_127-uper-element461 ns460 ns .. 462 nsper elem
one map to addendgf2_127-u/pornin map x1 to (u, v), batchedgf2_127-ubatch57.2 ns57.2 ns .. 57.3 nsper elem
one map to addendgf2_127-w/pornin map x1 to (x, λ)gf2_127-wper-element455 ns454 ns .. 456 nsper elem
one map to addendgf2_127-w/pornin map x1 to (x, λ), batchedgf2_127-wbatch53.5 ns53.4 ns .. 53.6 nsper elem
one mapgf2_109/pornin map x1gf2_109per-element560 ns559 ns .. 561 nsper elem
one mapgf2_109/pornin map x1, batchedgf2_109batch63.7 ns63.7 ns .. 63.8 nsper elem
one mapgf2_122/pornin map x1gf2_122per-element373 ns373 ns .. 373 nsper elem
one mapgf2_122/pornin map x1, batchedgf2_122batch62.8 ns62.8 ns .. 62.8 nsper elem
one mapgf2_122-gls/pornin map x1gf2_122-glsper-element369 ns367 ns .. 370 nsper elem
one mapgf2_122-gls/pornin map x1, batchedgf2_122-glsbatch62.0 ns61.9 ns .. 62.0 nsper elem
one mapgf2_127/pornin map x1gf2_127per-element485 ns485 ns .. 486 nsper elem
one mapgf2_127/pornin map x1, batchedgf2_127batch61.5 ns61.4 ns .. 61.5 nsper elem
one mapedwards107/elligator2 x1edwards107per-element1.07 µs1.06 µs .. 1.07 µsper elem
one mapedwards127/elligator2 x1edwards127per-element1.29 µs1.28 µs .. 1.29 µsper elem
one mapedwards61x2/elligator2 x1edwards61x2per-element734 ns734 ns .. 735 nsper elem
one maptwisted-goldilocks2/elligator2 x1twisted-goldilocks2per-element2.16 µs2.16 µs .. 2.17 µsper elem
one maptwisted128/elligator2 x1twisted128per-element3.32 µs3.32 µs .. 3.33 µsper elem
one maptwisted61x2/elligator2 x1twisted61x2per-element892 ns891 ns .. 894 nsper elem
one maptwisted64x2/elligator2 x1twisted64x2per-element1.53 µs1.53 µs .. 1.53 µsper elem
one mapweier107/sswu x1weier107per-element1.04 µs1.04 µs .. 1.04 µsper elem
one mapweier127/sswu x1weier127per-element1.10 µs1.10 µs .. 1.10 µsper elem
one mapweier61x2/sswu x1weier61x2per-element703 ns701 ns .. 704 nsper elem
two maps summedgf2_127/pornin map x2gf2_127per-element916 ns914 ns .. 917 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.

556 benchmarks
operationbenchmarkfamilymodetime95% CIunit
encode (hash + cells)xor-sha256.64/m=12150,n=3500xorper-element199 ns199 ns .. 199 nsper elem
encode (hash + cells)xor-sha256.64/m=1350,n=3500xorper-element165 ns165 ns .. 166 nsper elem
encode (hash + cells)xor-sha256.64/m=150,n=3500xorper-element139 ns139 ns .. 140 nsper elem
encode (hash + cells)xor-sha256.64/m=20,n=3500xorper-element116 ns115 ns .. 116 nsper elem
encode (hash + cells)xor-sha256.64/m=5,n=3500xorper-element95.2 ns95.0 ns .. 95.5 nsper elem
encode (hash + cells)xor-siphash.64/m=12150,n=3500xor-siphashper-element188 ns187 ns .. 188 nsper elem
encode (hash + cells)xor-siphash.64/m=12150,n=3500,map=mcg64xor-siphashper-element183 ns182 ns .. 183 nsper elem
encode (hash + cells)xor-siphash.64/m=1350,n=3500xor-siphashper-element155 ns154 ns .. 155 nsper elem
encode (hash + cells)xor-siphash.64/m=1350,n=3500,map=mcg64xor-siphashper-element149 ns149 ns .. 150 nsper elem
encode (hash + cells)xor-siphash.64/m=150,n=3500xor-siphashper-element129 ns129 ns .. 130 nsper elem
encode (hash + cells)xor-siphash.64/m=150,n=3500,map=mcg64xor-siphashper-element124 ns123 ns .. 124 nsper elem
encode (hash + cells)xor-siphash.64/m=20,n=3500xor-siphashper-element104 ns104 ns .. 104 nsper elem
encode (hash + cells)xor-siphash.64/m=20,n=3500,map=mcg64xor-siphashper-element99.3 ns99.0 ns .. 99.5 nsper elem
encode (hash + cells)xor-siphash.64/m=5,n=3500xor-siphashper-element85.7 ns85.5 ns .. 85.9 nsper elem
encode (hash + cells)xor-siphash.64/m=5,n=3500,map=mcg64xor-siphashper-element82.0 ns81.8 ns .. 82.2 nsper elem
encode (hash + cells)binary.109/m=12150,n=3500,h2c=porningf2_109per-element398 ns397 ns .. 399 nsper elem
encode (hash + cells)binary.109/m=12150,n=3500,h2c=pornin,proj=gf2_127,mapproj=gf2_127gf2_109per-element337 ns337 ns .. 338 nsper elem
encode (hash + cells)binary.109/m=1350,n=3500,h2c=porningf2_109per-element324 ns323 ns .. 325 nsper elem
encode (hash + cells)binary.109/m=1350,n=3500,h2c=pornin,proj=gf2_127,mapproj=gf2_127gf2_109per-element265 ns264 ns .. 265 nsper elem
encode (hash + cells)binary.109/m=5,n=3500,h2c=porningf2_109per-element172 ns172 ns .. 172 nsper elem
encode (hash + cells)binary.109/m=5,n=3500,h2c=pornin,proj=gf2_127,mapproj=gf2_127gf2_109per-element109 ns108 ns .. 109 nsper elem
encode (hash + cells)binary-lambda.109/m=12150,n=3500,h2c=pornin-addendgf2_109-lambdaper-element361 ns360 ns .. 362 nsper elem
encode (hash + cells)binary-lambda.109/m=12150,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_109-lambdaper-element305 ns305 ns .. 306 nsper elem
encode (hash + cells)binary-lambda.109/m=1350,n=3500,h2c=pornin-addendgf2_109-lambdaper-element303 ns303 ns .. 304 nsper elem
encode (hash + cells)binary-lambda.109/m=1350,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_109-lambdaper-element244 ns244 ns .. 244 nsper elem
encode (hash + cells)binary-lambda.109/m=150,n=3500,h2c=pornin-addendgf2_109-lambdaper-element245 ns245 ns .. 245 nsper elem
encode (hash + cells)binary-lambda.109/m=20,n=3500,h2c=pornin-addendgf2_109-lambdaper-element189 ns188 ns .. 189 nsper elem
encode (hash + cells)binary-lambda.109/m=5,n=3500,h2c=pornin-addendgf2_109-lambdaper-element158 ns158 ns .. 159 nsper elem
encode (hash + cells)binary-lambda.109/m=5,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_109-lambdaper-element98.5 ns98.4 ns .. 98.7 nsper elem
encode (hash + cells)binary-u.109/m=12150,n=3500,h2c=pornin-addendgf2_109-uper-element341 ns340 ns .. 342 nsper elem
encode (hash + cells)binary-u.109/m=12150,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_109-uper-element290 ns289 ns .. 291 nsper elem
encode (hash + cells)binary-u.109/m=1350,n=3500,h2c=pornin-addendgf2_109-uper-element282 ns281 ns .. 282 nsper elem
encode (hash + cells)binary-u.109/m=1350,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_109-uper-element222 ns222 ns .. 223 nsper elem
encode (hash + cells)binary-u.109/m=150,n=3500,h2c=pornin-addendgf2_109-uper-element229 ns229 ns .. 230 nsper elem
encode (hash + cells)binary-u.109/m=20,n=3500,h2c=pornin-addendgf2_109-uper-element185 ns184 ns .. 185 nsper elem
encode (hash + cells)binary-u.109/m=5,n=3500,h2c=pornin-addendgf2_109-uper-element157 ns157 ns .. 157 nsper elem
encode (hash + cells)binary-u.109/m=5,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_109-uper-element94.5 ns94.3 ns .. 94.7 nsper elem
encode (hash + cells)binary-w.109/m=12150,n=3500,h2c=pornin-addendgf2_109-wper-element361 ns360 ns .. 362 nsper elem
encode (hash + cells)binary-w.109/m=12150,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_109-wper-element302 ns301 ns .. 302 nsper elem
encode (hash + cells)binary-w.109/m=1350,n=3500,h2c=pornin-addendgf2_109-wper-element302 ns302 ns .. 303 nsper elem
encode (hash + cells)binary-w.109/m=1350,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_109-wper-element239 ns238 ns .. 241 nsper elem
encode (hash + cells)binary-w.109/m=150,n=3500,h2c=pornin-addendgf2_109-wper-element245 ns244 ns .. 245 nsper elem
encode (hash + cells)binary-w.109/m=20,n=3500,h2c=pornin-addendgf2_109-wper-element192 ns191 ns .. 192 nsper elem
encode (hash + cells)binary-w.109/m=5,n=3500,h2c=pornin-addendgf2_109-wper-element159 ns158 ns .. 159 nsper elem
encode (hash + cells)binary-w.109/m=5,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_109-wper-element98.3 ns98.1 ns .. 98.4 nsper elem
encode (hash + cells)binary.122/m=12150,n=3500,h2c=porningf2_122per-element463 ns462 ns .. 463 nsper elem
encode (hash + cells)binary.122/m=1350,n=3500,h2c=porningf2_122per-element371 ns370 ns .. 372 nsper elem
encode (hash + cells)binary.122/m=5,n=3500,h2c=porningf2_122per-element169 ns168 ns .. 169 nsper elem
encode (hash + cells)binary.122-gls/m=12150,n=3500,h2c=porningf2_122-glsper-element446 ns445 ns .. 446 nsper elem
encode (hash + cells)binary.122-gls/m=1350,n=3500,h2c=porningf2_122-glsper-element358 ns358 ns .. 359 nsper elem
encode (hash + cells)binary.122-gls/m=5,n=3500,h2c=porningf2_122-glsper-element167 ns166 ns .. 167 nsper elem
encode (hash + cells)binary-lambda.122-gls/m=12150,n=3500,h2c=pornin-addendgf2_122-gls-lambdaper-element417 ns416 ns .. 418 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-element358 ns357 ns .. 359 nsper elem
encode (hash + cells)binary-lambda.122-gls/m=1350,n=3500,h2c=pornin-addendgf2_122-gls-lambdaper-element342 ns341 ns .. 342 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-element286 ns285 ns .. 286 nsper elem
encode (hash + cells)binary-lambda.122-gls/m=5,n=3500,h2c=pornin-addendgf2_122-gls-lambdaper-element154 ns154 ns .. 155 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-element99.0 ns98.9 ns .. 99.2 nsper elem
encode (hash + cells)binary-u.122-gls/m=12150,n=3500,h2c=pornin-addendgf2_122-gls-uper-element378 ns377 ns .. 378 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-element325 ns324 ns .. 325 nsper elem
encode (hash + cells)binary-u.122-gls/m=1350,n=3500,h2c=pornin-addendgf2_122-gls-uper-element306 ns305 ns .. 307 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-element252 ns251 ns .. 252 nsper elem
encode (hash + cells)binary-u.122-gls/m=5,n=3500,h2c=pornin-addendgf2_122-gls-uper-element150 ns150 ns .. 151 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-element94.5 ns94.4 ns .. 94.7 nsper elem
encode (hash + cells)binary-w.122-gls/m=12150,n=3500,h2c=pornin-addendgf2_122-gls-wper-element417 ns416 ns .. 417 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-element360 ns359 ns .. 361 nsper elem
encode (hash + cells)binary-w.122-gls/m=1350,n=3500,h2c=pornin-addendgf2_122-gls-wper-element340 ns340 ns .. 341 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-element281 ns280 ns .. 283 nsper elem
encode (hash + cells)binary-w.122-gls/m=5,n=3500,h2c=pornin-addendgf2_122-gls-wper-element154 ns154 ns .. 154 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-element98.7 ns98.5 ns .. 98.9 nsper elem
encode (hash + cells)binary-lambda.122/m=12150,n=3500,h2c=pornin-addendgf2_122-lambdaper-element417 ns417 ns .. 418 nsper elem
encode (hash + cells)binary-lambda.122/m=12150,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-lambdaper-element358 ns357 ns .. 359 nsper elem
encode (hash + cells)binary-lambda.122/m=1350,n=3500,h2c=pornin-addendgf2_122-lambdaper-element341 ns340 ns .. 342 nsper elem
encode (hash + cells)binary-lambda.122/m=1350,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-lambdaper-element284 ns283 ns .. 285 nsper elem
encode (hash + cells)binary-lambda.122/m=5,n=3500,h2c=pornin-addendgf2_122-lambdaper-element154 ns154 ns .. 154 nsper elem
encode (hash + cells)binary-lambda.122/m=5,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-lambdaper-element99.3 ns99.1 ns .. 99.4 nsper elem
encode (hash + cells)binary-u.122/m=12150,n=3500,h2c=pornin-addendgf2_122-uper-element378 ns376 ns .. 381 nsper elem
encode (hash + cells)binary-u.122/m=12150,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-uper-element325 ns325 ns .. 326 nsper elem
encode (hash + cells)binary-u.122/m=1350,n=3500,h2c=pornin-addendgf2_122-uper-element308 ns308 ns .. 309 nsper elem
encode (hash + cells)binary-u.122/m=1350,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-uper-element253 ns252 ns .. 253 nsper elem
encode (hash + cells)binary-u.122/m=5,n=3500,h2c=pornin-addendgf2_122-uper-element152 ns151 ns .. 152 nsper elem
encode (hash + cells)binary-u.122/m=5,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-uper-element94.3 ns93.8 ns .. 94.7 nsper elem
encode (hash + cells)binary-w.122/m=12150,n=3500,h2c=pornin-addendgf2_122-wper-element417 ns417 ns .. 418 nsper elem
encode (hash + cells)binary-w.122/m=12150,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-wper-element361 ns360 ns .. 362 nsper elem
encode (hash + cells)binary-w.122/m=1350,n=3500,h2c=pornin-addendgf2_122-wper-element341 ns340 ns .. 342 nsper elem
encode (hash + cells)binary-w.122/m=1350,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-wper-element285 ns285 ns .. 286 nsper elem
encode (hash + cells)binary-w.122/m=5,n=3500,h2c=pornin-addendgf2_122-wper-element154 ns154 ns .. 154 nsper elem
encode (hash + cells)binary-w.122/m=5,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-wper-element99.4 ns99.2 ns .. 99.5 nsper elem
encode (hash + cells)binary.127/m=12150,n=3500,h2c=porningf2_127per-element411 ns410 ns .. 412 nsper elem
encode (hash + cells)binary.127/m=12150,n=3500,h2c=pornin,map=mcg64gf2_127per-element411 ns411 ns .. 412 nsper elem
encode (hash + cells)binary.127/m=12150,n=3500,h2c=pornin,proj=gf2_127,mapproj=gf2_127gf2_127per-element352 ns352 ns .. 353 nsper elem
encode (hash + cells)binary.127/m=1350,n=3500,h2c=porningf2_127per-element329 ns327 ns .. 331 nsper elem
encode (hash + cells)binary.127/m=1350,n=3500,h2c=pornin,map=mcg64gf2_127per-element330 ns329 ns .. 331 nsper elem
encode (hash + cells)binary.127/m=1350,n=3500,h2c=pornin,proj=gf2_127,mapproj=gf2_127gf2_127per-element273 ns272 ns .. 273 nsper elem
encode (hash + cells)binary.127/m=150,n=3500,h2c=pornin,map=mcg64gf2_127per-element259 ns259 ns .. 260 nsper elem
encode (hash + cells)binary.127/m=20,n=3500,h2c=pornin,map=mcg64gf2_127per-element197 ns197 ns .. 198 nsper elem
encode (hash + cells)binary.127/m=5,n=3500,h2c=porningf2_127per-element161 ns160 ns .. 162 nsper elem
encode (hash + cells)binary.127/m=5,n=3500,h2c=pornin,map=mcg64gf2_127per-element158 ns158 ns .. 159 nsper elem
encode (hash + cells)binary.127/m=5,n=3500,h2c=pornin,proj=gf2_127,mapproj=gf2_127gf2_127per-element102 ns102 ns .. 102 nsper elem
encode (hash + cells)binary-lambda.127/m=12150,n=3500,h2c=pornin-addendgf2_127-lambdaper-element399 ns399 ns .. 400 nsper elem
encode (hash + cells)binary-lambda.127/m=12150,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_127-lambdaper-element341 ns341 ns .. 342 nsper elem
encode (hash + cells)binary-lambda.127/m=1350,n=3500,h2c=pornin-addendgf2_127-lambdaper-element326 ns325 ns .. 326 nsper elem
encode (hash + cells)binary-lambda.127/m=1350,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_127-lambdaper-element268 ns267 ns .. 268 nsper elem
encode (hash + cells)binary-lambda.127/m=5,n=3500,h2c=pornin-addendgf2_127-lambdaper-element151 ns151 ns .. 151 nsper elem
encode (hash + cells)binary-lambda.127/m=5,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_127-lambdaper-element96.4 ns96.3 ns .. 96.6 nsper elem
encode (hash + cells)binary-u.127/m=12150,n=3500,h2c=pornin-addendgf2_127-uper-element351 ns349 ns .. 352 nsper elem
encode (hash + cells)binary-u.127/m=12150,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_127-uper-element294 ns293 ns .. 295 nsper elem
encode (hash + cells)binary-u.127/m=1350,n=3500,h2c=pornin-addendgf2_127-uper-element288 ns287 ns .. 288 nsper elem
encode (hash + cells)binary-u.127/m=1350,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_127-uper-element227 ns227 ns .. 228 nsper elem
encode (hash + cells)binary-u.127/m=150,n=3500,h2c=pornin-addendgf2_127-uper-element231 ns231 ns .. 232 nsper elem
encode (hash + cells)binary-u.127/m=20,n=3500,h2c=pornin-addendgf2_127-uper-element183 ns183 ns .. 184 nsper elem
encode (hash + cells)binary-u.127/m=5,n=3500,h2c=pornin-addendgf2_127-uper-element152 ns151 ns .. 152 nsper elem
encode (hash + cells)binary-u.127/m=5,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_127-uper-element90.5 ns90.4 ns .. 90.7 nsper elem
encode (hash + cells)binary-w.127/m=12150,n=3500,h2c=pornin-addendgf2_127-wper-element398 ns397 ns .. 399 nsper elem
encode (hash + cells)binary-w.127/m=12150,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_127-wper-element341 ns340 ns .. 341 nsper elem
encode (hash + cells)binary-w.127/m=1350,n=3500,h2c=pornin-addendgf2_127-wper-element325 ns325 ns .. 326 nsper elem
encode (hash + cells)binary-w.127/m=1350,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_127-wper-element268 ns268 ns .. 268 nsper elem
encode (hash + cells)binary-w.127/m=5,n=3500,h2c=pornin-addendgf2_127-wper-element151 ns151 ns .. 151 nsper elem
encode (hash + cells)binary-w.127/m=5,n=3500,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_127-wper-element95.9 ns95.6 ns .. 96.1 nsper elem
encode (hash + cells)edwards.107/m=1350,n=3500,h2c=tiedwards107per-element1.09 µs1.08 µs .. 1.09 µsper elem
encode (hash + cells)edwards.127/m=1350,n=3500,h2c=tiedwards127per-element1.44 µs1.43 µs .. 1.44 µsper elem
encode (hash + cells)edwards.61x2/m=1350,n=3500,h2c=tiedwards61x2per-element940 ns938 ns .. 942 nsper elem
encode (hash + cells)twisted.goldilocks2/m=1350,n=3500,h2c=titwisted-goldilocks2per-element2.18 µs2.17 µs .. 2.18 µsper elem
encode (hash + cells)twisted.128/m=1350,n=3500,h2c=titwisted128per-element2.37 µs2.36 µs .. 2.38 µsper elem
encode (hash + cells)twisted.61x2/m=1350,n=3500,h2c=titwisted61x2per-element900 ns898 ns .. 902 nsper elem
encode (hash + cells)twisted.64x2/m=1350,n=3500,h2c=titwisted64x2per-element1.45 µs1.45 µs .. 1.45 µsper elem
encode (hash + cells)weier.107/m=1350,n=3500,h2c=tiweier107per-element1.24 µs1.24 µs .. 1.25 µsper elem
encode (hash + cells)weier-jacobian.107/m=1350,n=3500,h2c=tiweier107-jacobianper-element1.21 µs1.21 µs .. 1.21 µsper elem
encode (hash + cells)weier.127/m=1350,n=3500,h2c=tiweier127per-element1.74 µs1.74 µs .. 1.74 µsper elem
encode (hash + cells)weier-jacobian.127/m=1350,n=3500,h2c=tiweier127-jacobianper-element1.59 µs1.59 µs .. 1.59 µsper elem
encode (hash + cells)weier.61x2/m=1350,n=3500,h2c=tiweier61x2per-element1.08 µs1.08 µs .. 1.09 µsper elem
encode (hash + cells)weier-jacobian.61x2/m=1350,n=3500,h2c=tiweier61x2-jacobianper-element1.11 µs1.10 µs .. 1.11 µsper elem
encode (hash + cells)ristretto255/m=12150,n=3500ristretto255per-element6.16 µs6.14 µs .. 6.17 µsper elem
encode (hash + cells)ristretto255/m=12150,n=3500,map=mcg64ristretto255per-element6.35 µs6.33 µs .. 6.38 µsper elem
encode (hash + cells)ristretto255/m=1350,n=3500ristretto255per-element5.84 µs5.83 µs .. 5.85 µsper elem
encode (hash + cells)ristretto255/m=1350,n=3500,map=mcg64ristretto255per-element5.96 µs5.92 µs .. 5.99 µsper elem
encode (hash + cells)ristretto255/m=150,n=3500ristretto255per-element5.53 µs5.52 µs .. 5.53 µsper elem
encode (hash + cells)ristretto255/m=150,n=3500,map=mcg64ristretto255per-element5.49 µs5.48 µs .. 5.50 µsper elem
encode (hash + cells)ristretto255/m=20,n=3500ristretto255per-element5.25 µs5.23 µs .. 5.26 µsper elem
encode (hash + cells)ristretto255/m=20,n=3500,map=mcg64ristretto255per-element5.26 µs5.24 µs .. 5.27 µsper elem
encode (hash + cells)ristretto255/m=5,n=3500ristretto255per-element5.11 µs5.10 µs .. 5.11 µsper elem
encode (hash + cells)ristretto255/m=5,n=3500,map=mcg64ristretto255per-element5.08 µs5.08 µs .. 5.09 µsper elem
cell updatesxor-sha256.64/m=1350,n=3500xorper-element141 ns140 ns .. 141 nsper elem
cell updatesxor-siphash.64/m=1350,n=3500xor-siphashper-element141 ns140 ns .. 141 nsper elem
cell updatesbinary.109/m=12150,n=3500gf2_109per-element321 ns320 ns .. 321 nsper elem
cell updatesbinary.109/m=1350,n=3500gf2_109per-element248 ns247 ns .. 248 nsper elem
cell updatesbinary.109/m=5,n=3500gf2_109per-element93.7 ns93.5 ns .. 93.8 nsper elem
cell updatesbinary-lambda.109/m=12150,n=3500gf2_109-lambdaper-element295 ns294 ns .. 296 nsper elem
cell updatesbinary-lambda.109/m=1350,n=3500gf2_109-lambdaper-element237 ns236 ns .. 237 nsper elem
cell updatesbinary-lambda.109/m=150,n=3500gf2_109-lambdaper-element179 ns178 ns .. 179 nsper elem
cell updatesbinary-lambda.109/m=20,n=3500gf2_109-lambdaper-element122 ns122 ns .. 123 nsper elem
cell updatesbinary-lambda.109/m=5,n=3500gf2_109-lambdaper-element92.4 ns92.2 ns .. 92.6 nsper elem
cell updatesbinary-u.109/m=12150,n=3500gf2_109-uper-element273 ns272 ns .. 273 nsper elem
cell updatesbinary-u.109/m=1350,n=3500gf2_109-uper-element212 ns212 ns .. 212 nsper elem
cell updatesbinary-u.109/m=150,n=3500gf2_109-uper-element161 ns160 ns .. 161 nsper elem
cell updatesbinary-u.109/m=20,n=3500gf2_109-uper-element116 ns116 ns .. 116 nsper elem
cell updatesbinary-u.109/m=5,n=3500gf2_109-uper-element87.6 ns87.4 ns .. 87.8 nsper elem
cell updatesbinary-w.109/m=12150,n=3500gf2_109-wper-element292 ns290 ns .. 293 nsper elem
cell updatesbinary-w.109/m=1350,n=3500gf2_109-wper-element237 ns236 ns .. 237 nsper elem
cell updatesbinary-w.109/m=150,n=3500gf2_109-wper-element178 ns177 ns .. 178 nsper elem
cell updatesbinary-w.109/m=20,n=3500gf2_109-wper-element126 ns125 ns .. 126 nsper elem
cell updatesbinary-w.109/m=5,n=3500gf2_109-wper-element92.7 ns92.5 ns .. 92.8 nsper elem
cell updatesbinary.122/m=12150,n=3500gf2_122per-element391 ns390 ns .. 392 nsper elem
cell updatesbinary.122/m=1350,n=3500gf2_122per-element302 ns302 ns .. 303 nsper elem
cell updatesbinary.122/m=5,n=3500gf2_122per-element101 ns101 ns .. 101 nsper elem
cell updatesbinary.122-gls/m=12150,n=3500gf2_122-glsper-element371 ns369 ns .. 373 nsper elem
cell updatesbinary.122-gls/m=1350,n=3500gf2_122-glsper-element291 ns290 ns .. 291 nsper elem
cell updatesbinary.122-gls/m=5,n=3500gf2_122-glsper-element99.3 ns99.0 ns .. 99.6 nsper elem
cell updatesbinary-lambda.122-gls/m=12150,n=3500gf2_122-gls-lambdaper-element359 ns359 ns .. 360 nsper elem
cell updatesbinary-lambda.122-gls/m=1350,n=3500gf2_122-gls-lambdaper-element284 ns284 ns .. 285 nsper elem
cell updatesbinary-lambda.122-gls/m=5,n=3500gf2_122-gls-lambdaper-element97.3 ns97.1 ns .. 97.5 nsper elem
cell updatesbinary-u.122-gls/m=12150,n=3500gf2_122-gls-uper-element317 ns317 ns .. 318 nsper elem
cell updatesbinary-u.122-gls/m=1350,n=3500gf2_122-gls-uper-element246 ns245 ns .. 246 nsper elem
cell updatesbinary-u.122-gls/m=5,n=3500gf2_122-gls-uper-element89.4 ns89.2 ns .. 89.5 nsper elem
cell updatesbinary-w.122-gls/m=12150,n=3500gf2_122-gls-wper-element359 ns358 ns .. 360 nsper elem
cell updatesbinary-w.122-gls/m=1350,n=3500gf2_122-gls-wper-element284 ns283 ns .. 284 nsper elem
cell updatesbinary-w.122-gls/m=5,n=3500gf2_122-gls-wper-element97.4 ns97.2 ns .. 97.6 nsper elem
cell updatesbinary-lambda.122/m=12150,n=3500gf2_122-lambdaper-element360 ns359 ns .. 360 nsper elem
cell updatesbinary-lambda.122/m=1350,n=3500gf2_122-lambdaper-element284 ns283 ns .. 284 nsper elem
cell updatesbinary-lambda.122/m=5,n=3500gf2_122-lambdaper-element96.6 ns96.4 ns .. 96.8 nsper elem
cell updatesbinary-u.122/m=12150,n=3500gf2_122-uper-element317 ns315 ns .. 318 nsper elem
cell updatesbinary-u.122/m=1350,n=3500gf2_122-uper-element246 ns245 ns .. 246 nsper elem
cell updatesbinary-u.122/m=5,n=3500gf2_122-uper-element89.4 ns89.2 ns .. 89.5 nsper elem
cell updatesbinary-w.122/m=12150,n=3500gf2_122-wper-element359 ns358 ns .. 359 nsper elem
cell updatesbinary-w.122/m=1350,n=3500gf2_122-wper-element284 ns283 ns .. 285 nsper elem
cell updatesbinary-w.122/m=5,n=3500gf2_122-wper-element96.5 ns96.3 ns .. 96.7 nsper elem
cell updatesbinary.127/m=12150,n=3500gf2_127per-element341 ns341 ns .. 342 nsper elem
cell updatesbinary.127/m=1350,n=3500gf2_127per-element261 ns260 ns .. 262 nsper elem
cell updatesbinary.127/m=5,n=3500gf2_127per-element94.5 ns94.3 ns .. 94.8 nsper elem
cell updatesbinary-lambda.127/m=12150,n=3500gf2_127-lambdaper-element341 ns341 ns .. 342 nsper elem
cell updatesbinary-lambda.127/m=1350,n=3500gf2_127-lambdaper-element267 ns267 ns .. 267 nsper elem
cell updatesbinary-lambda.127/m=5,n=3500gf2_127-lambdaper-element92.5 ns92.3 ns .. 92.7 nsper elem
cell updatesbinary-u.127/m=12150,n=3500gf2_127-uper-element286 ns285 ns .. 287 nsper elem
cell updatesbinary-u.127/m=1350,n=3500gf2_127-uper-element222 ns222 ns .. 222 nsper elem
cell updatesbinary-u.127/m=150,n=3500gf2_127-uper-element167 ns167 ns .. 168 nsper elem
cell updatesbinary-u.127/m=20,n=3500gf2_127-uper-element120 ns119 ns .. 120 nsper elem
cell updatesbinary-u.127/m=5,n=3500gf2_127-uper-element86.4 ns86.3 ns .. 86.6 nsper elem
cell updatesbinary-w.127/m=12150,n=3500gf2_127-wper-element341 ns341 ns .. 342 nsper elem
cell updatesbinary-w.127/m=1350,n=3500gf2_127-wper-element267 ns267 ns .. 267 nsper elem
cell updatesbinary-w.127/m=5,n=3500gf2_127-wper-element92.4 ns92.1 ns .. 92.6 nsper elem
cell updatesedwards.107/m=1350,n=3500edwards107per-element286 ns285 ns .. 287 nsper elem
cell updatesedwards.127/m=1350,n=3500edwards127per-element338 ns337 ns .. 339 nsper elem
cell updatesedwards.61x2/m=1350,n=3500edwards61x2per-element270 ns270 ns .. 271 nsper elem
cell updatestwisted.goldilocks2/m=1350,n=3500twisted-goldilocks2per-element325 ns324 ns .. 326 nsper elem
cell updatestwisted.128/m=1350,n=3500twisted128per-element427 ns425 ns .. 429 nsper elem
cell updatestwisted.61x2/m=1350,n=3500twisted61x2per-element250 ns250 ns .. 251 nsper elem
cell updatestwisted.64x2/m=1350,n=3500twisted64x2per-element331 ns330 ns .. 331 nsper elem
cell updatesweier.107/m=1350,n=3500weier107per-element474 ns472 ns .. 475 nsper elem
cell updatesweier-jacobian.107/m=1350,n=3500weier107-jacobianper-element439 ns439 ns .. 440 nsper elem
cell updatesweier.127/m=1350,n=3500weier127per-element674 ns673 ns .. 675 nsper elem
cell updatesweier-jacobian.127/m=1350,n=3500weier127-jacobianper-element541 ns540 ns .. 543 nsper elem
cell updatesweier.61x2/m=1350,n=3500weier61x2per-element432 ns432 ns .. 433 nsper elem
cell updatesweier-jacobian.61x2/m=1350,n=3500weier61x2-jacobianper-element487 ns485 ns .. 488 nsper elem
cell updatesristretto255/m=1350,n=3500ristretto255per-element1.02 µs1.02 µs .. 1.02 µsper elem
peel, per differencexor-sha256.64/d=1350,m=2700,prefilter=true,batch=truexorbatch643 ns642 ns .. 645 nsper elem
peel, per differencexor-siphash.64/d=1350,m=2700,prefilter=true,batch=truexor-siphashbatch648 ns647 ns .. 650 nsper elem
peel, per differencebinary.109/d=10000,m=20000,prefilter=true,batch=true,h2c=porningf2_109batch1.14 µs1.13 µs .. 1.14 µsper elem
peel, per differencebinary.109/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin,proj=gf2_127,mapproj=gf2_127gf2_109batch952 ns950 ns .. 953 nsper elem
peel, per differencebinary.109/d=1350,m=2700,prefilter=true,batch=true,h2c=porningf2_109batch838 ns836 ns .. 841 nsper elem
peel, per differencebinary.109/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin,proj=gf2_127,mapproj=gf2_127gf2_109batch614 ns612 ns .. 615 nsper elem
peel, per differencebinary.109/d=4,m=10,prefilter=true,batch=true,h2c=pornin,proj=gf2_127,mapproj=gf2_127gf2_109batch735 ns734 ns .. 737 nsper elem
peel, per differencebinary.109/d=4,m=8,prefilter=true,batch=true,h2c=porningf2_109batch613 ns612 ns .. 615 nsper elem
peel, per differencebinary-lambda.109/d=10000,m=20000,prefilter=false,batch=false,h2c=pornin-addendgf2_109-lambdaper-element1.73 µs1.72 µs .. 1.73 µsper elem
peel, per differencebinary-lambda.109/d=10000,m=20000,prefilter=false,batch=true,h2c=pornin-addendgf2_109-lambdabatch897 ns896 ns .. 899 nsper elem
peel, per differencebinary-lambda.109/d=10000,m=20000,prefilter=true,batch=false,h2c=pornin-addendgf2_109-lambdaper-element1.60 µs1.59 µs .. 1.60 µsper elem
peel, per differencebinary-lambda.109/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin-addendgf2_109-lambdabatch1.12 µs1.12 µs .. 1.13 µ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-lambdabatch957 ns955 ns .. 958 nsper elem
peel, per differencebinary-lambda.109/d=1350,m=2700,prefilter=false,batch=false,h2c=pornin-addendgf2_109-lambdaper-element1.59 µs1.58 µs .. 1.60 µsper elem
peel, per differencebinary-lambda.109/d=1350,m=2700,prefilter=false,batch=true,h2c=pornin-addendgf2_109-lambdabatch683 ns680 ns .. 685 nsper elem
peel, per differencebinary-lambda.109/d=1350,m=2700,prefilter=true,batch=false,h2c=pornin-addendgf2_109-lambdaper-element1.37 µs1.36 µs .. 1.38 µsper elem
peel, per differencebinary-lambda.109/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addendgf2_109-lambdabatch829 ns826 ns .. 832 nsper elem
peel, per differencebinary-lambda.109/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_109-lambdabatch585 ns584 ns .. 587 nsper elem
peel, per differencebinary-lambda.109/d=150,m=300,prefilter=false,batch=false,h2c=pornin-addendgf2_109-lambdaper-element1.40 µs1.40 µs .. 1.41 µsper elem
peel, per differencebinary-lambda.109/d=150,m=300,prefilter=false,batch=true,h2c=pornin-addendgf2_109-lambdabatch556 ns555 ns .. 557 nsper elem
peel, per differencebinary-lambda.109/d=150,m=300,prefilter=true,batch=false,h2c=pornin-addendgf2_109-lambdaper-element1.14 µs1.13 µs .. 1.14 µsper elem
peel, per differencebinary-lambda.109/d=150,m=300,prefilter=true,batch=true,h2c=pornin-addendgf2_109-lambdabatch650 ns649 ns .. 651 nsper elem
peel, per differencebinary-lambda.109/d=20,m=40,prefilter=false,batch=false,h2c=pornin-addendgf2_109-lambdaper-element1.15 µs1.15 µs .. 1.16 µsper elem
peel, per differencebinary-lambda.109/d=20,m=40,prefilter=false,batch=true,h2c=pornin-addendgf2_109-lambdabatch519 ns518 ns .. 520 nsper elem
peel, per differencebinary-lambda.109/d=20,m=40,prefilter=true,batch=false,h2c=pornin-addendgf2_109-lambdaper-element985 ns982 ns .. 988 nsper elem
peel, per differencebinary-lambda.109/d=20,m=40,prefilter=true,batch=true,h2c=pornin-addendgf2_109-lambdabatch589 ns588 ns .. 590 nsper elem
peel, per differencebinary-lambda.109/d=4,m=10,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_109-lambdabatch698 ns697 ns .. 700 nsper elem
peel, per differencebinary-lambda.109/d=4,m=8,prefilter=false,batch=false,h2c=pornin-addendgf2_109-lambdaper-element744 ns742 ns .. 746 nsper elem
peel, per differencebinary-lambda.109/d=4,m=8,prefilter=false,batch=true,h2c=pornin-addendgf2_109-lambdabatch536 ns535 ns .. 538 nsper elem
peel, per differencebinary-lambda.109/d=4,m=8,prefilter=true,batch=false,h2c=pornin-addendgf2_109-lambdaper-element794 ns792 ns .. 796 nsper elem
peel, per differencebinary-lambda.109/d=4,m=8,prefilter=true,batch=true,h2c=pornin-addendgf2_109-lambdabatch586 ns585 ns .. 588 nsper elem
peel, per differencebinary-u.109/d=10000,m=20000,prefilter=false,batch=false,h2c=pornin-addendgf2_109-uper-element1.66 µs1.66 µs .. 1.67 µsper elem
peel, per differencebinary-u.109/d=10000,m=20000,prefilter=false,batch=true,h2c=pornin-addendgf2_109-ubatch840 ns839 ns .. 841 nsper elem
peel, per differencebinary-u.109/d=10000,m=20000,prefilter=true,batch=false,h2c=pornin-addendgf2_109-uper-element1.54 µs1.54 µs .. 1.54 µsper elem
peel, per differencebinary-u.109/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin-addendgf2_109-ubatch1.05 µs1.05 µs .. 1.06 µ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-ubatch883 ns882 ns .. 885 nsper elem
peel, per differencebinary-u.109/d=1350,m=2700,prefilter=false,batch=false,h2c=pornin-addendgf2_109-uper-element1.49 µs1.49 µs .. 1.49 µsper elem
peel, per differencebinary-u.109/d=1350,m=2700,prefilter=false,batch=true,h2c=pornin-addendgf2_109-ubatch640 ns639 ns .. 641 nsper elem
peel, per differencebinary-u.109/d=1350,m=2700,prefilter=true,batch=false,h2c=pornin-addendgf2_109-uper-element1.27 µs1.27 µs .. 1.28 µsper elem
peel, per differencebinary-u.109/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addendgf2_109-ubatch786 ns784 ns .. 788 nsper elem
peel, per differencebinary-u.109/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_109-ubatch563 ns562 ns .. 564 nsper elem
peel, per differencebinary-u.109/d=150,m=300,prefilter=false,batch=false,h2c=pornin-addendgf2_109-uper-element1.39 µs1.39 µs .. 1.39 µsper elem
peel, per differencebinary-u.109/d=150,m=300,prefilter=false,batch=true,h2c=pornin-addendgf2_109-ubatch550 ns550 ns .. 551 nsper elem
peel, per differencebinary-u.109/d=150,m=300,prefilter=true,batch=false,h2c=pornin-addendgf2_109-uper-element1.12 µs1.12 µs .. 1.13 µsper elem
peel, per differencebinary-u.109/d=150,m=300,prefilter=true,batch=true,h2c=pornin-addendgf2_109-ubatch643 ns642 ns .. 644 nsper elem
peel, per differencebinary-u.109/d=20,m=40,prefilter=false,batch=false,h2c=pornin-addendgf2_109-uper-element1.15 µs1.14 µs .. 1.15 µsper elem
peel, per differencebinary-u.109/d=20,m=40,prefilter=false,batch=true,h2c=pornin-addendgf2_109-ubatch519 ns518 ns .. 521 nsper elem
peel, per differencebinary-u.109/d=20,m=40,prefilter=true,batch=false,h2c=pornin-addendgf2_109-uper-element986 ns984 ns .. 989 nsper elem
peel, per differencebinary-u.109/d=20,m=40,prefilter=true,batch=true,h2c=pornin-addendgf2_109-ubatch590 ns589 ns .. 591 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-ubatch714 ns712 ns .. 715 nsper elem
peel, per differencebinary-u.109/d=4,m=8,prefilter=false,batch=false,h2c=pornin-addendgf2_109-uper-element750 ns747 ns .. 753 nsper elem
peel, per differencebinary-u.109/d=4,m=8,prefilter=false,batch=true,h2c=pornin-addendgf2_109-ubatch547 ns546 ns .. 549 nsper elem
peel, per differencebinary-u.109/d=4,m=8,prefilter=true,batch=false,h2c=pornin-addendgf2_109-uper-element802 ns800 ns .. 805 nsper elem
peel, per differencebinary-u.109/d=4,m=8,prefilter=true,batch=true,h2c=pornin-addendgf2_109-ubatch595 ns593 ns .. 596 nsper elem
peel, per differencebinary-w.109/d=10000,m=20000,prefilter=false,batch=false,h2c=pornin-addendgf2_109-wper-element1.72 µs1.72 µs .. 1.73 µsper elem
peel, per differencebinary-w.109/d=10000,m=20000,prefilter=false,batch=true,h2c=pornin-addendgf2_109-wbatch897 ns895 ns .. 899 nsper elem
peel, per differencebinary-w.109/d=10000,m=20000,prefilter=true,batch=false,h2c=pornin-addendgf2_109-wper-element1.60 µs1.60 µs .. 1.60 µsper elem
peel, per differencebinary-w.109/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin-addendgf2_109-wbatch1.13 µs1.13 µs .. 1.13 µ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-wbatch957 ns955 ns .. 958 nsper elem
peel, per differencebinary-w.109/d=1350,m=2700,prefilter=false,batch=false,h2c=pornin-addendgf2_109-wper-element1.52 µs1.51 µs .. 1.52 µsper elem
peel, per differencebinary-w.109/d=1350,m=2700,prefilter=false,batch=true,h2c=pornin-addendgf2_109-wbatch666 ns665 ns .. 667 nsper elem
peel, per differencebinary-w.109/d=1350,m=2700,prefilter=true,batch=false,h2c=pornin-addendgf2_109-wper-element1.31 µs1.31 µs .. 1.32 µsper elem
peel, per differencebinary-w.109/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addendgf2_109-wbatch823 ns821 ns .. 825 nsper elem
peel, per differencebinary-w.109/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_109-wbatch580 ns579 ns .. 582 nsper elem
peel, per differencebinary-w.109/d=150,m=300,prefilter=false,batch=false,h2c=pornin-addendgf2_109-wper-element1.40 µs1.39 µs .. 1.40 µsper elem
peel, per differencebinary-w.109/d=150,m=300,prefilter=false,batch=true,h2c=pornin-addendgf2_109-wbatch554 ns553 ns .. 555 nsper elem
peel, per differencebinary-w.109/d=150,m=300,prefilter=true,batch=false,h2c=pornin-addendgf2_109-wper-element1.14 µs1.13 µs .. 1.14 µsper elem
peel, per differencebinary-w.109/d=150,m=300,prefilter=true,batch=true,h2c=pornin-addendgf2_109-wbatch649 ns648 ns .. 651 nsper elem
peel, per differencebinary-w.109/d=20,m=40,prefilter=false,batch=false,h2c=pornin-addendgf2_109-wper-element1.15 µs1.15 µs .. 1.15 µsper elem
peel, per differencebinary-w.109/d=20,m=40,prefilter=false,batch=true,h2c=pornin-addendgf2_109-wbatch518 ns517 ns .. 519 nsper elem
peel, per differencebinary-w.109/d=20,m=40,prefilter=true,batch=false,h2c=pornin-addendgf2_109-wper-element986 ns982 ns .. 989 nsper elem
peel, per differencebinary-w.109/d=20,m=40,prefilter=true,batch=true,h2c=pornin-addendgf2_109-wbatch589 ns588 ns .. 590 nsper elem
peel, per differencebinary-w.109/d=4,m=10,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_109-wbatch694 ns693 ns .. 696 nsper elem
peel, per differencebinary-w.109/d=4,m=8,prefilter=false,batch=false,h2c=pornin-addendgf2_109-wper-element744 ns742 ns .. 747 nsper elem
peel, per differencebinary-w.109/d=4,m=8,prefilter=false,batch=true,h2c=pornin-addendgf2_109-wbatch537 ns536 ns .. 538 nsper elem
peel, per differencebinary-w.109/d=4,m=8,prefilter=true,batch=false,h2c=pornin-addendgf2_109-wper-element796 ns794 ns .. 798 nsper elem
peel, per differencebinary-w.109/d=4,m=8,prefilter=true,batch=true,h2c=pornin-addendgf2_109-wbatch588 ns587 ns .. 590 nsper elem
peel, per differencebinary.122/d=10000,m=20000,prefilter=true,batch=true,h2c=porningf2_122batch1.20 µs1.20 µs .. 1.20 µsper elem
peel, per differencebinary.122/d=1350,m=2700,prefilter=true,batch=true,h2c=porningf2_122batch891 ns889 ns .. 893 nsper elem
peel, per differencebinary.122/d=4,m=8,prefilter=true,batch=true,h2c=porningf2_122batch527 ns526 ns .. 528 nsper elem
peel, per differencebinary.122-gls/d=10000,m=20000,prefilter=true,batch=true,h2c=porningf2_122-glsbatch1.18 µs1.18 µs .. 1.18 µsper elem
peel, per differencebinary.122-gls/d=1350,m=2700,prefilter=true,batch=true,h2c=porningf2_122-glsbatch888 ns886 ns .. 889 nsper elem
peel, per differencebinary.122-gls/d=4,m=8,prefilter=true,batch=true,h2c=porningf2_122-glsbatch521 ns519 ns .. 522 nsper elem
peel, per differencebinary-lambda.122-gls/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin-addendgf2_122-gls-lambdabatch1.21 µs1.21 µs .. 1.21 µ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.02 µs1.01 µs .. 1.02 µsper elem
peel, per differencebinary-lambda.122-gls/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addendgf2_122-gls-lambdabatch888 ns885 ns .. 891 nsper 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-lambdabatch651 ns648 ns .. 654 nsper 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-lambdabatch560 ns558 ns .. 562 nsper elem
peel, per differencebinary-lambda.122-gls/d=4,m=8,prefilter=true,batch=true,h2c=pornin-addendgf2_122-gls-lambdabatch487 ns486 ns .. 488 nsper elem
peel, per differencebinary-u.122-gls/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin-addendgf2_122-gls-ubatch1.12 µs1.11 µs .. 1.12 µ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-ubatch926 ns924 ns .. 927 nsper elem
peel, per differencebinary-u.122-gls/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addendgf2_122-gls-ubatch825 ns823 ns .. 826 nsper 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-ubatch597 ns596 ns .. 598 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-ubatch580 ns578 ns .. 581 nsper elem
peel, per differencebinary-u.122-gls/d=4,m=8,prefilter=true,batch=true,h2c=pornin-addendgf2_122-gls-ubatch502 ns500 ns .. 503 nsper elem
peel, per differencebinary-w.122-gls/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin-addendgf2_122-gls-wbatch1.22 µs1.22 µs .. 1.22 µ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.02 µs1.01 µs .. 1.03 µsper elem
peel, per differencebinary-w.122-gls/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addendgf2_122-gls-wbatch892 ns889 ns .. 895 nsper 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-wbatch645 ns643 ns .. 647 nsper 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-wbatch560 ns558 ns .. 561 nsper elem
peel, per differencebinary-w.122-gls/d=4,m=8,prefilter=true,batch=true,h2c=pornin-addendgf2_122-gls-wbatch488 ns486 ns .. 489 nsper elem
peel, per differencebinary-lambda.122/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin-addendgf2_122-lambdabatch1.21 µs1.21 µs .. 1.21 µ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.02 µs1.02 µs .. 1.02 µsper elem
peel, per differencebinary-lambda.122/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addendgf2_122-lambdabatch879 ns877 ns .. 882 nsper elem
peel, per differencebinary-lambda.122/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-lambdabatch646 ns643 ns .. 649 nsper elem
peel, per differencebinary-lambda.122/d=4,m=10,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-lambdabatch568 ns567 ns .. 569 nsper elem
peel, per differencebinary-lambda.122/d=4,m=8,prefilter=true,batch=true,h2c=pornin-addendgf2_122-lambdabatch492 ns491 ns .. 493 nsper elem
peel, per differencebinary-u.122/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin-addendgf2_122-ubatch1.11 µs1.11 µs .. 1.11 µ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-ubatch923 ns922 ns .. 925 nsper elem
peel, per differencebinary-u.122/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addendgf2_122-ubatch821 ns819 ns .. 824 nsper elem
peel, per differencebinary-u.122/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-ubatch597 ns595 ns .. 598 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-ubatch584 ns583 ns .. 586 nsper elem
peel, per differencebinary-u.122/d=4,m=8,prefilter=true,batch=true,h2c=pornin-addendgf2_122-ubatch504 ns503 ns .. 505 nsper elem
peel, per differencebinary-w.122/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin-addendgf2_122-wbatch1.22 µs1.21 µs .. 1.22 µ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.03 µs1.02 µs .. 1.03 µsper elem
peel, per differencebinary-w.122/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addendgf2_122-wbatch887 ns883 ns .. 891 nsper elem
peel, per differencebinary-w.122/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-wbatch639 ns634 ns .. 643 nsper elem
peel, per differencebinary-w.122/d=4,m=10,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_122-wbatch563 ns561 ns .. 565 nsper elem
peel, per differencebinary-w.122/d=4,m=8,prefilter=true,batch=true,h2c=pornin-addendgf2_122-wbatch492 ns490 ns .. 493 nsper elem
peel, per differencebinary.127/d=10000,m=20000,prefilter=true,batch=true,h2c=porningf2_127batch1.13 µs1.13 µs .. 1.14 µsper elem
peel, per differencebinary.127/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin,proj=gf2_127,mapproj=gf2_127gf2_127batch971 ns969 ns .. 973 nsper elem
peel, per differencebinary.127/d=1350,m=2700,prefilter=true,batch=true,h2c=porningf2_127batch844 ns841 ns .. 846 nsper elem
peel, per differencebinary.127/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin,proj=gf2_127,mapproj=gf2_127gf2_127batch624 ns623 ns .. 626 nsper elem
peel, per differencebinary.127/d=4,m=10,prefilter=true,batch=true,h2c=pornin,proj=gf2_127,mapproj=gf2_127gf2_127batch713 ns711 ns .. 715 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=true,batch=true,h2c=pornin-addendgf2_127-lambdabatch1.19 µs1.19 µs .. 1.20 µ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-lambdabatch999 ns997 ns .. 1.00 µsper elem
peel, per differencebinary-lambda.127/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addendgf2_127-lambdabatch878 ns874 ns .. 881 nsper elem
peel, per differencebinary-lambda.127/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_127-lambdabatch629 ns628 ns .. 631 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-lambdabatch685 ns683 ns .. 686 nsper elem
peel, per differencebinary-lambda.127/d=4,m=8,prefilter=true,batch=true,h2c=pornin-addendgf2_127-lambdabatch574 ns572 ns .. 575 nsper elem
peel, per differencebinary-u.127/d=10000,m=20000,prefilter=false,batch=false,h2c=pornin-addendgf2_127-uper-element1.65 µs1.65 µs .. 1.65 µsper elem
peel, per differencebinary-u.127/d=10000,m=20000,prefilter=false,batch=true,h2c=pornin-addendgf2_127-ubatch858 ns856 ns .. 859 nsper elem
peel, per differencebinary-u.127/d=10000,m=20000,prefilter=true,batch=false,h2c=pornin-addendgf2_127-uper-element1.54 µs1.54 µs .. 1.54 µsper elem
peel, per differencebinary-u.127/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin-addendgf2_127-ubatch1.08 µs1.08 µs .. 1.08 µ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-ubatch894 ns893 ns .. 896 nsper elem
peel, per differencebinary-u.127/d=1350,m=2700,prefilter=false,batch=false,h2c=pornin-addendgf2_127-uper-element1.45 µs1.45 µs .. 1.46 µsper elem
peel, per differencebinary-u.127/d=1350,m=2700,prefilter=false,batch=true,h2c=pornin-addendgf2_127-ubatch636 ns633 ns .. 638 nsper elem
peel, per differencebinary-u.127/d=1350,m=2700,prefilter=true,batch=false,h2c=pornin-addendgf2_127-uper-element1.26 µs1.26 µs .. 1.27 µsper elem
peel, per differencebinary-u.127/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addendgf2_127-ubatch796 ns793 ns .. 798 nsper elem
peel, per differencebinary-u.127/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_127-ubatch573 ns572 ns .. 574 nsper elem
peel, per differencebinary-u.127/d=150,m=300,prefilter=false,batch=false,h2c=pornin-addendgf2_127-uper-element1.36 µs1.36 µs .. 1.37 µsper elem
peel, per differencebinary-u.127/d=150,m=300,prefilter=false,batch=true,h2c=pornin-addendgf2_127-ubatch546 ns544 ns .. 547 nsper elem
peel, per differencebinary-u.127/d=150,m=300,prefilter=true,batch=false,h2c=pornin-addendgf2_127-uper-element1.11 µs1.10 µs .. 1.11 µsper elem
peel, per differencebinary-u.127/d=150,m=300,prefilter=true,batch=true,h2c=pornin-addendgf2_127-ubatch639 ns637 ns .. 640 nsper elem
peel, per differencebinary-u.127/d=20,m=40,prefilter=false,batch=false,h2c=pornin-addendgf2_127-uper-element1.10 µs1.09 µs .. 1.10 µsper elem
peel, per differencebinary-u.127/d=20,m=40,prefilter=false,batch=true,h2c=pornin-addendgf2_127-ubatch514 ns513 ns .. 516 nsper elem
peel, per differencebinary-u.127/d=20,m=40,prefilter=true,batch=false,h2c=pornin-addendgf2_127-uper-element966 ns962 ns .. 970 nsper elem
peel, per differencebinary-u.127/d=20,m=40,prefilter=true,batch=true,h2c=pornin-addendgf2_127-ubatch576 ns574 ns .. 577 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-ubatch698 ns695 ns .. 700 nsper elem
peel, per differencebinary-u.127/d=4,m=8,prefilter=false,batch=false,h2c=pornin-addendgf2_127-uper-element720 ns718 ns .. 722 nsper elem
peel, per differencebinary-u.127/d=4,m=8,prefilter=false,batch=true,h2c=pornin-addendgf2_127-ubatch529 ns527 ns .. 530 nsper elem
peel, per differencebinary-u.127/d=4,m=8,prefilter=true,batch=false,h2c=pornin-addendgf2_127-uper-element769 ns767 ns .. 771 nsper elem
peel, per differencebinary-u.127/d=4,m=8,prefilter=true,batch=true,h2c=pornin-addendgf2_127-ubatch576 ns575 ns .. 578 nsper elem
peel, per differencebinary-w.127/d=10000,m=20000,prefilter=true,batch=true,h2c=pornin-addendgf2_127-wbatch1.20 µs1.20 µs .. 1.20 µ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-wbatch999 ns997 ns .. 1.00 µsper elem
peel, per differencebinary-w.127/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addendgf2_127-wbatch879 ns876 ns .. 881 nsper elem
peel, per differencebinary-w.127/d=1350,m=2700,prefilter=true,batch=true,h2c=pornin-addend,proj=gf2_127,mapproj=gf2_127gf2_127-wbatch636 ns634 ns .. 638 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-wbatch684 ns682 ns .. 685 nsper elem
peel, per differencebinary-w.127/d=4,m=8,prefilter=true,batch=true,h2c=pornin-addendgf2_127-wbatch568 ns566 ns .. 569 nsper elem
peel, per differenceedwards.107/d=1350,m=2700,prefilter=true,batch=true,h2c=tiedwards107batch1.66 µs1.65 µs .. 1.66 µsper elem
peel, per differenceedwards.127/d=1350,m=2700,prefilter=true,batch=true,h2c=tiedwards127batch1.99 µs1.99 µs .. 2.00 µsper elem
peel, per differenceedwards.61x2/d=1350,m=2700,prefilter=true,batch=true,h2c=tiedwards61x2batch1.45 µs1.45 µs .. 1.46 µsper elem
peel, per differencetwisted.goldilocks2/d=1350,m=2700,prefilter=true,batch=true,h2c=titwisted-goldilocks2batch2.81 µs2.80 µs .. 2.82 µsper elem
peel, per differencetwisted.128/d=1350,m=2700,prefilter=true,batch=true,h2c=titwisted128batch3.06 µs3.05 µs .. 3.07 µsper elem
peel, per differencetwisted.61x2/d=1350,m=2700,prefilter=true,batch=true,h2c=titwisted61x2batch1.45 µs1.45 µs .. 1.45 µsper elem
peel, per differencetwisted.64x2/d=1350,m=2700,prefilter=true,batch=true,h2c=titwisted64x2batch2.00 µs2.00 µs .. 2.01 µsper elem
peel, per differenceweier.107/d=1350,m=2700,prefilter=true,batch=true,h2c=tiweier107batch1.83 µs1.83 µs .. 1.84 µsper elem
peel, per differenceweier-jacobian.107/d=1350,m=2700,prefilter=true,batch=true,h2c=tiweier107-jacobianbatch1.81 µs1.81 µs .. 1.82 µsper elem
peel, per differenceweier.127/d=1350,m=2700,prefilter=true,batch=true,h2c=tiweier127batch2.29 µs2.29 µs .. 2.30 µsper elem
peel, per differenceweier-jacobian.127/d=1350,m=2700,prefilter=true,batch=true,h2c=tiweier127-jacobianbatch2.15 µs2.14 µs .. 2.15 µsper elem
peel, per differenceweier.61x2/d=1350,m=2700,prefilter=true,batch=true,h2c=tiweier61x2batch1.64 µs1.64 µs .. 1.64 µsper elem
peel, per differenceweier-jacobian.61x2/d=1350,m=2700,prefilter=true,batch=true,h2c=tiweier61x2-jacobianbatch1.69 µs1.69 µs .. 1.69 µsper elem
peel, per differenceristretto255/d=1350,m=2700,prefilter=true,batch=trueristretto255batch6.84 µs6.82 µs .. 6.85 µsper elem
rateless encode and decode, per differencexor-sha256.64/d=10xorper-element572 ns570 ns .. 574 nsper elem
rateless encode and decode, per differencexor-sha256.64/d=100xorper-element1.01 µs1.00 µs .. 1.01 µsper elem
rateless encode and decode, per differencexor-sha256.64/d=1000xorper-element1.74 µs1.74 µs .. 1.74 µsper elem
rateless encode and decode, per differencexor-sha256.64/d=10000xorper-element3.10 µs3.08 µs .. 3.13 µsper elem
rateless encode and decode, per differencexor-sha256.64/d=100000xorper-element6.38 µs6.35 µs .. 6.42 µsper elem
rateless encode and decode, per differencexor-sha256.64/d=20xorper-element673 ns673 ns .. 674 nsper elem
rateless encode and decode, per differencexor-sha256.64/d=40xorper-element785 ns784 ns .. 787 nsper elem
rateless encode and decode, per differencexor-sha256.64/d=50000xorper-element4.70 µs4.68 µs .. 4.72 µsper elem
rateless encode and decode, per differencexor-siphash.64/d=10xor-siphashper-element514 ns512 ns .. 516 nsper elem
rateless encode and decode, per differencexor-siphash.64/d=10,map=mcg64xor-siphashper-element498 ns498 ns .. 499 nsper elem
rateless encode and decode, per differencexor-siphash.64/d=100xor-siphashper-element925 ns918 ns .. 930 nsper elem
rateless encode and decode, per differencexor-siphash.64/d=100,map=mcg64xor-siphashper-element913 ns913 ns .. 914 nsper elem
rateless encode and decode, per differencexor-siphash.64/d=1000xor-siphashper-element1.66 µs1.65 µs .. 1.66 µsper elem
rateless encode and decode, per differencexor-siphash.64/d=1000,map=mcg64xor-siphashper-element1.65 µs1.65 µs .. 1.66 µsper elem
rateless encode and decode, per differencexor-siphash.64/d=10000xor-siphashper-element3.01 µs2.98 µs .. 3.04 µsper elem
rateless encode and decode, per differencexor-siphash.64/d=10000,map=chacha8xor-siphashper-element3.78 µs3.75 µs .. 3.81 µsper elem
rateless encode and decode, per differencexor-siphash.64/d=10000,map=mcg64xor-siphashper-element2.97 µs2.94 µs .. 2.99 µsper elem
rateless encode and decode, per differencexor-siphash.64/d=100000xor-siphashper-element6.29 µs6.25 µs .. 6.34 µsper elem
rateless encode and decode, per differencexor-siphash.64/d=100000,map=chacha8xor-siphashper-element12.8 µs12.8 µs .. 12.9 µsper elem
rateless encode and decode, per differencexor-siphash.64/d=100000,map=mcg64xor-siphashper-element5.55 µs5.49 µs .. 5.60 µsper elem
rateless encode and decode, per differencexor-siphash.64/d=20xor-siphashper-element604 ns602 ns .. 605 nsper elem
rateless encode and decode, per differencexor-siphash.64/d=20,map=mcg64xor-siphashper-element592 ns591 ns .. 592 nsper elem
rateless encode and decode, per differencexor-siphash.64/d=40xor-siphashper-element709 ns708 ns .. 711 nsper elem
rateless encode and decode, per differencexor-siphash.64/d=40,map=mcg64xor-siphashper-element687 ns683 ns .. 690 nsper elem
rateless encode and decode, per differencexor-siphash.64/d=50000xor-siphashper-element4.65 µs4.63 µs .. 4.66 µsper elem
rateless encode and decode, per differencexor-siphash.64/d=50000,map=mcg64xor-siphashper-element4.52 µs4.50 µs .. 4.54 µsper elem
rateless encode and decode, per differencebinary.109/d=10,h2c=porningf2_109per-element2.12 µs2.11 µs .. 2.12 µsper elem
rateless encode and decode, per differencebinary.109/d=1000,h2c=porningf2_109per-element3.97 µs3.95 µs .. 3.99 µsper elem
rateless encode and decode, per differencebinary.109/d=100000,h2c=porningf2_109per-element9.42 µs9.37 µs .. 9.47 µsper elem
rateless encode and decode, per differencebinary-lambda.109/d=10,h2c=pornin-addendgf2_109-lambdaper-element2.09 µs2.09 µs .. 2.10 µsper elem
rateless encode and decode, per differencebinary-lambda.109/d=100,h2c=pornin-addendgf2_109-lambdaper-element2.98 µs2.97 µs .. 2.99 µsper elem
rateless encode and decode, per differencebinary-lambda.109/d=1000,h2c=pornin-addendgf2_109-lambdaper-element3.92 µs3.90 µs .. 3.93 µsper elem
rateless encode and decode, per differencebinary-lambda.109/d=10000,h2c=pornin-addendgf2_109-lambdaper-element5.41 µs5.37 µs .. 5.44 µsper elem
rateless encode and decode, per differencebinary-lambda.109/d=100000,h2c=pornin-addendgf2_109-lambdaper-element9.36 µs9.30 µs .. 9.41 µsper elem
rateless encode and decode, per differencebinary-lambda.109/d=20,h2c=pornin-addendgf2_109-lambdaper-element2.40 µs2.39 µs .. 2.41 µsper elem
rateless encode and decode, per differencebinary-lambda.109/d=40,h2c=pornin-addendgf2_109-lambdaper-element2.64 µs2.64 µs .. 2.65 µsper elem
rateless encode and decode, per differencebinary-lambda.109/d=50000,h2c=pornin-addendgf2_109-lambdaper-element7.48 µs7.44 µs .. 7.52 µsper elem
rateless encode and decode, per differencebinary-u.109/d=10,h2c=pornin-addendgf2_109-uper-element2.05 µs2.05 µs .. 2.06 µsper elem
rateless encode and decode, per differencebinary-u.109/d=100,h2c=pornin-addendgf2_109-uper-element2.91 µs2.90 µs .. 2.92 µsper elem
rateless encode and decode, per differencebinary-u.109/d=1000,h2c=pornin-addendgf2_109-uper-element3.85 µs3.84 µs .. 3.85 µsper elem
rateless encode and decode, per differencebinary-u.109/d=10000,h2c=pornin-addendgf2_109-uper-element5.35 µs5.32 µs .. 5.38 µsper elem
rateless encode and decode, per differencebinary-u.109/d=100000,h2c=pornin-addendgf2_109-uper-element8.96 µs8.88 µs .. 9.05 µsper elem
rateless encode and decode, per differencebinary-u.109/d=20,h2c=pornin-addendgf2_109-uper-element2.34 µs2.33 µs .. 2.34 µsper elem
rateless encode and decode, per differencebinary-u.109/d=40,h2c=pornin-addendgf2_109-uper-element2.56 µs2.55 µs .. 2.56 µsper elem
rateless encode and decode, per differencebinary-u.109/d=50000,h2c=pornin-addendgf2_109-uper-element7.33 µs7.29 µs .. 7.37 µsper elem
rateless encode and decode, per differencebinary-w.109/d=10,h2c=pornin-addendgf2_109-wper-element2.09 µs2.09 µs .. 2.10 µsper elem
rateless encode and decode, per differencebinary-w.109/d=100,h2c=pornin-addendgf2_109-wper-element2.98 µs2.97 µs .. 2.99 µsper elem
rateless encode and decode, per differencebinary-w.109/d=1000,h2c=pornin-addendgf2_109-wper-element3.92 µs3.91 µs .. 3.93 µsper elem
rateless encode and decode, per differencebinary-w.109/d=10000,h2c=pornin-addendgf2_109-wper-element5.41 µs5.38 µs .. 5.44 µsper elem
rateless encode and decode, per differencebinary-w.109/d=100000,h2c=pornin-addendgf2_109-wper-element9.36 µs9.32 µs .. 9.39 µsper elem
rateless encode and decode, per differencebinary-w.109/d=20,h2c=pornin-addendgf2_109-wper-element2.40 µs2.40 µs .. 2.41 µsper elem
rateless encode and decode, per differencebinary-w.109/d=40,h2c=pornin-addendgf2_109-wper-element2.64 µs2.63 µs .. 2.65 µsper elem
rateless encode and decode, per differencebinary-w.109/d=50000,h2c=pornin-addendgf2_109-wper-element7.48 µs7.45 µs .. 7.51 µsper elem
rateless encode and decode, per differencebinary.122/d=10,h2c=porningf2_122per-element1.70 µs1.70 µs .. 1.71 µsper elem
rateless encode and decode, per differencebinary.122/d=1000,h2c=porningf2_122per-element3.56 µs3.55 µs .. 3.57 µsper elem
rateless encode and decode, per differencebinary.122/d=100000,h2c=porningf2_122per-element9.61 µs9.59 µs .. 9.63 µsper elem
rateless encode and decode, per differencebinary.122-gls/d=10,h2c=porningf2_122-glsper-element1.68 µs1.67 µs .. 1.68 µsper elem
rateless encode and decode, per differencebinary.122-gls/d=1000,h2c=porningf2_122-glsper-element3.49 µs3.48 µs .. 3.51 µsper elem
rateless encode and decode, per differencebinary.122-gls/d=100000,h2c=porningf2_122-glsper-element9.09 µs9.07 µs .. 9.11 µsper elem
rateless encode and decode, per differencebinary-lambda.122-gls/d=10,h2c=pornin-addendgf2_122-gls-lambdaper-element1.63 µs1.63 µs .. 1.64 µsper elem
rateless encode and decode, per differencebinary-lambda.122-gls/d=1000,h2c=pornin-addendgf2_122-gls-lambdaper-element3.44 µs3.43 µs .. 3.44 µsper elem
rateless encode and decode, per differencebinary-lambda.122-gls/d=100000,h2c=pornin-addendgf2_122-gls-lambdaper-element8.99 µs8.96 µs .. 9.02 µsper elem
rateless encode and decode, per differencebinary-u.122-gls/d=10,h2c=pornin-addendgf2_122-gls-uper-element1.59 µs1.58 µs .. 1.59 µsper elem
rateless encode and decode, per differencebinary-u.122-gls/d=1000,h2c=pornin-addendgf2_122-gls-uper-element3.35 µs3.34 µs .. 3.37 µsper elem
rateless encode and decode, per differencebinary-u.122-gls/d=100000,h2c=pornin-addendgf2_122-gls-uper-element8.69 µs8.62 µs .. 8.76 µsper elem
rateless encode and decode, per differencebinary-w.122-gls/d=10,h2c=pornin-addendgf2_122-gls-wper-element1.63 µs1.63 µs .. 1.64 µsper elem
rateless encode and decode, per differencebinary-w.122-gls/d=1000,h2c=pornin-addendgf2_122-gls-wper-element3.43 µs3.43 µs .. 3.44 µsper elem
rateless encode and decode, per differencebinary-w.122-gls/d=100000,h2c=pornin-addendgf2_122-gls-wper-element8.97 µs8.94 µs .. 9.00 µsper elem
rateless encode and decode, per differencebinary-lambda.122/d=10,h2c=pornin-addendgf2_122-lambdaper-element1.64 µs1.64 µs .. 1.65 µsper elem
rateless encode and decode, per differencebinary-lambda.122/d=1000,h2c=pornin-addendgf2_122-lambdaper-element3.44 µs3.43 µs .. 3.45 µsper elem
rateless encode and decode, per differencebinary-lambda.122/d=100000,h2c=pornin-addendgf2_122-lambdaper-element9.02 µs8.97 µs .. 9.08 µsper elem
rateless encode and decode, per differencebinary-u.122/d=10,h2c=pornin-addendgf2_122-uper-element1.59 µs1.58 µs .. 1.59 µsper elem
rateless encode and decode, per differencebinary-u.122/d=1000,h2c=pornin-addendgf2_122-uper-element3.35 µs3.35 µs .. 3.36 µsper elem
rateless encode and decode, per differencebinary-u.122/d=100000,h2c=pornin-addendgf2_122-uper-element8.72 µs8.68 µs .. 8.78 µsper elem
rateless encode and decode, per differencebinary-w.122/d=10,h2c=pornin-addendgf2_122-wper-element1.64 µs1.63 µs .. 1.64 µsper elem
rateless encode and decode, per differencebinary-w.122/d=1000,h2c=pornin-addendgf2_122-wper-element3.43 µs3.42 µs .. 3.44 µsper elem
rateless encode and decode, per differencebinary-w.122/d=100000,h2c=pornin-addendgf2_122-wper-element8.97 µs8.93 µs .. 9.02 µsper elem
rateless encode and decode, per differencebinary.127/d=10,h2c=porningf2_127per-element2.00 µs1.99 µs .. 2.01 µsper elem
rateless encode and decode, per differencebinary.127/d=10,h2c=pornin,map=mcg64gf2_127per-element2.01 µs2.00 µs .. 2.01 µsper elem
rateless encode and decode, per differencebinary.127/d=100,h2c=pornin,map=mcg64gf2_127per-element2.90 µs2.90 µs .. 2.90 µsper elem
rateless encode and decode, per differencebinary.127/d=1000,h2c=porningf2_127per-element3.89 µs3.87 µs .. 3.91 µsper elem
rateless encode and decode, per differencebinary.127/d=1000,h2c=pornin,map=mcg64gf2_127per-element3.86 µs3.85 µs .. 3.88 µsper elem
rateless encode and decode, per differencebinary.127/d=10000,h2c=pornin,map=chacha8gf2_127per-element6.30 µs6.27 µs .. 6.32 µsper elem
rateless encode and decode, per differencebinary.127/d=10000,h2c=pornin,map=mcg64gf2_127per-element5.41 µs5.38 µs .. 5.43 µsper elem
rateless encode and decode, per differencebinary.127/d=100000,h2c=porningf2_127per-element9.37 µs9.34 µs .. 9.41 µsper elem
rateless encode and decode, per differencebinary.127/d=100000,h2c=pornin,map=chacha8gf2_127per-element15.8 µs15.7 µs .. 15.8 µsper elem
rateless encode and decode, per differencebinary.127/d=100000,h2c=pornin,map=mcg64gf2_127per-element8.69 µs8.64 µs .. 8.75 µsper elem
rateless encode and decode, per differencebinary.127/d=20,h2c=pornin,map=mcg64gf2_127per-element2.30 µs2.29 µs .. 2.30 µsper elem
rateless encode and decode, per differencebinary.127/d=40,h2c=pornin,map=mcg64gf2_127per-element2.55 µs2.53 µs .. 2.57 µsper elem
rateless encode and decode, per differencebinary.127/d=50000,h2c=pornin,map=mcg64gf2_127per-element7.47 µs7.42 µs .. 7.51 µsper elem
rateless encode and decode, per differencebinary-lambda.127/d=10,h2c=pornin-addendgf2_127-lambdaper-element1.97 µs1.97 µs .. 1.98 µsper elem
rateless encode and decode, per differencebinary-lambda.127/d=1000,h2c=pornin-addendgf2_127-lambdaper-element3.90 µs3.89 µs .. 3.91 µsper elem
rateless encode and decode, per differencebinary-lambda.127/d=100000,h2c=pornin-addendgf2_127-lambdaper-element9.40 µs9.35 µs .. 9.46 µsper elem
rateless encode and decode, per differencebinary-u.127/d=10,h2c=pornin-addendgf2_127-uper-element1.95 µs1.95 µs .. 1.96 µsper elem
rateless encode and decode, per differencebinary-u.127/d=100,h2c=pornin-addendgf2_127-uper-element2.84 µs2.83 µs .. 2.85 µsper elem
rateless encode and decode, per differencebinary-u.127/d=1000,h2c=pornin-addendgf2_127-uper-element3.81 µs3.80 µs .. 3.82 µsper elem
rateless encode and decode, per differencebinary-u.127/d=10000,h2c=pornin-addendgf2_127-uper-element5.31 µs5.27 µs .. 5.34 µsper elem
rateless encode and decode, per differencebinary-u.127/d=100000,h2c=pornin-addendgf2_127-uper-element9.00 µs8.91 µs .. 9.08 µsper elem
rateless encode and decode, per differencebinary-u.127/d=20,h2c=pornin-addendgf2_127-uper-element2.24 µs2.23 µs .. 2.24 µsper elem
rateless encode and decode, per differencebinary-u.127/d=40,h2c=pornin-addendgf2_127-uper-element2.47 µs2.46 µs .. 2.48 µsper elem
rateless encode and decode, per differencebinary-u.127/d=50000,h2c=pornin-addendgf2_127-uper-element7.31 µs7.28 µs .. 7.35 µsper elem
rateless encode and decode, per differencebinary-w.127/d=10,h2c=pornin-addendgf2_127-wper-element1.97 µs1.97 µs .. 1.98 µsper elem
rateless encode and decode, per differencebinary-w.127/d=1000,h2c=pornin-addendgf2_127-wper-element3.90 µs3.89 µs .. 3.92 µsper elem
rateless encode and decode, per differencebinary-w.127/d=100000,h2c=pornin-addendgf2_127-wper-element9.38 µs9.33 µs .. 9.42 µsper elem
rateless encode and decode, per differenceedwards.107/d=1000,h2c=tiedwards107per-element7.08 µs7.06 µs .. 7.10 µsper elem
rateless encode and decode, per differenceedwards.127/d=1000,h2c=tiedwards127per-element8.34 µs8.29 µs .. 8.39 µsper elem
rateless encode and decode, per differenceedwards.61x2/d=1000,h2c=tiedwards61x2per-element5.46 µs5.45 µs .. 5.48 µsper elem
rateless encode and decode, per differencetwisted.goldilocks2/d=1000,h2c=titwisted-goldilocks2per-element9.02 µs8.98 µs .. 9.06 µsper elem
rateless encode and decode, per differencetwisted.128/d=1000,h2c=titwisted128per-element9.97 µs9.93 µs .. 10.0 µsper elem
rateless encode and decode, per differencetwisted.61x2/d=1000,h2c=titwisted61x2per-element4.70 µs4.69 µs .. 4.72 µsper elem
rateless encode and decode, per differencetwisted.64x2/d=1000,h2c=titwisted64x2per-element6.53 µs6.51 µs .. 6.56 µsper elem
rateless encode and decode, per differenceweier.107/d=1000,h2c=tiweier107per-element5.99 µs5.98 µs .. 6.01 µsper elem
rateless encode and decode, per differenceweier-jacobian.107/d=1000,h2c=tiweier107-jacobianper-element5.80 µs5.77 µs .. 5.83 µsper elem
rateless encode and decode, per differenceweier.127/d=1000,h2c=tiweier127per-element7.70 µs7.68 µs .. 7.73 µsper elem
rateless encode and decode, per differenceweier-jacobian.127/d=1000,h2c=tiweier127-jacobianper-element7.12 µs7.08 µs .. 7.15 µsper elem
rateless encode and decode, per differenceweier.61x2/d=1000,h2c=tiweier61x2per-element5.32 µs5.26 µs .. 5.37 µsper elem
rateless encode and decode, per differenceweier-jacobian.61x2/d=1000,h2c=tiweier61x2-jacobianper-element5.52 µs5.50 µs .. 5.54 µsper elem
rateless encode and decode, per differenceristretto255/d=10ristretto255per-element14.1 µs14.0 µs .. 14.2 µsper elem
rateless encode and decode, per differenceristretto255/d=10,map=mcg64ristretto255per-element14.2 µs14.1 µs .. 14.4 µsper elem
rateless encode and decode, per differenceristretto255/d=100ristretto255per-element18.8 µs18.8 µs .. 18.9 µsper elem
rateless encode and decode, per differenceristretto255/d=100,map=mcg64ristretto255per-element18.6 µs18.5 µs .. 18.7 µsper elem
rateless encode and decode, per differenceristretto255/d=1000ristretto255per-element21.7 µs21.5 µs .. 21.8 µsper elem
rateless encode and decode, per differenceristretto255/d=1000,map=mcg64ristretto255per-element21.7 µs21.6 µs .. 21.7 µsper elem
rateless encode and decode, per differenceristretto255/d=10000ristretto255per-element25.2 µs25.1 µs .. 25.3 µsper elem
rateless encode and decode, per differenceristretto255/d=10000,map=chacha8ristretto255per-element26.3 µs26.3 µs .. 26.4 µsper elem
rateless encode and decode, per differenceristretto255/d=10000,map=mcg64ristretto255per-element25.0 µs24.8 µs .. 25.1 µsper elem
rateless encode and decode, per differenceristretto255/d=100000ristretto255per-element34.9 µs34.8 µs .. 35.0 µsper elem
rateless encode and decode, per differenceristretto255/d=100000,map=chacha8ristretto255per-element42.1 µs41.9 µs .. 42.3 µsper elem
rateless encode and decode, per differenceristretto255/d=100000,map=mcg64ristretto255per-element33.5 µs33.4 µs .. 33.6 µsper elem
rateless encode and decode, per differenceristretto255/d=20ristretto255per-element15.7 µs15.6 µs .. 15.9 µsper elem
rateless encode and decode, per differenceristretto255/d=20,map=mcg64ristretto255per-element15.8 µs15.7 µs .. 15.9 µsper elem
rateless encode and decode, per differenceristretto255/d=40ristretto255per-element17.3 µs17.3 µs .. 17.4 µsper elem
rateless encode and decode, per differenceristretto255/d=40,map=mcg64ristretto255per-element17.3 µs17.2 µs .. 17.3 µsper elem
rateless encode and decode, per differenceristretto255/d=50000ristretto255per-element31.1 µs31.0 µs .. 31.2 µsper elem
rateless encode and decode, per differenceristretto255/d=50000,map=mcg64ristretto255per-element30.2 µs30.1 µs .. 30.3 µsper elem
mapping, per indexchacha8/nextmappingper-element10.5 ns10.4 ns .. 10.5 nsper elem
mapping, per indexmcg64/nextmappingper-element5.68 ns5.66 ns .. 5.69 nsper elem
mapping, per indexsha256-ctr/nextmappingper-element8.47 ns8.45 ns .. 8.49 nsper elem
mapping, per indexxoshiro256pp/nextmappingper-element5.66 ns5.65 ns .. 5.67 nsper elem
mapping, per itemchacha8/item,m=12150mappingper-element289 ns288 ns .. 290 nsper elem
mapping, per itemchacha8/item,m=1350mappingper-element252 ns252 ns .. 253 nsper elem
mapping, per itemchacha8/item,m=150mappingper-element216 ns216 ns .. 217 nsper elem
mapping, per itemchacha8/item,m=20mappingper-element184 ns183 ns .. 184 nsper elem
mapping, per itemchacha8/item,m=5mappingper-element162 ns161 ns .. 162 nsper elem
mapping, per itemmcg64/item,m=12150mappingper-element43.5 ns43.3 ns .. 43.8 nsper elem
mapping, per itemmcg64/item,m=1350mappingper-element25.0 ns24.8 ns .. 25.1 nsper elem
mapping, per itemmcg64/item,m=150mappingper-element13.5 ns13.4 ns .. 13.6 nsper elem
mapping, per itemmcg64/item,m=20mappingper-element6.91 ns6.89 ns .. 6.93 nsper elem
mapping, per itemmcg64/item,m=5mappingper-element3.57 ns3.56 ns .. 3.58 nsper elem
mapping, per itemsha256-ctr/item,m=12150mappingper-element198 ns198 ns .. 199 nsper elem
mapping, per itemsha256-ctr/item,m=1350mappingper-element157 ns156 ns .. 158 nsper elem
mapping, per itemsha256-ctr/item,m=150mappingper-element119 ns119 ns .. 120 nsper elem
mapping, per itemsha256-ctr/item,m=20mappingper-element66.4 ns66.2 ns .. 66.6 nsper elem
mapping, per itemsha256-ctr/item,m=5mappingper-element34.9 ns34.8 ns .. 35.0 nsper elem
mapping, per itemxoshiro256pp/item,m=12150mappingper-element55.5 ns55.2 ns .. 55.7 nsper elem
mapping, per itemxoshiro256pp/item,m=1350mappingper-element34.2 ns34.0 ns .. 34.4 nsper elem
mapping, per itemxoshiro256pp/item,m=150mappingper-element19.8 ns19.8 ns .. 19.9 nsper elem
mapping, per itemxoshiro256pp/item,m=20mappingper-element10.0 ns9.96 ns .. 10.1 nsper elem
mapping, per itemxoshiro256pp/item,m=5mappingper-element4.85 ns4.82 ns .. 4.88 nsper elem
map digest of an IDprojection-fp127/digest of idmappingper-element9.61 ns9.59 ns .. 9.62 nsper elem
map digest of an IDprojection-fp130/digest of idmappingper-element16.5 ns16.3 ns .. 16.7 nsper elem
map digest of an IDprojection-gf2_127/digest of idmappingper-element5.11 ns5.10 ns .. 5.12 nsper elem
map digest of an IDsalted-sha256/digest of idmappingper-element33.0 ns32.9 ns .. 33.2 nsper elem
per-salt keysprojection-fp127/keysmappingper-element266 ns266 ns .. 267 nsper elem
per-salt keysprojection-fp130/keysmappingper-element321 ns320 ns .. 321 nsper elem
per-salt keysprojection-gf2_127/keysmappingper-element257 ns257 ns .. 258 nsper elem
per-salt keyssalted-sha256/keysmappingper-element74.7 ns74.4 ns .. 75.0 nsper elem
item IDsha256/idxorper-element33.1 ns33.0 ns .. 33.1 nsper elem
map digestsalted-sha256/digestmappingper-element34.6 ns33.8 ns .. 35.3 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-element25.7 ns25.6 ns .. 25.9 nsper elem
digestgf2_109/batchgf2_109batch93.0 ns92.9 ns .. 93.1 nsper elem
digestgf2_122/batchgf2_122batch90.8 ns88.8 ns .. 93.0 nsper elem
digestgf2_122-gls/batchgf2_122-glsbatch90.3 ns90.3 ns .. 90.4 nsper elem
digestgf2_127/batchgf2_127batch88.5 ns88.5 ns .. 88.6 nsper elem
digestedwards107/batchedwards107batch785 ns784 ns .. 786 nsper elem
digestedwards127/batchedwards127batch1.08 µs1.08 µs .. 1.08 µsper elem
digestweier107/batchweier107batch775 ns775 ns .. 776 nsper elem
digestweier127/batchweier127batch1.05 µs1.04 µs .. 1.05 µsper elem
digestristretto255/streamingristretto255streaming4.81 µs4.81 µs .. 4.82 µsper elem
digestsecp256k1/try-and-increment + combine_keyssecp256k1batch4.59 µs4.59 µs .. 4.60 µ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_109total55.2 µs54.7 µs .. 55.4 µsper iter
accept certificategf2_122/0gf2_122total55.2 µs54.8 µs .. 55.4 µsper iter
accept certificategf2_122-gls/0gf2_122-glstotal58.6 µs58.1 µs .. 58.9 µsper iter
accept certificategf2_127/0gf2_127total56.1 µs55.9 µs .. 56.2 µsper iter
accept certificateedwards107/0edwards107total57.6 µs57.2 µs .. 58.0 µsper iter
accept certificateedwards127/0edwards127total61.0 µs60.7 µs .. 61.2 µsper iter
accept certificateedwards61x2/0edwards61x2total61.2 µs60.7 µs .. 61.5 µsper iter
accept certificatetwisted-goldilocks2/0twisted-goldilocks2total59.9 µs59.4 µs .. 60.4 µsper iter
accept certificatetwisted128/0twisted128total63.9 µs63.6 µs .. 64.0 µsper iter
accept certificatetwisted61x2/0twisted61x2total60.3 µs59.9 µs .. 60.5 µsper iter
accept certificatetwisted64x2/0twisted64x2total64.3 µs63.7 µs .. 64.7 µsper iter
accept certificateweier107/0weier107total59.7 µs59.4 µs .. 59.8 µsper iter
accept certificateweier127/0weier127total67.6 µs67.2 µs .. 67.9 µsper iter
accept certificateweier61x2/0weier61x2total63.1 µs62.6 µs .. 63.7 µsper iter
verify certificategf2_109/198 rejections/0gf2_109total190 µs188 µs .. 192 µsper iter
verify certificategf2_122/4 rejections/0gf2_122total57.1 µs56.8 µs .. 57.5 µsper iter
verify certificategf2_122-gls/60 rejections/0gf2_122-glstotal114 µs113 µs .. 115 µsper iter
verify certificategf2_127/30 rejections/0gf2_127total75.3 µs74.9 µs .. 75.8 µsper iter
verify certificateedwards107/28 rejections/0edwards107total142 µs142 µs .. 143 µsper iter
verify certificateedwards127/56 rejections/0edwards127total256 µs254 µs .. 258 µsper iter
verify certificateedwards61x2/118 rejections/0edwards61x2total318 µs316 µs .. 320 µsper iter
verify certificatetwisted-goldilocks2/32 rejections/0twisted-goldilocks2total144 µs143 µs .. 144 µsper iter
verify certificatetwisted128/4 rejections/0twisted128total73.6 µs73.4 µs .. 73.9 µsper iter
verify certificatetwisted61x2/344 rejections/0twisted61x2total589 µs584 µs .. 593 µsper iter
verify certificatetwisted64x2/36 rejections/0twisted64x2total160 µs159 µs .. 161 µsper iter
verify certificateweier107/519 rejections/0weier107total384 µs382 µs .. 385 µsper iter
verify certificateweier127/125 rejections/0weier127total159 µs158 µs .. 160 µsper iter
verify certificateweier61x2/123 rejections/0weier61x2total146 µs145 µs .. 147 µsper iter
embedding-degree boundgf2_109/0gf2_109total30.3 µs30.2 µs .. 30.4 µsper iter
embedding-degree boundgf2_122/0gf2_122total30.3 µs30.1 µs .. 30.5 µsper iter
embedding-degree boundgf2_122-gls/0gf2_122-glstotal30.7 µs30.7 µs .. 30.8 µsper iter
embedding-degree boundgf2_127/0gf2_127total30.5 µs30.4 µs .. 30.6 µsper iter
embedding-degree boundedwards107/0edwards107total30.3 µs30.2 µs .. 30.4 µsper iter
embedding-degree boundedwards127/0edwards127total30.6 µs30.5 µs .. 30.7 µsper iter
embedding-degree boundedwards61x2/0edwards61x2total30.1 µs29.8 µs .. 30.5 µsper iter
embedding-degree boundtwisted-goldilocks2/0twisted-goldilocks2total30.1 µs30.0 µs .. 30.2 µsper iter
embedding-degree boundtwisted128/0twisted128total30.4 µs30.2 µs .. 30.6 µsper iter
embedding-degree boundtwisted61x2/0twisted61x2total29.6 µs29.5 µs .. 29.7 µsper iter
embedding-degree boundtwisted64x2/0twisted64x2total30.4 µs30.3 µs .. 30.4 µsper iter
embedding-degree boundweier107/0weier107total30.6 µs30.4 µs .. 30.7 µsper iter
embedding-degree boundweier127/0weier127total30.3 µs30.2 µs .. 30.4 µsper iter
embedding-degree boundweier61x2/0weier61x2total30.5 µs30.3 µs .. 30.7 µsper iter
find (Rust: AGM + sieve)gf2_127 agm+sieve/index 114/1gf2_127total23.6 ms23.5 ms .. 23.7 msper iter
find (Rust: AGM + sieve)gf2_127 agm+sieve/index 14/3gf2_127total2.38 ms2.37 ms .. 2.39 msper iter
find (Rust: AGM + sieve)gf2_127 agm+sieve/index 30/0gf2_127total4.71 ms4.68 ms .. 4.75 msper iter
find (Rust: AGM + sieve)gf2_127 agm+sieve/index 54/2gf2_127total11.7 ms11.6 ms .. 11.7 msper iter
certify (Rust: AGM + sieve + order witnesses)gf2_127 agm+sieve/index 114/1gf2_127total23.8 ms23.6 ms .. 23.9 msper iter
certify (Rust: AGM + sieve + order witnesses)gf2_127 agm+sieve/index 14/3gf2_127total2.45 ms2.44 ms .. 2.46 msper iter
certify (Rust: AGM + sieve + order witnesses)gf2_127 agm+sieve/index 30/0gf2_127total4.77 ms4.74 ms .. 4.81 msper iter
certify (Rust: AGM + sieve + order witnesses)gf2_127 agm+sieve/index 54/2gf2_127total11.7 ms11.7 ms .. 11.8 msper iter
point count (PARI)gf2_127gf2_127total2.10 ms2.08 ms .. 2.11 msper iter
point count (PARI)edwards127edwards127total53.8 ms53.7 ms .. 53.9 msper iter
point count (PARI)edwards61x2edwards61x2total40.3 ms40.1 ms .. 40.5 msper iter
point count (PARI)twisted-goldilocks2twisted-goldilocks2total49.3 ms49.1 ms .. 49.4 msper iter
point count (PARI)twisted61x2twisted61x2total44.7 ms44.6 ms .. 44.8 msper iter
point count (PARI)twisted64x2twisted64x2total51.3 ms51.2 ms .. 51.4 msper iter
point count (PARI)weier127weier127total62.0 ms61.8 ms .. 62.2 msper iter
point count (PARI)weier61x2weier61x2total39.5 ms39.3 ms .. 39.6 msper iter
point count (Rust AGM)ordergf2_127total446 µs445 µs .. 447 µsper iter
AGM stepstablesgf2_127total1.63 ms1.63 ms .. 1.64 msper iter
AGM stepstracegf2_127total425 µs424 µs .. 425 µsper iter
Z_q ring opmulgf2_127total2.25 µs2.24 µs .. 2.25 µsper iter
Z_q ring opsigmagf2_127total2.58 µs2.56 µs .. 2.61 µsper iter
Z_q ring opsigma_invgf2_127total2.60 µs2.58 µs .. 2.62 µsper iter
Z_q ring opsquaregf2_127total1.36 µs1.35 µs .. 1.36 µsper iter
sieve, one lgf2_127/11gf2_127total272 µs271 µs .. 273 µsper iter
sieve, one lgf2_127/13gf2_127total519 µs518 µs .. 520 µsper iter
sieve, one lgf2_127/3gf2_127total4.11 µs4.10 µs .. 4.12 µsper iter
sieve, one lgf2_127/5gf2_127total14.5 µs14.5 µs .. 14.5 µsper iter
sieve, one lgf2_127/7gf2_127total47.4 µs47.3 µs .. 47.6 µsper iter
sieve, one ledwards127/11edwards127total1.84 ms1.83 ms .. 1.84 msper iter
sieve, one ledwards127/13edwards127total3.58 ms3.57 ms .. 3.58 msper iter
sieve, one ledwards127/3edwards127total12.7 µs12.7 µs .. 12.7 µsper iter
sieve, one ledwards127/5edwards127total83.9 µs83.7 µs .. 84.1 µsper iter
sieve, one ledwards127/7edwards127total310 µs309 µs .. 310 µsper iter
sieve, one ledwards127/8edwards127total1.03 µs1.03 µs .. 1.03 µsper iter
sieve, one lweier127/11weier127total1.84 ms1.83 ms .. 1.84 msper iter
sieve, one lweier127/13weier127total3.57 ms3.56 ms .. 3.57 msper iter
sieve, one lweier127/2weier127total8.40 µs8.39 µs .. 8.42 µsper iter
sieve, one lweier127/3weier127total12.6 µs12.6 µs .. 12.6 µsper iter
sieve, one lweier127/5weier127total83.9 µs83.7 µs .. 84.0 µsper iter
sieve, one lweier127/7weier127total310 µs309 µs .. 310 µsper iter
sieve, per candidategf2_127/7gf2_127per-element38.7 µs38.6 µs .. 38.7 µsper elem
sieve, per candidateedwards127/13edwards127per-element1.26 ms1.26 ms .. 1.27 msper elem
sieve, per candidateweier127/13weier127per-element786 µs784 µs .. 787 µsper 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)24.2 nsxor-sha256/xor 32B, 1 accumulator0.38 ns25.3 ns26.2 ns27.6 ns29.3 ns30.9 ns
gf2_109one at a timegf2_109/pornin map x1560 nsbinary.109/mode=throughput12.8 ns598 ns628 ns678 ns735 ns791 ns
gf2_109batchedgf2_109/pornin map x1, batched63.7 nsbinary.109/mode=throughput12.8 ns101 ns132 ns182 ns238 ns295 ns
gf2_109-lambdaone at a timegf2_109-lambda/pornin map x1 to (x, λ)550 nsbinary-lambda.109/mode=throughput12.0 ns585 ns614 ns660 ns713 ns765 ns
gf2_109-lambdabatchedgf2_109-lambda/pornin map x1 to (x, λ), batched55.2 nsbinary-lambda.109/mode=throughput12.0 ns90.0 ns119 ns165 ns218 ns271 ns
gf2_109-uone at a timegf2_109-u/pornin map x1 to (u, v)533 nsbinary-u.109/mode=throughput9.76 ns561 ns584 ns622 ns665 ns708 ns
gf2_109-ubatchedgf2_109-u/pornin map x1 to (u, v), batched60.7 nsbinary-u.109/mode=throughput9.76 ns89.0 ns112 ns150 ns193 ns236 ns
gf2_109-wone at a timegf2_109-w/pornin map x1 to (x, λ)535 nsbinary-w.109/mode=throughput12.0 ns569 ns598 ns645 ns697 ns750 ns
gf2_109-wbatchedgf2_109-w/pornin map x1 to (x, λ), batched54.5 nsbinary-w.109/mode=throughput12.0 ns89.2 ns118 ns165 ns217 ns270 ns
gf2_122one at a timegf2_122/pornin map x1373 nsbinary.122/mode=throughput17.8 ns425 ns467 ns537 ns615 ns693 ns
gf2_122batchedgf2_122/pornin map x1, batched62.8 nsbinary.122/mode=throughput17.8 ns115 ns157 ns227 ns305 ns383 ns
gf2_122-glsone at a timegf2_122-gls/pornin map x1369 nsbinary.122-gls/mode=throughput16.8 ns417 ns457 ns523 ns596 ns670 ns
gf2_122-glsbatchedgf2_122-gls/pornin map x1, batched62.0 nsbinary.122-gls/mode=throughput16.8 ns111 ns151 ns216 ns290 ns363 ns
gf2_122-gls-lambdaone at a timegf2_122-gls-lambda/pornin map x1 to (x, λ)315 nsbinary-lambda.122-gls/mode=throughput16.6 ns363 ns403 ns467 ns540 ns612 ns
gf2_122-gls-lambdabatchedgf2_122-gls-lambda/pornin map x1 to (x, λ), batched55.4 nsbinary-lambda.122-gls/mode=throughput16.6 ns103 ns143 ns208 ns280 ns353 ns
gf2_122-gls-uone at a timegf2_122-gls-u/pornin map x1 to (u, v)319 nsbinary-u.122-gls/mode=throughput13.1 ns357 ns388 ns439 ns497 ns554 ns
gf2_122-gls-ubatchedgf2_122-gls-u/pornin map x1 to (u, v), batched55.7 nsbinary-u.122-gls/mode=throughput13.1 ns93.7 ns125 ns176 ns233 ns291 ns
gf2_122-gls-wone at a timegf2_122-gls-w/pornin map x1 to (x, λ)316 nsbinary-w.122-gls/mode=throughput16.6 ns364 ns403 ns468 ns540 ns613 ns
gf2_122-gls-wbatchedgf2_122-gls-w/pornin map x1 to (x, λ), batched55.4 nsbinary-w.122-gls/mode=throughput16.6 ns103 ns143 ns208 ns280 ns353 ns
gf2_122-lambdaone at a timegf2_122-lambda/pornin map x1 to (x, λ)326 nsbinary-lambda.122/mode=throughput16.6 ns374 ns414 ns479 ns551 ns624 ns
gf2_122-lambdabatchedgf2_122-lambda/pornin map x1 to (x, λ), batched53.9 nsbinary-lambda.122/mode=throughput16.6 ns102 ns142 ns206 ns279 ns351 ns
gf2_122-uone at a timegf2_122-u/pornin map x1 to (u, v)326 nsbinary-u.122/mode=throughput13.1 ns364 ns395 ns446 ns503 ns561 ns
gf2_122-ubatchedgf2_122-u/pornin map x1 to (u, v), batched57.1 nsbinary-u.122/mode=throughput13.1 ns95.0 ns126 ns177 ns234 ns292 ns
gf2_122-wone at a timegf2_122-w/pornin map x1 to (x, λ)326 nsbinary-w.122/mode=throughput16.6 ns374 ns414 ns479 ns551 ns624 ns
gf2_122-wbatchedgf2_122-w/pornin map x1 to (x, λ), batched54.0 nsbinary-w.122/mode=throughput16.6 ns102 ns142 ns206 ns279 ns352 ns
gf2_127one at a timegf2_127/pornin map x1485 nsbinary.127/mode=throughput14.1 ns526 ns560 ns615 ns676 ns738 ns
gf2_127batchedgf2_127/pornin map x1, batched61.5 nsbinary.127/mode=throughput14.1 ns102 ns136 ns191 ns252 ns314 ns
gf2_127-lambdaone at a timegf2_127-lambda/pornin map x1 to (x, λ)456 nsbinary-lambda.127/mode=throughput14.9 ns499 ns535 ns593 ns658 ns724 ns
gf2_127-lambdabatchedgf2_127-lambda/pornin map x1 to (x, λ), batched53.5 nsbinary-lambda.127/mode=throughput14.9 ns96.8 ns132 ns191 ns256 ns322 ns
gf2_127-uone at a timegf2_127-u/pornin map x1 to (u, v)461 nsbinary-u.127/mode=throughput10.7 ns491 ns517 ns559 ns605 ns652 ns
gf2_127-ubatchedgf2_127-u/pornin map x1 to (u, v), batched57.2 nsbinary-u.127/mode=throughput10.7 ns88.1 ns114 ns155 ns202 ns249 ns
gf2_127-wone at a timegf2_127-w/pornin map x1 to (x, λ)455 nsbinary-w.127/mode=throughput14.9 ns498 ns534 ns592 ns657 ns722 ns
gf2_127-wbatchedgf2_127-w/pornin map x1 to (x, λ), batched53.5 nsbinary-w.127/mode=throughput14.9 ns96.7 ns132 ns190 ns256 ns321 ns
edwards107one at a timeedwards.107/mode=indep806 nsedwards.107/mode=throughput15.5 ns851 ns888 ns948 ns1.02 µs1.08 µs
edwards107batchededwards.107/mode=batch,n=1024805 nsedwards.107/mode=throughput15.5 ns850 ns887 ns947 ns1.02 µs1.08 µs
edwards127one at a timeedwards.127/mode=indep1.07 µsedwards.127/mode=throughput20.1 ns1.13 µs1.17 µs1.25 µs1.34 µs1.43 µs
edwards127batchededwards.127/mode=batch,n=10241.07 µsedwards.127/mode=throughput20.1 ns1.13 µs1.18 µs1.25 µs1.34 µs1.43 µs
edwards61x2one at a timeedwards.61x2/mode=indep624 nsedwards.61x2/mode=throughput13.3 ns663 ns695 ns747 ns805 ns864 ns
edwards61x2batchededwards.61x2/mode=batch,n=1024620 nsedwards.61x2/mode=throughput13.3 ns659 ns691 ns743 ns801 ns860 ns
twisted-goldilocks2one at a timetwisted.goldilocks2/mode=indep1.73 µstwisted.goldilocks2/mode=throughput15.0 ns1.77 µs1.81 µs1.87 µs1.93 µs2.00 µs
twisted-goldilocks2batchedtwisted.goldilocks2/mode=batch,n=10241.75 µstwisted.goldilocks2/mode=throughput15.0 ns1.79 µs1.83 µs1.89 µs1.95 µs2.02 µs
twisted128one at a timetwisted.128/mode=indep1.92 µstwisted.128/mode=throughput23.9 ns1.99 µs2.05 µs2.14 µs2.25 µs2.35 µs
twisted128batchedtwisted.128/mode=batch,n=10241.92 µstwisted.128/mode=throughput23.9 ns1.99 µs2.05 µs2.14 µs2.25 µs2.35 µs
twisted61x2one at a timetwisted.61x2/mode=indep630 nstwisted.61x2/mode=throughput12.5 ns666 ns696 ns745 ns799 ns854 ns
twisted61x2batchedtwisted.61x2/mode=batch,n=1024632 nstwisted.61x2/mode=throughput12.5 ns668 ns698 ns747 ns801 ns856 ns
twisted64x2one at a timetwisted.64x2/mode=indep1.10 µstwisted.64x2/mode=throughput17.2 ns1.15 µs1.19 µs1.26 µs1.33 µs1.41 µs
twisted64x2batchedtwisted.64x2/mode=batch,n=10241.10 µstwisted.64x2/mode=throughput17.2 ns1.15 µs1.19 µs1.26 µs1.33 µs1.41 µs
weier107one at a timeweier.107/mode=indep746 nsweier.107/mode=throughput30.5 ns834 ns907 ns1.03 µs1.16 µs1.29 µs
weier107batchedweier.107/mode=batch,n=1024748 nsweier.107/mode=throughput30.5 ns837 ns909 ns1.03 µs1.16 µs1.30 µs
weier107-jacobianone at a timeweier-jacobian.107/mode=indep742 nsweier-jacobian.107/mode=throughput28.7 ns826 ns894 ns1.01 µs1.13 µs1.26 µs
weier107-jacobianbatchedweier-jacobian.107/mode=batch,n=1024745 nsweier-jacobian.107/mode=throughput28.7 ns828 ns897 ns1.01 µs1.13 µs1.26 µs
weier127one at a timeweier.127/mode=indep1.03 µsweier.127/mode=throughput45.4 ns1.16 µs1.27 µs1.44 µs1.64 µs1.84 µs
weier127batchedweier.127/mode=batch,n=10241.04 µsweier.127/mode=throughput45.4 ns1.17 µs1.28 µs1.45 µs1.65 µs1.85 µs
weier127-jacobianone at a timeweier-jacobian.127/mode=indep1.03 µsweier-jacobian.127/mode=throughput37.5 ns1.14 µs1.23 µs1.38 µs1.54 µs1.71 µs
weier127-jacobianbatchedweier-jacobian.127/mode=batch,n=10241.04 µsweier-jacobian.127/mode=throughput37.5 ns1.15 µs1.24 µs1.38 µs1.55 µs1.71 µs
weier61x2one at a timeweier.61x2/mode=indep637 nsweier.61x2/mode=throughput26.8 ns715 ns779 ns883 ns1.00 µs1.12 µs
weier61x2batchedweier.61x2/mode=batch,n=1024637 nsweier.61x2/mode=throughput26.8 ns714 ns778 ns883 ns1000 ns1.12 µs
weier61x2-jacobianone at a timeweier-jacobian.61x2/mode=indep638 nsweier-jacobian.61x2/mode=throughput31.6 ns730 ns806 ns929 ns1.07 µs1.21 µs
weier61x2-jacobianbatchedweier-jacobian.61x2/mode=batch,n=1024638 nsweier-jacobian.61x2/mode=throughput31.6 ns729 ns805 ns929 ns1.07 µs1.21 µs
ristretto255one at a timeristretto255/hash_from_bytes<Sha512>4.72 µsristretto255/+=, 1 accumulator63.8 ns4.90 µs5.05 µs5.30 µs5.58 µs5.86 µs

Apple M4 · rustc 1.98.1 · RUSTFLAGS=-C target-cpu=apple-m4 · ef9e82d39fbf · full profile · 2026-10-08