一个 webpack 插件和命令行工具,以可缩放的交互式树状图展示打包产物中各模块的体积构成。
Zxilly/go-size-analyzer
一款分析编译后 Go 二进制文件体积构成的工具,可按包、段和符号拆解,支持文本、JSON、HTML、SVG、网页和终端界面输出。
- Star
- 2,195
- Fork
- 45
- 未关闭 Issue
- 9
- 最近提交
- 3天前
这是什么?
go-size-analyzer 用于回答“编译后的 Go 二进制文件为什么这么大”这个问题。它可解析 ELF、Mach-O、PE 格式的二进制文件,以及实验性的 WebAssembly 文件,并把体积归因到各个包(包括标准库和 vendor 依赖)以及 .rodata、.gopclntab、DWARF 调试信息等段。
分析结果可以输出为文本表格、JSON、HTML 或 SVG 树图,也可以通过本地网页或终端界面交互式浏览。差异对比模式可比较两个二进制文件或两份已保存的 JSON 结果,逐包、逐段显示体积变化,便于追踪不同 Go 版本或构建之间的体积增长。
项目还提供 WebAssembly 版本,可直接在浏览器中使用,但速度明显更慢,建议只用于较小的程序。对于去除符号的二进制文件也能分析,但结果可能不够准确。
核心功能
- 01支持分析 ELF、Mach-O、PE 格式及实验性的 WebAssembly 二进制文件。
- 02按包、标准库、vendor 依赖和段拆解体积。
- 03可输出文本、JSON、HTML 和 SVG 树图报告。
- 04提供交互式网页界面和终端界面。
- 05差异对比模式可比较两个二进制文件或已保存的 JSON 结果。
适用场景
- 找出哪些依赖导致 Go 服务或命令行程序的二进制文件变大。
- 追踪不同 Go 工具链版本或提交之间的体积变化。
- 通过网络与团队共享某次构建的交互式体积树图。
- 检查调试段或符号是否占发布二进制文件的大头。
快速上手
- 1
使用 Go 安装
go install github.com/Zxilly/go-size-analyzer/cmd/gsa@latest - 2
对编译好的 Go 二进制文件启动网页界面
gsa --web golang-compiled-binary
使用前须知
- 采用 AGPL-3.0 许可证,这是一种 copyleft 许可证,通过网络提供修改后的版本时需要公开源代码。
- 从源码构建需要 Go 1.27 或更高版本。
- 分析去除符号的二进制文件时结果可能不准确。
- 浏览器中的 WebAssembly 版本明显慢于原生版本。
收录于专题
标签
#go#binary-analysis#bundle-size#visualization#cli#treemap#dependency-analysis#analyzer#binary#dependency
常见问题
- go-size-analyzer 是什么?
- 一款分析编译后 Go 二进制文件体积构成的工具,可按包、段和符号拆解,支持文本、JSON、HTML、SVG、网页和终端界面输出。 go-size-analyzer 用于回答“编译后的 Go 二进制文件为什么这么大”这个问题。它可解析 ELF、Mach-O、PE 格式的二进制文件,以及实验性的 WebAssembly 文件,并把体积归因到各个包(包括标准库和 vendor 依赖)以及 .rodata、.gopclntab、DWARF 调试信息等段。
- go-size-analyzer 可以免费使用吗?用的什么许可证?
- go-size-analyzer 以 AGPL-3.0 许可证开源。用于商业产品前,请先确认许可证条款。
- go-size-analyzer 还在维护吗?
- 活跃维护中。go-size-analyzer 最近一次提交是在 2026年11月4日。
- go-size-analyzer 适合用来做什么?
- 找出哪些依赖导致 Go 服务或命令行程序的二进制文件变大。 追踪不同 Go 工具链版本或提交之间的体积变化。 通过网络与团队共享某次构建的交互式体积树图。 检查调试段或符号是否占发布二进制文件的大头。
- go-size-analyzer 怎么安装和运行?
- 使用 Go 安装: go install github.com/Zxilly/go-size-analyzer/cmd/gsa@latest 对编译好的 Go 二进制文件启动网页界面: gsa --web golang-compiled-binary
- 在哪里获取 go-size-analyzer?
- 源代码和安装说明在 GitHub 上:https://github.com/Zxilly/go-size-analyzer
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
1.3万517JavaScriptMIT维护活跃更新于 前天
一款面向逆向工程与二进制分析的跨平台十六进制编辑器,内置用于解析文件结构的模式语言。
5.6万+100 本周2613C++GPL-2.0维护活跃更新于 30天前
类似 jq 的命令行工具与查询语言,用于查看和查询二进制文件格式,内置多种格式解码器。
1.1万+7 本周258GoOther更新于 12小时前
交互式终端磁盘空间分析工具,扫描目录、找出占用空间的文件并直接在终端中删除。
1684GoMIT更新于 2个月前
开源的 macOS 命令行工具 mo,用于深度清理、卸载应用、分析磁盘、系统维护和实时状态监控。
7.4万+744 本周2654ShellGPL-3.0更新于 10小时前
一个命令行工具,可为 Linux、macOS 和 Windows 构建无外部依赖、可直接运行的独立 PHP 可执行文件。
1967+4 本周433PHPMIT维护活跃更新于 9小时前