From 35469f25cd53707b3e801caaff49121926bb7238 Mon Sep 17 00:00:00 2001 From: Rose Hogenson Date: Wed, 24 Sep 2025 17:25:46 -0700 Subject: Rename cmd -> tools --- tools/finditers/finditers.go | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 tools/finditers/finditers.go (limited to 'tools/finditers') diff --git a/tools/finditers/finditers.go b/tools/finditers/finditers.go new file mode 100644 index 0000000..2a256c8 --- /dev/null +++ b/tools/finditers/finditers.go @@ -0,0 +1,44 @@ +package main + +import ( + "encoding/hex" + "fmt" + "os" + "sort" + "testing" + "time" + + "gitlab.com/rhogenson/roseh.moe/internal/pwhash" +) + +var ( + iterations int + + salt, _ = hex.DecodeString("3fb84513fc3afcd6d3b230bf9ece91aaae2d2a99da17efbf7de83b21fafe3f08") +) + +func BenchmarkHashIter(b *testing.B) { + const password = "oboe shortness ether ideology undesired fresh freezable catching mashing glimpse" + for b.Loop() { + pwhash.HashIter(password, salt, iterations) + } +} + +func run() error { + for iterations = 8192; time.Duration(testing.Benchmark(BenchmarkHashIter).NsPerOp()) < 500*time.Millisecond; iterations *= 2 { + } + lo := iterations / 2 + hi := iterations + fmt.Println(lo + sort.Search(hi-lo, func(i int) bool { + iterations = lo + i + return time.Duration(testing.Benchmark(BenchmarkHashIter).NsPerOp()) > 500*time.Millisecond + })) + return nil +} + +func main() { + if err := run(); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } +} -- cgit v1.3.1