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