1. 去除调试信息
使用-ldflags="-s -w"组合选项:-s去除符号表,-w去除DWARF调试信息,显著减小二进制文件体积(通常可减少30%~50%),提升程序启动速度。适用于生产环境部署。
示例:go build -ldflags="-s -w" main.go
2. 去除编译路径信息
添加-trimpath选项,移除编译时嵌入的二进制文件中的绝对路径信息,进一步减小文件体积且不影响运行。
示例:go build -trimpath -ldflags="-s -w" main.go
3. 优化编译级别
通过-gcflags调整编译优化级别:
-gcflags="-l=4":设置更激进的优化级别(默认为1,最大为4),提升运行效率;-gcflags="-N -l":禁用内联和逃逸分析(仅用于调试,生产环境需移除)。go build -gcflags="-l=4" main.go1. 启用并行编译
使用-p选项指定并行编译的CPU核心数(如-p 4),充分利用多核处理器资源,缩短编译时间。
示例:go build -p 4 main.go
2. 使用编译缓存
-buildcache=true选项开启编译缓存(默认开启);GOCACHE环境变量指定缓存目录(如export GOCACHE=/tmp/go-cache),缓存中间编译结果,避免重复编译未修改的模块。3. 增量编译
使用-i标志启用增量编译,仅重新编译已更改的源文件及其依赖项,减少编译时间。
1. 调整垃圾回收(GC)行为
通过GOGC环境变量控制GC触发频率(默认值为100,表示当内存增长100%时触发GC):
GOGC值(如export GOGC=50)可更频繁触发GC,减少内存占用但增加CPU开销;GOGC值(如export GOGC=200)可减少GC次数,提升性能但增加内存使用。2. 优化内联与逃逸分析
-gcflags="-l":禁用内联优化(内联虽能提升性能,但会增加二进制体积,调试时建议开启);-gcflags="-m":打印逃逸分析信息,帮助识别未逃逸到堆的对象,优化内存分配。go build -gcflags="-m" main.go-ldflags="-s -w" -gcflags="-l=4" -trimpath,兼顾体积、速度与性能;-ldflags="-s -w"和-gcflags="-N -l",保留调试信息;