From d01aaa97c433a89ba5268cdde82ab33412078bc8 Mon Sep 17 00:00:00 2001 From: Brian Tiger Chow Date: Fri, 9 Jan 2015 17:14:51 -0800 Subject: [PATCH] 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 --- p2p/crypto/bench_test.go | 54 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 p2p/crypto/bench_test.go diff --git a/p2p/crypto/bench_test.go b/p2p/crypto/bench_test.go new file mode 100644 index 00000000000..7a3818a7c95 --- /dev/null +++ b/p2p/crypto/bench_test.go @@ -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") + } + } +}