[Kotlin] Kotlin 은 Compile time 이 느리다는데.. 사실일까?
https://medium.com/keepsafe-engineering/kotlin-vs-java-compilation-speed-e6c174b39b5d
-
위 글을 쓴 필자는 Java base 로 되어 있는 출시된 앱을 전부 Kotlin 으로 전환하여 자신만의 Compile time 을 측정해보았다.
-
테스트 환경 및 조건 #1
빌드는 총 10번 연속으로 돌려서 평균값 산출
Hardware 는 i7-6000 3.4GHz, 32G DDR4, Samsung 850 Pro SSD, Gradle 2.14.1
빌드시마다 매번 clean build or not
Gradle daemon 사용 or not
코드 변경 유무
-
Clean build O & Gradle daemon X
( 차트는 위의 링크에 가면 볼 수 있습니당 )
Java 15.5 s
Kotlin 18.5 s
Kotlin 이 17% 정도 build time 이 더 걸림
-
Clean build O & Gradle daemon O
Gradle daemon 의 역할은 이러하다.
JVM 에서는 JIT compiler 를 사용한다. 그래서 실행횟수가 많을수록 performance 가 좋아진다.
그러나 JVM process 가 kill 되면 JIT compiler 로 얻어진 성능이득이 줄어든다.
그래서 코드를 Build 에서 올릴 때마다 JVM 은 초기화된다.
Grdle daemon 은 이 JIT 로 얻어진 performance 이득을 유지시켜준다.
이 환경에서 최초 build 에서는 오랜 시간이 걸렸다.
필자는 이를 warm-up time 이라고 부른다.
약 3회 이후에는 안정적 분포를 보인다.
warm-up time을 포함해서
Java 14.1 s
Kotlin 16.5 s
Kotlin 이 13% 정도 build time 이 더 걸린다.
gradle daemon 이 build time 을 약 40% 정도 불였다.
-
Normal build (incl. Clean build) 는 처음부터 끝까지 다 재컴파일한다.
그러나 incremental build 를 사용하면 변경된 부분만 확인해서 compile 한다.
Kotlin 은 1.0.2 부터 incremental build 가 가능하다.
kotlin.incremental=true 를 gradle.properties 에 써줘야 한다.
-
Incremental build & gradle daemon O
file change 없이 build 하면..
최초 warm-up time 을 빼고 Java 와 거의 차이가 없다.
dependency 가 없는 file 에 change 주고 build 하면..
Kotlin 이 더 빠르다..
dependency 가 많은 file 에 change 를 주고 build 하면..
역시나 Kotlin 이 더 빠르다. ( warm-up time 뺴고 )
Java 7.1 s
Kotlin 6.0 s
-
결론적으로 우리는 좋은 option 들은 다 켤 것이고, 실제로는 코드를 변경하면서 build 를 한다.
그래서 Kotlin 빌드가 더 빠르다. ( 1.0.2 이상을 쓰면 )
'프로그래밍 놀이터 > Kotlin, Coroutine' 카테고리의 다른 글
[Kotlin] Kotlin 의 숨겨진 비용 #1 (2) | 2018.01.16 |
---|---|
[Kotlin] 장점, 단점, 그리고 아쉬운 점 이야기 (0) | 2018.01.15 |
[Kotlin Tutorial] The Kotlin ecosystem (0) | 2017.09.22 |
[Kotlin Tutorial] Documenting Kotlin code (0) | 2017.09.20 |
[Kotlin Tutorial] Building Kotlin projects (0) | 2017.09.18 |
댓글