在 Debian 上编译 Go 程序慢,通常可以从环境、依赖、编译参数、硬件几个层面来优化。下面按「常见原因 → 解决办法」整理一份实用清单。
Go 默认已启用,但确认一下:
go env GOCACHE GOPATH GOMODCACHE
建议:
GOPATH 放在 SSDrm -rf 缓存Go 默认用所有 CPU:
go env GOMAXPROCS
手动指定(如 8 核):
export GOMAXPROCS=8
Debian 自带 Go 通常版本旧、优化少:
go version
建议:
go mod download第一次慢是正常的,后续应命中缓存:
go mod download
go mod tidy
Go 编译单位是 package:
main 包 → 编译慢go build -ldflags="-s -w"
go build -gcflags="-N -l"
⚠️ 仅调试用,会更慢
CGO_ENABLED=0 go build
CGO 会显著拖慢编译
编译大量小文件时,磁盘 IO 是瓶颈:
mount -t tmpfs tmpfs /tmp
或把 GOCACHE 放 tmpfs
内存不足会频繁 GC / 换页:
free -h
如:
clamavupdatedb
编译目录建议加入排除go build -pgo build -p 8
bazel / mage(超大项目)适合:
go version
go env GOMAXPROCS GOCACHE CGO_ENABLED
free -h
df -h
如果你愿意,可以告诉我:
go build 还是 go test 慢我可以给你更针对性的优化方案。