kotlin的forEach()扩展函数的性能检验
问题
对数组与集合,有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表达式中的代码内联到调用处
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: Kotlin-集合详解(一)
- 下一篇: Kotlin的那些事儿