다음과 같은 의식의 흐름을 따라 선정.
[업무량을 또는 업무 시간을 줄이고 싶다 -> 프로젝트의 빌드 속도를 빠르게 해볼까? -> KSP발견]
KSP와 어노테이션 프로세싱을 통해 업무를 자동화 할 수 있는 스킬을 기르고 싶은 '욕구'가 생겼다.
우리는 프로젝트에서 이미 Dagger, Glide, DataBinding , Parcelize 등을 적용하고 있다.
이 라이브러리들의 Java 어노테이션 프로세서를 코틀린에서 올바르게 동작시키기 위해 KAPT를 사용한다. 하지만 KAPT는 Java Stub을 생성하기 오버헤드가 발생하고, KSP로 전환하면 컴파일러에 소요되는 시간이 25%가 단축된다고 한다.
현재 실험적으로 Room 과 Moshi가 KSP를 지원하고 있다.
공식 문서 내용에 따르면 Tachiyomi 프로젝트에서 총 코틀린 컴파일 시간은 21.55초가 소요될 때 KAPT가 코드를 생성하는데 8.67초가 걸렸고 KSP는 1.15초가 걸렸다고 한다.
오픈소스 라이브러리 이외에도 몇가지 목적을 가지고 실무에서 custom annotation proceesor를 만들어서 사용하고 있다.
주제 선정 배경
다음과 같은 의식의 흐름을 따라 선정. [업무량을 또는 업무 시간을 줄이고 싶다 -> 프로젝트의 빌드 속도를 빠르게 해볼까? -> KSP발견]
KSP와 어노테이션 프로세싱을 통해 업무를 자동화 할 수 있는 스킬을 기르고 싶은 '욕구'가 생겼다.
우리는 프로젝트에서 이미 Dagger, Glide, DataBinding , Parcelize 등을 적용하고 있다. 이 라이브러리들의 Java 어노테이션 프로세서를 코틀린에서 올바르게 동작시키기 위해 KAPT를 사용한다. 하지만 KAPT는 Java Stub을 생성하기 오버헤드가 발생하고, KSP로 전환하면 컴파일러에 소요되는 시간이 25%가 단축된다고 한다.
현재 실험적으로 Room 과 Moshi가 KSP를 지원하고 있다.
공식 문서 내용에 따르면 Tachiyomi 프로젝트에서 총 코틀린 컴파일 시간은 21.55초가 소요될 때 KAPT가 코드를 생성하는데 8.67초가 걸렸고 KSP는 1.15초가 걸렸다고 한다.
오픈소스 라이브러리 이외에도 몇가지 목적을 가지고 실무에서 custom annotation proceesor를 만들어서 사용하고 있다.
참고 자료
https://developers-kr.googleblog.com/2021/02/announcing-kotlin-symbol-processing-ksp.html https://github.com/google/ksp