generic_ec_curves::__docs

Module curves_perf

Source
Available on docsrs only.
Expand description

Curves performance

Below you can find benchmark results for all curves provided in generic-ec.

Capital letter stand for a point, and small letter stand for a scalar. E.g. A+B is point addition, a+b is scalar addition, and [k]P is multiplication of scalar at point.

secp256k1secp256r1starked25519
A+B300ns453ns505ns215ns
[k]P52.5μs140.8μs153.5μs36.6μs
SmallFactorCheck8ns5ns6ns36606ns
EncodeCompressedPoint5.8μs21.1μs14.9μs3.5μs
EncodeUncompressedPoint5.8μs21.1μs14.9μs3.5μs
DecodeCompressedPoint5.7μs7.0μs2599.6μs4.0μs
DecodeUncompressedPoint129ns225ns336ns3966ns
a+b11ns11ns11ns35ns
a*b41ns58ns29ns98ns
inv(a)13.2μs21.9μs8.3μs11.4μs
RandomScalar23ns23ns1803ns146ns
EncodeScalarBE8ns8ns23ns5ns
EncodeScalarLE12ns12ns22ns3ns
DecodeScalarBE5ns5ns2853ns114ns
DecodeScalarLE4ns4ns2852ns112ns
BeBytesModOrder/3230ns30ns2811ns79ns
LeBytesModOrder/3229ns29ns2807ns77ns
BeBytesModOrder/6459ns121ns8423ns148ns
LeBytesModOrder/6446ns120ns8416ns140ns
BeBytesModOrder/128184ns264ns14077ns566ns
LeBytesModOrder/128166ns261ns14066ns544ns
BeBytesModOrder/512691ns1126ns48027ns2143ns
LeBytesModOrder/512626ns1111ns47862ns2065ns
ReduceBe/3213ns13ns2745ns63ns
ReduceLe/3212ns12ns2734ns61ns
ReduceBe/6442ns130ns
ReduceLe/6428ns124ns

§Reproducibility

Benchmarks were carried out on c5.2xlarge EC2 instance.

In order to reproduce the experiments, you need cargo-criterion to be installed. Then you can run benchmarks via:

cargo criterion --message-format json --bench curves > ./perf/curves/results.json

Then you can rebuild the table above:

cargo run --bin analyze -- curves < perf/curves/results.json > perf/curves/table.md