写点什么

Kotlin @inline 内联函数

发布于: 2021 年 04 月 13 日

测试用例

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<String>) { dododo() }}
复制代码

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


输出结果

function inlineStr is running!inlinefunction noInline is running!noInline
复制代码

跟预期的想法差不多.


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

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


总结一下

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

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

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

用户头像

还未添加个人签名 2018.08.28 加入

还未添加个人简介

评论

发布
暂无评论
Kotlin @inline内联函数