小编Fee*_*ker的帖子

!= null VS ?.let { } kotlin 中不可变变量的性能

据我了解,?.let{}over的最大优点!= null是它保证了块内的可变值不会改变。

但是,在不可变变量的情况下是否存在性能差异?

例如,我有一个简单的方法

private fun test() {
    val x: String? = ""

    if (x != null) {
        print("test")
    }

    x?.let {
        print("test")
    }

}
Run Code Online (Sandbox Code Playgroud)

当我看到生成的 Kotlin 字节码时,它似乎有更多的代码。

对于 x != null 情况:

    LINENUMBER 8 L1
   L2
    LINENUMBER 9 L2
    LDC "test"
    ASTORE 2
   L3
    GETSTATIC java/lang/System.out : Ljava/io/PrintStream;
    ALOAD 2
    INVOKEVIRTUAL java/io/PrintStream.print (Ljava/lang/Object;)V
   L4
   L5
Run Code Online (Sandbox Code Playgroud)

对于 x?.let { } 情况是:

    LINENUMBER 12 L5
    ALOAD 1
    ASTORE 2
   L6
   L7
    ALOAD 2
    ASTORE 3
   L8
    ICONST_0 …
Run Code Online (Sandbox Code Playgroud)

null-check kotlin

7
推荐指数
1
解决办法
575
查看次数

标签 统计

kotlin ×1

null-check ×1