增量计算

增量计算是一种软件功能 。当一部分的数据产生了变化，就仅对该产生变化的部分进行计算和更新，以节省计算时间。 相比于简单地重复计算完整的输出内容，增量计算能够显著地节省计算时间。 比如，电子表格会在实现重计算功能时使用增量计算，只重新计算并更新那些含有公式且被直接或间接地改变了的单元格。

用于帮助开发者自动实现增量计算的工具，可以被看作是帮助程序优化的程序分析工具。

静态实现和动态实现 
增量计算在技术实现上可以大致分为两种类型：

静态方法 试图从现有的程序P中派生出一个增量计算程序。例如可以采取进行程序的重新设计、程序重构的手段，或者使用工具自动生成增量计算程序。这种程序的转换需要发生在输入或是输入的变化量出现之前。

动态方法 记录运行中的程序P在接受某个特定输入（l1）时的信息。当这P接受另一个输入（l2）时，把这些信息用于计算并更新输出结果（从O1变化到O2）。图示中显示了：程序P；构成增量计算程序的核心的变化量计算函数ΔP；以及两组输入和输出（I1，O1和I2，O2）。

专用实现和通用实现 
某一些实现增量计算的方法是只适用于特定程序的专用实现方法，但也有一些可以普遍适用于任何程序的通用方法。专用实现方法需要程序员特别指定用于保存未修改子计算的算法和数据结构。通用实现方法则会使用编程语言特性、编译器功能或者一些算法来给非增量计算程序赋予增量计算的行为。

现有系统

编译器与编程语言支持 

 自动增量化（也称“自调节计算”和“适应性函数式计算”）
 康奈尔合成器生成器
 IceDust  - 定制化的领域特定语言（DSL）

框架与程序库 

 Adapton 
 Jane Street Incremental

应用 

 数据库（视图维护）
 软件构建系统
 电子表格
 软件开发环境
 金融计算
 属性文法分析
 图计算和查询
 GUI （例如 React 和 DOM diffing）
 科学计算应用程序

另请参阅 

 响应式编程
 函数式响应式编程
 记忆化
 双向转换

参考文献 

计算机编程
程序分析