Kotlin中普通函数作为参数传递给内联函数时是否被内联?
【Kotlin中普通函数作为参数传递给内联函数时是否被内联?】 普通函数作为参数传给内联函数不会内联。
如果想把一个具名函数内联,需要用 inline 修饰,如:fun a() { println("a")}inline fun b() { println("b")}fun main(args: Array\u0026lt;String\u0026gt;) { true.let { a() } true.let { b() }}
上面代码中的第一个 let 会实实在在地去调用 a,而后一个 let 会直接生成 println("b") 的代码。
■网友
为什么要内联?
不要滥用内联
我觉得Kotlin的内联只有在一个情况下需要用
就是所谓的reified泛型
字节码级别的内联并没有你想象的优点
它只会让你的字节码变得更大更慢更难优化
内联后更长的字节码不光影响解释执行的效率
也会增加JIT负担和影响JIT优化
内联是优化的一种 应该由JIT去做
动态编译(JIT)的好处就是把优化时机尽可能延后
优化的时机越延后
得到的信息就越多
越能更好的优化
过早的内联(优化)只有坏处没有任何好处
静态编译是真的没有办法
不要用C++思维来想这个问题
推荐阅读
- “他是我第一个会说普通话的老师”:一对师生折射青海山村蝶变
- 江苏高考■江苏省发布《2021年普通高校招生考试安排和录取工作实施方案》
- 长春评选“网络奋斗者”:互联网成更多普通人创业工具
- 普通车|德系商务风对阵美式运动范 迈腾 VS 迈锐宝XL
- 普通车|途观L之后,大众又一款“销量王”,配2.0T动力,10月卖出18885台
- 普通车|选商务还是要运动? 迈腾 VS 君威
- 普通车|别克也有“明星”SUV,2.0T+9AT,配全景天窗,还很厚道
- 当下电脑城/电子城/数码城的业务日益萧条,作为普通的创业者该怎样转变思路从而突围
- 不是刺儿头,是普通人守护普通权利
- 普通车|更显轻奢质感,全新速派上市,这价位还买啥丰田本田