Go is a statically typed, compiled programming language originally designed at Google. Go supports arm64 out of the box, and available in all common distributions, with recent changes that improve performance, so make sure to use the latest version of the Go compiler and toolchain.
Here are some noteworthy performance upgrades:
The main implementation of the Go compiler, golang/go, has improved performance on Arm with couple of changes listed below. It is expected to be released in January 2021. Building your project with Go 1.16 will give you these improvements:
- ARMv8.1-A Atomics instructions, which dramatically improve mutex fairness and speed on Graviton 2, and modern Arm core with v8.1 and newer instruction set.
- copy performance improvements, especially when the addresses are unaligned.
Changes to commonly used packages that improve performance on Arm can make a noticeable difference in some cases. Here is a partial list of packages to be aware of.
Package | Version | Improvements |
---|---|---|
Snappy | as of commit 196ae77 | assembly implementations of the hot path functions were ported from amd64 to arm64 |