测试用例
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!
inline
function noInline is running!
noInline
复制代码
跟预期的想法差不多.
看了一下网站的文章,inline 这种内联函数,主要是在编译层做了一些优化,那我们就可以看看编译后的对比
推荐参考:https://blog.csdn.net/xlh1191860939/article/details/86736379
总结一下
@inline 函数会在编译的时候将你的方法逻辑复制到对应的调用中去
优点:静态编译不需要跳转提升效率.
缺点也很显而易见,编译后会存在 class 文件过大等原因,开销内存会增大
评论