一、编译过程优化:提升编译速度与效率
-buildcache=true(默认开启)缓存中间编译结果,避免重复编译;可设置GOCACHE环境变量指定缓存目录(如export GOCACHE=$HOME/.cache/go),进一步加速后续编译。-p参数设置并行编译的goroutine数量(如go build -p 4),充分利用多核CPU资源,缩短编译时间。-ldflags="-s -w"去除符号表和调试信息,显著减小二进制文件体积(通常可减少30%-50%);若需更彻底的精简,可添加-trimpath去除编译路径信息(避免泄露开发环境信息)。go build -modvendor将依赖放入vendor目录,避免每次编译都从远程下载依赖。二、代码层面优化:降低运行时开销
sync.Pool缓存常用对象),降低GC压力。sync.WaitGroup同步goroutine;优先使用channel进行通信,而非共享内存(减少锁冲突);通过runtime.GOMAXPROCS(runtime.NumCPU())设置Go运行时使用的最大CPU核心数,充分利用多核资源。pprof工具分析程序瓶颈(如CPU热点、内存分配情况),针对性优化(如优化高频调用的函数、减少不必要的内存分配)。三、系统环境优化:提升整体性能
/etc/sysctl.conf中的net.core.somaxconn、net.ipv4.tcp_tw_reuse等参数,提升网络I/O性能);使用noatime挂载文件系统(减少文件访问时间的更新,提升文件读写速度)。四、其他注意事项
-tags netgo启用静态编译(生成不依赖动态库的二进制文件),便于在不同环境中部署(如Ubuntu服务器),避免因缺少动态库导致的运行问题。