mirror of
https://github.com/ipfs/kubo.git
synced 2025-06-28 00:39:31 +08:00
Merge pull request #528 from jbenet/bench/crypto-sign-verify
benchmark Sign and Verify operations
This commit is contained in:
54
p2p/crypto/bench_test.go
Normal file
54
p2p/crypto/bench_test.go
Normal file
@ -0,0 +1,54 @@
|
||||
package crypto
|
||||
|
||||
import "testing"
|
||||
|
||||
func BenchmarkSign1B(b *testing.B) { RunBenchmarkSign(b, 1) }
|
||||
func BenchmarkSign10B(b *testing.B) { RunBenchmarkSign(b, 10) }
|
||||
func BenchmarkSign100B(b *testing.B) { RunBenchmarkSign(b, 100) }
|
||||
func BenchmarkSign1000B(b *testing.B) { RunBenchmarkSign(b, 1000) }
|
||||
func BenchmarkSign10000B(b *testing.B) { RunBenchmarkSign(b, 10000) }
|
||||
func BenchmarkSign100000B(b *testing.B) { RunBenchmarkSign(b, 100000) }
|
||||
|
||||
func BenchmarkVerify1B(b *testing.B) { RunBenchmarkVerify(b, 1) }
|
||||
func BenchmarkVerify10B(b *testing.B) { RunBenchmarkVerify(b, 10) }
|
||||
func BenchmarkVerify100B(b *testing.B) { RunBenchmarkVerify(b, 100) }
|
||||
func BenchmarkVerify1000B(b *testing.B) { RunBenchmarkVerify(b, 1000) }
|
||||
func BenchmarkVerify10000B(b *testing.B) { RunBenchmarkVerify(b, 10000) }
|
||||
func BenchmarkVerify100000B(b *testing.B) { RunBenchmarkVerify(b, 100000) }
|
||||
|
||||
func RunBenchmarkSign(b *testing.B, numBytes int) {
|
||||
secret, _, err := GenerateKeyPair(RSA, 1024)
|
||||
if err != nil {
|
||||
b.Fatal(err)
|
||||
}
|
||||
someData := make([]byte, numBytes)
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
_, err := secret.Sign(someData)
|
||||
if err != nil {
|
||||
b.Fatal(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func RunBenchmarkVerify(b *testing.B, numBytes int) {
|
||||
secret, public, err := GenerateKeyPair(RSA, 1024)
|
||||
if err != nil {
|
||||
b.Fatal(err)
|
||||
}
|
||||
someData := make([]byte, numBytes)
|
||||
signature, err := secret.Sign(someData)
|
||||
if err != nil {
|
||||
b.Fatal(err)
|
||||
}
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
valid, err := public.Verify(someData, signature)
|
||||
if err != nil {
|
||||
b.Fatal(err)
|
||||
}
|
||||
if !valid {
|
||||
b.Fatal("signature should be valid")
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user