// SPDX-License-Identifier: Unlicense package gigaparsec_test import ( "testing" "git.codemonkeysoftware.net/b/gigaparsec" ) func BenchmarkBind5(b *testing.B) { type Bind5T = func(p gigaparsec.Parser[byte, byte], f func(byte) gigaparsec.Parser[byte, byte], f2 func(byte) gigaparsec.Parser[byte, byte], f3 func(byte) gigaparsec.Parser[byte, byte], f4 func(byte) gigaparsec.Parser[byte, byte], f5 func(byte) gigaparsec.Parser[byte, byte]) gigaparsec.Parser[byte, byte] f := func(b byte) gigaparsec.Parser[byte, byte] { return gigaparsec.Return[byte](b + 1) } p := func(bind5 Bind5T) gigaparsec.Parser[byte, byte] { // gigaparsec.Bind5() return bind5(gigaparsec.Match(byte(0)), f, f, f, f, f) } input := gigaparsec.SliceReaderAt[byte]{0} b.Run("Bind5", func(b *testing.B) { for range b.N { gigaparsec.Run(p(gigaparsec.Bind5), input) } }) b.Run("Bind5Naïve", func(b *testing.B) { for range b.N { gigaparsec.Run(p(gigaparsec.Bind5Naïve), input) } }) } func BenchmarkBind9(b *testing.B) { type Bind9T = func(p gigaparsec.Parser[byte, byte], f func(byte) gigaparsec.Parser[byte, byte], f2 func(byte) gigaparsec.Parser[byte, byte], f3 func(byte) gigaparsec.Parser[byte, byte], f4 func(byte) gigaparsec.Parser[byte, byte], f5 func(byte) gigaparsec.Parser[byte, byte], f6 func(byte) gigaparsec.Parser[byte, byte], f7 func(byte) gigaparsec.Parser[byte, byte], f8 func(byte) gigaparsec.Parser[byte, byte], f9 func(byte) gigaparsec.Parser[byte, byte]) gigaparsec.Parser[byte, byte] f := func(b byte) gigaparsec.Parser[byte, byte] { return gigaparsec.Return[byte](b + 1) } p := func(bind5 Bind9T) gigaparsec.Parser[byte, byte] { // gigaparsec.Bind5() return bind5(gigaparsec.Match(byte(0)), f, f, f, f, f, f, f, f, f) } input := gigaparsec.SliceReaderAt[byte]{0} b.Run("Bind9", func(b *testing.B) { for range b.N { gigaparsec.Run(p(gigaparsec.Bind9), input) } }) b.Run("Bind9Naïve", func(b *testing.B) { for range b.N { gigaparsec.Run(p(gigaparsec.Bind9Naïve), input) } }) }