Repolode
Zxilly

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. 1

    使用 Go 安装

    go install github.com/Zxilly/go-size-analyzer/cmd/gsa@latest
  2. 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 数据每日更新。

相关项目

类似 jq 的命令行工具与查询语言,用于查看和查询二进制文件格式,内置多种格式解码器。

开发者工具#binary#cli#jq
1.1万+7 本周258GoOther更新于 12小时前