CN103838571B - 一种信息处理方法及装置 - Google Patents
一种信息处理方法及装置 Download PDFInfo
- Publication number
- CN103838571B CN103838571B CN201310642254.9A CN201310642254A CN103838571B CN 103838571 B CN103838571 B CN 103838571B CN 201310642254 A CN201310642254 A CN 201310642254A CN 103838571 B CN103838571 B CN 103838571B
- Authority
- CN
- China
- Prior art keywords
- information
- code information
- condition data
- source code
- branch
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明实施例公开一种信息处理方法及装置,其中方法包括如下步骤:解析条件反馈信息,获取所述条件反馈信息中的原始代码信息的条件数据;将所述条件数据匹配至当前代码信息的控制流图的分支中;采用匹配后的所述分支的条件数据,计算所述当前代码信息的执行信息,所述当前代码信息的执行信息包括所述控制流图的基本块的执行次数和所述控制流图的分支的执行次数。可以提升反馈式编译优化的易用性,提高对代码演进的效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种信息处理方法及装置。
背景技术
随着计算机技术的不断开发和完善,在代码的编译过程中,会通过一系列的优化以提高代码的执行性能,其中有一类优化称作反馈式编译优化,通过在代码生成阶段插入技术代码的方法收集关于代码的反馈信息,例如:基本块和分支的执行频率、分支的执行概率等等一些实际执行动作的信息,在二次编译的时候,通过读取反馈信息对代码进行进一步的优化。
由于反馈信息与代码始终处于绑定状态,即需要依赖代码行号、函数调用关系、控制流图等,因此一旦对代码进行修改,则需要重新获取新的反馈信息,并重新进行绑定,降低了反馈式编译优化的易用性,进而影响了对代码演进的效率。
发明内容
本发明实施例提供一种信息处理方法及装置,可以提升反馈式编译优化的易用性,提高对代码演进的效率。
为了解决上述技术问题,本发明第一方面提供了一种信息处理方法,可包括:
解析条件反馈信息,获取所述条件反馈信息中的原始代码信息的条件数据;
将所述条件数据匹配至当前代码信息的控制流图的分支中;
采用匹配后的所述分支的条件数据,计算所述当前代码信息的执行信息,所述当前代码信息的执行信息包括所述控制流图的基本块的执行次数和所述控制流图的分支的执行次数。
基于第一方面,在第一方面的第一种可行的实施方式中,所述解析条件反馈信息之前,还包括:
获取原始代码信息的条件数据,并根据所述条件数据生成条件反馈信息。
基于第一方面的第一种可行的实施方式,在第一方面的第二种可行的实施方式中,所述获取原始代码信息的条件数据,并根据所述条件数据生成条件反馈信息,包括:
获取原始代码信息的名称信息,所述名称信息包括所述原始代码信息中文件的文件名称和所述原始代码信息中函数的函数名称;
提取所述原始代码信息中函数的条件数据,所述条件数据包括条件语句、操作数、操作符、所述条件语句的执行概率和所述函数的执行次数;
根据所述原始代码信息的名称信息和所述条件数据生成条件反馈信息。
基于第一方面的第二种可行的实施方式,在第一方面的第三种可行的实施方式中,所述将所述条件数据匹配至当前代码信息的控制流图的分支中,包括:
在当前代码信息中获取与所述原始代码信息的名称信息对应的函数;
在所获取的所述当前代码信息的函数的控制流图中匹配出所述条件数据对应的分支;
将所述条件数据中的所述条件语句的执行概率分配至匹配后的所述分支中。
基于第一方面的第三种可行的实施方式,在第一方面的第四种可行的实施方式中,所述将所述条件数据中的所述条件语句的执行概率分配至匹配后的所述分支中,包括:
将所述条件数据中的所述条件语句的执行概率标记在匹配后的所述分支中。
基于第一方面的第三种可行的实施方式或第一方面的第四种可行的实施方式,在第一方面的第五种可行的实施方式中,所述采用匹配后的所述分支的条件数据,对所述控制流图的执行信息进行计算,包括:
根据匹配后的所述分支的所述条件语句的执行概率,计算所述控制流图的基本块的频率;
根据所述函数的执行次数和所述控制流图的基本块的频率,计算所述当前代码信息的执行信息。
基于第一方面,在第一方面的第六种可行的实施方式中,所述当前代码信息与所述原始代码信息一致;或者,
所述当前代码信息为所述原始代码信息的演进代码。
本发明第二方面提供了一种信息处理装置,可包括:
解析获取模块,用于解析条件反馈信息,获取所述条件反馈信息中的原始代码信息的条件数据;
匹配模块,用于将所述条件数据匹配至当前代码信息的控制流图的分支中;
计算模块,用于采用匹配后的所述分支的条件数据,计算所述当前代码信息的执行信息,所述当前代码信息的执行信息包括所述控制流图的基本块的执行次数和所述控制流图的分支的执行次数。
基于第二方面,在第二方面的第一种可行的实施方式中,还包括:
获取生成模块,用于获取原始代码信息的条件数据,并根据所述条件数据生成条件反馈信息。
基于第二方面的第一种可行的实施方式,在第二方面的第二种可行的实施方式中,所述获取生成模块包括:
信息获取单元,用于获取原始代码信息的名称信息,所述名称信息包括所述原始代码信息中文件的文件名称和所述原始代码信息中函数的函数名称;
数据提取单元,用于提取所述原始代码信息中函数的条件数据,所述条件数据包括条件语句、操作数、操作符、所述条件语句的执行概率和所述函数的执行次数;
信息生成单元,用于根据所述原始代码信息的名称信息和所述条件数据生成条件反馈信息。
基于第二方面的第二种可行的实施方式,在第二方面的第三种可行的实施方式中,所述匹配模块包括:
函数获取单元,用于在当前代码信息中获取与所述原始代码信息的名称信息对应的函数;
匹配单元,用于在所获取的所述当前代码信息的函数的控制流图中匹配出所述条件数据对应的分支;
分配单元,用于将所述条件数据中的所述条件语句的执行概率分配至匹配后的所述分支中。
基于第二方面的第三种可行的实施方式,在第二方面的第四种可行的实施方式中,所述分配单元具体用于将所述条件数据中的所述条件语句的执行概率标记在匹配后的所述分支中。
基于第二方面的第三种可行的实施方式或第二方面的第四种可行的实施方式,在第二方面的第五种可行的实施方式中,所述计算模块包括:
频率计算单元,用于根据匹配后的所述分支的所述条件语句的执行概率,计算所述控制流图的基本块的频率;
信息计算单元,用于根据所述函数的执行次数和所述控制流图的基本块的频率,计算所述当前代码信息的执行信息,所述当前代码信息的执行信息包括所述控制流图的基本块的执行次数和所述控制流图的分支的执行次数。
基于第二方面,在第二方面的第六种可行的实施方式中,所述当前代码信息与所述原始代码信息一致;或者,
所述当前代码信息为所述原始代码信息的演进代码。
上述可知,通过将条件反馈信息中的原始代码信息的条件数据匹配至当前代码信息的控制流图的分支中,根据匹配后的分支的条件数据,计算当前代码信息的执行信息,以此完成对当前代码信息的反馈式编译优化,由于采用的条件反馈信息所包括的条件数据,解除了对代码行号、函数调用关系、控制流图等的依赖,提升了反馈式编译优化的易用性,进而提高了对代码演进的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种信息处理方法的流程示意图;
图2是本发明实施例提供的另一种信息处理方法的流程示意图;
图3是本发明实施例提供的又一种信息处理方法的流程示意图;
图4是本发明实施例提供的一种信息处理装置的结构示意图;
图5是本发明实施例提供的另一种信息处理装置的结构示意图;
图6是本发明实施例提供的获取生成模块的结构示意图;
图7是本发明实施例提供的匹配模块的结构示意图;
图8是本发明实施例提供的计算模块的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明实施例中,当需要对当前代码信息进行反馈式编译优化时,信息处理装置解析条件反馈信息,获取所述条件反馈信息中的原始代码信息的条件数据,将所述条件数据匹配至当前代码信息的控制流图的分支中,所述信息处理装置采用匹配后的所述分支的条件数据,计算所述当前代码信息的执行信息。
本发明所涉及的信息处理装置可以包括:电脑、平板电脑、智能手机、笔记本电脑、掌上电脑以及移动互联网设备(MID)、PAD等具备支持反馈式编译优化技术的终端设备;所述原始代码信息的条件数据可以包括条件语句、操作数、操作符、所述条件语句的执行概率和所述函数的执行次数;所述当前代码信息的执行信息包括所述控制流图的基本块的执行次数和所述控制流图的分支的执行次数;所述当前代码信息与所述原始代码信息一致,或者所述当前代码信息为所述原始代码信息的演进代码。
下面将结合附图1-附图3,对本发明实施例提供的信息处理方法进行详细介绍。
请参见图1,为本发明实施例提供了一种信息处理方法的流程示意图。如图1所示,本发明实施例的所述方法可以包括以下步骤S101-步骤S103。
S101,解析条件反馈信息,获取所述条件反馈信息中的原始代码信息的条件数据;
具体的,当需要对当前代码信息进行反馈式编译优化时,信息处理装置解析预先生成的条件反馈信息,获取所述条件反馈信息中的原始代码信息的条件数据,其中,所述原始代码信息的条件数据可以包括条件语句、操作数、操作符、所述条件语句的执行概率和所述函数的执行次数,优选的,所述条件反馈信息中还包括所述原始代码信息的名称信息,所述名称信息包括所述原始代码信息中文件的文件名称和所述原始代码信息中函数的函数名称,所述信息处理装置解析所述条件反馈信息,还获取所述原始代码信息的名称信息。
需要说明的是,在所述信息处理装置解析条件反馈信息之前,所述信息处理装置需要根据原始代码信息生成反馈信息,生成反馈信息的过程与现有技术相同,在此不进行赘述。所述信息处理装置从所述原始代码信息的函数中获取条件语句、操作数、操作符,并从所述反馈信息中获取所述条件语句的执行概率和所述函数的执行次数,所述信息处理装置再根据所获取的所述原始代码信息的函数中的条件语句、操作数、操作符,以及根据所述原始代码信息收集的所述反馈信息中获取所述条件语句的执行概率和所述函数的执行次数,生成所述条件反馈信息。
其中,所述原始代码信息中存在至少一个文件,所述至少一个文件中每个文件中都存在至少一个函数。
S102,将所述条件数据匹配至当前代码信息的控制流图的分支中;
具体的,所述信息处理装置将解析得到的所述条件数据匹配至当前代码信息的控制流图的分支中,进一步的,所述信息处理装置在当前代码信息中获取与所述原始代码信息的名称信息对应的函数,在所获取的所述当前代码信息的函数的控制流图中匹配出所述条件数据对应的分支,将所述条件数据中的所述条件语句的执行概率分配至匹配后的所述分支中。
其中,所述当前代码信息的控制流图为所述当前代码信息中函数的抽象表示,所述分支为所述控制流图中的边。
S103,采用匹配后的所述分支的条件数据,计算所述当前代码信息的执行信息,所述当前代码信息的执行信息包括所述控制流图的基本块的执行次数和所述控制流图的分支的执行次数;
具体的,所述基本块为所述控制流图的节点,所述分支表达所述基本块之间的控制流走向,所述信息处理装置采用匹配后的所述分支的条件数据,对所述当前代码信息的执行信息进行计算,进一步的,所述信息处理装置根据匹配后的所述分支的所述条件语句的执行概率,计算所述控制流图的基本块的频率,再根据所述函数的执行次数和所述控制流图的基本块的频率,计算所述当前代码信息的执行信息,所述当前代码信息的执行信息包括所述控制流图的基本块的执行次数和所述控制流图的分支的执行次数。
进一步的,根据所述执行信息生成所述当前代码信息的优化的可执行程序。
在本发明实施例中,通过将条件反馈信息中的原始代码信息的条件数据匹配至当前代码信息的控制流图的分支中,根据匹配后的分支的条件数据,计算当前代码信息的执行信息,以此完成对当前代码信息的反馈式编译优化,由于采用的条件反馈信息所包括的条件数据,解除了对代码行号、函数调用关系、控制流图等的依赖,提升了反馈式编译优化的易用性,进而提高了对代码演进的效率。
请参见图2,为本发明实施例提供了另一种信息处理方法的流程示意图。如图2所示,本发明实施例的所述方法可以包括以下步骤S201-步骤S204。
S201,获取原始代码信息的条件数据,并根据所述条件数据生成条件反馈信息;
具体的,所述原始代码信息中存在至少一个文件,所述至少一个文件中每个文件中都存在至少一个函数,所述信息处理装置获取原始代码信息的名称信息,所述名称信息包括所述原始代码信息中文件的文件名称和所述原始代码信息中函数的函数名称,提取所述原始代码信息中函数的条件数据,所述条件数据包括条件语句、操作数、操作符、所述条件语句的执行概率和所述函数的执行次数,根据所述原始代码信息的名称信息和所述条件数据生成条件反馈信息。
优选的,所述信息处理装置在生成条件反馈数据的时候,可以每提取完所述原始代码信息中的一个文件就进行一次条件数据的写入操作,也可以每提取完所述原始代码信息中的一个函数就进行一次条件数据的写入操作,当所述原始代码信息中所有文件或所有函数都完成写入操作后,生成条件反馈信息。
S202,解析条件反馈信息,获取所述条件反馈信息中的原始代码信息的条件数据;
具体的,当需要对当前代码信息进行反馈式编译优化时,所述信息处理装置解析预先生成的条件反馈信息,获取所述条件反馈信息中的原始代码信息的条件数据,其中,所述原始代码信息的条件数据可以包括条件语句、操作数、操作符、所述条件语句的执行概率和所述函数的执行次数。优选的,所述条件反馈信息中还包括所述原始代码信息的名称信息,所述名称信息包括所述原始代码信息中文件的文件名称和所述原始代码信息中函数的函数名称,所述信息处理装置解析所述条件反馈信息,还获取所述原始代码信息的名称信息。
S203,将所述条件数据匹配至当前代码信息的控制流图的分支中;
S204,采用匹配后的所述分支的条件数据,计算所述当前代码信息的执行信息,所述当前代码信息的执行信息包括所述控制流图的基本块的执行次数和所述控制流图的分支的执行次数。
其中,本发明实施例的步骤S203和S204可以分别参见图1所示实施例的步骤S102和S103,在此不进行赘述。
在本发明实施例中,通过将条件反馈信息中的原始代码信息的条件数据匹配至当前代码信息的控制流图的分支中,根据匹配后的分支的条件数据,计算当前代码信息的执行信息,以此完成对当前代码信息的反馈式编译优化,基于在代码演进的过程中,原始代码信息中的条件语句不会被轻易修改,因此采用的条件反馈信息所包括的条件数据,可以解除对代码行号、函数调用关系、控制流图等的依赖,并且通过延用现有的原始代码信息的反馈信息,在代码演进时,无需重复对反馈信息进行获取,提升了反馈式编译优化的易用性和性能,进而提高了对代码演进的效率。
请参见图3,为本发明实施例提供了又一种信息处理方法的流程示意图。如图3所示,本发明实施例的所述方法包括以下步骤S301-步骤S309。
S301,获取原始代码信息的名称信息,所述名称信息包括所述原始代码信息中文件的文件名称和所述原始代码信息中函数的函数名称;
具体的,信息处理装置获取原始代码信息的名称信息,进一步的,所述原始代码信息中存在至少一个文件,所述至少一个文件中每个文件中都存在至少一个函数,所述信息处理装置获取所述原始代码信息中文件的文件名称和所述原始代码信息中函数的函数名称。
S302,提取所述原始代码信息中函数的条件数据,所述条件数据包括条件语句、操作数、操作符、所述条件语句的执行概率和所述函数的执行次数;
具体的,所述信息处理装置在所述原始代码信息的每个文件中,提取每个文件中的函数的条件语句、操作数、操作符。
进一步的,所述信息处理装置将所述原始代码信息中的函数转换为控制流图,优选的,对所述控制流图中的基本块进行判断,如果该基本块的后继分支的个数为2,并且该基本块的最后一条语句为条件比较,则确定该语句为条件语句,所述信息处理装置提取该条件语句;由于优化的关系,控制流图上的操作数和原始代码信息中的操作数可能不完全相同,即控制流图上的操作数可能为临时变量,优选的,所述信息处理装置可以计算临时变量的定义点,直至遇到非临时变量的操作数,所述信息处理装置提取该非临时变量的操作数以及与该非临时变量的操作数关联的操作符。
需要说明的是,在所述信息处理装置获取原始代码信息的名称信息之前,所述信息处理装置需要根据原始代码信息生成反馈信息,生成反馈信息的过程与现有技术相同,在此不进行赘述。所述信息处理装置从所述反馈信息中提取所确定的条件语句的执行概率和所述函数的执行次数。
S303,根据所述原始代码信息的名称信息和所述条件数据生成条件反馈信息;
具体的,所述信息处理装置根据所提取的所述原始代码信息的函数中的条件语句、操作数、操作符,以及根据所述原始代码信息的所述反馈信息中提取的所述条件语句的执行概率和所述函数的执行次数,生成所述条件反馈信息。
优选的,所述信息处理装置在生成条件反馈数据的时候,可以每提取完所述原始代码信息中的一个文件就进行一次条件数据的写入操作,也可以每提取完所述原始代码信息中的一个函数就进行一次条件数据的写入操作,当所述原始代码信息中所有文件或所有函数都完成写入操作后,生成条件反馈信息。
S304,解析条件反馈信息,获取所述条件反馈信息中的原始代码信息的条件数据;
具体的,当需要对当前代码信息进行反馈式编译优化时,所述信息处理装置解析预先生成的条件反馈信息,获取所述条件反馈信息中的原始代码信息的条件数据和所述原始代码信息的名称信息。
S305,在当前代码信息中获取与所述原始代码信息的名称信息对应的函数;
具体的,所述信息处理装置根据解析出的所述原始代码信息的名称信息,在所述当前代码信息中获取对应的函数。
S306,在所获取的所述当前代码信息的函数的控制流图中匹配出所述条件数据对应的分支;
具体的,所述信息处理装置根据所述条件数据中的条件语句、操作数、操作符在所获取的所述当前代码信息的函数的控制流图中匹配出所述条件数据对应的分支。
其中,所述当前代码信息的控制流图为所述当前代码信息中函数的抽象表示,所述分支为所述控制流图中的边。
S307,将所述条件数据中的所述条件语句的执行概率分配至匹配后的所述分支中;
具体的,所述信息处理装置将所述条件数据中的所述条件语句的执行概率分配至匹配后的所述分支中,优选的,所述信息处理装置将所述条件数据中的所述条件语句的执行概率标记在匹配后的所述分支中。
S308,根据匹配后的所述分支的所述条件语句的执行概率,计算所述控制流图的基本块的频率;
具体的,所述基本块为所述控制流图的节点,所述分支表达所述基本块之间的控制流走向,所述信息处理装置根据匹配后的所述分支的所述条件语句的执行概率,计算所述控制流图的基本块的频率,计算过程可以与现有技术相同,在此不进行赘述。
S309,根据所述函数的执行次数和所述控制流图的基本块的频率,计算所述当前代码信息的执行信息;
具体的,所述信息处理装置根据所述函数的执行次数和所述控制流图的基本块的频率,计算所述当前代码信息的执行信息,所述当前代码信息的执行信息包括所述控制流图的基本块的执行次数和所述控制流图的分支的执行次数。
进一步的,根据所述执行信息生成所述当前代码信息的优化的可执行程序。
在本发明实施例中,通过将条件反馈信息中的原始代码信息的条件数据匹配至当前代码信息的控制流图的分支中,根据匹配后的分支的条件数据,计算当前代码信息的执行信息,以此完成对当前代码信息的反馈式编译优化,基于在代码演进的过程中,原始代码信息中的条件语句不会被轻易修改,因此采用的条件反馈信息所包括的条件数据,可以解除对代码行号、函数调用关系、控制流图等的依赖,并且通过延用现有的原始代码信息的反馈信息,在代码演进时,无需重复对反馈信息进行获取,同时利用原始代码信息的名称信息在当前代码信息中进行匹配,增加了匹配的准确性,提升了反馈式编译优化的易用性和性能,进而提高了对代码演进的效率。
下面将结合附图4-附图8,对本发明实施例提供的信息处理装置进行详细介绍。需要说明的是,附图4-附图8所示的信息处理装置,用于执行本发明图1-图3所示实施例的方法,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明图1-图3所示的实施例。
请参见图4,为本发明实施例提供了一种信息处理装置的结构示意图。如图4所示,本发明实施例的所述信息处理装置1可以包括:解析获取模块11、匹配模块12和计算模块13。
解析获取模块11,用于解析条件反馈信息,获取所述条件反馈信息中的原始代码信息的条件数据;
具体实现中,当需要对当前代码信息进行反馈式编译优化时,所述解析获取模块11解析预先生成的条件反馈信息,获取所述条件反馈信息中的原始代码信息的条件数据,其中,所述原始代码信息的条件数据可以包括条件语句、操作数、操作符、所述条件语句的执行概率和所述函数的执行次数,优选的,所述条件反馈信息中还包括所述原始代码信息的名称信息,所述名称信息包括所述原始代码信息中文件的文件名称和所述原始代码信息中函数的函数名称,所述解析获取模块11解析所述条件反馈信息,还获取所述原始代码信息的名称信息。
需要说明的是,在所述解析获取模块11解析条件反馈信息之前,所述信息处理装置1需要根据原始代码信息生成反馈信息,生成反馈信息的过程与现有技术相同,在此不进行赘述。所述信息处理装置1从所述原始代码信息的函数中获取条件语句、操作数、操作符,并从所述反馈信息中获取所述条件语句的执行概率和所述函数的执行次数,所述信息处理装置1再根据所获取的所述原始代码信息的函数中的条件语句、操作数、操作符,以及根据所述原始代码信息收集的所述反馈信息中获取所述条件语句的执行概率和所述函数的执行次数,生成所述条件反馈信息。
其中,所述原始代码信息中存在至少一个文件,所述至少一个文件中每个文件中都存在至少一个函数。
匹配模块12,用于将所述条件数据匹配至当前代码信息的控制流图的分支中;
具体实现中,所述匹配模块12将所述解析获取模块11解析得到的所述条件数据匹配至当前代码信息的控制流图的分支中,进一步的,所述匹配模块12在当前代码信息中获取与所述原始代码信息的名称信息对应的函数,在所获取的所述当前代码信息的函数的控制流图中匹配出所述条件数据对应的分支,将所述条件数据中的所述条件语句的执行概率分配至匹配后的所述分支中。
其中,所述当前代码信息的控制流图为所述当前代码信息中函数的抽象表示,所述分支为所述控制流图中的边。
计算模块13,用于采用匹配后的所述分支的条件数据,计算所述当前代码信息的执行信息,所述当前代码信息的执行信息包括所述控制流图的基本块的执行次数和所述控制流图的分支的执行次数;
具体实现中,所述基本块为所述控制流图的节点,所述分支表达所述基本块之间的控制流走向,所述计算模块13采用匹配后的所述分支的条件数据,对所述当前代码信息的执行信息进行计算,进一步的,所述计算模块13根据匹配后的所述分支的所述条件语句的执行概率,计算所述控制流图的基本块的频率,再根据所述函数的执行次数和所述控制流图的基本块的频率,计算所述当前代码信息的执行信息,所述当前代码信息的执行信息包括所述控制流图的基本块的执行次数和所述控制流图的分支的执行次数。
进一步的,所述计算模块13根据所述执行信息生成所述当前代码信息的优化的可执行程序。
在本发明实施例中,通过将条件反馈信息中的原始代码信息的条件数据匹配至当前代码信息的控制流图的分支中,根据匹配后的分支的条件数据,计算当前代码信息的执行信息,以此完成对当前代码信息的反馈式编译优化,由于采用的条件反馈信息所包括的条件数据,解除了对代码行号、函数调用关系、控制流图等的依赖,提升了反馈式编译优化的易用性,进而提高了对代码演进的效率。
请参见图5,为本发明实施例提供了另一种信息处理装置的结构示意图。如图5所示,本发明实施例的所述信息处理装置1可以包括:解析获取模块11、匹配模块12、计算模块13和获取生成模块14。
获取生成模块14,用于获取原始代码信息的条件数据,并根据所述条件数据生成条件反馈信息;
具体实现中,所述原始代码信息中存在至少一个文件,所述至少一个文件中每个文件中都存在至少一个函数,所述获取生成模块14获取原始代码信息的名称信息,所述名称信息包括所述原始代码信息中文件的文件名称和所述原始代码信息中函数的函数名称,提取所述原始代码信息中函数的条件数据,所述条件数据包括条件语句、操作数、操作符、所述条件语句的执行概率和所述函数的执行次数,根据所述原始代码信息的名称信息和所述条件数据生成条件反馈信息。
优选的,所述获取生成模块14在生成条件反馈数据的时候,可以每提取完所述原始代码信息中的一个文件就进行一次条件数据的写入操作,也可以每提取完所述原始代码信息中的一个函数就进行一次条件数据的写入操作,当所述原始代码信息中所有文件或所有函数都完成写入操作后,生成条件反馈信息。
具体的,请一并参见图6,为本发明实施例提供了获取生成模块的结构示意图。如图6所示,所述获取生成模块14可以包括:
信息获取单元141,用于获取原始代码信息的名称信息,所述名称信息包括所述原始代码信息中文件的文件名称和所述原始代码信息中函数的函数名称;
具体实现中,所述信息获取单元141获取原始代码信息的名称信息,进一步的,所述原始代码信息中存在至少一个文件,所述至少一个文件中每个文件中都存在至少一个函数,所述信息获取单元141获取所述原始代码信息中文件的文件名称和所述原始代码信息中函数的函数名称。
数据提取单元142,用于提取所述原始代码信息中函数的条件数据,所述条件数据包括条件语句、操作数、操作符、所述条件语句的执行概率和所述函数的执行次数;
具体实现中,所述数据提取单元142在所述原始代码信息的每个文件中,提取每个文件中的函数的条件语句、操作数、操作符。
进一步的,所述数据提取单元142将所述原始代码信息中的函数转换为控制流图,优选的,对所述控制流图中的基本块进行判断,如果该基本块的后继分支的个数为2,并且该基本块的最后一条语句为条件比较,则确定该语句为条件语句,所述数据提取单元142提取该条件语句;由于优化的关系,控制流图上的操作数和原始代码信息中的操作数可能不完全相同,即控制流图上的操作数可能为临时变量,优选的,所述数据提取单元142可以计算临时变量的定义点,直至遇到非临时变量的操作数,所述数据提取单元142提取该非临时变量的操作数以及与该非临时变量的操作数关联的操作符。
需要说明的是,在所述数据提取单元142获取原始代码信息的名称信息之前,所述信息处理装置1需要根据原始代码信息生成反馈信息,生成反馈信息的过程与现有技术相同,在此不进行赘述。所述数据提取单元142从所述反馈信息中提取所确定的条件语句的执行概率和所述函数的执行次数。
信息生成单元143,用于根据所述原始代码信息的名称信息和所述条件数据生成条件反馈信息;
具体实现中,所述信息生成单元143根据所提取的所述原始代码信息的函数中的条件语句、操作数、操作符,以及根据所述原始代码信息的所述反馈信息中提取的所述条件语句的执行概率和所述函数的执行次数,生成所述条件反馈信息。
优选的,所述信息生成单元143在生成条件反馈数据的时候,可以每提取完所述原始代码信息中的一个文件就进行一次条件数据的写入操作,也可以每提取完所述原始代码信息中的一个函数就进行一次条件数据的写入操作,当所述原始代码信息中所有文件或所有函数都完成写入操作后,生成条件反馈信息。
解析获取模块11,用于解析条件反馈信息,获取所述条件反馈信息中的原始代码信息的条件数据;
具体实现中,当需要对当前代码信息进行反馈式编译优化时,所述解析获取模块11解析预先生成的条件反馈信息,获取所述条件反馈信息中的原始代码信息的条件数据和所述原始代码信息的名称信息。
匹配模块12,用于将所述条件数据匹配至当前代码信息的控制流图的分支中;
具体实现中,所述匹配模块12将所述解析获取模块11解析得到的所述条件数据匹配至当前代码信息的控制流图的分支中,进一步的,所述匹配模块12在当前代码信息中获取与所述原始代码信息的名称信息对应的函数,在所获取的所述当前代码信息的函数的控制流图中匹配出所述条件数据对应的分支,将所述条件数据中的所述条件语句的执行概率分配至匹配后的所述分支中。
其中,所述当前代码信息的控制流图为所述当前代码信息中函数的抽象表示,所述分支为所述控制流图中的边。
具体的,请一并参见图7,为本发明实施例提供了匹配模块的结构示意图。如图7所示,所述匹配模块12可以包括:
函数获取单元121,用于在当前代码信息中获取与所述原始代码信息的名称信息对应的函数;
具体实现中,所述函数获取单元121根据所述解析获取模块11解析出的所述原始代码信息的名称信息,在所述当前代码信息中获取对应的函数。
匹配单元122,用于在所获取的所述当前代码信息的函数的控制流图中匹配出所述条件数据对应的分支;
具体实现中,所述匹配单元122根据所述条件数据中的条件语句、操作数、操作符在所获取的所述当前代码信息的函数的控制流图中匹配出所述条件数据对应的分支。
分配单元123,用于将所述条件数据中的所述条件语句的执行概率分配至匹配后的所述分支中;
具体实现中,所述分配单元123将所述条件数据中的所述条件语句的执行概率分配至匹配后的所述分支中,优选的,所述分配单元123将所述条件数据中的所述条件语句的执行概率标记在匹配后的所述分支中。
计算模块13,用于采用匹配后的所述分支的条件数据,计算所述当前代码信息的执行信息,所述当前代码信息的执行信息包括所述控制流图的基本块的执行次数和所述控制流图的分支的执行次数;
具体实现中,所述基本块为所述控制流图的节点,所述分支表达所述基本块之间的控制流走向,所述计算模块13采用匹配后的所述分支的条件数据,对所述当前代码信息的执行信息进行计算,进一步的,所述计算模块13根据匹配后的所述分支的所述条件语句的执行概率,计算所述控制流图的基本块的频率,再根据所述函数的执行次数和所述控制流图的基本块的频率,计算所述当前代码信息的执行信息,所述当前代码信息的执行信息包括所述控制流图的基本块的执行次数和所述控制流图的分支的执行次数。
进一步的,所述计算模块13根据所述执行信息生成所述当前代码信息的优化的可执行程序。
具体的,请一并参见图8,为本发明实施例提供了计算模块的结构示意图。如图8所示,所述计算模块13可以包括:
频率计算单元131,用于根据匹配后的所述分支的所述条件语句的执行概率,计算所述控制流图的基本块的频率;
具体实现中,所述基本块为所述控制流图的节点,所述分支表达所述基本块之间的控制流走向,所述频率计算单元131根据匹配后的所述分支的所述条件语句的执行概率,计算所述控制流图的基本块的频率,计算过程可以与现有技术相同,在此不进行赘述。
信息计算单元132,用于根据所述函数的执行次数和所述控制流图的基本块的频率,计算所述当前代码信息的执行信息,所述当前代码信息的执行信息包括所述控制流图的基本块的执行次数和所述控制流图的分支的执行次数;
具体实现中,所述信息计算单元132根据所述函数的执行次数和所述控制流图的基本块的频率,计算所述当前代码信息的执行信息,所述当前代码信息的执行信息包括所述控制流图的基本块的执行次数和所述控制流图的分支的执行次数。
进一步的,所述信息计算单元132根据所述执行信息生成所述当前代码信息的优化的可执行程序。
在本发明实施例中,通过将条件反馈信息中的原始代码信息的条件数据匹配至当前代码信息的控制流图的分支中,根据匹配后的分支的条件数据,计算当前代码信息的执行信息,以此完成对当前代码信息的反馈式编译优化,基于在代码演进的过程中,原始代码信息中的条件语句不会被轻易修改,因此采用的条件反馈信息所包括的条件数据,可以解除对代码行号、函数调用关系、控制流图等的依赖,并且通过延用现有的原始代码信息的反馈信息,在代码演进时,无需重复对反馈信息进行获取,同时利用原始代码信息的名称信息在当前代码信息中进行匹配,增加了匹配的准确性,提升了反馈式编译优化的易用性和性能,进而提高了对代码演进的效率。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可以用硬件实现,或固件实现,或它们的组合方式来实现。当使用软件实现时,可以将上述功能存储在计算机可读介质中或作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是计算机能够存取的任何可用介质。以此为例但不限于:计算机可读介质可以包括RAM、ROM、或其他光盘存储、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质。此外。任何连接可以适当的成为计算机可读介质。例如,如果软件是使用同轴电缆、光纤光缆、双绞线、数字用户线或者诸如红外线、无线电和微波之类的无线技术从网站、服务器或者其他远程源传输的,那么同轴电缆、光纤光缆、双绞线、数字用户线或者诸如红外线、无线和微波之类的无线技术包括在所属介质的定影中。如本发明所使用的,盘(Disk)和碟(disc)包括压缩光碟、激光碟、光碟、数字通用光碟、软盘和蓝光光碟,其中盘通常磁性的复制数据,而碟则用激光来光学的复制数据。上面的组合也应当包括在计算机可读介质的保护范围之内。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (10)
1.一种信息处理方法,其特征在于,包括:
获取原始代码信息的条件数据,并根据所述条件数据生成条件反馈信息;
解析条件反馈信息,获取所述条件反馈信息中的原始代码信息的条件数据;
将所述条件数据匹配至当前代码信息的控制流图的分支中;
采用匹配后的所述分支的条件数据,计算所述当前代码信息的执行信息,所述当前代码信息的执行信息包括所述控制流图的基本块的执行次数和所述控制流图的分支的执行次数;
其中,所述获取原始代码信息的条件数据,并根据所述条件数据生成条件反馈信息,包括:
获取原始代码信息的名称信息,所述名称信息包括所述原始代码信息中文件的文件名称和所述原始代码信息中函数的函数名称;
提取所述原始代码信息中函数的条件数据,所述条件数据包括条件语句、操作数、操作符、所述条件语句的执行概率和所述函数的执行次数;
根据所述原始代码信息的名称信息和所述条件数据生成条件反馈信息。
2.根据权利要求1所述的方法,其特征在于,所述将所述条件数据匹配至当前代码信息的控制流图的分支中,包括:
在当前代码信息中获取与所述原始代码信息的名称信息对应的函数;
在所获取的所述当前代码信息的函数的控制流图中匹配出所述条件数据对应的分支;
将所述条件数据中的所述条件语句的执行概率分配至匹配后的所述分支中。
3.根据权利要求2所述的方法,其特征在于,所述将所述条件数据中的所述条件语句的执行概率分配至匹配后的所述分支中,包括:
将所述条件数据中的所述条件语句的执行概率标记在匹配后的所述分支中。
4.根据权利要求2或3所述的方法,其特征在于,所述采用匹配后的所述分支的条件数据,对所述控制流图的执行信息进行计算,包括:
根据匹配后的所述分支的所述条件语句的执行概率,计算所述控制流图的基本块的频率;
根据所述函数的执行次数和所述控制流图的基本块的频率,计算所述当前代码信息的执行信息。
5.根据权利要求1所述的方法,其特征在于,所述当前代码信息与所述原始代码信息一致;或者,
所述当前代码信息为所述原始代码信息的演进代码。
6.一种信息处理装置,其特征在于,包括:
获取生成模块,用于获取原始代码信息的条件数据,并根据所述条件数据生成条件反馈信息;
解析获取模块,用于解析条件反馈信息,获取所述条件反馈信息中的原始代码信息的条件数据;
匹配模块,用于将所述条件数据匹配至当前代码信息的控制流图的分支中;
计算模块,用于采用匹配后的所述分支的条件数据,计算所述当前代码信息的执行信息,所述当前代码信息的执行信息包括所述控制流图的基本块的执行次数和所述控制流图的分支的执行次数;
其中,所述获取生成模块包括:
信息获取单元,用于获取原始代码信息的名称信息,所述名称信息包括所述原始代码信息中文件的文件名称和所述原始代码信息中函数的函数名称;
数据提取单元,用于提取所述原始代码信息中函数的条件数据,所述条件数据包括条件语句、操作数、操作符、所述条件语句的执行概率和所述函数的执行次数;
信息生成单元,用于根据所述原始代码信息的名称信息和所述条件数据生成条件反馈信息。
7.根据权利要求6所述的装置,其特征在于,所述匹配模块包括:
函数获取单元,用于在当前代码信息中获取与所述原始代码信息的名称信息对应的函数;
匹配单元,用于在所获取的所述当前代码信息的函数的控制流图中匹配出所述条件数据对应的分支;
分配单元,用于将所述条件数据中的所述条件语句的执行概率分配至匹配后的所述分支中。
8.根据权利要求7所述的装置,其特征在于,所述分配单元具体用于将所述条件数据中的所述条件语句的执行概率标记在匹配后的所述分支中。
9.根据权利要求7或8所述的装置,其特征在于,所述计算模块包括:
频率计算单元,用于根据匹配后的所述分支的所述条件语句的执行概率,计算所述控制流图的基本块的频率;
信息计算单元,用于根据所述函数的执行次数和所述控制流图的基本块的频率,计算所述当前代码信息的执行信息,所述当前代码信息的执行信息包括所述控制流图的基本块的执行次数和所述控制流图的分支的执行次数。
10.根据权利要求6所述的装置,其特征在于,所述当前代码信息与所述原始代码信息一致;或者,
所述当前代码信息为所述原始代码信息的演进代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310642254.9A CN103838571B (zh) | 2013-12-03 | 2013-12-03 | 一种信息处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310642254.9A CN103838571B (zh) | 2013-12-03 | 2013-12-03 | 一种信息处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103838571A CN103838571A (zh) | 2014-06-04 |
CN103838571B true CN103838571B (zh) | 2017-04-19 |
Family
ID=50802107
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310642254.9A Active CN103838571B (zh) | 2013-12-03 | 2013-12-03 | 一种信息处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103838571B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101271398A (zh) * | 2007-03-23 | 2008-09-24 | 北京大学 | 多路分支结构的识别方法 |
CN101488096A (zh) * | 2009-02-19 | 2009-07-22 | 上海交通大学 | 利用出入边关系的剖分信息构建超级块的方法 |
CN102495800A (zh) * | 2011-12-05 | 2012-06-13 | 北京邮电大学 | 循环语句中变量抽象取值的迭代求精方法 |
CN103207786A (zh) * | 2013-04-28 | 2013-07-17 | 中国人民解放军信息工程大学 | 渐进式智能回溯向量化代码调优方法 |
-
2013
- 2013-12-03 CN CN201310642254.9A patent/CN103838571B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101271398A (zh) * | 2007-03-23 | 2008-09-24 | 北京大学 | 多路分支结构的识别方法 |
CN101488096A (zh) * | 2009-02-19 | 2009-07-22 | 上海交通大学 | 利用出入边关系的剖分信息构建超级块的方法 |
CN102495800A (zh) * | 2011-12-05 | 2012-06-13 | 北京邮电大学 | 循环语句中变量抽象取值的迭代求精方法 |
CN103207786A (zh) * | 2013-04-28 | 2013-07-17 | 中国人民解放军信息工程大学 | 渐进式智能回溯向量化代码调优方法 |
Non-Patent Citations (1)
Title |
---|
"反馈式编译模式的研究和实现";杨夏;《中国优秀硕士学位论文全文数据库 信息科技辑》;20071215(第6期);第2.1、3.3、3.5节 * |
Also Published As
Publication number | Publication date |
---|---|
CN103838571A (zh) | 2014-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109189379A (zh) | 代码生成方法和装置 | |
CN108829378A (zh) | 一种应用软件的开发方法、装置及电子设备 | |
CN107729106A (zh) | 一种在应用程序组件间实现快速跳转的方法和装置 | |
CN104866985B (zh) | 快递单号识别方法、装置及系统 | |
CN103927314B (zh) | 一种数据批量处理的方法和装置 | |
CN105718289A (zh) | 一种组件关系建立方法及其设备 | |
CN111708557B (zh) | 更新配置文件的方法、设备及存储介质 | |
CN106896937A (zh) | 用于输入信息的方法和装置 | |
CN103412754A (zh) | 动态语言代码执行方法和装置 | |
CN104598570A (zh) | 资源的抓取方法及装置 | |
CN109191078A (zh) | 一种流程业务建模方法、装置及设备 | |
CN105224184A (zh) | 菜单动态调整的方法及装置 | |
CN109002282A (zh) | 一种在web页面开发中实现动画效果的方法和装置 | |
CN108021462B (zh) | 用于调用云服务的方法和装置 | |
CN109828759A (zh) | 代码编译方法、装置、计算机装置及存储介质 | |
CN108845864A (zh) | 一种基于spring框架的JVM垃圾回收方法和装置 | |
CN103838571B (zh) | 一种信息处理方法及装置 | |
CN107291521B (zh) | 编译计算机语言的方法和装置 | |
CN104320387A (zh) | 组件本地化定制方法、终端及服务器 | |
CN105278928A (zh) | Ivr对外接口配置方法及装置 | |
CN110362317B (zh) | 一种代码转换方法、装置和存储介质 | |
CN108984221B (zh) | 一种多平台用户行为日志的采集方法和装置 | |
CN109976763A (zh) | 一种代码处理方法、装置、电子设备及计算系统 | |
CN109558403A (zh) | 数据聚合方法及装置、计算机装置及计算机可读存储介质 | |
CN104199689A (zh) | 综合前端系统的安装方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |