【问题标题】:What is a good use case for Kotlin function inlining?Kotlin 函数内联的好用例是什么?
【发布时间】: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))
}

【问题讨论】:

标签: function kotlin inline inlining


【解决方案1】:

但 IntelliJ 给了我一个警告,说存在“预期的性能影响”

你看错了;它说这种影响是微不足道的,也就是说,可能太小而无法打扰。消息的第二部分是

内联最适合带有函数类型参数的函数

主要是因为它允许首先避免为这些参数创建函数对象。

【讨论】:

    猜你喜欢
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多