【技术实现步骤摘要】
本专利技术涉及程序编程,尤其涉及一种优化编译方法、装置和计算设备。
技术介绍
1、文件引导优化(profile guided optimization,pgo)技术是一种编译优化技术,通过使用基于实际运行情况的性能数据来指导编译器生成更优化的代码。开源编译器可以利用pgo技术对源代码进行优化,以提高可执行程序的性能。
2、相关技术中,编译器在编译生成的过程中,可以在可执行程序中插入检测代码,以计算出执行的代码块和分支跳转的次数,并将统计数据写入到配置文件中。编译器对源代码第二次编译时,可以从配置文件中读取统计数据,来评估编译器中进行优化时的成本模型,方便编译器做出更好的优化决策,从而更好地优化可执行程序。但是,编译器插入检测代码的行为,侵入并改变可执行程序原有的源代码,不仅降低源代码的安全性和可靠性,而且降低了可执行程序的性能,以及增加了可执行程序的膨胀率。
技术实现思路
1、为了解决上述的问题,本申请的实施例中提供了一种优化编译方法,通过获取源代码中的每一行代码访问不同类型的内存的具体地址信息,可以基于源代码中的每一行代码访问内存的具体地址信息,改变访问内存的指令的调度行为和合并部分指令,实现提高最终生成的可执行程序的性能。另外,本申请还提供了与该优化编译方法对应的优化编译装置和计算设备。
2、为此,本申请的实施例中采用如下技术方案:
3、第一方面,本申请实施例提供一种优化编译方法,包括:获取存储信息,所述存储信息是指运行可执行程序时的所述可执
4、在该实施方式中,该方法一般是由计算设备运行。计算设备可以编辑编译器和autofdo。autofdo可以解析运行可执行程序时的各种类型的存储器的存储信息,以得到源代码中的每一行代码访问内存的具体地址信息和反汇编文件的对应系统架构指令集的指令与源代码中的每一行代码的对应关系,确定出源代码中的每一行代码访问内存的具体地址信息,并将源代码中的每一行代码访问内存的具体地址信息发送至编译器。编译器在优化编译的过程中,可以基于源代码中的每一行代码访问内存的具体地址信息,改变访问内存的指令的调度行为,实现减少内存访问时延,以及合并部分指令,实现提高最终生成的可执行程序的性能。
5、在一种实施方式中,在所述获取存储信息之前,所述方法还包括:通过编译器对源代码进行编译,得到所述可执行程序;向单板发送所述可执行程序,所述单板用于运行所述可执行程序。
6、在该实施方式中,计算设备可以预先基于源代码生成可执行程序,为测试的单板提供测试文件,以便获取优化条件。
7、在一种实施方式中,所述单板包括所述各种内存,所述各种内存包括至少两种类型的内存,不同类型的内存的访问时延不相同,以及不同类型的内存的空闲存储空间不相同。
8、在该实施方式中,单板可以设置不同类型的内存,以便单板运行可执行程序提供存储数据和指令的空闲存储空间。不同类型的内存的访问时延和空闲存储空间均不相同,计算设备可以根据访问内存的访问时延和空闲存储空间,优化源代码中的每一行代码访问的内存,可以提高最终生成的可执行程序的性能。
9、在一种实施方式中,在所述基于反汇编文件和所述存储信息,确定所述源代码中的每一行代码访问内存的地址信息之前,所述方法还包括:获取运行所述可执行程序时的处理器的运行信息;基于所述处理器的运行信息和所述各种内存的存储信息,构成轨迹trace文件。
10、在该实施方式中,计算设备在得到各种内存的存储信息后,可以将各种内存的存储信息添加到原先的trace文件中,实现在原有的优化方案中,基于各种内存的存储信息进一步优化编译过程,以提高最终生成的可执行程序的性能。
11、在一种实施方式中,在利用所述源代码中的每一行代码访问内存的地址信息对源代码进行优化编译,得到优化的可执行程序之前,所述方法还包括:基于所述反汇编文件和所述处理器的运行信息,确定所述源代码中的频繁执行的代码块;基于所述源代码中的每一行代码访问内存的地址信息和所述源代码中的频繁执行的代码块,构成采样profile文件。
12、在该实施方式中,计算设备在得到源代码中的每一行代码访问内存的地址信息后,可以将源代码中的每一行代码访问内存的地址信息添加到原先的profile文件中,实现在原有的优化方案中,基于源代码中的每一行代码访问内存的地址信息进一步优化编译过程,以提高最终生成的可执行程序的性能。
13、在一种实施方式中,所述利用所述源代码中的每一行代码访问内存的地址信息对源代码进行优化编译,得到优化的可执行程序,具体包括:利用所述源代码中的每一行代码访问内存的地址信息,改变所述源代码的指定指令的调度行为,以及合并所述源代码的部分指令;利用所述源代码中的频繁执行的代码块,对改变所述源代码的指令后的所述源代码进行重新编译,得到所述优化的可执行程序。
14、在该实施方式中,计算设备可以基于源代码中的每一行代码访问内存的具体地址信息,改变访问内存的指令的调度行为,实现减少内存访问时延,以及合并部分指令,实现提高最终生成的可执行程序的性能。
15、第二方面,本申请实施例提供一种优化编译装置,包括:收发单元,用于获取存储信息,所述存储信息是指运行可执行程序时的所述可执行程序的指令访问各种内存的地址信息,所述可执行程序是基于源代码进行编译的程序;处理单元,用于基于反汇编文件和所述存储信息,确定所述源代码中的每一行代码访问内存的地址信息,所述反汇编文件是基于所述可执行程序进行反汇编得到的文件,所述反汇编文件包括对应系统架构指令集的指令与所述源代码中的每一行代码的对应关系;所述处理单元,还用于利用所述源代码中的每一行代码访问内存的地址信息对源代码进行优化编译,得到优化的可执行程序。
16、在一种实施方式中,所述处理单元,还用于通过编译器对源代码进行编译,得到所述可执行程序;所述收发单元,还用于向单板发送所述可执行程序,所述单板用于运行所述可执行程序。
17、在一种实施方式中,所述单板包括所述各种内存,所述各种内存包括至少两种类型的内存,不同类型的内存的访问时延不相同,以及不同类型的内存的空闲存储空间不相同。
18、在一种实施方式中,所述收发单元,还用于获取运行所述可执行程序时的处理器的运行信息;所述处理单元,还用于基于所述处理器的运行信息和所述各种内存的存储信息,构成轨迹trace文件。
19、在一种实施方式中,所述处理单元,还用于基于所述反汇编文件和所述处理器的运行信息,确定所述本文档来自技高网...
【技术保护点】
1.一种优化编译方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,在所述获取存储信息之前,所述方法还包括:
3.根据权利要求2所述的方法,其特征在于,所述单板包括所述各种内存,所述各种内存包括至少两种类型的内存,不同类型的内存的访问时延不相同,以及不同类型的内存的空闲存储空间不相同。
4.根据权利要求1-3任意一项所述的方法,其特征在于,在所述基于反汇编文件和所述存储信息,确定所述源代码中的每一行代码访问内存的地址信息之前,所述方法还包括:
5.根据权利要求4所述的方法,其特征在于,在利用所述源代码中的每一行代码访问内存的地址信息对源代码进行优化编译,得到优化的可执行程序之前,所述方法还包括:
6.根据权利要求5所述的方法,其特征在于,所述利用所述源代码中的每一行代码访问内存的地址信息对源代码进行优化编译,得到优化的可执行程序,具体包括:
7.一种优化编译装置,其特征在于,包括:
8.根据权利要求7所述的装置,其特征在于,
9.根据权利要求8所述的装置,其特征在于,所
10.根据权利要求7-9任意一项所述的装置,其特征在于,
11.根据权利要求10所述的装置,其特征在于,
12.根据权利要求11所述的装置,其特征在于,
13.一种计算设备,其特征在于,包括:
14.一种计算机可读存储介质,其特征在于,包括计算机程序指令,当所述计算机程序指令由计算设备执行时,所述计算设备执行如权利要求1-6中任一项所述的方法。
15.一种包含指令的计算机程序产品,其特征在于,所述计算机程序产品存储有指令,所述指令在由计算设备执行时,使得所述计算设备实施权利要求1-6任意一项所述的方法。
...【技术特征摘要】
1.一种优化编译方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,在所述获取存储信息之前,所述方法还包括:
3.根据权利要求2所述的方法,其特征在于,所述单板包括所述各种内存,所述各种内存包括至少两种类型的内存,不同类型的内存的访问时延不相同,以及不同类型的内存的空闲存储空间不相同。
4.根据权利要求1-3任意一项所述的方法,其特征在于,在所述基于反汇编文件和所述存储信息,确定所述源代码中的每一行代码访问内存的地址信息之前,所述方法还包括:
5.根据权利要求4所述的方法,其特征在于,在利用所述源代码中的每一行代码访问内存的地址信息对源代码进行优化编译,得到优化的可执行程序之前,所述方法还包括:
6.根据权利要求5所述的方法,其特征在于,所述利用所述源代码中的每一行代码访问内存的地址信息对源代码进行优化编译,得到优化的可执行程序,具体包括:
7.一种优化编...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。