@cryptotaxi247 / kubo / commits / d01aaa97c

test: benchmark Sign and Verify operations

BenchmarkSign1B 1000 2406924 ns/op BenchmarkSign10B 1000 2360527 ns/op BenchmarkSign100B 1000 2354136 ns/op BenchmarkSign1000B 500 2361775 ns/op BenchmarkSign10000B 500 2415993 ns/op BenchmarkSign100000B 500 2718051 ns/op BenchmarkVerify1B 30000 52117 ns/op BenchmarkVerify10B 30000 50968 ns/op BenchmarkVerify100B 30000 51037 ns/op BenchmarkVerify1000B 30000 56768 ns/op BenchmarkVerify10000B 10000 105744 ns/op BenchmarkVerify100000B 2000 628530 ns/op

Brian Tiger Chow committed Jan 9, 2015 at 17:14 UTC d01aaa97c433a89ba5268cdde82ab33412078bc8
1 file changed +54
p2p/crypto/bench_test.go new
+54
@@ -0,0 +1,54 @@
1 +package crypto
2 +
3 +import "testing"
4 +
5 +func BenchmarkSign1B(b *testing.B) { RunBenchmarkSign(b, 1) }
6 +func BenchmarkSign10B(b *testing.B) { RunBenchmarkSign(b, 10) }
7 +func BenchmarkSign100B(b *testing.B) { RunBenchmarkSign(b, 100) }
8 +func BenchmarkSign1000B(b *testing.B) { RunBenchmarkSign(b, 1000) }
9 +func BenchmarkSign10000B(b *testing.B) { RunBenchmarkSign(b, 10000) }
10 +func BenchmarkSign100000B(b *testing.B) { RunBenchmarkSign(b, 100000) }
11 +
12 +func BenchmarkVerify1B(b *testing.B) { RunBenchmarkVerify(b, 1) }
13 +func BenchmarkVerify10B(b *testing.B) { RunBenchmarkVerify(b, 10) }
14 +func BenchmarkVerify100B(b *testing.B) { RunBenchmarkVerify(b, 100) }
15 +func BenchmarkVerify1000B(b *testing.B) { RunBenchmarkVerify(b, 1000) }
16 +func BenchmarkVerify10000B(b *testing.B) { RunBenchmarkVerify(b, 10000) }
17 +func BenchmarkVerify100000B(b *testing.B) { RunBenchmarkVerify(b, 100000) }
18 +
19 +func RunBenchmarkSign(b *testing.B, numBytes int) {
20 + secret, _, err := GenerateKeyPair(RSA, 1024)
21 + if err != nil {
22 + b.Fatal(err)
23 + }
24 + someData := make([]byte, numBytes)
25 + b.ResetTimer()
26 + for i := 0; i < b.N; i++ {
27 + _, err := secret.Sign(someData)
28 + if err != nil {
29 + b.Fatal(err)
30 + }
31 + }
32 +}
33 +
34 +func RunBenchmarkVerify(b *testing.B, numBytes int) {
35 + secret, public, err := GenerateKeyPair(RSA, 1024)
36 + if err != nil {
37 + b.Fatal(err)
38 + }
39 + someData := make([]byte, numBytes)
40 + signature, err := secret.Sign(someData)
41 + if err != nil {
42 + b.Fatal(err)
43 + }
44 + b.ResetTimer()
45 + for i := 0; i < b.N; i++ {
46 + valid, err := public.Verify(someData, signature)
47 + if err != nil {
48 + b.Fatal(err)
49 + }
50 + if !valid {
51 + b.Fatal("signature should be valid")
52 + }
53 + }
54 +}