FrameworkBenchmarks icon indicating copy to clipboard operation
FrameworkBenchmarks copied to clipboard

⬆️ Build `go-std` with Go-1.19 and `GOAMD64=v3`

Open 0uep opened this issue 3 years ago • 0 comments

  • Upgrade all dependencies
  • Bump Go from 1.14 to 1.19: Each Go version improves the performance.
  • Set GOAMD64=v3 to enable the following instructions set: CMPXCHG16B, LAHF, SAHF, POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3, AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT, MOVBE, OSXSAVE. The default value is GOAMD64=v1. See https://github.com/golang/go/wiki/MinimumRequirements#amd64
  • Replace the RUN go get -u github.com/valyala/quicktemplate/qtc (Dockerfile) by //go:generate go run github.com/valyala/quicktemplate/qtc in the source code. That way Go-1.19 is aware of the dependency on qtc and adds automatically it in the go.mod with a fixed version to reproduce the same go generate.
  • Replace the RUN easyjson -pkg by //go:generate go run github.com/mailru/easyjson/... -all -disable_members_unescape ${GOFILE} using -disable_members_unescape for better performance.
  • Rename module name from go-std/src to go-std/app. This change sets the default executable name to "app". We may also drop the -o app in the Dockerfile.

Note: I insert docker.io/ in the FROM docker.io/golang:1.19 statement to allow podman and buildah to also build the container images.

0uep avatar Sep 19 '22 10:09 0uep