Ubuntu上优化Golang编译性能
一 构建参数与并行度
export GOCACHE=/tmp/go-build。在 Go 1.17+ 构建缓存默认开启,无需额外开关。并行度与 CPU 核心数匹配能明显缩短总耗时,使用 -p 指定并行任务数,如 go build -p $(nproc)。-ldflags "-s -w" 去除符号表和 DWARF 调试信息以减小体积(会削弱调试能力);使用 -trimpath 去除编译路径信息,便于 reproducible build。示例:go build -trimpath -ldflags "-s -w" .。CGO_ENABLED=0 go build -a -installsuffix cgo -o app .;需要调用 C 库时再启用 CGO 并准备交叉编译器。sudo apt-get install upx && upx --best --lzma app。二 依赖管理与模块设置
go.mod/go.sum 整洁;在 CI 中先 go mod download 缓存依赖,再进行构建,减少网络波动带来的时间损耗。export GOPROXY=https://proxy.golang.org,direct(或企业内网代理),提升拉取依赖的稳定性与速度。go mod vendor 将依赖打入仓库,避免每次构建重复下载与解析。三 代码结构优化
四 硬件与系统层优化
GOCACHE 指向 tmpfs(如 /tmp 或 /dev/shm)可进一步加速缓存读写,但需注意内存占用与系统清理策略。五 Docker与CI中的实践
CGO_ENABLED=0 go build -a -installsuffix cgo -o app .FROM scratch + COPY --from=builder /app/app /app~/.cache/go-build 与模块下载缓存),并优先拉取本地/私有代理的依赖,能稳定缩短构建时长。