노트

핫 패스

Hot Path

CS#performance · 연결된 개념 8개

쉽게 말하면

핫 패스는 출근길에 매일 수천 명이 지나는 개찰구 같은 코드예요. 여기서 1초를 줄이면 전체가 크게 빨라지지만, 1년에 한 번 쓰는 비상구를 다듬어 봐야 티가 안 나요.

비유가 깨지는 곳 개찰구는 눈에 보이지만 코드의 핫 패스는 짐작이 자주 틀려요. 어디가 핫 패스인지는 프로파일러로 확인하고, 콜드 패스는 성능보다 읽기 쉬움을 우선해요.

프로그램에서 가장 자주 실행되는 코드 경로. 수백만 번 도는 반복문의 몸통, 매 프레임 불리는 렌더링 함수, 모든 요청이 지나가는 미들웨어가 그렇다. 반대로 거의 실행되지 않는 경로를 콜드 패스(Cold Path)라 한다.

핫 패스에서 조심할 것 (JavaScript 기준)

  • 반복마다 객체·배열·클로저(Closure)를 새로 만들지 않는다. 가비지 컬렉션(Garbage Collection) 부담이 늘어난다
  • 같은 함수에 들어오는 객체의 모양(속성 구성과 순서)을 일정하게 유지한다. 엔진의 인라인 캐시(Inline Cache) 최적화가 잘 먹는다
  • 반복 안에서 DOM(Document Object Model)을 읽고 쓰기를 번갈아 하지 않는다(레이아웃 스래싱)
  • 매 프레임 일어나는 일은 requestAnimationFrame에 맞추고, 레이아웃 대신 합성만 일으키는 속성을 쓴다(합성 단계와 transform·opacity)
  • 반복 안의 find·includes 같은 숨은 O(n)을 찾는다(빅오 표기법)

반대로 콜드 패스는 성능보다 읽기 쉬움을 우선한다. 오류 처리나 초기화 코드를 영리하게 최적화할 이유는 거의 없다.

연결된 개념

이 노트를 가리키는 문서

뜻이 가까운 노트

  • 해시 테이블

    키를 해시 함수(Hash Function)로 배열 인덱스로 바꿔 값을 저장하는 자료구조. 조회·추가·삭제가 평균 O(1)이다. JavaScript의 객체와 Map·Set, 파이썬의 dict·set(python-collections), 자바의 HashMap이 모두 해시 테이블이다.

  • Lighthouse 성능 점수 읽기

    Lighthouse 성능 점수는 다섯 지표의 가중 평균이다. 한 지표를 개선했는데 점수가 떨어지는 일이 생기는 이유와, 점수를 분포로 봐야 하는 이유.

  • 하네스 엔지니어링

    모델을 둘러싼 지시·도구·검증·제약을 설계하는 일. 모델 약점을 메우는 우회책은 다음 모델에서 낡으니 얇게 두고, 결정론적 검증은 두껍게 둔다.

  • Core Web Vitals

    실제 사용자가 느끼는 페이지 품질을 재기 위해 구글이 정한 지표 모음. 그중 로딩·반응성·시각적 안정성을 대표하는 세 가지를 Core Web Vitals라고 부른다.

  • 구성요소 줄이기

    셀 수 있는 모든 구성요소(파일, 폴더 깊이, 클래스, 함수, 분기, 변수, 테이블, 필드, 테스트 케이스…)는 비용이라는 관점. 심플 디자인의 네 번째 규칙을 실무 기준으로 풀어낸 것이다.

보기 옵션