Thank you, Go team, for all your work on this! I (and I think many others!) love all these behind-the-scenes changes that make our lives better.
I went to look for that 5% performance boost in my GoAWK interpreter (due to the new register-based calling convention), and found a 38% improvement instead! $ time goawk_go1.16 'BEGIN { for (i=0; i<100000000; i++) s += i; print(s) }' 4999999950000000 real 0m10.158s ... $ time goawk_go1.17 'BEGIN { for (i=0; i<100000000; i++) s += i; print(s) }' 4999999950000000 real 0m6.268s ... Overall for GoAWK I get an 18% speed increase on my micro-benchmarks between Go 1.16 and 1.17 (see https://github.com/benhoyt/goawk/commit/1f314f421273b3dc164ff4e5d41363f4ac4d160f) and I measured an 8% speed increase on my "slightly more real-world" benchmarks that also do I/O (https://github.com/benhoyt/goawk/blob/master/benchmark_awks.py). After some pointers from people (see https://news.ycombinator.com/item?id=28203608) and some digging into the assembly, I found that many of the function-call heavy methods in interp/interp.go do a lot less stack manipulation (as expected) but are also 60-70% of the size of the versions compiled with Go 1.16. The overall binary is not 60-70% smaller, of course (it's "only" 7% smaller), but the fact that these hot-loop interpreter functions are so much smaller is a good indication they're doing a lot less -- as confirmed by the perf numbers. I know that some people haven't gotten as much as 5% improvement, and a few things actually slowed down, but I just wanted to share a success story. -Ben On Tuesday, August 17, 2021 at 10:08:11 AM UTC+12 Michael Knyszek wrote: > Hello gophers, > > We just released Go 1.17 > > To find out what has changed in Go 1.17, read the release notes: > https://golang.org/doc/go1.17 > > You can download binary and source distributions from our download page: > https://golang.org/dl/ > > If you have Go installed already, an easy way to try go1.17 > is by using the go command: > $ go get golang.org/dl/go1.17 > $ go1.17 download > > To compile from source using a Git clone, update to the release with > "git checkout go1.17" and build as usual. > > Thanks to everyone who contributed to the release! > > Cheers, > Michael and Dmitri for the Go Team > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/a532710d-0261-4695-8f93-277a43cfe80dn%40googlegroups.com.