【技术实现步骤摘要】
本专利技术涉及软件,具体涉及一种软件项目的函数级增量编译方法及系统。
技术介绍
1、在c/c++项目的开发周期中,开发人员需要反复修改和编译项目的源文件。即使仅有一小部分代码被更改,现有的c/c++编译器仍然需要花费大量时间来重新编译整个源文件,从而导致大量的冗余编译。解决冗余编译问题的关键在于重用之前生成的编译结果。然而,现有的方法只能在文件级别重用之前的编译结果,导致重新编译的时间成本较高。
2、图1展示了现有c/c++编译器在面对细微代码更改时的工作方式。源文件包含1000个函数,而更改仅修改了其中的一个函数,即在第9行添加print语句。不幸的是,现有的编译器需要重新编译这个文件中的所有函数,导致99.9%(999/1,000)的函数被冗余编译。当冗余编译传播到其他源文件时,这种低效率会进一步恶化,从而降低整体性能。在给定的示例中,每个函数实例化一个具有不同类型的模板类vector。这样的实例化大大增加了重新编译的代码大小,从而导致高时间成本。
3、解决上述提到的冗余编译问题是一项非常困难的任务。现有的方
...【技术保护点】
1.一种软件项目的函数级增量编译方法,其特征在于,包括:
2.根据权利要求1所述的软件项目的函数级增量编译方法,其特征在于,所述符号变更分析步骤,具体包括:
3.根据权利要求1所述的软件项目的函数级增量编译方法,其特征在于,所述编译依赖图CDG包括节点和边;其中,节点代表源代码中的符号;边用来描述符号之间的依赖关系,包括已解析的符号依赖、未解析的符号依赖和隐式符号依赖。
4.根据权利要求3所述的软件项目的函数级增量编译方法,其特征在于,所述编译依赖传播,具体包括:
5.根据权利要求1所述的软件项目的函数级增量编译方法,其
...【技术特征摘要】
1.一种软件项目的函数级增量编译方法,其特征在于,包括:
2.根据权利要求1所述的软件项目的函数级增量编译方法,其特征在于,所述符号变更分析步骤,具体包括:
3.根据权利要求1所述的软件项目的函数级增量编译方法,其特征在于,所述编译依赖图cdg包括节点和边;其中,节点代表源代码中的符号;边用来描述符号之间的依赖关系,包括已解析的符号依赖、未解析的符号依赖和隐式符号依赖。
4.根据权利要求3所述的软件项目的函数级增量编译方法,其特征在于,所述编译依赖传播,具体包括:
5.根据权利要求1所述的软件项目的函数级增量编译方法,其特征在于,所述选择性编译步骤,还包括:在编译过程中,利用语义分析消除词法消除错误的依赖关系。
【专利技术属性】
技术研发人员:吴荣鑫,戚鹏宇,郝宗寅,张一鸣,高聪明,沈志荣,李乔,
申请(专利权)人:厦门大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。