348 字
2 分钟
inline来帮你性能优化

在高阶函数在调用时总会创建新的Function对象,当被频繁调用,那么就会有大量的对象被创建,除此之外还可能会有基础类型的装箱拆箱问题,不可避免的就会导致性能问题,为此,Kotlin为我们提供了inline关键字。 inline的作用内联,通过inline,我们可以把函数调用替换到实际的调用处,从而避免Function对象的创建,进一步避免性能损耗,看下代码以及 image.png main方法的调用不再直接调用foo函数,而是把foo函数的函数体直接拷贝了过来进行调用, 不过也不能滥用inline,因为inline是在编译时进行代码的替换,那么就意味着你inline的函数体里的代码,会被替换到每一个调用的地方,从而导致字节码的膨胀,如果对产物对产物大小有严格的要求,需要关注下这个副作用。

关于内联类的一些注意事项

  • 在主构造函数中初始化单个属性是内联类的基本要求
  • 内联类允许我们像普通类一样定义属性和函数
  • 不允许初始化块、内部类和_backing field_
  • 内联类只能从接口中继承
  • 内联类也是有效的 final
inline来帮你性能优化
作者
强人自传
发布于
2021-09-27
许可协议
CC BY-NC-SA 4.0