
지금까지 개발을 하면서 기능 구현에만 집중하다 보니 성능 최적화에 신경 쓸 여유가 없었다. 그러다 보니 브라우저 개발자 도구의 Performance 탭에 대해 잘 알지 못했고, 실제로 활용해 본 적도 없었다. 하지만 최근 웹 성능 최적화에 관심을 가지면서 처음으로 Performance 탭을 직접 사용해 보았다.
아직 Network 탭만큼 익숙하게 다루지는 못하지만, 공부할 겸 Performance탭을 정리해 보려고 한다.
이번엔 Performance 탭에 대해 살펴보자!
개발자도구의 퍼포먼스 탭은 웹 애플리케이션의 성능을 분석하고 최적화할 수 있는 도구로, 웹 페이지의 로딩 및 사용자 상호작용 과정에서 발생하는 모든 작업(스크립트 실행, 렌더링, 이벤트 처리 등)을 시각적으로 확인할 수 있다.
이 탭을 사용하면 성능 병목 구간을 찾아내고, 페이지 로드 속도 및 렌더링 성능을 개선할 수 있다. 특히, 애니메이션, 스크롤 성능, 자바스크립트 실행 최적화 등 다양한 성능 문제를 디버깅하는 데 유용하다.

1. 녹화 버튼 (●)
2. Record and Reload (🔄)
3. Clear 버튼 (⊘)
4. Download 버튼 (⬇)
5. Screenshots
6. Memory
성능 기록 방법에는 두 가지가 있다.
사용예시
사용방법
- Performance 탭을 열고 녹화 버튼(●)을 클릭한다.
- 성능을 분석하려는 작업을 수행한다.(예: 버튼 클릭, 페이지 전환, 드래그 및 드롭 등)
- 작업이 완료되면 녹화 버튼(■)을 클릭하여 기록을 중지한다.
- 수집된 데이터를 분석한다.
사용예시
사용방법
- Performance 탭을 열고 Record and Reload 버튼(🔄)을 클릭한다.
- 페이지가 새로고침되며 성능 데이터가 자동으로 수집된다.
- 새로고침이 완료되면 브라우저가 녹화를 중지하고 데이터를 표시한다.
- 초기 로드와 관련된 데이터를 분석한다.

위에 사진은 Record and Reload 버튼을 사용하여 페이지 초기 로드 성능을 분석한 성능 보고서이다.
굉장히 복잡해보이는데 아래에서 하나씩 살펴보자.

타임라인은 페이지 로드와 상호작용 동안의 주요 성능 데이터를 요약해준다.
CPU 타임라인: CPU 사용량을 그래프로 보여준다. CPU가 과도하게 사용되는 구간을 식별할 수 있다. JavaScript(노란색) 및 레이아웃 작업(보라색)과 같은 다양한 유형의 작업으로 인해 CPU가 얼마나 달하는지 보여준다.
NET (Network): 네트워크 요청과 응답 시간을 보여준다.

네트워크 요청과 응답의 타이밍 정보를 표시하며, 각 리소스(HTML, CSS, JS, 이미지, API 요청 등)가 로드된 시간을 확인할 수 있다.
브라우저가 각 프레임(화면 업데이트)을 렌더링하는 과정을 표시한다. Frames는 초당 렌더링되는 프레임(Frame Per Second, FPS)을 시각화하여 표시하며, 프레임별 작업 시간을 보여준다.
페이지 로딩 중 발생한 주요 이벤트의 타이밍 정보를 표시한다.
DOMContentLoaded (DCL): DOM이 완전히 파싱된 시점
First Paint (FP): 화면에 첫 픽셀이 렌더링된 시점
First Contentful Paint (FCP): 텍스트나 이미지 등 페이지 콘텐츠가 처음 렌더링된 시점
Largest Contentful Paint (LCP): 가장 큰 콘텐츠가 렌더링된 시점
Time to Interactive (TTI): 페이지가 사용 가능한 상태가 되는 시간
메인 스레드(Main Thread)에서 실행된 작업들을 타임라인 형식으로 보여준다.
작업 범주
HTML 파싱 (Parse HTML): HTML 파일을 파싱하여 DOM을 생성하는 작업.
Script 실행 (Evaluate Script): JavaScript 코드 실행 작업.
Style 계산 (Style): CSS 계산 작업.
레이아웃 계산 (Layout): DOM 요소들의 위치와 크기 계산.
페인팅 및 합성 (Painting, Compositing): 요소를 화면에 렌더링

원형 차트 색상 의미
연한 파란색 (Loading): HTML, CSS, JavaScript, 이미지 등 리소스를 네트워크를 통해 다운로드하는 데 사용된 시간
노란색 (Scripting): JavaScript 파일을 실행하고, 이벤트 핸들러를 처리하며, 동적으로 DOM을 조작하는 작업에 소요된 시간
보라색 (Rendering): CSS 스타일을 계산하고 DOM을 레이아웃 작업으로 변환(Layout), 화면에 표시하기 위해 준비하는 과정
초록색 (Painting): 픽셀 데이터를 생성하고 이를 화면에 그리는 작업
진한 회색 (System): 브라우저의 시스템 내부 처리 시간으로, 개발자가 직접 최적화하기 어려운 영역
연한 회색 (Idle): CPU가 작업을 하지 않고 대기한 시간, Idle 시간이 높다면 리소스 사용이 효율적이라는 신호일 수 있음
흰색(Total): 모든 작업의 총합 시간을 표시, 위 이미지의 경우 총 작업 시간은 약 3123ms로, 페이지 로딩 완료까지 걸린 시간을 나타냄
Summary 활용 방법
병목 지점(가장 많은 시간을 차지하는 작업)을 확인하여 최적화가 필요한 부분을 우선적으로 파악할 수 있다.



Self Time: 함수 자체가 직접 소비한 시간으로 하위 함수 호출에서 소요된 시간은 포함되지 않는다. 힘수 자체의 성능 문제를 확인하는 데 유용하다.
Total Time: 특정 작업에서 소비된 총 시간으로 특정 작업 자체의 Self Time + 모든 하위 작업들의 실행 시간을 포함한다. 함수 호출이 상위 프로세스에 얼마나 영향을 미치는지 확인하는 데 유용하다.
Activity: 작업의 유형 또는 실행된 특정 활동을 나타낸다.