一种优化的编译方法技术

技术编号:4942261 阅读:232 留言:0更新日期:2012-04-11 18:40
本发明专利技术披露了一种优化的编译方法,该方法包括下述步骤:分别以最优尺寸和最优速度为目标编译源程序;运用典型运算实例分别运行所述最优尺寸和最优速度的编译结果;根据用户给定的编译指标,综合分析程序中各函数在所述不同编译结果中的代码尺寸和运行时间,确定各函数的优选编译方式;将源程序的各函数按所述确定的优选编译方式编译,得到最终的可执行代码。本发明专利技术由于在编译过程中引入了典型运算实例,实现了编译过程中代码尺寸与代码效率的最佳平衡。

【技术实现步骤摘要】

本专利技术涉及一种计算机的编译方法,具体涉及一种根据待编译内容 自动优化编译方案的编译方法。
技术介绍
当我们用高级语言书写源程序后,通常需要将其编译成可执行的机 器代码,而编译过程有多种编译方式可以使用,不同的编译方式在一 定程度上决定了最终代码的性能。 一般而言,编译方式主要在以下三 个方面决定最终代码的性能代码的可调试性及编译速度、代码尺寸、 代码效率。其中,代码的可调试性及编译速度往往做调试代码之用, 最终的产品并不使用;而代码尺寸及代码效率就是非常重要的编译指 标,特别是对很多低成本的嵌入式系统,代码尺寸及代码效率往往与 系统的性能、成本密切相关,故编译过程不同编译方式的选择至关重 要,而不同编译方式的侧重不同,实际编译中不能同时满足代码尺寸 最小和运行速度最快两个最优指标,只能选择其一。同时,由于编译 过程和运行过程的分离,编译时编译器无法得到各部分代码运行时占 用时间的信息,故现有技术中对编译方式的选择多由程序员人为指定 的,为了达到代码效率与代码尺寸的平衡,程序员需要能够人工区分代 码的耗时部分和体积较大的部分,并同时要对这两个部分指定编译方 式,这个过程需要花费精力,也比较繁琐。如何在满足用户给定的编 译指标的前提下,自动兼顾其它指标,即在代码尺寸、代码效率等不 同性能间进行自动优化与平衡,是编译过程中需要解决的问题
技术实现思路
针对现有技术中编译程序不能自动优化的问题,本专利技术根据编译过程 的特点,通过在编译过程中引入典型运算实例,提出了一个新的解决方案。根据本专利技术,提供了一种编译方法,该方法包括下述步骤分别以 最优尺寸和最优速度为目标编译源程序;运用典型运算实例分别运行 所述最优尺寸和最优速度的编译结果;根据用户给定的编译指标,综 合分析程序中各函数在所述不同编译结果中的代码尺寸和运行时间, 确定各函数的优选编译方式;将源程序的各函数按所述确定的优选编 译方式编译,得到最终的可执行代码。可选的是,上述用户给定的编译指标为代码尺寸,所述综合分析 步骤包括计算得出各函数在最优尺寸和最优速度的两种编译方式下, 增加单位代码尺寸所节省的时间,排列出适合最优速度编译方式的函 数的先后顺序;计算所述的用户给定的代码尺寸与最优尺寸编译方式 下的差值,确定使用代码速度优化函数能够增加的空间余量;以及,按 照所述的适合最优速度编译方式的函数的先后顺序,依次判断各能否 在满足用户给定的代码尺寸的前提下,采用最优速度的编译方式,直至 所述的代码速度的优化空间余量用尽。可选的是,上述用户给定的编译指标为运行时间,所述综合分析 步骤包括计算得出各函数在最优尺寸和最优速度的两种编译方式下, 增加单位时间所节省的代码尺寸,排列出适合最优尺寸编译方式的函 数的先后顺序;计算所述的用户给定的运行时间与最优速度编译方式 下的差值,确定使用代码尺寸优化函数所能增长的时间;以及,按照所 述的适合最优尺寸编译方式的函数的先后顺序,依次判断各能否在满 足用户给定的运行时间的前提下,采用最优尺寸的编译方式,直至所述 的代码尺寸的优化时间余量用尽。可选的是,上述的典型运算实例由用户根据该程序的目的确定。本专利技术由于在编译过程中引入了典型运算实例,使得程序运行的精确 速度在编译中即可得到的,改变了现有技术的编译时无法知道运行的精确时间,同时,编译过程通过执行这个典型运算实例来自行判断程序的各个 函数的不同优化方向,选择各函数的优选编译方式,以达到代码尺寸与代 码效率的最佳平衡。需要说明的是,本专利技术的上述方法中求得的是近似最优解,但方法简 单且速度快,能够满足实际工作需要。附图说明下文将参照附图对本专利技术的具体实施方案进行更详细的举例说明, 其中-图1是本专利技术的编译方法流程图2是本专利技术的具体实施例一的综合分析步骤的流程图; 图3是本专利技术的具体实施例二的综合分析步骤的流程图。具体实施例方式图l是本专利技术的编译方法流程图。如图所示,当程序员使用高级语言 编写完源程序后,分别使用最优尺寸和最优速度两种方式编译,得到 两个可执行的编译结果;根据用户给定的典型运算实例分别执行上述 两个编译结果,所谓典型运算实例由用户根据该程序的目的确定,例 如对于一个MP3的解码程序, 一个MP3编码文件就是一个典型的运算实例;执行完毕后,记录下在每种编译方式下各函数的运行时间和代码 尺寸;然后进行综合分析,根据用户的要求,即用户给定的代码尺寸 或运行时间,以函数为单位进行综合分析,确定每个函数优选的编译 方式,即对该函数采用最优尺寸还是最优速度编译方式;最后,根据 上述确定的各函数的优选编译方式编译源程序,得到最终的可执行代 码。图2是本专利技术的具体实施例一的综合分析步骤的流程图,本实施例中 用户给定的指标为代码尺寸。如图所示,综合分析步骤是根据用户给 定的指标,综合分析程序中各函数的在不同编译结果中的运行指标,包括该函数的代码尺寸和运行时间,最后确定各函数的优选编译方式, 即找出哪些函数在主要编译目标是代码尺寸的前提下,更适合采用最 优速度的编译方式,以实现代码的尺寸和速度的兼顾优化。本实施例中,用户输入给定的指标为代码尺寸&e,首先需要将各函 数按照适合最优速度编译方式的先后进行排序,通过比较各函数在最 优尺寸和最优速度的两种编译方式下,增加单位代码尺寸所节省的时 间即可得到该排序。如图所示,整个源代码中有^个需要确认编译效率 的函数,分为编号为1,2,3,L j,在最优体积方式编译下,每个函数的代 码大小分别为&,&,L 运行典型运算实例的时间分别为 rCp7b2,L ,T^;在最优速度方式编译下,每个函数的代码大小分别为 ^,&,L,&,运行典型运算实例的时间分别为7^,7^,L,T^,计算 S =& -^ ,7>2V7V ,然后计算尸 = ;/&, P即代表了序号为的函数增 加单位代码尺寸所节省的运行时间,P越大,代表这个函数在增加相同 的代码尺寸的前提下,能够节省更多的运行时间,故该函数更加适合采 用最优速度的编译方式。根据上述步骤中得到了各函数的编码效率P。, 然后根据用户给定的代码尺寸&e,确定各函数的优选编译方式。将上 述4A,L P,这X个数值从大到小排序,得到其顺序排列为&込L仏即Q2込2L2仏,其对应关系为从1,2,3,L ,X到1,2,3,L ,Z的--映射/,即gm =尸/(—(附=1,2山,爿)。其次,考虑可进行代码速度优化的空间,即计算所述的用户给定的 代码尺寸与最优尺寸编译方式下的差值。根据用户输入的期望^e大小,计算£&-|:&,,丄越大表明可供优化代码速度的空间越大,同时本实施例中设tf—空集合5 ,用于记录优选编译方式为最优速度的函 数。然后,按照上述适合最优速度编译方式的函数的先后顺序,依次 判断各能否在满足用户给定的代码尺寸的前提下,采用最优速度的编 译方式。首先令循环变量/ = 1,判断关系式Z2S,是否成立,如成立, S朋,并将数值/(z')放入到集合5中,将/加1,重复本句的过程,直到/>^时退出。则序号在集合5中函数使用最优速度方式编译,而其 他函数则使用最优尺寸方式编译。图3是本专利技术的具体实施例二的综合本文档来自技高网...

【技术保护点】
一种编译方法,其特征在于,所述方法包括下述步骤: 分别以最优尺寸和最优速度为目标编译源程序; 运用典型运算实例分别运行所述最优尺寸和最优速度的编译结果; 根据用户给定的编译指标,综合分析程序中各函数在所述不同编译结果中的代 码尺寸和运行时间,确定各函数的优选编译方式;以及, 将源程序的各函数按所述确定的优选编译方式编译,得到最终的可执行代码。

【技术特征摘要】
1、一种编译方法,其特征在于,所述方法包括下述步骤分别以最优尺寸和最优速度为目标编译源程序;运用典型运算实例分别运行所述最优尺寸和最优速度的编译结果;根据用户给定的编译指标,综合分析程序中各函数在所述不同编译结果中的代码尺寸和运行时间,确定各函数的优选编译方式;以及,将源程序的各函数按所述确定的优选编译方式编译,得到最终的可执行代码。2、 根据权利要求l所述的编译方法,其特征在于,所述用户给 定的编译指标为代码尺寸,所述综合分析步骤包括-计算得出各函数在最优尺寸和最优速度的两种编译方式下,增加单 位代码尺寸所节省的时间,排列出适合最优速度编译方式的函数的先 后顺序;计算所述的用户给定的代码尺寸与最优尺寸编译方式下的空间差值, 确定使用代码速度优化能够增加的空间余量;以及,按照所述的适合最优速度编译方式的函数的先后顺...

【专利技术属性】
技术研发人员:史岩
申请(专利权)人:北京海尔集成电路设计有限公司
类型:发明
国别省市:11[中国|北京]

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

1