At the moment benchmarking is non-automated, and is run on two of my laptops. See below.
| RSA2048 signing |
🥇 aws-lc-rs2,193.7 sigs/sec |
🥈 ring2,017.5 sigs/sec |
🥉 graviola1,193.8 sigs/sec |
golang1,102.7 sigs/sec |
rustcrypto899.86 sigs/sec |
| ECDSA-P256 signing |
🥇 graviola84,286 sigs/sec |
🥈 aws-lc-rs64,224 sigs/sec |
🥉 ring63,565 sigs/sec |
golang47,587 sigs/sec |
rustcrypto8,357.6 sigs/sec |
| ECDSA-P384 signing |
🥇 aws-lc-rs15,678 sigs/sec |
🥈 graviola8,645 sigs/sec |
🥉 golang6,827.9 sigs/sec |
ring3,408.2 sigs/sec |
rustcrypto2,205 sigs/sec |
| RSA2048 signature verification |
🥇 aws-lc-rs68,871 sigs/sec |
🥈 ring58,533 sigs/sec |
🥉 graviola46,875 sigs/sec |
golang35,772 sigs/sec |
rustcrypto7,596.6 sigs/sec |
| ECDSA-P256 signature verification |
🥇 graviola26,222 sigs/sec |
🥈 aws-lc-rs24,700 sigs/sec |
🥉 ring22,928 sigs/sec |
golang19,094 sigs/sec |
rustcrypto5,227.6 sigs/sec |
| ECDSA-P384 signature verification |
🥇 aws-lc-rs6,475 sigs/sec |
🥈 graviola4,831.1 sigs/sec |
🥉 golang2,298 sigs/sec |
ring1,902.2 sigs/sec |
rustcrypto1,227.7 sigs/sec |
| X25519 key agreement |
🥇 graviola41,990 kx/sec |
🥈 aws-lc-rs39,706 kx/sec |
🥉 ring25,834 kx/sec |
dalek23,418 kx/sec |
golang14,478 kx/sec |
| P256 key agreement |
🥇 aws-lc-rs23,774 kx/sec |
🥈 graviola23,014 kx/sec |
🥉 ring20,844 kx/sec |
golang19,885 kx/sec |
rustcrypto5,193.8 kx/sec |
| P384 key agreement |
🥇 aws-lc-rs6,735.2 kx/sec |
🥈 graviola4,522.6 kx/sec |
🥉 golang2,451.2 kx/sec |
ring1,841.4 kx/sec |
rustcrypto1,227.7 kx/sec |
| ML-KEM-768 |
🥇 graviola40,255 KEM/sec |
🥈 aws-lc-rs30,850 KEM/sec |
🥉 libcrux-ml-kem21,567 KEM/sec |
rustcrypto10,098 KEM/sec |
golang9,500.8 KEM/sec |
| RSA2048 signing |
ⓘ🥇 aws-lc-rs5,276.3 sigs/sec |
🥈 ring2,370 sigs/sec |
🥉 graviola2,280.7 sigs/sec |
golang1,297.7 sigs/sec |
rustcrypto880.65 sigs/sec |
| ECDSA-P256 signing |
🥇 graviola92,694 sigs/sec |
🥈 aws-lc-rs85,967 sigs/sec |
🥉 ring80,372 sigs/sec |
golang44,277 sigs/sec |
rustcrypto9,675.3 sigs/sec |
| ECDSA-P384 signing |
🥇 aws-lc-rs16,385 sigs/sec |
🥈 graviola9,175.8 sigs/sec |
🥉 golang6,322.1 sigs/sec |
ring3,322 sigs/sec |
rustcrypto2,203.6 sigs/sec |
| RSA2048 signature verification |
🥇 graviola83,119 sigs/sec |
🥈 aws-lc-rs74,801 sigs/sec |
🥉 ring64,742 sigs/sec |
golang43,890 sigs/sec |
rustcrypto7,278.6 sigs/sec |
| ECDSA-P256 signature verification |
🥇 aws-lc-rs26,519 sigs/sec |
🥈 graviola26,291 sigs/sec |
🥉 ring25,652 sigs/sec |
golang19,455 sigs/sec |
rustcrypto5,827.2 sigs/sec |
| ECDSA-P384 signature verification |
🥇 aws-lc-rs6,889.2 sigs/sec |
🥈 graviola4,951.6 sigs/sec |
🥉 golang2,215.9 sigs/sec |
ring1,847.5 sigs/sec |
rustcrypto1,218.2 sigs/sec |
| X25519 key agreement |
🥇 graviola42,363 kx/sec |
🥈 aws-lc-rs42,038 kx/sec |
🥉 ring22,724 kx/sec |
dalek19,158 kx/sec |
golang14,522 kx/sec |
| P256 key agreement |
🥇 aws-lc-rs25,061 kx/sec |
🥈 graviola24,347 kx/sec |
🥉 ring24,172 kx/sec |
golang20,417 kx/sec |
rustcrypto5,792.5 kx/sec |
| P384 key agreement |
🥇 aws-lc-rs7,197 kx/sec |
🥈 graviola4,861.2 kx/sec |
🥉 golang2,432.9 kx/sec |
ring1,790.1 kx/sec |
rustcrypto1,231 kx/sec |
| ML-KEM-768 |
🥇 graviola33,520 KEM/sec |
🥈 aws-lc-rs31,044 KEM/sec |
🥉 libcrux-ml-kem20,913 KEM/sec |
rustcrypto8,913.6 KEM/sec |
golang7,614.1 KEM/sec |