더북(TheBook)

아이템 97
프로그램 시작 시간을 줄이기 위해 미리 컴파일된 바이트코드와 파일 시스템 캐시에 의존하라

프로그램 시작 시간(startup time)은 중요한 성능 지표 중 하나이다. 이는 사용자에게 직접적으로 체감되는 요소이기 때문이다. 명령줄 유틸리티의 경우 시작 시간은 사용자가 Enter 키를 누른 후 실행되기까지 걸리는 시간이다. 사용자는 같은 명령줄 도구를 짧은 시간 동안 여러 번 실행하는 경우가 많다. 따라서 누적된 시작 지연 시간이 쌓이면 매우 불편하게 느낄 수 있다. 웹 서버(web server)의 경우 시작 시간은 서버가 실행된 후 첫 번째 요청을 처리할 수 있기까지 걸리는 시간이다. 웹 서버는 여러 스레드나 자식 프로세스를 사용해 작업을 병렬 처리하는 경우가 많다. 이로 인해 새로운 컨텍스트가 생성될 때는 콜드 스타트7 지연이 발생할 수 있다. 결국 어떤 웹 요청은 다른 요청보다 처리 시간이 훨씬 더 길어질 수 있고, 사용자는 예측할 수 없는 응답 지연을 경험하게 된다.