编译器性能分析方法、装置、设备及可读存储介质制造方法及图纸

技术编号:39434682 阅读:10 留言:0更新日期:2023-11-19 16:18
本申请公开了一种编译器性能分析方法、装置、设备及可读存储介质,该方法包括步骤:获取待编译的源文件;根据预设优化检测算法,利用不同的编译器,分别对所述源文件进行多级编译,得到不同组的多级编译结果;根据预设比对算法,将所述不同组的多级编译结果进行比对;根据比对的结果,分析所述不同的编译器之间的性能差异。本申请实现了通过获取待编译的源文件,根据预设优化检测算法,利用不同的编译器,分别对源文件进行多级编译,得到不同组的多级编译结果,根据预设比对算法,将不同组的多组编译结果进行比对,从而可根据比对的结果,确定出不同编译器之间的性能差异。定出不同编译器之间的性能差异。定出不同编译器之间的性能差异。

【技术实现步骤摘要】
编译器性能分析方法、装置、设备及可读存储介质


[0001]本申请涉及编译器
,尤其涉及一种编译器性能分析方法、装置、设备及可读存储介质。

技术介绍

[0002]GCC(GNU Compiler Collection,GNU编译器套装)和Clang是业界常见的两款编译器。针对同一份源码,GCC和Clang编译出来的二进制的执行效率可能会有所不同,为保证对源码的编译效率,需要找出具体是不同编译器的性能差异。
[0003]通常确定其差异的方法极其依赖于开发者的编译器经验,需要对比GCC和Clang的编译优化选项,找出哪个选项对其性能提升最大,再对比另一个编译器是否有该选项。
[0004]但在上述方法中,编译优化选项有很多,并且有些选项是有依赖关系的,仅靠开发者的编译经验很难找到依赖关系中的另一个编译器的对应选项,无法精准确定两者编译器之间的差异。

技术实现思路

