Repolode
Zxilly

Zxilly/go-size-analyzer

CLI-инструмент для анализа размера скомпилированных Go-бинарников по пакетам, секциям и символам с выводом в текстовом, JSON-, HTML- и SVG-форматах, а также в веб-интерфейсе и терминальном UI.

Звёзды
2,195
Форки
45
Открытые issues
9
Последний коммит
3 дня назад

Что это?

go-size-analyzer помогает понять, из-за чего скомпилированный Go-бинарник получается большим. Инструмент разбирает ELF-, Mach-O-, PE- и экспериментальные WebAssembly-бинарники, распределяя их размер по пакетам (в том числе стандартной библиотеке и vendored-зависимостям) и секциям бинарника, таким как .rodata, .gopclntab и отладочные данные DWARF.

Результаты можно вывести в виде текстовой таблицы, экспортировать в JSON, HTML или SVG treemap либо изучить интерактивно через локальный веб-интерфейс или терминальный UI. Режим diff сравнивает два бинарника или два сохранённых результата в формате JSON и показывает прирост размера по пакетам и секциям. Это удобно для отслеживания изменений размера между версиями Go или сборками.

Инструмент также можно запускать в браузере через сборку WebAssembly, однако там он работает заметно медленнее и подходит только для небольших бинарников. Анализ stripped-бинарников поддерживается, но результаты могут быть менее точными.

Ключевые возможности

  • 01Анализирует ELF-, Mach-O-, PE- и экспериментальные WebAssembly-бинарники.
  • 02Разбивает размер по пакетам, стандартной библиотеке, vendored-зависимостям и секциям.
  • 03Формирует отчёты в текстовом формате, JSON, HTML и в виде SVG treemap.
  • 04Предоставляет интерактивный веб-интерфейс и терминальный UI.
  • 05Сравнивает два бинарника или сохранённых результата в формате JSON в режиме diff.

Сценарии использования

  • Поиск зависимостей, из-за которых увеличивается размер Go-бинарника сервиса или CLI-приложения.
  • Отслеживание изменений размера бинарника между версиями Go или коммитами.
  • Обмен интерактивной treemap-схемой размера сборки с коллегами по сети.
  • Проверка того, насколько отладочные секции или символы увеличивают размер релизного бинарника.

Быстрый старт

  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?
CLI-инструмент для анализа размера скомпилированных Go-бинарников по пакетам, секциям и символам с выводом в текстовом, JSON-, HTML- и SVG-форматах, а также в веб-интерфейсе и терминальном UI. go-size-analyzer помогает понять, из-за чего скомпилированный Go-бинарник получается большим. Инструмент разбирает ELF-, Mach-O-, PE- и экспериментальные WebAssembly-бинарники, распределяя их размер по пакетам (в том числе стандартной библиотеке и vendored-зависимостям) и секциям бинарника, таким как .rodata, .gopclntab и отладочные данные DWARF.
go-size-analyzer можно использовать бесплатно? Какая у него лицензия?
go-size-analyzer распространяется с открытым исходным кодом под лицензией AGPL-3.0. Перед использованием в коммерческих продуктах проверьте условия лицензии.
go-size-analyzer всё ещё поддерживается?
Активно поддерживается. Последний коммит в go-size-analyzer — 4 нояб. 2026 г..
Для чего можно использовать go-size-analyzer?
Поиск зависимостей, из-за которых увеличивается размер Go-бинарника сервиса или CLI-приложения. Отслеживание изменений размера бинарника между версиями Go или коммитами. Обмен интерактивной treemap-схемой размера сборки с коллегами по сети. Проверка того, насколько отладочные секции или символы увеличивают размер релизного бинарника.
Как установить 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

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Плагин для webpack и CLI, который показывает содержимое бандла в виде интерактивной масштабируемой древовидной карты и помогает найти самые объёмные модули.

12,7 тыс.517JavaScriptMITАктивно поддерживаетсяОбновлён позавчера

Инструмент командной строки и язык запросов в духе jq для анализа бинарных форматов; включает декодеры для десятков форматов.

10,6 тыс.+7 за неделю258GoOtherОбновлён 14 часов назад

CLI с открытым исходным кодом для macOS: глубокая очистка, удаление приложений, анализ диска, обслуживание и мониторинг системы; отдельно доступно нативное приложение для Mac.

74,2 тыс.+744 за неделю2,7 тыс.ShellGPL-3.0Обновлён 13 часов назад

CLI-инструмент для сборки автономных PHP-бинарников без зависимостей, с выбранными расширениями, для Linux, macOS и Windows.

DevOps и облака#php#static-binary#cli
2 тыс.+4 за неделю433PHPMITАктивно поддерживаетсяОбновлён 11 часов назад