代码变更微分成本计算技术

4 阅读3分钟

计算代码变更的微分成本

自动化推理方法能够计算代码变更所导致的资源(如计算或内存)使用变化的紧致边界。

作者:Franco Raimondi, Bor-Yuh Evan Chang

2022年6月17日

5分钟阅读

修改计算机代码可能会对程序性能产生意外影响。例如,修改特定程序中的循环或更改数据结构可能导致执行时间、内存或磁盘使用量增加。我们将这些性能指标的变化称为代码变更的微分成本

对代码变更成本进行推理的能力称为差分成本分析。在部署新版本程序代码之前能够执行此类分析,对某机构尤为重要,因为这不仅能改善客户体验,还能减少资源使用和碳足迹。

与以往方法不同,该实现能够为文献中收集的程序版本对之间的代码变更成本计算紧致边界。特别地,在 19 个示例中的 14 个上提供了紧致边界,这些示例既包括影响成本的变更,也包括不影响成本但需要复杂分析才能确定的变更。

阈值

在大多数软件应用中,推理代码成本变化的能力至关重要,尤其对于 Prime Video:Prime Video 应用运行在各种设备上,其中一些设备的内存和处理能力非常有限。效率是 Prime Video 的关键关注点:不仅需要提供运行快速的代码,且启动时间要有非常紧的界限,还需要解决 USB 供电流媒体设备的内存限制。

虽然新架构有助于实现这些目标,但论文中提出的方法更加细粒度。它是一种自动化推理形式,能够针对每一次代码变更为开发者提供反馈,其工作流程与之前博客文章中介绍的类似。

具体而言,该方法解决以下代码分析问题:给定程序的两个版本(旧版和新版)以及感兴趣的成本指标(如运行时间、内存、线程数、磁盘空间),目标是计算一个数值界限 t(阈值),使得:

cost_new - cost_old ≤ t

论文表明,可以像上例所示,通过在每个程序位置使用程序变量的多项式表达式来计算 ϕ 和 χ。程序版本被表示为迁移系统,这是一种计算模型,包含一组程序状态和状态之间的有效迁移集合。假设迁移系统是终止的——即没有输入会导致其无限运行。

为阈值 t 设定一个符号变量,通过遍历两个迁移系统,得到一个约束系统,求解后可获得阈值的具体值以及势函数。

约束满足

该方法的关键方面是为新程序版本的势函数和旧程序版本的反势函数同时获得约束系统。

研究领域

自动化推理

标签

Prime Video | 形式化方法 | 学术界在某机构FINISHED