스칼라 컴파일 속도, 이렇게 개선하세요!
by DD
1년 전
조회수 2
Typeclass 인스턴스 정의 위치 변경을 통해 컴파일 시간 30% 단축 효과를 얻음
Build Pipelining 적용으로 서브 프로젝트 간 병렬 컴파일을 가능하게 함
매크로 사용 시 Build Pipelining 적용에 주의, exportPipelining 설정 필요
Typeclass 인스턴스 정의 위치 최적화
Typeclass 인스턴스를 Companion Object에 정의하면 컴파일러가 인스턴스를 찾는 시간을 줄일 수 있다. 구체적으로, Implicit 검색 시간을 줄여 typer 페이즈의 속도를 향상시킨다. 따라서, 컴파일 속도 개선을 위해 Typeclass 정의 위치를 전략적으로 관리해야 한다.
Build Pipelining의 장단점
Build Pipelining은 서브 프로젝트 간 병렬 컴파일을 가능하게 하여 전체 빌드 시간을 단축시킨다. 반면, 매크로 사용 시 Pipelining 적용에 주의해야 한다. 따라서, 매크로 의존성을 고려하여 exportPipelining 설정을 적절히 조정해야 한다.
실전 적용 가이드: 컴파일 속도 개선
프로파일링 도구를 활용하여 Implicit 검색 시간을 분석하고, scala-profiling을 통해 Flamegraph를 확보한다. 구체적으로, Typeclass 사용 비중을 파악하고, Companion Object로의 이동을 검토한다. 결과적으로, 컴파일 시간 단축과 개발 생산성 향상을 기대할 수 있다.