Intellij IDEA 中 Kotlin 项目的自动完成和代码分析速度极慢

Extremely slow in autocompletion & code analysis for Kotlin projects in Intellij IDEA

我们在 IDEA 上有一个项目,其中包含几个中等大小的 Java 包和一个非常小的 Kotlin 包(5 个文件)。我注意到任何 Java 包的性能都很好,但是对于非常小的 Kotlin 包,它在自动完成、代码分析和编译方面要慢 10 倍。自动完成偶尔会很慢,以至于弹出窗口无法加载所有方法,它必须逐步加载几个 API。每次我们的开发人员键入一个词并等待自动完成时,预期的自动完成显示大约需要 2-5 秒。有时自动完成太慢而无法显示任何内容,我们不得不取消单词并重新输入并等待。同样的缓慢发生在代码分析中。这极大地影响了我团队的工作效率。根据我们的研究,这似乎是一个众所周知的长期存在的问题。这也发生在我们的另一个小项目中。我想知道我们可以做些什么来解决这个问题?谢谢。

Kotlin插件最新版本:1.1.3-release-IJ2017.2-2 Intellij 也是最新版本,2017 2.1(构建于 2017 年 7 月 31 日)

快照中可见的问题已在 Kotlin 1.1.4 中解决。在撰写本文时,它作为 EAP(早期访问预览)版本提供;最终版本即将发布(并与 IntelliJ IDEA 2017.2.2 捆绑在一起)。

我已联系 JetBrian 并向 YouTrack 提交了请求。查看 CPU 快照后,看起来升级 Kotlin 插件 1.1.4-eap(其中包含性能方面的主要修复)将解决此问题。刚试了一下,成功了!

在 Kotlin 1.3.50 中仍然发生。通过在 Settings > Editor > General > Auto Import

中禁用 Add unambiguous imports on the fly 解决了

我最近 运行 参与了一个 Kotlin gradle 多模块项目。通过大量增加 vmoptions 中的内存设置,我设法恢复了良好的代码分析和完成速度,这就是它们现在的样子

-Xms512m
-Xmx16384m
-XX:ReservedCodeCacheSize=960m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=100
-ea
-XX:CICompilerCount=2
-Dsun.io.useCanonPrefixCache=false
-Djava.net.preferIPv4Stack=true
-Djdk.http.auth.tunneling.disabledSchemes=""
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-Djdk.attach.allowAttachSelf=true
-Dkotlinx.coroutines.debug=off
-Djdk.module.illegalAccess.silent=true
-Dawt.useSystemAAFontSettings=lcd
-Dsun.java2d.renderer=sun.java2d.marlin.MarlinRenderingEngine
-Dsun.tools.attach.tmp.only=true

您可以将 Kotlin 版本更改为其他版本,然后gradle再次同步这将解决问题

您将在 build.gradle 文件(项目)

中找到它
ext.kotlin_version = "1.5.21"

 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"