package ring import ( "crypto/rand" "testing" "golang.org/x/crypto/sha3" ) func BenchmarkGPVSign_Breakdown(b *testing.B) { p := SmallGPVParams().Ring sigma := SmallGPVParams().Sigma b.Run("GaussianSampler_new", func(b *testing.B) { for i := 0; i < b.N; i++ { NewGaussianSampler(sigma) } }) b.Run("GaussianSamplePoly", func(b *testing.B) { gs := NewGaussianSampler(sigma) b.ResetTimer() for i := 0; i < b.N; i++ { gs.SamplePoly(p) } }) b.Run("SHAKE256_hash", func(b *testing.B) { data := make([]byte, 256) rand.Read(data) b.ResetTimer() for i := 0; i < b.N; i++ { h := sha3.NewShake256() h.Write(data) out := make([]byte, 32) h.Read(out) } }) b.Run("hashToChallenge", func(b *testing.B) { w := UniformPoly(p) msg := []byte("benchmark") b.ResetTimer() for i := 0; i < b.N; i++ { hashToChallenge(p, w, msg) } }) b.Run("Serialize", func(b *testing.B) { poly := UniformPoly(p) b.ResetTimer() for i := 0; i < b.N; i++ { Serialize(poly) } }) }