技术视角:egg——“极其”快速且可扩展的相等性检测机制

《Communications of the ACM》:Technical Perspective: egg: ‘Ridiculously’ Fast and Extensible Equality Saturation

【字体: 大 中 小 】 时间:2026年07月30日 来源:Communications of the ACM 7.1

编辑推荐:

  有时候,一个伟大的想法源于一个漏洞——而附带的论文主题egg正是如此诞生的。2019年,当时在华盛顿大学从事博士后研究的马克斯·威尔西向他的导师夸耀说,他可以通过用Rust重写实现方式,让一种名为“等式饱和”的高级编译技术运行得更快。如果你当时关注编程语言的发展趋势,就会记得“用

  
有时候,一个伟大的想法源于一个漏洞——而附带的论文主题egg正是如此诞生的。2019年,当时在华盛顿大学从事博士后研究的马克斯·威尔西向他的导师夸耀说,他可以通过用Rust重写实现方式,让一种名为“等式饱和”的高级编译技术运行得更快。如果你当时关注编程语言的发展趋势,就会记得“用Rust重写”曾被宣传为解决软件运行缓慢问题的万能方法,甚至成了网络迷因。事实上,用Rust实现的版本确实很快,快得令人怀疑。
要了解问题出在哪里(或者更确切地说,哪里做对了),我们需要退一步来看。等式饱和的核心是一种巧妙的数据结构,称为e图。如果说抽象语法树或表达式树用于表示单个程序,那么e图则能处理该程序的多个等价变体,将它们紧凑地整合到一个结构中(实际上,一个有限的e图就能表示无限多的变体!)。等式饱和利用e图进行程序优化:它不断向图中添加新的等价程序变体,最终根据某些标准选出“最佳”的那个。问题在于,每添加一个新变体都可能破坏e图的紧凑性,因此需要通过复杂的压缩步骤来恢复其紧凑性。
最初的egg版本之所以快,是因为它跳过了这个压缩步骤——但这样会产生错误结果。不过在尝试恢复紧凑性的过程中,马克斯有了一个顿悟:为什么每次添加后都要压缩?为什么不先批量添加变体,然后再一次性压缩呢?(论文中将这种批量压缩称为重建。)这个想法事后看来似乎很显然,但此前没人尝试过,因为e图最初是为定理证明设计的,那时必须始终保持紧凑性。后来当这种数据结构被用于程序优化时,却没人想到要改变其基本操作方式。直到马克斯出现,他来自定理证明领域之外,根本不知道那些“规则”。
除了让等式饱和更快之外,egg还使其更易于调整。威尔西及其合作者注意到,编译器开发者常常会在e图中的每个程序上附加额外属性,比如该程序引用了哪些变量,或者是否可能计算出零值;这些信息对于决定可以应用哪些优化非常重要。但随着e图的发展,保持这些属性的一致性既麻烦又容易出错。遵循编程语言研究的传统,egg的开发者们识别出了这一常见问题,并将其抽象成一种名为e类分析的优雅机制。通过e类分析,人们可以定义简单的局部规则,规定程序属性应如何初始化和合并,而库会自动按照正确的顺序和频率应用这些规则,从而保持e图的整体一致性。
此时你可能会想:好吧,我们只是让一种小众的编译器优化变得更快速、更简洁——其他人为什么要关心呢?事实证明,这篇论文引发了一场全面的e图革命,影响范围远远超出了编译器领域。自2021年问世以来,egg库已被应用于30多种研究用编译器以及数十个不同领域的项目,涵盖定理证明、硬件与软件综合,甚至木工和基因组压缩等领域。a它甚至还启发了一种全新的数据库关系连接算法b,以及一种用于增量不动点计算的新编程范式。c如今,有一个活跃的社区定期参加年度EGRAPHS研讨会d以及每月的在线会议。可以说,这个迷因又回到了起点:如今研究人员不再试图用Rust重写所有东西,而是开始用egg重写他们的工具。
那么,是什么让egg如此成功呢?首先,其开发者投入了远超一般研究项目的精力,确保该库真正具有可重用性:egg拥有简洁的API和出色的文档。其次,他们同样致力于培养社区,组织各种研讨会、论坛和会议,取得了显著成效。第三,egg体现了编程语言研究的一个经典优点:将临时解决方案转化为优雅的抽象机制,从而展现出意想不到的力量。通过将一个实现细节转化为用于e图不动点计算的通用机制(即e类分析),egg让等式饱和变得“可编程”,进而打开了众多新应用的大门。
最后……egg的速度非常快——快得离谱。
娜迪亚·波利卡波娃(npolikarpova@ucsd.edu)是美国加利福尼亚州圣地亚哥市加州大学圣地亚哥分校计算机科学与工程系的副教授。
相关新闻
生物通微信公众号
微信
新浪微博
  • 搜索
  • 国际
  • 国内
  • 人物
  • 产业
  • 热点
  • 科普

热点排行

    今日动态 | 人才市场 | 新技术专栏 | 中国科学人 | 云展台 | BioHot | 云讲堂直播 | 会展中心 | 特价专栏 | 技术快讯 | 免费试用

    版权所有 生物通

    Copyright© eBiotrade.com, All Rights Reserved

    联系信箱:

    粤ICP备09063491号