etc/코틀린_안드로이드
Kotlin if vs when 성능 비교 ?
sung.hyun.1204
2022. 9. 29. 20:17
1. if 문 when 문 비교
1 .Java 에서 switch 문은 컴파일러가 lookup table 을 만들어 준다 .
Lookup table 이란 , index 가 저장된 테이블로 jvm 에서 빠르게 값을 찾아서 가져온다.
if else 를 이용한 구문에서는 jump 가 들어가고 이는 평균적으로 switch 문보다 느리다.
Kotlin 에서 when 문의 byte code 를 Decompile 한것을 보면
Compile 전 Kotlin 코드
fun strNum(x: Int?): String {
return when (x) {
1 -> "one"
2 -> "one"
else -> "??/"
}
}
Decompile Java 코드
public static final String strNum(@Nullable Integer x) {
String var10000;
if (x != null) {
if (x == 1) {
var10000 = "one";
return var10000;
}
}
if (x != null) {
if (x == 2) {
var10000 = "one";
return var10000;
}
}
var10000 = "??/";
return var10000;
}
Android studio 의 decompile 이 마음에 들지 않으면 다음을 보자
>> /kotlinapp1/app/build/tmp/kotlin-classes
? 못찾겠디 두둥
결론 : Kotlin if vs when 큰 성능 차이 없음 , Java 쓰자.
https://stackoverflow.com/questions/6705955/why-switch-is-faster-than-if