[发明专利]用于控制流分析的方法和装置有效
申请号: | 201110461369.9 | 申请日: | 2011-12-30 |
公开(公告)号: | CN103186406A | 公开(公告)日: | 2013-07-03 |
发明(设计)人: | 刘峰;梁祺;陈沁悦;林鸿昌 | 申请(专利权)人: | 国际商业机器公司 |
主分类号: | G06F9/45 | 分类号: | G06F9/45 |
代理公司: | 中国国际贸易促进委员会专利商标事务所 11038 | 代理人: | 高青 |
地址: | 美国*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 控制 分析 方法 装置 | ||
技术领域
本发明涉及数据分析技术,更具体地说,涉及用于控制流分析的方法和设备。
背景技术
控制流分析(control flow analysis)是对计算机程序进行性能分析的一个重要环节。控制流分析的基础是计算机程序的各函数之间的调用关系。本领域技术人员可以理解,这里所说的函数,指的是能够独立完成一定功能的代码单元,在某些场合下也可以称为方法等。调用函数向被调用函数传递参数,被调用函数对所述参数进行计算,然后将计算结果返回给调用函数。通常将函数调用关系记录下来用函数调用树(Call Tree)来表示。在函数调用树中,父节点表示调用函数,子节点表示被调用函数。使用函数调用树来表示函数之间的调用关系有助于确定被频繁调用的函数以及CPU时间开销过高的函数,从而确定程序的性能瓶颈,进而改进程序的性能。例如,对频繁被调用的函数,可以采用更加复杂的优化算法进行优化,或减少调用次数。
如今的程序大多包含复杂的业务逻辑,其对应的函数调用树本身非常庞大。例如,企业级的应用程序通常包含超过10万的调用和超过200的调用层级。由于这类应用程序非常复杂,在真正的业务逻辑之外还存在很多辅助软件模块的“噪声”调用。对庞大的函数调用树进行分析需要花费大量的时间和精力。此外,现代应用程序往往基于复杂的框架(Framework),而应用的业务逻辑往往被封装在框架内部,难以对这些被封装的业务逻辑和框架进行分离,从而进行更准确的分析。
因此,需要一种方法来对函数调用树进行简化,从而使得函数调用树能够更好地用于控制流分析,发现可能的性能瓶颈。
发明内容
本发明实施例提供了用于控制流分析的方法和装置。
根据本发明实施例的用于控制流分析的方法包括:获取程序的原始函数调用树,其中所述原始函数调用树的节点表示函数,节点之间的父子关系表示调用关系;根据所述调用关系生成对应的函数支配树,其中函数支配树的节点表示函数,节点之间的父子关系表示支配关系,其中如果对第二函数的调用都由第一函数发起,则第一函数支配第二函数;根据所述函数支配树对所述原始函数调用树进行简化从而得到简化函数调用树。
根据本发明实施例的用于控制流分析的设备包括:获取装置,配置为获取程序的原始函数调用树,其中所述原始函数调用树的节点表示函数,节点之间的父子关系表示调用关系;生成装置,配置为根据所述调用关系生成对应的函数支配树,其中函数支配树的节点表示函数,节点之间的父子关系表示支配关系,其中如果对第二函数的调用都由第一函数发起,则第一函数支配第二函数;简化装置,配置为根据所述函数支配树对所述原始函数调用树进行简化从而得到简化函数调用树。
根据本发明实施例,可以简化用于控制流分析的调用树。
附图说明
图1是适于用来实现本发明实施方式的示例性计算系统100的框图。
图2是根据本发明实施例的用于控制流分析的方法的流程图。
图3(a)到图3(d)是根据本发明实施例的用于控制流分析的方法的处理示意图。
图4是根据本发明实施例的用于控制流分析的装置的框图。
具体实施方式
所属技术领域的技术人员知道,本发明的多个方面可以体现为系统、方法或计算机程序产品。因此,本发明的多个方面可以具体实现为以下形式,即,可以是完全的硬件、完全的软件(包括固件、驻留软件、微代码等)、或者本文一般称为“电路”、“模块”或“系统”的软件部分与硬件部分的组合。此外,本发明的多个方面还可以采取体现在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可用的程序码。
可以使用一个或多个计算机可读的介质的任何组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电的、磁的、光的、电磁的、红外线的、或半导体的系统、装置、器件或任何以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括以下:有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任何合适的组合。在本文件的语境中,计算机可读存储介质可以是任何包含或存储程序的有形的介质,该程序被指令执行系统、装置或者器件使用或者与其结合使用。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国际商业机器公司,未经国际商业机器公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110461369.9/2.html,转载请声明来源钻瓜专利网。