package ring import ( "crypto/rand" "testing" ) func BenchmarkGPVKeyGen_Breakdown(b *testing.B) { p := SmallGPVParams().Ring b.Run("UniformPoly", func(b *testing.B) { for i := 0; i < b.N; i++ { UniformPolyFrom(p, rand.Reader) } }) b.Run("TernaryPoly", func(b *testing.B) { for i := 0; i < b.N; i++ { TernaryPolyFrom(p, rand.Reader) } }) b.Run("NTT_n64", func(b *testing.B) { poly := UniformPoly(p) b.ResetTimer() for i := 0; i < b.N; i++ { pp := poly.Clone() NTT(pp) } }) b.Run("MulPointwise_n64", func(b *testing.B) { a := UniformPoly(p) NTT(a) s := UniformPoly(p) NTT(s) b.ResetTimer() for i := 0; i < b.N; i++ { MulPointwise(a, s) } }) b.Run("crypto_rand_128B", func(b *testing.B) { buf := make([]byte, 128) b.ResetTimer() for i := 0; i < b.N; i++ { rand.Read(buf) } }) b.Run("crypto_rand_2B_x64", func(b *testing.B) { buf := make([]byte, 2) b.ResetTimer() for i := 0; i < b.N; i++ { for j := 0; j < 64; j++ { rand.Read(buf) } } }) b.Run("crypto_rand_1B_x64", func(b *testing.B) { buf := make([]byte, 1) b.ResetTimer() for i := 0; i < b.N; i++ { for j := 0; j < 64; j++ { rand.Read(buf) } } }) }