增量编译器是一种为一个语句或一组语句生成代码的编译器,该代码独立于为其他语句生成的代码。
例子 :
C / C++ GNU编译器, Java Eclipse平台等
增量编译器就是这样一种编译方案,其中仅重新编译已修改的源文本并将其与先前编译的代码合并,以形成新的目标代码。因此,增量编译器可避免在某些修改后重新编译整个源代码。而是仅对源程序的修改部分进行编译。
Code --> Compilation
New code --> New Compilation
(Previous (Previous Compilation +
Code + Changes) compilation of modified part)
需要增量编译器:
程序员的大部分时间都花在了如下的edit-compile-debug工作流程中。
- 您进行了很小的更改(通常在单个模块甚至函数)。
- 您让编译器将代码转换为二进制,最后。
- 您可以运行该程序或一堆单元测试以查看更改结果。
这将增加更改每一步的编译时间。但这可以通过增量编译器的概念来克服(保存以前的编译并编译代码的修改部分)。
如何实现这个概念(增量编译的概念):
我们已经听说,增量计算意味着只更新计算输出的那些部分,这些部分需要根据计算输入的给定变化进行调整。我们可以采用的一种基本策略是将一个大型计算(如编译程序)看作是许多相互依赖的较小且相互关联的计算的组合。这些较小的计算中的每一个都会产生一个中间结果,该结果可以缓存并希望在以后的迭代中重新使用,从而避免了我们再次重新计算该特定中间结果的需要。
增量编译器的功能:
- 在程序开发过程中,对源程序的修改可能导致重新编译整个源文本。在增量编译器中减少了这种开销。
- 通过保持程序修改不变,可以像编译时错误一样修补运行时错误。
- 编译过程更快。
- 使用的内存较少。
- 使用增量编译器处理批处理程序变得非常灵活。
- 在增量编译器中,程序结构表维护用于目标代码的内存分配。编译新语句时,将在程序结构表中为其创建新条目。因此,增量编译器所需的内存分配不必是连续的。
- 帮助跟踪对源程序的依赖关系。