From 120cebef772c2e78609099e73be08c73a25bfaeb Mon Sep 17 00:00:00 2001 From: Olaoluwa Osuntokun Date: Thu, 22 Feb 2018 17:14:45 -0800 Subject: [PATCH] aezeed: add a set of benchmarks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In this commit we add a set of benchmarks to be able to measure the enciphering and deciphering speed of the current scheme with the current scrypt parameters. On my laptop I get about 100ms per attempt: ⛰ go test -run=XXX -bench=. goos: darwin goarch: amd64 pkg: github.com/lightningnetwork/lnd/aezeed BenchmarkToMnenonic-4 10 102287840 ns/op BenchmarkFromMnenonic-4 10 105874973 ns/op PASS ok github.com/lightningnetwork/lnd/aezeed 3.036s --- aezeed/bench_test.go | 69 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 aezeed/bench_test.go diff --git a/aezeed/bench_test.go b/aezeed/bench_test.go new file mode 100644 index 00000000..c54c1794 --- /dev/null +++ b/aezeed/bench_test.go @@ -0,0 +1,69 @@ +package aezeed + +import ( + "testing" + "time" +) + +var ( + mnemonic Mnemonic + + seed *CipherSeed +) + +// BenchmarkFrommnemonic benchmarks the process of converting a cipher seed +// (given the salt), to an enciphered mnemonic. +func BenchmarkTomnemonic(b *testing.B) { + scryptN = 32768 + scryptR = 8 + scryptP = 1 + + pass := []byte("1234567890abcedfgh") + cipherSeed, err := New(0, nil, time.Now()) + if err != nil { + b.Fatalf("unable to create seed: %v", err) + } + + var r Mnemonic + for i := 0; i < b.N; i++ { + r, err = cipherSeed.ToMnemonic(pass) + if err != nil { + b.Fatalf("unable to encipher: %v", err) + } + } + + b.ReportAllocs() + + mnemonic = r +} + +// BenchmarkToCipherSeed benchmarks the process of deciphering an existing +// enciphered mnemonic. +func BenchmarkToCipherSeed(b *testing.B) { + scryptN = 32768 + scryptR = 8 + scryptP = 1 + + pass := []byte("1234567890abcedfgh") + cipherSeed, err := New(0, nil, time.Now()) + if err != nil { + b.Fatalf("unable to create seed: %v", err) + } + + mnemonic, err := cipherSeed.ToMnemonic(pass) + if err != nil { + b.Fatalf("unable to create mnemonic: %v", err) + } + + var s *CipherSeed + for i := 0; i < b.N; i++ { + s, err = mnemonic.ToCipherSeed(pass) + if err != nil { + b.Fatalf("unable to decipher: %v", err) + } + } + + b.ReportAllocs() + + seed = s +}