프로그램에서 가장 자주 실행되는 코드 경로. 수백만 번 도는 반복문의 몸통, 매 프레임 불리는 렌더링 함수, 모든 요청이 지나가는 미들웨어가 그렇다. 반대로 거의 실행되지 않는 경로를 콜드 패스(Cold Path)라 한다.
- 프로그램은 대부분의 시간을 코드의 작은 일부에서 쓴다. 핫 패스의 작은 개선은 전체 성능을 크게 바꾸고, 콜드 패스 최적화는 거의 효과가 없다(섣부른 최적화)
- 어디가 핫 패스인지는 추측하지 말고 프로파일러로 확인한다(롭 파이크의 프로그래밍 5규칙, 크롬 개발자 도구 팁)
핫 패스에서 조심할 것 (JavaScript 기준)
- 반복마다 객체·배열·클로저(Closure)를 새로 만들지 않는다. 가비지 컬렉션(Garbage Collection) 부담이 늘어난다
- 같은 함수에 들어오는 객체의 모양(속성 구성과 순서)을 일정하게 유지한다. 엔진의 인라인 캐시(Inline Cache) 최적화가 잘 먹는다
- 반복 안에서 DOM(Document Object Model)을 읽고 쓰기를 번갈아 하지 않는다(레이아웃 스래싱)
- 매 프레임 일어나는 일은 requestAnimationFrame에 맞추고, 레이아웃 대신 합성만 일으키는 속성을 쓴다(합성 단계와 transform·opacity)
- 반복 안의
find·includes같은 숨은O(n)을 찾는다(빅오 표기법)
반대로 콜드 패스는 성능보다 읽기 쉬움을 우선한다. 오류 처리나 초기화 코드를 영리하게 최적화할 이유는 거의 없다.