3 ms·
curve25519-dalek is 3X faster than the equivalent Go code (i.e. in the stdlib, authored by agl). This is for a few reasons: Rust has support for 128-bit integ
by bascule 9y ago
curve25519-dalek is 3X faster than the equivalent Go code (i.e. in the stdlib, authored by agl).
This is for a few reasons:
Rust has support for 128-bit integers (i.e. u128) which allows for faster arithmetic when operating on what are effectively multi-u128 bignums in an elliptic curve library.
LLVM is generally more sophisticated about optimizations. It wasn't until recently that go had an SSA-based compiler, so its optimizer isn't nearly as sophisticated as LLVM's, which has been developed for many years now.
- pjmlp 9y agoThere is also gccgo, taking advantage of GCC's backend. There is some ongoing work into an LLVM based compiler for Go, and LLVM now has Go as official supported bindings.
- tptacek 9y agoGo can and should fix the integer problem here. George Tankersley had a whole talk at Crypto Village this year about what a nightmare it is to write competitively fast curve code in Go.