Bootstrap

Kotlin @inline内联函数

测试用例

object InlineExample {
    // inline方法
    private inline fun inlineStr(block: () -> String) {
        println("function inlineStr is running!")
        println(block())
    }
    
    private fun noInline(block: () -> String) {
        println("function noInline is running!")
        println(block())
    }

    private fun dododo() {
        //调用inline
        inlineStr {
           "inline"
        }
        noInline {
            "noInline"
        }
    }

    @JvmStatic
    fun main(args: Array) {
        dododo()
    }
}

简单的写了一个测试用例.

输出结果

function inlineStr is running!
inline
function noInline is running!
noInline

跟预期的想法差不多.

看了一下网站的文章,inline这种内联函数,主要是在编译层做了一些优化,那我们就可以看看编译后的对比

推荐参考:https://blog.csdn.net/xlh1191860939/article/details/86736379

总结一下

@inline 函数会在编译的时候将你的方法逻辑复制到对应的调用中去

优点:静态编译不需要跳转提升效率.

缺点也很显而易见,编译后会存在class文件过大等原因,开销内存会增大