Skip to content

πŸ“ŠChrome의 Performance Trace 파일(.trace.json) λΆ„μ„μš© κ²½λŸ‰ CLI 도ꡬ

License

Notifications You must be signed in to change notification settings

yeinn/trace-analyzer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

10 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“Š trace-analyzer

πŸ‡°πŸ‡· 이 λ¬Έμ„œλŠ” 영문 (English) μœΌλ‘œλ„ μ œκ³΅λ©λ‹ˆλ‹€.

Chrome의 Performance Trace 파일(.trace.json )을 λΆ„μ„ν•˜μ—¬ μ›Ή νŽ˜μ΄μ§€μ˜ μ„±λŠ₯ 병λͺ© μš”μ†Œλ₯Ό νƒμ§€ν•˜κ³ , 핡심 문제λ₯Ό μš”μ•½ν•œ 리포트λ₯Ό μƒμ„±ν•˜λŠ” κ²½λŸ‰ CLI λ„κ΅¬μž…λ‹ˆλ‹€.


✨ μ£Όμš” κΈ°λŠ₯

κΈ°λŠ₯ μ„€λͺ…
🐒 느린 API 뢄석 ResourceSendRequest β†’ ResourceReceiveResponse κ΅¬κ°„μ˜ μ†Œμš” μ‹œκ°„ 계산
🚧 λ Œλ”λ§ 차단 λ¦¬μ†ŒμŠ€ 뢄석 λ‘œλ”© μ‹œκ°„ κΈ΄ JS/CSS λ¦¬μ†ŒμŠ€ 탐지
🧠 Long Task 뢄석 메인 μŠ€λ ˆλ“œμ—μ„œ 50ms 이상 μ‹€ν–‰λœ Task, EvaluateScript λ“± μΆ”μΆœ
πŸ“‘ λΆ„μ„œ λ³΄κ³ μ„œ 생성 Markdown ν˜•μ‹μ˜ 리포트 생성

πŸ”§ μ„€μΉ˜

npm install -g trace-analyzer
# λ˜λŠ” (pnpm μ‚¬μš© μ‹œ)
pnpm add -g trace-analyzer

πŸ“¦ 이 λ„κ΅¬λŠ” npmμ—μ„œ 배포 쀑이며, Node.js 기반 ν™˜κ²½μ—μ„œ λ™μž‘ν•©λ‹ˆλ‹€.


πŸš€ μ‚¬μš©λ²•

κΈ°λ³Έ μ‚¬μš©

npx trace-analyzer <trace.json> [μ˜΅μ…˜]
# λ˜λŠ” (pnpm μ‚¬μš© μ‹œ)
pnpm dlx trace-analyzer <trace.json> [μ˜΅μ…˜]

μ˜΅μ…˜ λͺ©λ‘

μ˜΅μ…˜ μ„€λͺ… κΈ°λ³Έκ°’
--top <N> μƒμœ„ N개만 좜λ ₯ 10
--slowapi 느린 API μš”μ²­λ§Œ 뢄석 전체 포함
--blocking λ Œλ”λ§ 차단 λ¦¬μ†ŒμŠ€λ§Œ 뢄석 전체 포함
--longtask Long Task만 뢄석 전체 포함
--longtask <N> Long Task κΈ°μ€€ μ‹œκ°„ (ms) μ„€μ • 50
--json <N> κ²°κ³Ό json 파일 생성 -
--report <format> κ²°κ³Ό 리포트 좜λ ₯ (ν˜„μž¬: md 지원) -

μ‚¬μš© μ˜ˆμ‹œ

trace-analyzer ./sample.trace.json --top 5
trace-analyzer ./sample.trace.json --longtask 80
trace-analyzer ./sample.trace.json --blocking
trace-analyzer ./sample.trace.json --json ouput.json
trace-analyzer ./sample.trace.json --report md

πŸ§ͺ μž…λ ₯ 파일 μˆ˜μ§‘ 방법

크둬 개발자 도ꡬ(DevTools)의 Performance νƒ­μ—μ„œ μ„±λŠ₯ μΈ‘μ • ν›„, 우츑 μƒλ‹¨μ˜ Save profile...을 μ„ νƒν•˜μ—¬ .trace.json ν˜•μ‹μœΌλ‘œ μ €μž₯ν•©λ‹ˆλ‹€. 이 νŒŒμΌμ„ μž…λ ₯으둜 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

