入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

kotlin的forEach()扩展函数的性能检验

创建时间:2018-01-10 投稿人: 浏览次数:557

问题

对数组与集合,有forEach()扩展,可以很方便的写遍历代码,但是需要创建一个lambda对象,如果在工程上全面使用forEach(),会不会创建很多的lambda对象,从而导致性能下降。

分析

fun main(args: Array<String>) {
    args.forEach {
        println(it)
    }
}

编译成的java代码

public final void main(@NotNull String[] arg)
{
  Intrinsics.checkParameterIsNotNull(arg, "arg"); Object[] $receiver$iv = (Object[])arg;
  int $i$f$forEach;
  for (int i = 0; i < $receiver$iv.length; ) { Object element$iv = $receiver$iv[i]; String it = (String)element$iv;
    int $i$a$1$forEach;
    System.out.println(it);
    i++;
  }
}

解答

forEach()在运行时不会产生lambda对象,不会比for()表达式性能差,因为他是inline修饰的,kotlin编译器会lambda表达式中的代码内联到调用处

声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
  • 上一篇:没有了
  • 下一篇:没有了
未上传头像