2017-05-20 50 views
7

Kotlin是否提供任何性能提升? 有沒有基準測試? kotlin比Java更快嗎? 我在Kotlin網站找到了這個。 https://kotlinlang.org/docs/reference/comparison-to-java.html 談論語言功能,但不是表現。Kotlin是否提供任何性能提升?

+2

編譯時間真的是我能想到的唯一性能差異 – Tdorno

+1

@Tdorno我也讀過(來源:https://redd.it/3ddj8w),因爲Kotlin內嵌lambda調用,其中Java創建匿名類,Kotlin在這種情況下可以稍微快一點。但是大多數情況下,Kotlin將盡可能地編譯相同的字節碼,並且與Java一樣快。 –

+0

對於任何語言來說,沒有什麼好的方法比JVM上的Java更快,所以要求Kotlin相當不合理。 – voddan

回答

13

Kotlin生成與Java非常相似的字節碼,因此Kotlin代碼在大多數情況下的性能與等效Java代碼的性能相同。

Kotlin可以比Java更快的一種方法是inline functions。使用內聯函數,可以將使用高階函數(例如filtermap)的代碼編譯爲不會創建任何對象或使用任何虛擬調用的簡單循環字節碼(與使用相同類型函數的Java代碼不同)。

Kotlin的一些基準可以找到here

+0

我想知道Kotlin內聯函數實際上有多少不同? JVM/JIT在運行時也非常擅長內聯方法。如果Kotlin編譯器不會執行內聯,那麼JVM很可能會在運行時執行。 – Jesper

+1

JVM非常擅長內聯簡單的方法調用,但在內聯一個超大型調用站點(例如'filter'函數的代碼)時效果不佳。 – yole

+2

https://sites.google.com/a/athaydes.com/renato-athaydes/posts/kotlinshiddencosts-benchmarks –