{
  "traceEvents": [
    { "name": "ResourceSendRequest", "ts": 1000, ... },
    { "name": "ResourceFinish", "ts": 9000, ... },
    { "name": "FunctionCall", "ts": 9000, "dur": 200000, ... }
  ]
}

πŸ“ 리포트 ꡬ성 μ˜ˆμ‹œ

μƒ˜ν”Œ 뢄석 리포트 보기


πŸ§ͺ ν…ŒμŠ€νŠΈ

npm test

πŸ›  μ˜ˆμ • κΈ°λŠ₯

  • πŸ§ͺ λ‹€μ–‘ν•œ CLI μ˜΅μ…˜ 지원 (--filter, --json, --out λ“±)
  • πŸ€– AI μš”μ•½ κΈ°λŠ₯

πŸ“ 디렉토리 ꡬ쑰

.
β”œβ”€β”€ analyzers/
β”‚   β”œβ”€β”€ extractSlowApis.ts           # 느린 API 뢄석기
β”‚   β”œβ”€β”€ extractBlockingAssets.ts     # λ Œλ”λ§ 차단 λ¦¬μ†ŒμŠ€ 뢄석기
β”‚   └── extractLongTasks.ts          # Long Task 뢄석기
β”œβ”€β”€ cli/
β”‚   └── main.ts                      # CLI μ‹€ν–‰ 흐름 μ œμ–΄
β”œβ”€β”€ utils/
β”‚   └── generateMarkdownReport.ts    # MardDown 리포터 생성기
β”‚   └── loadTraceFile.ts             # 곡톡 trace λ‘œλ”
β”‚   └── parseCliArgs.ts              # CLI λͺ…λ Ήμ–΄ μ˜΅μ…˜ νŒŒμ„œ
β”œβ”€β”€ tests/
β”‚   β”œβ”€β”€ extractSlowApis.test.ts
β”‚   β”œβ”€β”€ extractBlockingAssets.test.ts
β”‚   └── extractLongTasks.test.ts     # ν…ŒμŠ€νŠΈ μ½”λ“œ
β”œβ”€β”€ sample.trace.json                # μƒ˜ν”Œ trace.json
└── index.ts                         # CLI μ§„μž…μ 

πŸ“š 기술 μŠ€νƒ

ꡬ뢄 μ‚¬μš© 기술 / 라이브러리 μ„€λͺ…
μ–Έμ–΄ TypeScript 정적 νƒ€μž… μ§€μ›μœΌλ‘œ μ•ˆμ •μ μΈ CLI 도ꡬ κ΅¬ν˜„
μ‹€ν–‰ ν™˜κ²½ Node.js CLI μ‹€ν–‰ 및 파일 μ‹œμŠ€ν…œ, 경둜 처리 λ“± 기반 λŸ°νƒ€μž„ ν™˜κ²½
CLI 도ꡬ commander CLI λͺ…λ Ήμ–΄ 및 μ˜΅μ…˜ νŒŒμ‹± 처리
파일 처리 fs, path (Node λ‚΄μž₯ λͺ¨λ“ˆ) trace 파일 λ‘œλ”© 및 좜λ ₯ 파일 μ €μž₯
데이터 처리 custom parser (extract*.ts λ“±) traceEventsλ₯Ό κ°€κ³΅ν•˜μ—¬ μ„±λŠ₯ 뢄석 ν•­λͺ© μΆ”μΆœ (API, λ¦¬μ†ŒμŠ€, Long Task λ“±)
ν…ŒμŠ€νŠΈ Vitest μœ λ‹› ν…ŒμŠ€νŠΈλ₯Ό 톡해 각 뢄석 둜직의 정확도 검증
포맷 좜λ ₯ Markdown/HTML string template 뢄석 κ²°κ³Όλ₯Ό 보기 μ‰½κ²Œ 리포트 ν˜•μ‹μœΌλ‘œ 좜λ ₯

πŸ‘©β€πŸ’» μž‘μ„±μž

gomguma

PR 및 κΈ°μ—¬ ν™˜μ˜ν•©λ‹ˆλ‹€!

About

πŸ“ŠChrome의 Performance Trace 파일(.trace.json) λΆ„μ„μš© κ²½λŸ‰ CLI 도ꡬ

Resources

License

Stars

Watchers

Forks

Packages

No packages published