[0005]有鉴于此,本申请提供一种编译器性能分析方法、装置、设备及可读存储介质,旨在提高分析不同编译器之间的性能差异的精准性。
[0006]为实现上述目的,本申请提供一种编译器性能分析方法,所述编译器性能分析方法包括以下步骤:
[0007]获取待编译的源文件;
[0008]根据预设优化检测算法,利用不同的编译器,分别对所述源文件进行多级编译,得到不同组的多级编译结果;
[0009]根据预设比对算法,将所述不同组的多级编译结果进行比对;
[0010]根据比对的结果,分析所述不同的编译器之间的性能差异。
[0011]示例性的,所述多级编译结果包括目标文件和可执行文件,所述根据预设优化检测算法,利用不同的编译器,分别对所述源文件进行多级编译,得到不同组的多级编译结果的步骤,包括:
[0012]根据预设优化检测算法,利用不同的编译器,分别将源文件编译成目标文件,得到不同组的目标文件;
[0013]根据所述不同的编译器,将所述目标文件进行组合和链接处理,得到不同组的可执行文件。
[0014]示例性的,所述根据预设优化检测算法,利用不同的编译器,分别将源文件编译成目标文件,得到不同组的目标文件的步骤,包括:
[0015]根据预设优化检测算法,利用不同的编译器,分别将源文件以单个文件逐一编译的形式编译成目标文件,得到不同组的目标文件;
[0016]其中,所述不同的编译器在将源文件以单个文件进行编译时,所述不同的编码器
中的链接相关参数为已预先去除的。
[0017]示例性的,所述根据所述不同的编译器,将所述目标文件进行组合和链接处理,得到不同组的可执行文件的步骤,包括:
[0018]根据所述不同的编译器,选取所述目标文件中所对应的部分函数,并对所述部分函数进行重定义处理;
[0019]将重定义处理后的目标文件进行组合和链接处理,得到不同组的可执行文件。
[0020]示例性的,所述不同的编译器至少包括Clang编译器和GCC编译器,所述部分函数包括禁用函数和启用函数;
[0021]所述根据所述不同的编译器,选取所述目标文件中所对应的部分函数,并对所述部分函数进行重定义处理的步骤,包括:
[0022]根据所述Clang编译器,对所述目标文件中的禁用函数和启用函数进行重定义处理;
[0023]根据所述GCC编译器,对所述目标文件中的禁用函数和启用函数进行重定义处理。
[0024]示例性的,所述根据比对的结果,分析所述不同的编译器之间的性能差异的步骤之后,所述方法还包括:
[0025]控制所述不同的编译器的优化Pass的启用状态;
[0026]根据所述优化Pass的启用状态,确定所述不同的编译器之间的Pass相关性能的差异。
[0027]示例性的,所述控制所述不同的编译器的优化Pass的启用状态的步骤,包括:
[0028]获取所述不同的编译器的源码,并在所述源码中添加控制所述优化Pass打开和关闭选项;
[0029]根据所述打开和关闭选项,控制所述不同的编码器的优化Pass的启用状态。
[0030]示例性的,为实现上述目的,本申请还提供一种编译器性能分析装置,所述装置包括:
[0031]获取模块,用于获取待编译的源文件;
[0032]编译模块,用于根据预设优化检测算法,利用不同的编译器,分别对所述源文件进行多级编译,得到不同组的多级编译结果;
[0033]比对模块,用于根据预设比对算法,将所述不同组的多级编译结果进行比对;
[0034]分析模块,用于根据比对的结果,分析所述不同的编译器之间的性能差异。
[0035]示例性的,为实现上述目的,本申请还提供一种编译器性能分析设备,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的编译器性能分析程序,所述编译器性能分析程序配置为实现如上所述的编译器性能分析方法的步骤。
[0036]示例性的,为实现上述目的,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有编译器性能分析程序,所述编译器性能分析程序被处理器执行时实现如上所述的编译器性能分析方法的步骤。
[0037]与相关技术中,仅靠开发者的编译经验很难找到依赖关系中的另一个编译器的对应选项,无法精准确定两者编译器之间的差异的情况相比,在本申请中,获取待编译的源文件;根据预设优化检测算法,利用不同的编译器,分别对所述源文件进行多级编译,得到不同组的多级编译结果;根据预设比对算法,将所述不同组的多级编译结果进行比对;根据比
对的结果,分析所述不同的编译器之间的性能差异,也就是说,通过获取到待编译的源文件,并根据预设优化检测算法,利用不同的编译器,分别对源文件进行多级编译,从而可得到不同组的多级编译结果,从而进一步地可根据预设比对算法,将不同组的多级编译结果进行比对,进而可根据比对得到的结果,分析不同的编译器之间的性能差异,即使用不同的编译器对同一个源文件进行多级编译,并根据不同级和不同组的区别对比,从而精准分析出编译器在不同级编译时,不同编译器之间的性能差异。
附图说明
[0038]图1为本申请编译器性能分析方法第一实施例的流程示意图;
[0039]图2为本申请编译器性能分析方法第二实施例的流程示意图;
[0040]图3为本申请编译器性能分析方法目标文件生成流程示意图;
[0041]图4为本申请编译器性能分析方法可执行文件生成流程示意图;
[0042]图5为本申请编译器性能分析方法目标文件中的函数调整流程示意图;
[0043]图6为本申请实施例方案涉及的硬件运行环境的结构示意图。
[0044]本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
[0045]应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
[0046]本申请提供一种编译器性能分析方法本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种编译器性能分析方法,其特征在于,所述编译器性能分析方法包括以下步骤:获取待编译的源文件;根据预设优化检测算法,利用不同的编译器,分别对所述源文件进行多级编译,得到不同组的多级编译结果;根据预设比对算法,将所述不同组的多级编译结果进行比对;根据比对的结果,分析所述不同的编译器之间的性能差异。2.如权利要求1所述的编译器性能分析方法,其特征在于,所述多级编译结果包括目标文件和可执行文件,所述根据预设优化检测算法,利用不同的编译器,分别对所述源文件进行多级编译,得到不同组的多级编译结果的步骤,包括:根据预设优化检测算法,利用不同的编译器,分别将源文件编译成目标文件,得到不同组的目标文件;根据所述不同的编译器,将所述目标文件进行组合和链接处理,得到不同组的可执行文件。3.如权利要求2所述的编译器性能分析方法,其特征在于,所述根据预设优化检测算法,利用不同的编译器,分别将源文件编译成目标文件,得到不同组的目标文件的步骤,包括:根据预设优化检测算法,利用不同的编译器,分别将源文件以单个文件逐一编译的形式编译成目标文件,得到不同组的目标文件;其中,所述不同的编译器在将源文件以单个文件进行编译时,所述不同的编码器中的链接相关参数为已预先去除的。4.如权利要求2所述的编译器性能分析方法,其特征在于,所述根据所述不同的编译器,将所述目标文件进行组合和链接处理,得到不同组的可执行文件的步骤,包括:根据所述不同的编译器,选取所述目标文件中所对应的部分函数,并对所述部分函数进行重定义处理;将重定义处理后的目标文件进行组合和链接处理,得到不同组的可执行文件。5.如权利要求4所述的编译器性能分析方法,其特征在于,所述不同的编译器至少包括Clang编译器和GCC编译器,所述部分函数包括禁用函数和启用函数;所述根据所述不同的编译器,选取所...

【专利技术属性】
技术研发人员:徐亮李彬
申请(专利权)人:杭州鸿钧微电子科技有限公司
类型:发明
国别省市:

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

1