重构为 Kotlin
Posted
技术标签:
【中文标题】重构为 Kotlin【英文标题】:Refactoring to Kotlin 【发布时间】:2018-12-06 04:26:58 【问题描述】:我正在做一个小项目,使用 SpringBoot 从 Kafka 检索数据并将其传递给第三方供应商。我的项目不依赖于我们的其他微服务。
我想知道如果 是否会有任何性能改进,或者它是否纯粹是为了可读性?
【问题讨论】:
Kotlin 的主要优势是提高了表现力和“上市时间”;不一定是运行时性能。从这个角度来看,你的问题并不适合这个社区。span> 我不认为 Kotlin 可以真正削减时间性能方面的任何费用,因为它的资源是固定的。因此,尽管 *** 可能不适合这类问题,但可读性是您问题的答案。 无论如何它都会编译成java字节码,所以它不应该有任何性能改进。 好吧,如果你有递归方法并且你使用tailrec
关键字例如
【参考方案1】:
Kotlin 的编译似乎更慢:https://medium.com/keepsafe-engineering/kotlin-vs-java-compilation-speed-e6c174b39b5d
除此之外它在两个地方都是字节码。所以唯一的区别是 Kotlin 中是否有更快的函数实现。 (可能不是)。
但是,如果您可以在 Kotlin 中编写更易读的代码(主观),那么您就有更高的机会找到需要优化的地方。
TLDR:出于性能原因,请勿仅在语言中移植语言。
【讨论】:
但是那个评价是2年前的。 Gradle 和 Kotlin 都进行了许多改进,所以如果还有很大的不同,我会感到惊讶。我当然不会打折 Kotlin,即使它有点慢,因为编译器做的更多,而且我发现该语言通常有助于推动开发人员朝着正确的方向前进。真的很喜欢静态分析直接作为使用 Detekt 构建的一部分,而不是像 Sonarqube 这样的事后分析。【参考方案2】:Java 比 Kotlin 更接近 JVM 的工作方式(方法不能看起来像字段访问,与类相比,您可以更好地了解原语的使用位置,等等)。尝试编写等效代码(即没有算法改进)时的任何性能差异都可能是相反的。但它们也可能是微不足道的,特别是当被视为完整应用程序的一部分时。
【讨论】:
嗯,如果我认为另一个抽象层有用,那么使用 Kotlin? 我不会这么说的。使用它来提高可读性和生产力。在性能方面,您可以在 Kotlin 中完成几乎所有在 Java 中所做的事情,您只需要了解它是如何工作的。以上是关于重构为 Kotlin的主要内容,如果未能解决你的问题,请参考以下文章
KotlinKotlin 语言简介 ( Kotlin 语言发展 | Kotlin 语言与 Java 虚拟机 | Java 与 Kotlin 联系 | Kotlin 跨平台特性 )