Go Size Analyzer로 Go 바이너리 크기 분석하기
요약
go-size-analyzer는 Go로 컴파일된 바이너리의 크기를 분석하는 도구입니다. ELF, Mach-O, PE 등 다양한 플랫폼의 바이너리 형식을 지원하며, 패키지별/섹션별 상세한 크기 분해 분석이 가능합니다. 웹 인터페이스와 터미널 UI를 제공하여 사용자가 직관적으로 바이너리를 탐색하고 비교할 수 있습니다.
핵심 포인트
- Go 바이너리의 크기를 분석하는 전문 도구입니다.
- ELF, Mach-O, PE 등 다양한 플랫폼을 지원합니다.
- 패키지 및 섹션별 상세한 크기 분해 분석이 가능합니다.
- 웹/터미널 UI를 통해 직관적인 탐색과 비교가 용이합니다.
go-size-analyzer
English | 简体中文
Go 컴파일된 바이너리의 크기를 분석하는 간단한 도구입니다.
-
ELF,Mach-O,PE및WebAssembly (실험적)바이너리 형식을 위한 크로스 플랫폼 지원 - 패키지별, 섹션별 상세 크기 분해 분석
- 여러 출력 형식 지원:
text,json,html,svg - 웹 인터페이스 및 터미널 UI를 통한 대화형 탐색
- diff 모드를 사용한 바이너리 비교 (
json및text출력 지원)
설치
최신 바이너리 다운로드
Homebrew를 통한 MacOS / Linux 사용
Homebrew를 사용하여
brew install go-size-analyzer
Windows
scoop을 사용하여
scoop install go-size-analyzer
Go 설치
go install github.com/Zxilly/go-size-analyzer/cmd/gsa@latest
[!NOTE]
소스에서 빌드하려면encoding/json/v2를 사용하므로 Go 1.27 이상이 필요합니다.
사용법
예시
웹 모드
gsa --web golang-compiled-binary
사용자의 기기에서 접근 가능한 http://127.0.0.1:8080에 웹 서버를 시작합니다.
원격 접속을 허용하려면 --listen 0.0.0.0:8080을 사용하십시오.
또는 브라우저에서 WebAssembly 버전을 사용할 수 있습니다: GSA Treemap
⚠️ [참고]
브라우저의 제한으로 인해 WebAssembly 버전은 네이티브 버전보다 훨씬 느립니다.
일반적으로 동일한 바이너리를 분석하는 데 10배의 시간이 소요됩니다.
작은 애플리케이션(크기 30MB 미만) 분석에만 권장합니다.
웹 페이지는 다음과 같이 보일 것입니다:
패키지를 클릭하여 세부 정보를 확인할 수 있습니다.
터미널 UI (Terminal UI)
gsa --tui golang-compiled-binary
텍스트 모드 (Text mode)
$ gsa docker-compose-linux-x86_64
┌─────────────────────────────────────────────────────────────────────────────────┐
│ docker-compose-linux-x86_64 │
...
Diff 모드 (Diff Mode)
$ gsa bin-linux-1.21-amd64 bin-linux-1.22-amd64
┌────────────────────────────────────────────────────────────────┐
│ Diff between bin-linux-1.21-amd64 and bin-linux-1.22-amd64 │
...
SVG 모드 (Svg Mode)
gsa cockroach-darwin-amd64 -f svg -o data.svg --hide-sections
전체 옵션 (Full options)
A tool for determining the extent to which dependencies contribute to the
bloated size of compiled Go binaries.
...
⚠️ [주의]
이 도구는 스트립된(stripped) 바이너리도 처리할 수 있지만, 부정확한 결과를 초래할 수 있습니다.
TODO
- 바이너리를 디스어셈블(disassembling)하는 패턴 추가
- DWARF 섹션에서 정보 추출
- 패키지 자체의 심볼 크기 계산
- 플레임 그래프, 파이 차트 등 다른 차트 추가
- cgo에서의 C++/Rust 심볼 디망글링(symbol demangling) 지원
- 세부 정보 탐색을 위한 TUI 모드 추가
- wasm으로 컴파일하고 브라우저에서 바이너리를 분석하는 UI 생성
기여 (Contribution)
어떤 기여든 환영합니다. 이슈를 열거나 풀 리퀘스트(pull request)를 보내주세요.
개발에 대한 자세한 내용은 Development Guide를 참고하세요.
라이선스 (LICENSE)
AGPL-3.0으로 게시되었습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 HN Claude Code Search의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기