测试用例
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 文件过大等原因,开销内存会增大
评论