스칼라 컴파일 속도, 이렇게 개선하세요!

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로의 이동을 검토한다. 결과적으로, 컴파일 시간 단축개발 생산성 향상을 기대할 수 있다.

스칼라 컴파일 속도 빠르게 하기