# VRF benchmark ## ED25519 ### [r2ishiguro](https://github.com/r2ishiguro/vrf) draft-goldbe-vrf-00 * pk/sk size: 32 bytes * proof size: 64 bytes * data: 200 bytes Generate proof: ``` BenchmarkGenProof-4 1152 926,084 ns/op 166142 B/op 1061 allocs/op ``` Verify proof: ``` BenchmarkVerifyProof-4 1050 1,088,664 ns/op 166,224 B/op 1060 allocs/op ``` ### [coniks](https://github.com/coniks-sys/coniks-go) * pk size: 32 bytes * sk size: 64 bytes * proof size: 96 bytes * data: 200 bytes Generage proof: ``` BenchmarkProve-4 882 1,416,164 ns/op 2016 B/op 16 allocs/op ``` ```go= func BenchmarkProve(b *testing.B) { sk, err := GenerateKey(nil) if err != nil { b.Fatal(err) } // prepare msg initialization() b.ResetTimer() for n := 0; n < b.N; n++ { sk.Prove(msg[:]) } } ``` Verify proof: ``` BenchmarkVerify-4 482 2,238,798 ns/op 1344 B/op 11 allocs/op ``` ```go= func BenchmarkVerify(b *testing.B) { sk, err := GenerateKey(nil) if err != nil { b.Fatal(err) } // prepare msg initialization() aliceVRF := sk.Compute(msg[:]) _, aliceProof := sk.Prove(msg[:]) pk, _ := sk.Public() b.ResetTimer() for n := 0; n < b.N; n++ { pk.Verify(msg[:], aliceVRF, aliceProof) } } ``` ### [algorand](https://github.com/algorand/go-algorand) * pk size: 32 bytes * sk size: 64 bytes * proof size: 80 bytes * data: 200 bytes ### [Wolfgang]() draft-irtf-cfrg-vrf-15 * pk size: 32 bytes * sk size: 64 bytes * proof size: 80 bytes * data: 200 bytes generate proof: ``` BenchmarkProve-4 4754 264,297 ns/op 705 B/op 7 allocs/op ``` verify proof: ``` BenchmarkVerify-4 5338 246,396 ns/op 4081 B/op 11 allocs/op ```