At the moment benchmarking is non-automated, and is run on two of my laptops. See below.
| RSA2048 signing |
🥇 aws-lc-rs2,221.3 sigs/sec |
🥈 ring2,043.7 sigs/sec |
🥉 graviola1,209.5 sigs/sec |
golang1,102.7 sigs/sec |
rustcrypto913.62 sigs/sec |
| ECDSA-P256 signing |
🥇 graviola85,498 sigs/sec |
🥈 aws-lc-rs65,020 sigs/sec |
🥉 ring64,163 sigs/sec |
golang47,587 sigs/sec |
rustcrypto8,431.8 sigs/sec |
| ECDSA-P384 signing |
🥇 aws-lc-rs15,894 sigs/sec |
🥈 graviola8,754.6 sigs/sec |
🥉 golang6,827.9 sigs/sec |
ring3,452 sigs/sec |
rustcrypto2,232.4 sigs/sec |
| RSA2048 signature verification |
🥇 aws-lc-rs69,946 sigs/sec |
🥈 ring59,294 sigs/sec |
🥉 graviola47,468 sigs/sec |
golang35,772 sigs/sec |
rustcrypto7,694.9 sigs/sec |
| ECDSA-P256 signature verification |
🥇 graviola26,460 sigs/sec |
🥈 aws-lc-rs25,015 sigs/sec |
🥉 ring23,218 sigs/sec |
golang19,094 sigs/sec |
rustcrypto5,291.4 sigs/sec |
| ECDSA-P384 signature verification |
🥇 aws-lc-rs6,578 sigs/sec |
🥈 graviola4,892.9 sigs/sec |
🥉 golang2,298 sigs/sec |
ring1,926.5 sigs/sec |
rustcrypto1,243.3 sigs/sec |
| X25519 key agreement |
🥇 graviola42,401 kx/sec |
🥈 aws-lc-rs40,210 kx/sec |
🥉 ring26,162 kx/sec |
dalek23,713 kx/sec |
golang14,478 kx/sec |
| P256 key agreement |
🥇 aws-lc-rs24,082 kx/sec |
🥈 graviola23,398 kx/sec |
🥉 ring21,094 kx/sec |
golang19,885 kx/sec |
rustcrypto5,264.1 kx/sec |
| P384 key agreement |
🥇 aws-lc-rs6,799.9 kx/sec |
🥈 graviola4,583.1 kx/sec |
🥉 golang2,451.2 kx/sec |
ring1,863.9 kx/sec |
rustcrypto1,243.3 kx/sec |
| ML-KEM-768 |
🥇 aws-lc-rs31,192 KEM/sec |
🥈 graviola30,139 KEM/sec |
🥉 libcrux-ml-kem21,862 KEM/sec |
rustcrypto10,327 KEM/sec |
golang9,500.8 KEM/sec |
| RSA2048 signing |
ⓘ🥇 aws-lc-rs5,342.9 sigs/sec |
🥈 ring2,384.9 sigs/sec |
🥉 graviola2,190.1 sigs/sec |
golang1,297.7 sigs/sec |
rustcrypto881.68 sigs/sec |
| ECDSA-P256 signing |
🥇 graviola92,614 sigs/sec |
🥈 aws-lc-rs86,517 sigs/sec |
🥉 ring80,798 sigs/sec |
golang44,277 sigs/sec |
rustcrypto9,677 sigs/sec |
| ECDSA-P384 signing |
🥇 aws-lc-rs16,379 sigs/sec |
🥈 graviola9,065.4 sigs/sec |
🥉 golang6,322.1 sigs/sec |
ring3,368 sigs/sec |
rustcrypto2,224.4 sigs/sec |
| RSA2048 signature verification |
🥇 graviola83,438 sigs/sec |
🥈 aws-lc-rs76,006 sigs/sec |
🥉 ring65,211 sigs/sec |
golang43,890 sigs/sec |
rustcrypto7,309.1 sigs/sec |
| ECDSA-P256 signature verification |
🥇 aws-lc-rs26,701 sigs/sec |
🥈 graviola26,285 sigs/sec |
🥉 ring25,711 sigs/sec |
golang19,455 sigs/sec |
rustcrypto5,812.3 sigs/sec |
| ECDSA-P384 signature verification |
🥇 aws-lc-rs6,888.7 sigs/sec |
🥈 graviola5,056.9 sigs/sec |
🥉 golang2,215.9 sigs/sec |
ring1,862 sigs/sec |
rustcrypto1,231.3 sigs/sec |
| X25519 key agreement |
🥇 graviola42,611 kx/sec |
🥈 aws-lc-rs42,295 kx/sec |
🥉 ring22,631 kx/sec |
dalek19,356 kx/sec |
golang14,522 kx/sec |
| P256 key agreement |
🥇 aws-lc-rs25,215 kx/sec |
🥈 graviola24,346 kx/sec |
🥉 ring24,124 kx/sec |
golang20,417 kx/sec |
rustcrypto5,791.1 kx/sec |
| P384 key agreement |
🥇 aws-lc-rs7,175.6 kx/sec |
🥈 graviola4,884.3 kx/sec |
🥉 golang2,432.9 kx/sec |
ring1,805.8 kx/sec |
rustcrypto1,232.2 kx/sec |
| ML-KEM-768 |
🥇 aws-lc-rs30,724 KEM/sec |
🥈 graviola22,768 KEM/sec |
🥉 libcrux-ml-kem20,950 KEM/sec |
rustcrypto8,993.8 KEM/sec |
golang7,614.1 KEM/sec |