π°π· μ΄ λ¬Έμλ μλ¬Έ (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 | λΆμ κ²°κ³Όλ₯Ό 보기 μ½κ² 리ν¬νΈ νμμΌλ‘ μΆλ ₯ |
PR λ° κΈ°μ¬ νμν©λλ€!