当前位置: 首页 > 专利查询>厦门大学专利>正文

一种软件项目的函数级增量编译方法及系统技术方案

技术编号:43963615 阅读:36 留言:0更新日期:2025-01-07 21:48
本发明专利技术一种针对软件项目的函数级增量编译方法及系统,包括:识别出具有文本变化的函数,提取变更代码中使用的符号;基于变更代码中使用的符号,在旧源代码的CDG上执行编译依赖传播,识别语义上发生变化的函数;删减语义上未发生变化的函数,生成部分源代码,然后编译以生成部分二进制文件;从旧的二进制文件中提取符号之间的依赖关系以生成BDG,来识别需要复用的派生二进制代码;对于主体被删减的函数,在BDG上执行二进制依赖传播,确定需要复用的符号和数据段;将旧的二进制文件中需要复用的符号和部分数据段合并到部分二进制文件中,组成完整的二进制文件。本发明专利技术能够在函数级别重用之前的编译结果,仅需要重新编译语义发生变化的函数。

【技术实现步骤摘要】

本专利技术涉及软件,具体涉及一种软件项目的函数级增量编译方法及系统


技术介绍

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所述的软件项目的函数级增量编译方法,其特征在于,所述选择性编译步骤,还包括:在编译过程中,利用语义分析消除词法消除错误的依赖关系。

【专利技术属性】
技术研发人员:吴荣鑫戚鹏宇郝宗寅张一鸣高聪明沈志荣李乔
申请(专利权)人:厦门大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1