Kotlin Weekly

Kotlin Weekly # -370 "Kapt에서 KSP로"

베블렌 2023. 9. 4. 00:15

9월 1주차에는 KMP KMM에 대한 이야기가 많아 라이브러리 쪽 변화를 적어보겠습니다.

 

https://dev.to/cdsap/ksp-in-android-projects-5cj3

 

KSP in Android projects

The Android community had awesome news this week: Dagger and Hilt KSP processors are now available in...

dev.to


작성일(09.03)로부터 4일전 Dagger v2.48 가 나왔습니다.
https://github.com/google/dagger/releases

 

Releases · google/dagger

A fast dependency injector for Android and Java. Contribute to google/dagger development by creating an account on GitHub.

github.com

이번 릴리즈의 주요 내용으로, 이제는 Dagger와 Hilt에 KSP(Kotlin Symbol Processing)가 사용 가능해졌습니다.
아래는 그에대한 글입니다.



KSP와 kapt의 차이점

kapt는 Kotlin코드를 Java stubs로 컴파일하는 과정에서 시간을 소비하고, 이러한 과정은 Kotlin 컴파일 과정의 약 1/3정도의 시간을 차지합니다. 반면 KSP는 이런 중간 단계가 필요 없기 때문에 빌드 과정이 더 빠르다고 설명되어있습니다.

 

비교 실험(직접 들어가서 표를 보는게 더 좋습니다.)

 

실험은 Clean Build일때와 Incremental Change 2가지의 빌드 시나리오를 만들어서 진행됐습니다.

 

  • 1. kapt와 KSP를 사용할 때 KSP의 경우가 빌드에 필요한 task의 수가 적었습니다.
  • 2. kapt를 사용하는 각 모듈의 빌드 시간과 KSP를 사용하는 모듈의 빌드 시간을 비교했을 때, KSP가 더 짧게 걸렸습니다.
  • 3. 특히 'app'모듈에서 프로세서의 실행 시간이 60%나 줄어들었습니다.
  • 4. Incremental Change의 경우에도 처리 시간이 감소했지만, Clean Build의 경우보다는 큰 향상은 아니였습니다.

 

 

정리

큰 프로젝트의 경우 kapt의 실행이 몇 분이나 걸릴수 있기 때문에, 꽤나 큰 차이가 느껴질 것입니다.
심지어 Dagger/Hilt 팀은 아직 KSP 프로세서의 성능 최적화에 줌점을 둔 단계가 아님에도 큰 성능 향상을 이루어냈다.
현재 진행중인 프로젝트는 2.44버전으로 하고있는데 완성한 후 버전 업그레이드를 고려해보는것도 좋을것 같다.




 

 

http://kotlinweekly.net/

 

** Kotlin Weekly **

 

kotlinweekly.net