Skip to content

Performance Method

SeHyun edited this page Sep 29, 2026 · 1 revision

측정 방법과 지표

지표

지표 뜻 읽는 법
첫 렌더 (pipeline) 번들을 받아 첫 화면을 그리기까지 12.6 ms 안쪽 차이는 흔들림으로 본다
파싱 (parse) 번들을 읽어 해석하는 시간. 첫 렌더의 앞부분 보통 1~4 ms
첫 표시 (lynxFcp) 첫 콘텐츠가 보이기까지 설치 방식 · 회차에 따라 30~55 ms 흔들린다
화면 전환 탭 · 화면을 바꿀 때 다시 그리는 시간(계측점이 있는 화면만) 같은 이름의 계측점은 처음 한 번만 잰다
메모리 (mainThreadRuntimeBytes) 메인 스레드 JS가 쥔 메모리 같은 코드면 바이트까지 같다 — 작은 차이도 실제
요소 · 뷰 메모리 (elementBytes · viewBytes) 화면 요소 트리 · 네이티브 뷰 이미지 디코딩에 크게 움직인다
번들 (main.lynx.bundle) pnpm build가 만든 파일 크기 상한을 넘으면 CI가 막는다

빠르다 · 느리다를 가르는 기준값은 아직 없다. 보고서는 수치를 남길 뿐 통과 · 실패를 판정하지 않는다.

측정 조건

항목 값
기기 iPhone 17 Pro 시뮬레이터
OS · SDK iOS 26.5 · Lynx 4.0.1
빌드 Release 호스트 앱(첫 기록 하나만 Debug)
도구 pnpm --filter @libitums/mobile performance:capture -- start · report · stop

실기(실제 iPhone)에서 잰 기록은 아직 없다.

시나리오 종류

  1. 첫 로드 — 앱을 열고 조작하지 않는다
  2. 새 설치 첫 로드 — 지우고 다시 설치한 뒤 온보딩 · 로그인까지
  3. 탭 · 화면 전환 — 로그인된 상태에서 여정 맵 · 탭을 오간다(보통 3회차)
  4. 학습 화면 진입
  5. 반복 측정 — 같은 commit을 여러 번 재어 흔들림 폭을 잡는다
  6. 번들만 — Release 빌드 없이 pnpm build 크기만 비교(상태 ⚪)

기록 규칙

  • 앱 동작을 바꾸는 PR마다 보고서를 하나 이상 같은 PR에 넣는다. 없으면 CI(performance:reports:gate)가 막는다.
  • 파일 하나 = 기기 · 시나리오 · 회차 하나. 날짜는 본문에만 적는다.
  • 못 잰 값은 지우지 않고 미측정과 이유를 적는다. 미측정은 기준선도, 통과도 아니다.
  • 원본 캡처(JSON · NDJSON)는 올리지 않는다.

자세한 양식은 저장소 docs/performance/reports/README.md와 docs/performance-analysis.md에 있다.

이 위키를 갱신하는 법

새 보고서가 main에 들어오면 기록 목록 맨 위 날짜에 한 줄을 더한다. 번들 · 메모리가 크게 움직였으면 추이의 「크게 늘어난 지점」에도 더하고, 수치를 읽는 법이 바뀌었으면 주요 발견에 적는다.

Clone this wiki locally