At the moment benchmarking is non-automated, and is run on two of my laptops. See below.
| RSA2048 signing |
🥇 aws-lc-rs2,220.8 sigs/sec |
🥈 ring2,043.2 sigs/sec |
🥉 graviola1,262.8 sigs/sec |
golang1,102.7 sigs/sec |
rustcrypto577.65 sigs/sec |
| ECDSA-P256 signing |
🥇 graviola88,482 sigs/sec |
🥈 ring66,245 sigs/sec |
🥉 aws-lc-rs65,272 sigs/sec |
golang47,587 sigs/sec |
rustcrypto10,215 sigs/sec |
| ECDSA-P384 signing |
🥇 aws-lc-rs15,899 sigs/sec |
🥈 graviola9,004.7 sigs/sec |
🥉 golang6,827.9 sigs/sec |
rustcrypto3,714 sigs/sec |
ring3,451.4 sigs/sec |
| RSA2048 signature verification |
🥇 aws-lc-rs69,692 sigs/sec |
🥈 ring60,963 sigs/sec |
🥉 graviola47,270 sigs/sec |
golang35,772 sigs/sec |
rustcrypto10,280 sigs/sec |
| ECDSA-P256 signature verification |
🥇 graviola27,321 sigs/sec |
🥈 aws-lc-rs25,663 sigs/sec |
🥉 ring23,857 sigs/sec |
golang19,094 sigs/sec |
rustcrypto2,526.8 sigs/sec |
| ECDSA-P384 signature verification |
🥇 aws-lc-rs6,757.8 sigs/sec |
🥈 graviola5,027.1 sigs/sec |
🥉 golang2,298 sigs/sec |
ring1,933.1 sigs/sec |
rustcrypto843.39 sigs/sec |
| X25519 key agreement |
🥇 graviola43,554 kx/sec |
🥈 aws-lc-rs41,330 kx/sec |
🥉 ring26,564 kx/sec |
dalek24,530 kx/sec |
golang14,478 kx/sec |
| P256 key agreement |
🥇 aws-lc-rs24,742 kx/sec |
🥈 graviola24,010 kx/sec |
🥉 ring21,679 kx/sec |
golang19,885 kx/sec |
rustcrypto2,204.1 kx/sec |
| P384 key agreement |
🥇 aws-lc-rs7,033.7 kx/sec |
🥈 graviola4,727.3 kx/sec |
🥉 golang2,451.2 kx/sec |
ring1,867.7 kx/sec |
rustcrypto743.87 kx/sec |
| ML-KEM-768 |
🥇 graviola49,328 KEM/sec |
🥈 aws-lc-rs35,843 KEM/sec |
🥉 libcrux-ml-kem21,886 KEM/sec |
rustcrypto15,609 KEM/sec |
golang9,500.8 KEM/sec |
| RSA2048 signing |
ⓘ🥇 aws-lc-rs5,523.3 sigs/sec |
🥈 graviola2,519.2 sigs/sec |
🥉 ring2,426.6 sigs/sec |
golang1,297.7 sigs/sec |
rustcrypto497.21 sigs/sec |
| ECDSA-P256 signing |
🥇 graviola92,734 sigs/sec |
🥈 aws-lc-rs88,499 sigs/sec |
🥉 ring81,322 sigs/sec |
golang44,277 sigs/sec |
rustcrypto9,340.6 sigs/sec |
| ECDSA-P384 signing |
🥇 aws-lc-rs16,648 sigs/sec |
🥈 graviola9,438.4 sigs/sec |
🥉 golang6,322.1 sigs/sec |
rustcrypto3,657.7 sigs/sec |
ring3,423.2 sigs/sec |
| RSA2048 signature verification |
🥇 graviola84,685 sigs/sec |
🥈 aws-lc-rs77,108 sigs/sec |
🥉 ring66,367 sigs/sec |
golang43,890 sigs/sec |
rustcrypto9,935.7 sigs/sec |
| ECDSA-P256 signature verification |
🥇 aws-lc-rs27,247 sigs/sec |
🥈 graviola26,530 sigs/sec |
🥉 ring26,272 sigs/sec |
golang19,455 sigs/sec |
rustcrypto2,454.6 sigs/sec |
| ECDSA-P384 signature verification |
🥇 aws-lc-rs7,040.8 sigs/sec |
🥈 graviola5,172.2 sigs/sec |
🥉 golang2,215.9 sigs/sec |
ring1,903.6 sigs/sec |
rustcrypto921.15 sigs/sec |
| X25519 key agreement |
🥇 graviola43,084 kx/sec |
🥈 aws-lc-rs42,906 kx/sec |
🥉 ring22,866 kx/sec |
dalek19,580 kx/sec |
golang14,522 kx/sec |
| P256 key agreement |
🥇 aws-lc-rs25,746 kx/sec |
🥈 graviola24,469 kx/sec |
🥉 ring24,444 kx/sec |
golang20,417 kx/sec |
rustcrypto2,096.6 kx/sec |
| P384 key agreement |
🥇 aws-lc-rs7,440.2 kx/sec |
🥈 graviola4,974.1 kx/sec |
🥉 golang2,432.9 kx/sec |
ring1,845.1 kx/sec |
rustcrypto788.77 kx/sec |
| ML-KEM-768 |
ⓘ🥇 graviola59,081 KEM/sec |
🥈 aws-lc-rs31,845 KEM/sec |
🥉 libcrux-ml-kem21,711 KEM/sec |
rustcrypto12,676 KEM/sec |
golang7,614.1 KEM/sec |