Hasty Briefsbeta

双语

Shrink your Go binaries with this one weird trick

3 days ago
  • Go 二进制文件可以通过链接器标志和压缩工具将大小减少 6 倍以上。
  • 使用 '-s -w' 链接器标志剥离二进制文件会删除调试信息,大小减少约 28%,同时保留 panic 的堆栈跟踪。
  • 对剥离后的二进制文件使用 UPX 压缩,进一步将大小减少到默认大小的约 15%,例如,一个 12MB 的二进制文件变为大约 2.5MB。
  • 作者提醒,大小减少会牺牲构建时间、复杂性、性能和可调试性,尽管对某些用户可能有用。
  • UPX 解压缩会增加启动开销,例如,Go 编译器 160ms,简单程序 15ms。
  • Go 1.7 中的改进,例如条件树修剪和 SSA 节省,也有助于减小二进制文件大小。