# 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
```