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
+}