Up to Main Index Up to Journal for July, 2023 JOURNAL FOR MONDAY 3RD JULY, 2023 ______________________________________________________________________________ SUBJECT: High Throughput Fizz Buzz DATE: Mon 3 Jul 20:15:43 BST 2023 I did hope to get another post written for June along with a new release of Mere ICE. However, the documentation is taking longer to update than I thought it would. I also found bugs that need fixing. More on that in another post. In the meantime, I came across a StackExchange post about high throughput Fizz Buzz[1] which piqued my interest. The naïve implementation, a modified Mere ICE example, gets around 10½MiB/sec loop = 1 next: if loop % 3 == 0; print "fizz" if loop % 5 == 0; print "buzz" if loop % 3 != 0 && loop % 5 != 0; print loop println loop++ goto next After looking through other submissions and a little coffee break tinkering, I came up with a Mere version of a modified Python submission: cycle = []string ( "FizzBuzz", "", "", "Fizz", "", "Buzz", "Fizz", "", "", "Fizz", "Buzz", "", "Fizz", "", "", ) x = 1 xloop: if (c = cycle[x % 15]) == ""; c = x println c x++ goto xloop The throughput for this version is around 16MiB/sec. Not fantastic, but not too shabby for a home-brew language under development. Both of the above Mere programs used a tweaked command line version of Mere. By default Mere writes to the plain unbuffered os.Stdout: func main() { f, _ := os.ReadFile(os.Args[1]) os.Exit(mere.Compile(string(f)).Execute()) } Mere is designed for easy embedding, so a simple tweak: func main() { f, _ := os.ReadFile(os.Args[1]) c := mere.Compile(string(f)) c.Stdout = bufio.NewWriterSize(c.Stdout, 1024*1024*16) os.Exit(c.Execute()) } If I made the output buffer larger than 16Mib the output wasn’t continuous making measurement difficult. This was a fun little exercise :) I think I should include this as another standard benchmark for Mere. Current Fizz Buzz leader gets 54-56GiB/s using hand crafted assembly language… -- Diddymus [1] High Throughput Fizz Buzz: https://codegolf.stackexchange.com/questions/215216/high-throughput-fizz-buzz/236630 Up to Main Index Up to Journal for July, 2023