问题 Kotlin是否提供任何性能提升? [关闭]


Kotlin是否提供任何性能提升? 有没有基准测试? Kotlin比Java更快吗? 我在Kotlin网站上找到了这个。 https://kotlinlang.org/docs/reference/comparison-to-java.html 谈论语言功能而不是性能。


11178
2018-05-20 01:47


起源

编译时间确实是我能想到的唯一性能差异 - Tdorno
@Tdorno我也读过(来源: redd.it/3ddj8w)因为Kotlin内联lambda调用,Java创建匿名类,在这种情况下Kotlin可以稍微快一些。但在大多数情况下,Kotlin将编译为 大致 相同的字节代码和Java一样快。 - Craig Otis
Kotlin将具有与Java相同的编译和运行时速度。这是一篇有关前者基准的好文章 medium.com/keepsafe-engineering/... - zsmb13
嗯,首先是几乎每个句子都是自己的问题。我同意答案涉及许多方面,但仍缺少某些方面 - 总是表明问题过于宽泛。 - GhostCat
与Java相比,Kotlin可能会在Android P上获得一些性能提升: androidpolice.com/2018/03/07/... , youtu.be/LBBqTd6uOd4 - android developer


答案:


Kotlin生成与Java非常相似的字节码,因此Kotlin代码的性能在大多数情况下与等效Java代码的性能相同。

Kotlin比Java更快的一种方式是 内联函数。使用内联函数,代码使用高阶函数,如 filter 要么 map 可以编译为简单的基于循环的字节码,不会创建任何对象或使用任何虚拟调用(与使用相同类型的函数的Java代码不同)。

可以找到Kotlin的一些基准 这里


14
2018-05-20 13:02



我想知道Kotlin内联函数真正有多大区别; JVM / JIT也非常擅长在运行时内联方法。如果Kotlin编译器不会进行内联,那么JVM最有可能在运行时执行此操作。 - Jesper
JVM非常擅长内联简单的方法调用,但在内联一个变形调用站点时却不太好用,例如代码 filter 功能。 - yole
sites.google.com/a/athaydes.com/renato-athaydes/posts/... - Methnani Bilel