【发布时间】:2020-03-06 15:22:39
【问题描述】:
我最近在学习 Kotlin 内联函数。我认为下面的函数 twipsToPixels 似乎是一个很好的用例,但 IntelliJ 给了我一个警告,说存在“预期的性能影响”。我会认为相反的情况会在这里发生?这让我觉得我错过了更深层次的东西。有人有什么想法吗?
private inline fun twipsToPixels(value: Int) = (value * SCREEN_RESOLUTION / TWIPS_CONVERSION).roundToInt()
private fun screenBoxInPixels(screenBox: ScreenBox): ScreenBox {
val left = twipsToPixels(screenBox.position.left)
val top = twipsToPixels(screenBox.position.top)
val width = twipsToPixels(screenBox.size.width)
val height = twipsToPixels(screenBox.size.height)
return ScreenBox(Position(left, top), Size(width, height))
}
【问题讨论】:
-
主要是
reified参数是内联的原因。如果有效的话,一个好的 JVM 无论如何都会内联方法。 -
这能回答你的问题吗? when to use an inline function in Kotlin?
标签: function kotlin inline inlining