Ohhnews

分类导航

$ cd ..
Jetbrains Blog原文

JetBrains携手AlphaEvolve:加速IDE复杂算法的新方法

#alphaevolve#google deepmind#ide索引#性能优化#算法发现

AlphaEvolve 是 Google DeepMind 的算法发现系统,它利用 Gemini 来生成、测试和优化可能的算法改进方案。其任务并非回答问题,而是寻找解决复杂算法问题的更快速方法。我们将其应用于 IntelliJ IDEA 中一个狭窄但关键的部分:索引——即在项目打开后,使导航、搜索、补全、重构、检查及其他代码洞察功能可用的后台工作。

这使得索引速度成为一个显而易见却又难以改进的指标。它取决于语言、框架、项目结构、后台 IDE 工作以及索引底层的存储层。微小的变化可能淹没在噪声中。某些改进在微基准测试中有效,但在完整的 IDE 运行中却不可见。

我们已经投入了大量工程时间在这一领域,这些手动性能优化工作仍在继续。本文描述的实验并非要取代工程判断、性能分析、代码审查或产品验证。它是对一种额外搜索方法的测试:Google DeepMind 的 AlphaEvolve 能否帮助我们在已开发多年的代码中找到有用的优化候选方案?

结果概览

我们首先在合成基准上测试了生成的候选方案,然后将最有前景的方案在完整的 IDE 环境中进行了验证。

集成测试(秒数,越低越好):Kotlin Spring Petclinic 在修改后的 IntelliJ IDEA 2026.2 夜间构建版本上运行。基线:17.4 ± 0.5 秒。方案 1 在我们的运行表中测得 16.6 ± 0.2 秒。 15-20% 在大多数迭代次数超过 50 次的 AlphaEvolve 会话中,合成性能得分有所提升。 17.4 秒 Kotlin Spring Petclinic 的完整 IDE 基线,波动范围 ±0.5 秒。 16.6 秒 测得的最佳候选方案,报告为 ±0.2 秒。 2 / 5 显示出统计显著的集成测试改进的生成候选方案。

交互式测量仪表板

使用选项卡在端到端结果、单次运行和实验漏斗之间切换。时间和得分图表中,数值越低越好。 端到端索引 | 运行分布 | 合成和漏斗 显示报告的变异性

Google DeepMind 在其 AlphaEvolve 预览博客 中将 AlphaEvolve 描述为一个基于 Gemini 的编码代理,通过结合 LLM 生成的代码与自动化评估器来设计算法。在此实验中,评估器是我们的性能和正确性测试套件。

目标:索引栈中的 B 树

我们选择了索引实现基础中的 B 树。起点并非一个幼稚的原型,而是一个经过深度优化的基础设施,其中手动探索代价高昂。即使是看似合理的改动也需要花费时间编写、审查和验证,而错误的改动可能因错误的原因而变得更快。

工程描述故意保持简洁:原始算法本质上是一个经典的 B 树,而提议的候选方案大多是针对边缘情况进行了优化的改进型 B 树变体。这正是 AlphaEvolve 擅长解决的问题:有可修改的代码,有明确的评分,有能拒绝错误想法的测试。

循环:生成、评分、验证

AlphaEvolve 正在优化一个“Tammes 问题”的实例。

我们为 AlphaEvolve 提供了一个内部存储层性能测试套件。该套件是合成的,不使用真实客户项目。它读写合成数据,以便能够快速且重复地测试候选改动。

评分基于我们中等规模基准测试的中位数结果之和。单元测试作为正确性检查。在此设置下,大多数迭代次数超过 50 次的 AlphaEvolve 会话在合成性能得分上带来了 15-20% 的提升。

这令人鼓舞,但还不够。合成基准之所以有用,是因为它们可控。用户运行的不是可控基准,而是完整的 IDE,同时运行后台进程、语言服务和项目特定行为。因此,我们将最佳生成候选方案投入了集成测试。

在完整 IDE 步骤中,团队使用了 Kotlin Spring Petclinic 和修改后的 IntelliJ IDEA 2026.2 夜间构建版本。报告的端到端索引总时间基线为 17.4 ± 0.5 秒。在五个生成的候选方案中,有两个显示出统计显著的改进,且结果可复现至 16.8 秒以下。

声明范围

合成声明 AlphaEvolve 直接优化的对象。集成声明 在完整 IDE 运行中存活下来的部分。下一步验证 仍需产品级证明的内容。

大多数迭代次数超过 50 次的会话将合成性能得分提升了 15-20%。这是关于自主优化循环最有力的声明,因为基准测试就是优化目标。

数据变化

我们的端到端运行表包含两个测得的候选方案。方案 1 的平均结果为 16.6 秒,报告为 ±0.2 秒。与 17.4 秒的基线相比,快了约 0.8 秒,即在此集成场景中减少了约 4.6%。

方案 2 对故事也有价值,尽管不是因为它在完整 IDE 测试中胜出。它测得 17.5 ± 0.4 秒,在此场景中实际上与基线相当。两个候选方案都改进了快速合成基准,但只有一个在集成测量中显示出用户可见的端到端改进。

这一区分至关重要。一个只庆祝合成改进的性能工作流最终会发布误导性声明。而一个将自主搜索与完整 IDE 验证相结合的工作流更有可能找到用户能感受到的变化。

AlphaEvolve 可以改变我们处理复杂性能问题的方式。它将曾经因耗时过长而无法探索的优化方案,转变为我们可以常规测试的候选方案。工程师仍然掌控基准测试、审查和发布决策,而搜索空间变得更小了。 Dmitrii Batkovich,IntelliJ 平台工程总监

下一步测量

下一步是产品验证。团队计划检查改进是否体现在 Mega Index 指标上,这是一个用于跟踪索引性能和用户体验的内部 KPI,特别是用户对索引过程的满意度。这才是正确的标准。更快的内部基准测试有用,更快的完整 IDE 测试更好,而更好的用户体验才是关键结果。

对我们来说,重要的教训并不在于 AlphaEvolve 神奇地让索引变快,而在于它做了更实际的事情:它帮助生成和排序底层优化思路,而在这个空间中手动探索十分缓慢。JetBrains 的工程师提供了问题、测试、测量规范和判断,AlphaEvolve 则扩展了搜索范围。

致谢

本项目是 JetBrains 团队(包括 Denis Shiryaev 和 Dmitrii Batkovich)与 Google Cloud 的 AI for Science 及客户团队(包括 Anant Nawalgaria、Skander Hannachi、Kartik San、Laurynas Tamulevičius、Nicolas Stroppa 和 Artemiy Yashin)合作的成果。