用于支援程序解析的方法、及其计算机程序以及计算机系统的制作方法

文档序号:6583714阅读:142来源:国知局
专利名称:用于支援程序解析的方法、及其计算机程序以及计算机系统的制作方法
技术领域
本发明涉及用于支援程序解析的方法、及其计算机程序以及计算机系统。
背景技术
随着程序的巨型化,希望改善程序的性能(performance)。研发者采用的方法是通过目视调查执行频率(执行频度)高的方式(method),以此来作为进行程序的性能解析的方法。但是,如上所述,由于最近的程序巨型化,常见的情况是没有执行频率特别高的方式。上述方法的问题点之一是研发者以方式单位调查程序。 与此相对,还有收集程序中相似的代码、进行最优化解析的方法。可举出以下两个
方法来作为对程序中相似代码进行解析的方法。 A根据程序的执行特性来判定相似度的方法。 程序的执行特性,例如是CPI (Cycles Per Instruction :每条指令的平均时钟周期数)、指令的数目及分支的特性。
B基于源代码特性的方法。 源代码的特性例如是行数、变量的数目、运算符的数目。 作为基于源代码特性的方法,例如有将源代码按标记分割、将用户定义名和常数置换为特定记号、来检测一致部分的方法。该方法的代表例子是CCFinder。
下述非专利文献1记载CCFinder。在CCFinder中,按标记识别源代码,因此,能够与名字、常数值等参数的差异对应。在CCFinder中,不能对应逻辑上的差异。例如,在CCFinder中,在使用while循环来替换用for循环写的程序时,就被作为不同的逻辑处理。
非专利文献1 :神谷年洋,"-一卜"夕0—>企于>:/^一卜^:^^:用^^:識別子co k 'j工一 -〉g >企求& &手法co提案",online, 2008年5月30日,独立行政法人产业技术综合研究所,(2008年11月25日检索), 互联网〈URL :http:〃www. ccfinder. net/doc/vaci/sigss-20080530. pdf>。

发明内容
研发者进行程序的性能解析时,在采用方式单位的解析中,有时得不到预想效果。因此,寻求基于程序的脉络(context)可检测出相似逻辑的方法。 本发明提供一种用于将程序所含的算法分组化来支援该程序的解析的方法。该方法使计算机系统执行如下步骤。这些步骤包括 转换步骤,将上述算法转换为有向图,该有向图包括多个结点(节点)和连接该结点的边; 判定步骤,判定上述转换后的有向图是否与存储于计算机系统的存储部中的代表有向图相似,该代表有向图是属于上述组的有向图中的上述结点的数目最少的有向 决定步骤,根据上述是否相似的判定,从存储在上述存储部中的组中决定上述转换后的有向图所属的组。 在本发明的一实施方式中,上述判定步骤包括根据以下条件来判定上述转换后的
有向图与上述代表有向图相似的步骤,即,上述转换后的有向图包括至少2个以上的结点
且包括第一结点、第二结点和从上述第一结点至上述第二结点的路径,且上述代表有向图
包括至少2个以上的结点且包括第三结点、第四结点和从上述第三结点至上述第四结点的
路径,且上述第三结点与上述第一结点对应、上述第四结点与上述第二结点对应。 在本发明的一实施方式中,上述判定步骤包括根据以下条件来判定上述转换后的
有向图与上述代表有向图相似的步骤,即,上述转换后的有向图和上述代表有向图中的任
一方的有向图包含与另一方的有向图所包含的结点对应的全部结点,且上述另一方的有向
图所包含的结点之间的全部路径与上述一方的有向图所包含的结点之间的一部分或全部
路径对应。 在本发明的一实施方式中,上述判定步骤包括以下步骤计算判定为上述相似的上述转换后的有向图和上述代表有向图的相似度,在该相似度超过阈值时,判断为上述转换后的有向图和上述代表有向图相似。 在本发明的一实施方式中,计算上述相似度包含根据以下数目来进行计算被判定为上述相似的上述转换后的有向图和上述代表有向图双方所包含的相同结点以及该结点之间路径的至少一个的数目;和上述转换后的有向图或上述代表有向图中某一方所包含的结点以及以该结点为始点或终点的路径的至少一个的数目。 在本发明的一实施方式中,计算上述相似度包括通过Nl + (Nl+N2) X 100来计算
的方法,在此,Nl是被判定为上述相似的上述转换后的有向图和上述代表有向图双方所包
含的相同结点及该结点之间路径的至少一个的数目,N2是上述转换后的有向图或上述代表
有向图中某一方所包含的结点及以该结点为始点或终点的路径的至少一个的数目。 在本发明的一实施方式中,上述判定步骤包括将上述转换后的有向图和上述代表
有向图各自所包含的结点和边的至少一个转换为位映像的步骤、和根据上述位映像之间没
有包含关系来判定为不相似的步骤。 在本发明的一实施方式中,上述方法还包括计算步骤,该计算步骤根据存储在上述存储部中的上述被决定的组的执行频率和上述转换后的有向图的执行频率来计算组的执行频率。 在本发明的一实施方式中,上述计算步骤包含以下计算步骤根据由存储在上述存储部中的上述被决定的组的执行频率计算出的值和由上述转换后的有向图的执行频率计算出的值来计算上述组的执行频率。 在本发明的一实施方式中,上述方法还包括使计算机系统执行下述步骤。该步骤是对上述每一组显示与上述代表有向图对应的算法和该代表有向图所属的组的执行频率的显示步骤。 在本发明的一实施方式中,上述方法还包括使计算机系统执行下述步骤。该步骤是对上述每一组按上述执行频率的降序显示与上述代表有向图对应的算法的显示步骤。
在本发明的一实施方式中,上述显示步骤还包括对每一上述组进一步显示与代表有向图对应的识别符的步骤。 在本发明的一实施方式中,上述方法还包括使计算机系统执行下述步骤。该步骤是登记步骤,根据上述转换后的有向图与上述代表有向图相似而将该转换后的有向图的执 行频率登记于上述被决定的组中。 在本发明的一实施方式中,上述方法还包括使计算机系统执行下述步骤。该步骤 是更新步骤,将上述转换后的有向图与属于上述被决定的组的上述代表有向图中的上述结 点的数目最少的有向图更新为属于上述被决定的组的上述代表有向图。 在本发明的一实施方式中,上述更新步骤还包括根据上述转换后的有向图不与上 述代表有向图相似而将上述转换后的有向图及该转换后的有向图的执行频率作为新组的 代表有向图和该新组的执行频率。 在本发明的一实施方式中,上述登记步骤还包括将上述新组的代表有向图和执行 频率存储在上述存储部中的步骤。 在本发明的一实施方式中,上述判定步骤进一步判定属于存储在上述存储部中的 第一组的代表有向图(以下称为第一代表有向图)与属于存储在上述存储部中的第二组的 代表有向图(以下称为第二代表有向图)是否相似。 在本发明的一实施方式中,还包括合并步骤,根据上述第一代表有向图与上述第 二代表有向图相似,而将上述第一组和上述第二组合并。 在本发明的一实施方式中,上述方法还包括使计算机系统执行下述步骤。该步骤 包括合并步骤和计算步骤,该合并步骤是根据上述第一代表有向图与上述第二代表有向图 相似而将上述第一组和上述第二组合并,并将上述第一代表有向图和上述第二代表有向图 中的上述结点数最少的代表有向图作为属于合并后的组的代表有向图,该计算步骤基于上 述第一组的执行频率和上述第二组的执行频率而计算上述合并后的组的执行频率。
在本发明的一实施方式中,上述方法还包括使计算机系统执行下述步骤。该步骤 包括合并步骤,根据上述组的数目达到预定值,将存储在上述存储部中的第一组和第二组 合并。 在本发明的一实施方式中,还包括删除步骤,根据上述组的数目达到预定值,从上 述存储部删除组的执行频率最小的组。 在本发明的一实施方式中,上述方法还包括使计算机系统执行下述步骤。该步骤 是,上述转换步骤还包括将上述有向图进一步转换为上述算法的步骤。 本发明还提供一种用于将程序中包含的算法分组化来支援该程序解析的方法。该 方法使计算机系统执行如下步骤。该步骤包括 转换步骤,将上述算法转换为有向图,该有向图包括多个结点和连接该结点的 边; 判定步骤,判定上述转换后的有向图是否与存储于计算机系统的存储部中的代表 有向图相似,该代表有向图是属于上述组的有向图中的上述结点的数目最少的有向图;
决定步骤,根据上述是否相似的判定,从存储在上述存储部中的组中决定上述转 换后的有向图所属的组; 计算步骤,基于存储在上述存储部中的上述被决定的组的执行频率和上述转换后 的有向图的执行频率来计算组的执行频率; 显示步骤,对上述每一组显示与上述代表有向图对应的算法和该代表有向图所属 的组的执行频率。
本发明还提供一种计算机程序,用于使计算机系统执行上述方法中任一项所述的 方法的各步骤。 本发明还提供一种用于将程序中包含的算法分组化来支援该程序解析的计算机 系统。该计算机系统包括 转换部,将上述算法转换为有向图,该有向图包括多个结点和连接该结点的边;
存储部,用于存储属于至少一个组的至少一个有向图; 判定部,判定上述转换后的有向图是否与代表有向图相似,该代表有向图是属于 上述组的有向图中的上述结点的数目最少的有向图; 决定部,根据上述是否相似的判定,从存储在上述存储部中的组中决定上述转换 后的有向图所属的组。 在本发明的一实施方式中,上述判定部根据以下条件来判定上述转换后的有向图 与上述代表有向图相似,即,上述转换后的有向图包括至少2个以上的结点且包括第一结 点、第二结点和从上述第一结点至上述第二结点的路径,且上述代表有向图包括至少2个 以上的结点且包括第三结点、第四结点和从上述第三结点至上述第四结点的路径,且上述 第三结点与上述第一结点对应、上述第四结点与上述第二结点对应。 在本发明的一实施方式中,上述判定部根据以下条件来判定上述转换后的有向图
与上述代表有向图相似,即,上述转换后的有向图和上述代表有向图中的任一方的有向图
包含与另一方的有向图所包含的结点对应的全部结点,且上述另一方的有向图所包含的结
点之间的全部路径与上述一方的有向图所包含的结点之间的一部分或全部路径对应。 在本发明的一实施方式中,上述判定部计算判定为上述相似的上述转换后的有向
图和上述代表有向图的相似度,在该相似度超过阈值时,判断为上述转换后的有向图和上
述代表有向图相似。 在本发明的一实施方式中,计算上述相似度包含根据以下数目来进行计算被判 定为上述相似的上述转换后的有向图和上述代表有向图双方所包含的相同结点以及该结 点之间路径的至少一个的数目;和上述转换后的有向图或上述代表有向图中某一方所包含 的结点以及以该结点为始点或终点的路径的至少一个的数目。 在本发明的一实施方式中,计算上述相似度通过N1+(N1+N2) X100而求得,在
此,N1是被判定为上述相似的上述转换后的有向图和上述代表有向图双方所包含的相同结
点及该结点之间路径的至少一个的数目,N2是上述转换后的有向图或上述代表有向图中某
一方所包含的结点及以该结点为始点或终点的路径的至少一个的数目。 在本发明的一实施方式中,上述判定部将上述转换后的有向图和上述代表有向图
各自所包含的结点和边的至少一个转换为位映像、并根据上述位映像之间没有包含关系来
判定为不相似。 在本发明的一实施方式中,上述计算机系统还包括计算部,基于存储在上述存储 部中的上述被决定的组的执行频率和上述转换后的有向图的执行频率来计算组的执行频率。 在本发明的一实施方式中,上述计算部根据由存储在上述存储部中的上述被决定 的组的执行频率计算出的值、和由上述转换后的有向图的执行频率计算出的值,来计算上 述组的执行频率。
在本发明的一实施方式中,上述计算机系统还包括显示与上述代表有向图对应的 算法和该代表有向图所属的组的执行频率的显示部。 在本发明的一实施方式中,上述计算机系统还包括按上述执行频率的降序显示与 上述代表有向图对应的算法的显示部。 在本发明的一实施方式中,上述显示部对每一上述组进一步显示与代表有向图对 应的识别符。 在本发明的一实施方式中,上述计算机系统还包括登记部,根据上述转换后的有 向图与上述代表有向图相似而将该转换后的有向图的执行频率登记于上述被决定的组中。
在本发明的一实施方式中,上述计算机系统还包括更新部,将上述转换后的有向 图与属于上述被决定的组的上述代表有向图中的上述结点的数目最少的有向图更新为属 于上述被决定的组的上述代表有向图。 在本发明的一实施方式中,上述登记部还根据上述转换后的有向图不与上述代表 有向图相似而将上述转换后的有向图及该转换后的有向图的执行频率作为新组的代表有 向图和该新组的执行频率。 在本发明的一实施方式中,上述登记部还将上述新组的代表有向图和执行频率存 储于上述存储部。 在本发明的一实施方式中,上述判定部进一步判定上述第一代表有向图与上述第 二代表有向图是否相似。 在本发明的一实施方式中,还包括合并部,根据上述第一代表有向图与上述第二 代表有向图相似,而将上述第一组和上述第二组合并。 在本发明的一实施方式中,上述合并部根据上述第一代表有向图与上述第二代表 有向图相似而将上述第一组和上述第二组合并,并将上述第一代表有向图和上述第二代表 有向图中的上述结点数最少的代表有向图作为属于合并后的组的代表有向图,上述计算部 基于上述第一组的执行频率和上述第二组的执行频率而计算上述合并后的组的执行频率。
在本发明的一实施方式中,还包括合并部,根据上述组的数目达到预定值,将存储 在上述存储部中的第一组和第二组合并。 在本发明的一实施方式中,还包括删除部,根据上述组的数目达到预定值,从上述 存储部删除组的执行频率最小的组。 在本发明的一实施方式中,上述转换部将上述有向图进一步转换为上述算法。
根据本发明的实施方式,基于程序的脉络提取出相似的逻辑。利用该提取,将会极 大地有助于研发者进行程序的性能解析。


图1A表示本发明的实施方式、即由算法转换而来的有向图的一例子。 图1B表示本发明的实施方式、即有向图之间相似的例子。 图1C表示本发明的实施方式的含有分支的有向图之间的相似判定的例子。 图1D表示本发明的实施方式的含有循环的有向图之间的相似判定的例子。 图2是表示本发明的实施方式的系统构成图的例子。 图3A表示本发明的实施方式的用于支援程序解析的流程图的例子。
图3B表示本发明的实施方式的分割解析处理来进行处理时的流程图的例子。 图4A表示本发明的实施方式的输入信息的程序的例子。 图4B表示本发明的实施方式的将循环转换为有向图的例子。 图4C表示本发明的实施方式的显示结果的例子。 图5表示本发明的实施方式的位映像的例子。 图6表示本发明的实施方式的计算机硬件的框图。
具体实施例方式
在本发明的实施方式中,"算法"是用于达成某一特定目的的处理顺序。该处理顺 序使用代码记述。在本发明的实施方式中,"算法"也包括上述代码的一部分。代码的一部 分例如包括形成循环的代码和形成条件分支的代码。形成循环的代码例如是for和while。 形成条件分支的代码例如是if和case。 在本发明的实施方式中,"将算法分组化"是指汇总构造相似的代码而将其分组 化。上述组由构造体表示。上述构造体具有代表组的有向图(以下称为代表有向图)和组 的执行频率作为要素。并且,上述构造体可以具有属于组的所有有向图作为选项要素。在 本发明的实施方式中,将上述组的集合称为分组表。 在本发明的实施方式中,"有向图"是指具有结点和连结该结点的边的图。该边有 方向,表示结点之间的迁移方向。上述算法转换为有向图。另外,结点和边与上述算法所 包含的什么相对应,这根据有向图的种类不同而不同。有向图例如包括控制流程图(CFG: Controlflow graph)、抽象语法树(AST-Abstract syntax tree)以及程序依赖图(PDG : Program d印endence graph)。控制流程图是表示执行程序时可通过的所有路径的有向图。 关于控制流程图的详细说明,可参照以下URL (URL :http: 〃 ia. wikipedia. org/wiki/ % E5% 88% B6% E5% BE% Al % E3% 83% 95% E3% 83% AD% E3% 83% BC% E3% 82% B0% E3% 83% A9% E3% 83% 95)。 抽象语法树是带有限标签的树结构。关于抽象语法树的详细说明可参照以下 URL (URL :http: 〃 ia. wikipedia. org/wiki/ % E6 % 8A % BD % E8 % Bl % Al % E6 % A7 % 8B% E6% 96% 87% E6% 9C% A8)。 程序依赖图是为了对程序中的依赖关系进行层次分析而设计的有向图。结点例如 表示语句、谓词表达、运算符或操作数。边例如表示附随于结点的操作要求数据的值或/和 执行要求的控制状况。关于程序依赖图的详细说明,可参照下述文献(Jea皿e Ferrante et al, 〃 Th印rogr咖d印endencegr即h and its use in optimization,ACM Transactionson Programming Languagesand Systems" , TOPLAS, Vol. 9, No. 3, pages319–349, July 1987)。 在本发明的实施方式中,"代表有向图"是指代表上述有向图的所属的组的有向
图。上述代表有向图是属于上述组的有向图中的上述结点数最少的有向图。 在本发明的实施方式中,"相似"是指两个有向图都具有预定特征。在本发明的一
实施方式中,第一有向图包括第一结点和第二结点、以及自上述第一结点到上述第二结点
的路径,第二有向图包括第三结点和第四结点、以及自上述第三结点到上述第四结点的路
径,且在上述第三结点对应上述第一结点、上述第四节点对应上述第二结点时,上述第一有向图和上述第二有向图相似。具有上述路径是指例如在上述第一有向图中,自上述第一结
点按照边所指示的方向寻找结点,则寻找到上述第二结点。在此,没有必要将上述第一结点
和上述第二结点直接连结。例如,在自上述第一结点到第五结点存在路径、且自上述第五结
点到上述第二结点存在路径时,也存在自上述第一结点到上述第二结点的路径。 上述结点对应是指结点的性质相同。在本发明的实施方式中,若结点的性质相同,
则对应的结点可视为相同结点。结点的性质是指例如结点是与变量对应时的数据型。即使
与变量对应的两个结点的变量名不同,只要数据型相同,则两个结点可视为相同结点。相
反,若变量名相同而数据型不同,两个结点可视为不同的结点。 在本发明的实施方式中,所谓"相似度"是表示两个有向图如何相似的程度。相似 度仅在两个有向图满足前段所述的相似条件时有效。相似度根据如下数目而求得,即,上述 相似的两个有向图双方所包含的相同结点以及该结点之间的路径的至少一个的数目、与上 述相似的两个有向图中某一方所包含的结点及以该结点为始点或终点的路径的至少一个 的数目。 例如,上述相似度可以通过N1+(N1+N2)X100而求得。在此,N1是上述相似的两 个有向图双方所包含的相同结点以及该结点之间的路径的至少一个的数目。N2是上述相 似的两个有向图中某一方所包含的结点及以该结点为始点或终点的路径的至少一个的数 目。例如上述相似的两个有向图双方所包含的相同结点是2个,上述两个结点之间的路径 是1个,上述相似的两个有向图中某一方所包含的结点是1个,以上述一个结点为始点或终
点的路径是2个。于是,着眼于结点时的相似度是2+ (2+1) xi00 —66.7。着眼 于路径时的相似度是l + (1+2) x 100 — 33.3。着眼于结点和路径时的相似度是
3 + ( 3 + 3 ) x 100 — 50。在另一例子中,上述相似度是用上述相似的两个有向图双 方包含的结点总和除以上述相似的两个有向图所包含的所有结点总和的值,再乘以ioo而 得到的值。 在本发明的实施方式中,相似度为阈值以下时,可以将上述相似的两个有向图作 为"不相似"处理。在此,相似度例如是着眼于上述结点时的相似度。此时,在上述两个有
向图所包含的结点个数较多时,上述阈值可设定为70 80%,在上述结点数较少时,上述 阈值可设定为50 60%。 在与上述不同的本发明另一实施方式中,也可以按照例如上述非专利文献1所记 载那样的以往的方法来判定上述相似。 在本发明的实施方式中,"执行频率"是指在执行程序时,使用了上述算法的处理 被执行的频率。在本发明的一实施方式中,执行频率可以利用根据脚本或静态技术(编译 程序)取得的值而求得。根据脚本或静态技术求出执行频率的方法可参照下述文献2(Tim A. Wagner, et al. , 〃 Accurate static estimators for program optimization" , ACM 1994)。在本发明的另一实施方式中,也可以基于程序的试行结果,根据用户估算而决定执 行频率。 在本发明的实施方式中,"执行频率"例如可根据脚本或静态技术而估算出。脚 本通过在结局处所使用的程序和执行该程序而得到。例如,以下URL表示GNU的编译程序 组、即GNU Compiler Collection(GCC)中的上述脚本的例子(URL :http:〃gcc. gnu. org/
11onlinedocs/gccint/Profile-information. html)。基于静态技术的估算可通过检查程序 结构、例如检查循环嵌套(loop nest)的结构、并使用该信息来预测动态动作的因素而得 到。 在本发明的实施方式中,"组的执行频率"是根据属于上述组的有向图的执行频率 而求得的值。上述组的执行频率例如是属于上述组的有向图的执行频率的总和。若属于上 述组的有向图例如是执行频率为10的第一有向图和执行频率为50的第二有向图,则上述 组的执行频率是60。在另一例子中,上述组的执行频率是对属于上述组的有向图的执行频 率乘以系数而计算总和的。若属于上述组的有向图例如是执行频率为10的第一有向图和 执行频率为50的第二有向图,且上述系数为0. 5,则上述组的执行频率是30。
以下,参照

本发明的实施方式。本实施方式是用于说明本发明的优选实 施方式,可理解为本发明的保护范围并不受在此所示的实施方式限定。在以下的附图中,只 要没有特别限定,相同附图标记表示相同对象。 图1A表示本发明的实施方式、即由算法转换而来的有向图的一例子。
有向图100包括开始结点101、结点A102A、结点B102B、结束结点103和边104。开 始结点101表示有向图100的开始。开始结点101对应上述算法的开始。算法转化为有向 图时,有时不生成所对应的开始结点。结点A102A和结点B102B分别表示有向图100的处 理的归总。结点A102A和结点B102B与上述算法所包含的什么相对应,这因有向图的种类 不同而不同。结束结点103表示有向图100的结束。结束结点103与上述算法的结束相对 应。在算法转换为有向图时,有时不生成对应的结束结点。边104表示结点之间相连和相 连的方向。边104与上述算法所包含的什么相对应,这因有向图的种类不同而不同。在有 向图100中,开始结点101和结点A102A是自开始结点101向结点A102A的方向相连。结 点A102A和结点B102B是自结点A102A向结点B102B的方向相连。结点B102B和结束结点 103是自结点B102B向结束结点103的方向相连。
图1B表示本发明的实施方式、即有向图之间的相似的例子。 有向图111包括结点X和结点Y。结点X和结点Y由自结点X向结点Y方向的边 连接。因此,有向图111包括自结点X向结点Y的路径。 有向图112包括结点X、结点Y和结点Z。结点X和结点Y由自结点X向结点Y方 向的边连接,结点Y和结点Z由自结点Y向结点Z方向的边连接。因此,有向图112中能 够按结点X、结点Y和结点Z的顺序寻找结点。有向图112包括自结点X向结点Y的路径。 因此,有向图111所包含的所有结点(结点X和结点Y)和其路径(自结点X向结点Y的路 径)被有向图112所包含。因此,有向图112和有向图111相似。 有向图113包括结点X、结点Z和结点Y。结点X和结点Z由自结点X向结点Z方 向的边连接。结点Z和结点Y由自结点Z向结点Y方向的边连接。因此,有向图113中能 够按结点X、结点Z和结点Y的顺序寻找结点。有向图113包括自结点X向结点Y的路径。 在此,有向图111所包含的所有结点(结点X和结点Y)和其路径(自结点X向结点Y的路 径)被有向图113所包含。因此,有向图113和有向图111相似。 有向图114包括结点Y、结点Z和结点X。结点Y和结点Z由自结点Y向结点Z方 向的边连接,结点Z和结点X由自结点Z向结点X方向的边连接。因此,有向图114中能够 按结点Y、结点Z和结点X的顺序寻找结点。有向图114包括自结点Y向结点X的路径,而不包括自结点X向结点Y的路径。因此,有向图114和有向图lll不相似。
如此,有向图112和有向图113都与有向图lll相似。但是,有向图112和有向图 113不相似,这是因为,有向图112不包含有向图113所包含的自结点Z向结点Y的路径,有 向图113不包含有向图112所包含的自结点Y向结点Z的路径。 在上述例子中,两个有向图中的任一方的有向图包含与另一方的有向图所包含的 结点相对应的所有结点、且上述另一方的有向图所包含的结点之间的所有路径与上述一方 的有向图所包含的结点之间的一部分或全部路径对应时,则判断为相似。在此,上述一方的 有向图包含至少2以上的结点,并包含第一结点、第二结点及从上述第一结点至上述第二 结点的路径,而上述另一方的有向图包含至少2以上的结点,并包含第三结点、第四结点及 从上述第三结点至上述第四结点的路径,在这种情况下若上述第三结点与上述第一结点对 应、上述第四结点与上述第二结点对应,则也可以判断为相似。例如,有向图112及有向图 113包含结点X、结点Y和结点Z。并且,有向图112和有向图113包括自结点X向结点Y的 路径和自结点X向结点Z的路径。因此,有向图112和有向图113也可以判断为相似。根 据该相似判断,例如在结点之间的所有路径不对应的情况下,判断为对应路径数目较多的 有向图相似,从而可防止相似的有向图为0。 图1C表示本发明的实施方式的含有分支的有向图之间的相似判定的例子。
有向图115包含结点X、结点Y和结点Z。结点X和结点Z由自结点X向结点Z方 向的边连接,结点Y和结点Z由自结点Y向结点Z方向的边连接。因此,有向图115包括自 结点X、结点Y分别向结点Z的路径。有向图116包含结点X和结点Z。结点X和结点Z由 自结点X向结点Z方向的边连接。有向图116包括自结点X向结点Z的路径。因此,有向 图116所包含的全部结点(结点X和结点Z)和其路径(自结点X向结点Z的路径)被有 向图115包含。因此,有向图116与有向图115相似。有向图117包含结点Z、结点X和结 点Y。结点Z和结点X由自结点Z向结点X方向的边连接,结点Z和结点Y由自结点Z向结 点Y方向的边连接。因此,有向图117包括自结点Z向结点X、结点Y的路径。在此,有向图 117不包含自结点X、结点Y分别向结点Z的路径,有向图115不包含自结点Z向结点X和 自结点Z向结点Y的路径。因此,有向图117与有向图115不相似。有向图118包含结点 W、结点X、结点Y和结点Z。结点W和结点Z由自结点W向结点Z方向的边连接,结点X和 结点Z由自结点X向结点Z方向的边连接,结点Y和结点Z由自结点Y向结点Z方向的边 连接。因此,有向图118包括自结点W Y向结点Z的路径。有向图115所包含的全部结 点(结点X Z)和其路径(自结点X向结点Z的路径及自结点Y向结点Z的路径)被有 向图118包含。因此,有向图118与有向图115相似。 图1D表示本发明的实施方式的含有循环的有向图之间的相似判定的例子。
有向图119包含结点X、结点Y和结点Z。结点X和结点Y由自结点X向结点Y方 向的边连接,结点Y和结点Z由自结点Y向结点Z方向的边连接,结点Z和结点X由自结点 Z向结点X方向的边连接。因此,有向图119中可按照结点X、结点Y、结点Z然后结点X、… (重复)的顺序寻找结点。因此,有向图119包括自结点X Z中任一结点向自结点X Z 中任一结点的路径。 有向图120包含结点Z、结点X和结点Y。结点Z和结点X由自结点Z向结点X方 向的边连接,结点X和结点Y由自结点X向结点Y方向的边连接,结点Y和结点Z由自结点Y向结点Z方向的边连接。因此,有向图120中可按照结点Z、结点X、结点Y然后结点Z、… (重复)的顺序寻找结点。因此,有向图120包括自结点X Z中任一结点向自结点X Z 中任一结点的路径。因此,有向图120和有向图119相似。 有向图121包含结点Z、结点Y和结点X。结点Z和结点Y由自结点Z向结点Y方 向的边连接,结点Y和结点X由自结点Y向结点X方向的边连接,结点X和结点Z由自结点 X向结点Z方向的边连接。因此,有向图121中可按照结点Z、结点Y、结点X然后结点Z、… (重复)的顺序寻找结点。因此,有向图121也包括自结点X Z中任一结点向自结点X Z中任一结点的路径。因此,有向图121和有向图119相似。 如此,含有循环的有向图中,循环所包含的结点与循环所包含的其它全部结点之 间存在路径。因此,循环所包含的结点全部相同。有向图119 121彼此全部相似。
图2是表示本发明的实施方式的系统构成图的例子。 计算机系统200包括转换部201、判定部202、决定部203、计算部204、显示部 205、登记部206、更新部207、合并部208、删除部209及存储部210。存储部210可以在上 述计算机系统200的内部也可以在外部。存储部210可以是连接于该计算机系统200的网 络上的存储装置或其它计算机系统内部的存储装置。存储部210保存组0 n(211)。
用户将程序和该程序中包含的解析对象的算法的执行频率作为计算机系统200 的输入信息212而输入。输入信息212可以预先保存在存储部210中。
转换部201将作为输入信息212而输入的程序内的解析对象的算法转换为有向 图。在此,执行该转换的计算机可以与执行以后处理的计算机分开。在该情况下,被转换的 有向图保存于存储部210。 判定部202从转换部201取得上述有向图。上述有向图保存于存储部210时,判定 部202从存储部210取得上述有向图。判定部202从存储部210取得组211。判定部202 判断上述转换而成的有向图与组211所包含的代表有向图是否相似。该判定部一直进行判 断,直到发现包含与上述有向图相似的代表有向图的组211、或对所有组211的相似性判断 结束为止。 决定部203从上述判定部202取得上述判断结果。决定部203从存储于存储部的 组中决定上述转换而成的有向图所属的组。 计算部204基于所决定的组的执行频率和上述转换而成的有向图的执行频率来 计算组的执行频率。计算部204例如在上述被决定的上述有向图所属的组的执行频率加上 作为输入信息212而输入的与上述有向图对应的算法的执行频率。 更新部207将上述转换而成的有向图及上述相似的代表有向图中的结点数目最 小的有向图更新为上述相似的代表有向图所属的组的新的代表有向图。登记部206将变更 后的上述决定了的有向图所属的组登记到存储部210。在此,登记部206可以将上述转换而 成的有向图加到上述所决定的有向图所属组中。 另外,在上述判断中,在未发现含有与上述有向图有相似性的代表有向图的组211 的情况下,登记部206将上述有向图作为新的组的代表有向图保存于存储部210。登记部 206将上述有向图的执行频率作为新组的执行频率保存于存储部210。
显示部205从存储部210取得组211。在本发明的一实施方式中,显示部205显示 与代表有向图对应的算法和该代表有向图所属的组的执行频率。显示部205还可以对每组按执行频率的顺序例如按执行频率的降序显示与代表有向图对应的算法。显示部205还可 以显示上述组中与代表有向图对应的识别符。 在本发明的另一实施方式中,显示部205显示组211所包含的代表有向图及执行 频率。该显示可以对所有组211进行,也可以对由用户或计算机系统任一方的选择的组211 进行。上述211具有属于组的所有图时,可以显示所有的上述图。显示部205还可以将上 述代表有向图及属于组的所有图转换为算法来显示。 合并部208从存储部取得组211,将具有相似性的组彼此合并。该合并例如在显示 部205执行上述显示之前或上述组211的数目达到预先设定的上限N(N为整数)时执行。
删除部209从存储部210中将组的执行频率较少的组删除。该删除例如在上述组 211的个数达到预先设定的上限N时执行。 图3A表示本发明的实施方式的用于支援程序解析的流程图的例子。
步骤301是循环处理的开始。 步骤301中,计算机系统从存储装置取得程序作为输入信息。该程序包含1个或 多个算法。该算法包含l个或多个循环或方式。计算机系统还接收该算法的执行频率。程 序包含多个算法时,计算机系统按每一算法接收执行频率。计算机系统可以接收由上述算 法转换而成的有向图所包含的结点的种类作为任意的输入信息。结点种类根据所使用的有 向图的种类的不同而不同。例如,所使用的有向图的种类为CFG或AST时,结点种类例如是 载入、存储和同步。计算机系统可以接收程序代码中通常使用的保留字或运算符等来代替 上述结点的种类。在后者的情况下,用户预先准备好记述了保留字和运算符分别与结点的 对应关系的对应表。计算机系统可以通过参照上述表而将保留字和运算符转换为上述结点 的种类。 计算机系统通过取得上述输入信息而对于上述程序中包含的作为解析对象的全 部算法执行步骤302 304。以下,以上述程序中包含的作为解析对象的算法为上述程序中 包含的方式内的循环结构的情况为例进行说明。在方式内不含有循环结构时,上述程序中 包含的作为解析对象的算法是方式自身。 在步骤302中,转换部将上述方式内的循环结构转换为有向图(以下称为图T)。 上述图T例如是按照CFG或AST由算法转换而成的图。上述方式内不包含循环结构时,转 换部将不包含该循环结构的方式转换为图T。后面会记述将包含上述循环结构的方式转换 为图T的方法及将不包含该循环结构的方式转换为图T的方法。 将结点的种类作为输入信息而输入到计算机系统时,转换部判断是否将包含上述 循环结构的方式或不包含该循环结构的方式转换为图T。在包含上述循环结构的方式或不 包含该循环结构的方式不包含转换为由上述结点的种类所指定的结点的对象时,转换部不 将包含上述循环结构的方式或不包含该循环结构的方式转换为图T。在上述图T不含有由 上述结点的种类所指定的结点时,转换部可以删除上述图T。 在步骤303中,判定部对代表属于分组表内各组的组的有向图(以下称为图P) 及图T,以双向应用后述的相位嵌入算法(TopologicalEmbedding Algorithm、以下、称为 TEA)。所谓双向应用是指如下两种执行方式,即, 一种是判定部对上述TEA的第一 自变量 指定图P,且对第二自变量指定图T(以下称为{P、T}),来应用TEA,另一种是判定部对上述 TEA的第一 自变量指定图T,且对第二自变量指定图P (以下称为{T、 P}),来应用TEA。
TEA是用于对设定为参数的两个图求出该两个图所包含的结点彼此之间关系的算 法。TEA的自变量接受第一参数和第二参数。对上述第一参数和第二参数设定有向图。TEA 判定设定为上述第一参数的有向图是否可嵌入上述第二参数。所谓可嵌入是指设定为上述 第二参数的有向图包含设定为上述第一参数的有向图所包含的全部结点,且上述全部结点 之间存在于设定为上述第一参数的有向图相同的路径。 关于TEA的详细说明可参考以下文献(James JianghaiFu, "DirectedGr即h Pattern Matching and Topological Embedding", Journalof Algorithms, Vol22, p 372-391,1997)。 判定部可以根据由TEA求出的结点之间的关系来求得相似度。结点也未必一定是
一一对应。在结点为一对多的情况下,判定部基于上述两个图双方所包含的相同结点数目
和上述两个图中某一方所包含的结点数目而求出相似度。在相似度小于阈值时,判定部可
以将作为TEA求出的结果的可嵌入这样的判定改变为不可嵌入这样的判定。 在步骤304中,最初,决定部基于由TEA求出的结果来决定图T所属的组。接着,
登记部、计算部和更新部更新上述分组表。 将{P、T}的组应用于TEA,结果判断为图P可嵌入图T时,计算部对图P所属的 组的执行频率增加输入信息所包含的图T的执行频率。并且,登记部将上述相加而成的执 行频率登记于图P所属的组。在此,登记部可以将图T登记于图P所属组的选项要素(all gr即h)中。 将{P、T}的组应用于TEA,结果判断为图P不可嵌入图T,且将{T、P}的组应用于 TEA,结果判断为图T可嵌入图P时,更新部将图P所属的组的图P置换为图T而更新组。计 算部对图P所属的组的执行频率增加输入信息所包含的图T的执行频率。并且,登记部将 上述相加而成的执行频率登记于图P所属的组。在此,登记部可以将图T登记于图P所属 组的选项要素(all graph)中。 将上述{P、 T}的组应用于TEA和将{T、 P}的组应用于TEA,结果判断为图P不可 嵌入图T且图T不可嵌入图P时,登记部将图T和图T的执行频率作为新组追加到分组表 中。 步骤305是作为循环处理的步骤301的结束。 在步骤306中,显示部相应于上述程序解析的结束或某些事件而进行以下的输出 处理。上述事件例如是用户操作键盘或操作鼠标进行了输入。在输出处理中,判定部进行 属于登记于分组表的各组的代表有向图彼此之间相似性判定。上述相似性判定可以是与步 骤303的判定相同的判定。在判定为代表有向图彼此相似时,合并部将判定为上述相似的 代表有向图所属的组(以下称为相似组)彼此合并。在此,属于上述相似组的代表有向图 中的结点数目最少的代表有向图成为上述合并后的组的代表有向图。属于上述相似组的全 部有向图的执行频率的总和值成为属于上述合并后的组的全部有向图的执行频率。属于上 述相似组的全部有向图成为属于上述合并后的组的有向图。显示部按上述组的执行频率将 分组表的各组分类。并且,显示部按照上述组的执行频率自高向低的顺序显示属于上述组 的要素。 图3B表示本发明的实施方式的分割解析处理来进行处理时的流程图的例子。
在本发明的实施方式中,可以将由计算机系统执行的解析程序分割为进行向上述图T转换的程序(以下称为第一程序)和判定相似性并显示组的程序(以下称为第二程 序)。该分割后的程序可以由不同的计算机来执行。 流程图310表示使用上述第一程序进行程序解析的流程图。步骤311是循环处理 的开始。在步骤311中,计算机系统接收程序和该程序中包含的作为解析对象的算法的执 行频率作为上述第一程序的输入信息。 计算机系统取得上述输入信息后,对上述程序中包含的作为解析对象的算法全部
执行步骤312 313。以下,以上述程序中包含的作为解析对象的算法为上述程序中包含的
方式内的循环结构的情况为例进行说明。在方式内不含有循环结构时,上述程序中包含的 作为解析对象的算法是方式自身。 在步骤312中,转换部将上述方式内的循环结构转换为有向图(以下称为图T)。 上述图T例如是按照CFG或AST由算法转换而成的图。上述方式内不包含循环结构时,转 换部将不包含该循环结构的方式转换为图T。后面会记述将包含上述循环结构的方式转换 为图T的方法及将不包含该循环结构的方式转换为图T的方法。将结点的种类作为输入信 息而输入到计算机系统时,转换部判断是否将包含上述循环结构的方式或不包含该循环结 构的方式转换为图T。在包含上述循环结构的方式或不包含该循环结构的上述方式不包含 转换为由上述结点的种类所指定的结点的对象时,转换部不将包含上述循环结构的方式或 不包含该循环结构的方式转换为图T。在上述图T不含有由上述结点的种类所指定的结点 时,转换部可以删除上述图T。 在步骤313中,登记部将上述图T和与该图T对应的执行频率登记于存储装置。
步骤314是作为循环处理的步骤311的结束。计算机系统对上述程序中包含的作 为解析对象的算法全部执行了步骤312 313后,上述第一程序结束。显示部可以在上述 结束之前例如在显示器或纸介质上输出上述图T。 流程图320表示用于使用上述第二程序进行程序解析的流程图。步骤321是循环 处理的开始。在步骤321中,计算机系统可以接收图T所包含的必要的结点的种类作为输 入信息。结点的种类根据图T的种类不同而不同。例如,所使用的有向图的种类为CFG或 AST时,结点种类例如是载入、存储和同步。计算机系统可以接收程序代码中通常使用的保 留字或运算符等来代替上述结点的种类。在后者的情况下,用户预先准备好记述了保留字 和运算符分别与结点的对应关系的对应表。计算机系统可以通过参照上述表而将保留字和 运算符转换为上述结点的种类。 计算机系统从存储装置取得在上述第一程序登记的图T和与该图T对应的执行频 率作为上述第二程序的输入信息。 计算机系统对上述取得的图T执行步骤322和323。但是,计算机系统对于不包含 上述输入选项所指定的上述结点种类的上述图T,不执行步骤322 323。
在步骤322中,判定部对代表属于分组表内各组的组的有向图(以下称为图P)及 上述图T,以双向应用后述的TEA。 在步骤323中,最初,决定部基于由TEA求出的结果来决定图T所属的组。接着, 登记部、计算部和更新部更新上述分组表。 将{P、T}的组应用于TEA,结果判断为图P可嵌入图T时,计算部对图P所属的组 的执行频率增加自上述存储部取得的图T所对应的执行频率。并且,登记部将上述相加而成的执行频率登记于图P所属的组。在此,登记部可以将图T登记于图P所属组的选项要 素(all gr即h)中。 将{P、T}的组应用于TEA,结果判断为图P不可嵌入图T,且将{T、P}的组应用于 TEA,结果判断为图T可嵌入图P时,更新部将图P所属的组的图P置换为图T而更新组。计 算部对图P所属的组的执行频率增加自上述存储部取得的图T所对应的执行频率。并且, 登记部将上述相加而成的执行频率登记于图P所属的组。在此,登记部可以将图T登记于 图P所属组的选项要素(all graph)中。 将上述{P、 T}的组应用于TEA和将{T、 P}的组应用于TEA,结果判断为图P不可 嵌入图T且图T不可嵌入图P时,登记部将与图T和图T对应的执行频率作为新组追加到 分组表中。 步骤324是作为循环处理的步骤321的结束。 在步骤325中,显示部相应于上述程序解析的结束或某些事件而进行以下的输出 处理。上述事件例如是用户操作键盘或操作鼠标进行了输入。 在输出处理中,判定部进行属于登记于分组表的各组的代表有向图彼此之间相似 性判定。上述相似性判定可以是与步骤322的判定相同的判定。在判定为代表有向图彼此 相似时,合并部将判定为上述相似的代表有向图所属的组(以下称为相似组)彼此合并。在 此,属于上述相似组的代表有向图中的结点数目最少的代表有向图成为上述合并后的组的 代表有向图。属于上述相似组的全部有向图的执行频率的总和值成为属于上述合并后的组 的全部有向图的执行频率。属于上述相似组的全部有向图成为属于上述合并后的组的有向 图。显示部按上述组的执行频率将分组表的各组分类。并且,显示部按照上述组的执行频 率自高向低的顺序显示属于上述组的要素。 图4A表示本发明的实施方式的输入信息的程序的例子。 输入信息的程序400包括方式1 (401)、方式2 (402)、方式3 (403)、方式4 (404)。方 式1(401)包含循环1 (411)。循环1(411)的执行频率是20。方式2(402)包含循环2(412)。 循环2(412)的执行频率是25。方式3(403)包含循环3(413)。循环3(413)的执行频率 是20。方式4(404)包含循环4(414)。循环4(414)的执行频率是5。如上所述,循环1 4(411 414)不是相同的循环。 计算机系统将方式1 4(401 404)所包含的循环1 4(411 414)转换为有 向图。在以下的例子中,计算机系统将循环1 4(411 414)转换为基于AST和CFG这 两种有向图的图。本发明的实施方式也可以是在仅对CFG的转换中实施。AST是有向树构 造。在上述AST中,是使运算符与上述树结构的节点对应,使关于该运算符的操作数与上述 树结构的叶对应。将上述AST做成有向图时,上述结点和叶分别作为结点。边从上述结点 指向叶的方向。 CFG是以图表示在执行程序时存在可通过性的所有路径。在上述CFG中,将不含分
支的处理的归总作为结点。并且,在上述CFG中,将成为整个图入口的开始及成为整个图出
口的结束分别作为结点。从上述处理向下一处理的迁移为边。 以下,表示将循环1 4(411 414)转换为基于AST的图的顺序。 计算机系统对循环1 4 (411 414)进行逐行详查。计算机系统在该详查中提取
出运算符和关于该运算符的操作数。例如计算机系统提取出上述详查的行所包含的运算。从存储器读出数据并向存储器保存数据、进行加减运算等的计算、对变量分配值以及if语句、for语句中的判定。计算机系统例如将与上述运算对应的程序语言中的保留字保存于存储部。计算机系统在该详查中,若发现了上述保存的保留字,则将上述发现的保留字和上述发现的保留字的操作数分别作为AST的结点。计算机系统将从上述发现的保留字的结点到上述发现的保留字的操作数的结点的方向引边。
以下,表示将循环1 4(411 414)转换为基于CFG的图的顺序。
在本例子中,利用与上述AST的节点对应的结点作为CFG的结点。计算机系统对循环1 4(411 414)进行逐行详查。在循环1 4(411 414)存在分支时,计算机系统对各个分支按执行的顺序进行详查。计算机系统在该详查中,当发现了转换为与上述AST的节点对应的结点的部位时,将上述发现的部位分别作为结点。计算机系统按照发现上述结点的顺序引边。而且,计算机系统自开始结点向在上述循环中最初发现的结点引边。计算机系统自与从循环脱离的处理和在循环的最后执行的处理相对应的结点向结束结点引边。
作为另外的转换顺序,计算机系统按执行的顺序对循环1 4(411 414)进行逐行详查。在上述循环存在分支时,计算机系统对各个分支按执行的顺序进行详查。计算机系统在该详查中提取出处理的归总。计算机系统例如提取出上述详查的行所包含的程序语言的保留字。计算机系统例如将上述保留字与上述处理的归总之间的对应关系保存于存储部。计算机系统在该详查中若发现存在上述对应关系的保留字,则将上述发现的保留字分别作为CFG的结点。计算机系统按发现上述结点的顺序引边。计算机系统自开始结点向在上述循环中最初发现的结点引边。计算机系统自与从循环脱离的处理和在循环的最后执行的处理的归总相对应的结点向结束结点引边。 图4B表示本发明的实施方式的将循环转换为有向图的例子。有向图1 4 (421 424)是按上述顺序将循环1 4 (图4A、411 414)转换而成的有向图。有向图1 4 (421 424)是基于AST和CFG这两种有向图的图。有向图1 4(421 424)中,用四边形所包围的结点表示在AST中表示运算符的结点和CFG的结点。表示在AST中关于运算符的操作数的结点用圆所包围的结点表示。AST的边用虚线箭头表示。CFG的边用实线箭头表示。
以下,表示将循环1 4(411 414)转换为有向图1 4(421 424)的顺序。
首先,说明将循环1 4(411 414)转换为基于AST的图的过程。
循环1(411)的第一行代码包括判定右侧的操作数是否大的运算。判定上述右侧操作数是否大的运算的对象是i和end。因此,计算机系统将判定上述右侧操作数是否大的运算("if <")作为与节点对应的结点。计算机系统将判定上述右侧操作数是否大的运算的对象即i和end分别作为与叶对应的结点。计算机系统自"if <"的结点向i结点和end结点引边。循环1 (411)的第二行代码包括从存储器读出排列array的第i个要素的运算、即读出运算("load")。因此,计算机系统将上述读出运算作为与节点对应的结点。计算机系统将作为上述读出运算对象的排列array和i分别作为与叶对应的结点。计算机系统自"load"结点向i结点和array结点引边。在此,循环1(411)的第二行代码还包括判定左右操作数是否相等的运算。判定上述左右操作数是否相等的运算的对象是上述读出运算的结果和常数0x0d。因此,计算机系统将判定上述左右操作数是否相等的运算("if ==")作为与节点对应的结点。计算机系统将判定上述左右操作数是否相等的运算的对象即上述读出运算的结果和常数OxOd分别作为与叶对应的结点。而且,计算机系统自"if =
19="的结点向表示上述运算结果的"load"的结点及0x0d的结点引边。 循环1(411)的第三行代码包括对i加1的运算即加法运算。因此,计算机系统将加法运算("add")作为与节点对应的结点。计算机系统将上述加法运算的对象即i和常数1分别作为与叶对应的结点。而且,计算机系统自"add"的结点向i结点及1结点引边。在此,循环1(411)的第三行代码还包括将上述加法运算的结果分配到i的运算即分配运算。上述分配运算的对象是上述加法运算的结果和i。因此,计算机系统将分配运算("assign")作为与节点对应的结点。计算机系统将上述分配运算的对象即上述加法运算的结果和i分别作为与叶对应的结点。而且,计算机系统自"assign"的结点向表示上述加法运算的"add"结点及i结点引边。 循环2(412)的第一行代码包括判定右侧的操作数是否大的运算。判定上述右侧操作数是否大的运算的对象是i和end。因此,计算机系统将判定上述右侧操作数是否大的运算("if <")作为与节点对应的结点。计算机系统将判定上述右侧操作数是否大的运算的对象即i和end分别作为与叶对应的结点。计算机系统自"if <"的结点向i结点和end结点引边。循环2(412)的第一行代码还包括对i加1的运算即加法运算。因此,计算机系统将加法运算("add")作为与节点对应的结点。计算机系统将上述加法运算的对象即i和常数1分别作为与叶对应的结点。而且,计算机系统自"add"的结点向i结点及l结点引边。在此,循环2(412)的第一行代码还包括将上述加法运算的结果分配到i的运算即分配运算。上述分配运算的对象是上述加法运算的结果和i。因此,计算机系统将分配运算("assign")作为与节点对应的结点。计算机系统将上述分配运算的对象即上述加法运算的结果和i分别作为与叶对应的结点。而且,计算机系统自"assign"的结点向表示上述加法运算的"add"结点及i结点引边。 循环2(412)的第二行代码包括将常数O保存于排列array 1的第i个要素的运算、即保存运算。因此,计算机系统将上述保存运算(第一"store")作为与节点对应的结点。计算机系统将作为上述保存运算对象的排列array 1和i、常数0分别作为与叶对应的结点。计算机系统自第一"store"结点向arrayl的结点、i结点和0结点引边。
循环2(412)的第三行代码包括将常数0保存于排列array2的第i个要素的运算、即保存运算。因此,计算机系统将上述保存运算(第二"store")作为与节点对应的结点。计算机系统将作为上述保存运算对象的排列array2和i、常数0分别作为与叶对应的结点。计算机系统自第二"store"结点向array2的结点、i结点和0结点引边。
循环3(413)的第一行代码包括判定右侧的操作数是否大的运算。判定上述右侧操作数是否大的运算的对象是i和end。因此,计算机系统将判定上述右侧操作数是否大的运算("if <")作为与节点对应的结点。计算机系统将判定上述右侧操作数是否大的运算的对象即i和end分别作为与叶对应的结点。计算机系统自"if <"的结点向i结点和end结点引边。循环3(413)的第二行代码包括对i加1的运算即加法运算。因此,计算机系统将加法运算("add")作为与节点对应的结点。计算机系统将上述加法运算的对象即i和常数1分别作为与叶对应的结点。而且,计算机系统自"add"的结点向i结点及1结点引边。在此,循环3(413)的第二行代码还包括将上述加法运算的结果分配到i的运算即分配运算。上述分配运算的对象是上述加法运算的结果和i。因此,计算机系统将分配运算("assign")作为与节点对应的结点。计算机系统将上述分配运算的对象即上述加法运算的结果和i分别作为与叶对应的结点。而且,计算机系统自"assign"的结点向表示上述加法运算的"add"结点及i结点引边。 循环3(413)的第三行代码包括从存储器读出排列array的第i个要素的运算、即读出运算。因此,计算机系统将上述读出运算("load")作为与节点对应的结点。计算机系统将作为上述读出运算对象的排列array和i分别作为与叶对应的结点。计算机系统自"load"结点向i结点和array结点引边。在此,循环3(413)的第三行代码还包括判定左右操作数是否相等的运算。判定上述左右操作数是否相等的运算的对象是上述读出运算的结果和常数0x0d。因此,计算机系统将判定上述左右操作数是否相等的运算("if ==")作为与节点对应的结点。计算机系统将判定上述左右操作数是否相等的运算的对象即上述读出运算的结果和常数OxOd分别作为与叶对应的结点。而且,计算机系统自"if =="的结点向表示上述运算结果的"load"的结点及0x0d的结点引边。 循环4(414)的第一行代码包括判定右侧的操作数是否大的运算。判定上述右侧操作数是否大的运算的对象是i和end。因此,计算机系统将判定上述右侧操作数是否大的运算("if <")作为与节点对应的结点。计算机系统将判定上述右侧操作数是否大的运算的对象即i和end分别作为与叶对应的结点。计算机系统自"if <"的结点向i结点和end结点引边。循环4(414)的第一行代码还包括对i加1的运算即加法运算。因此,计算机系统将加法运算("add")作为与节点对应的结点。计算机系统将上述加法运算的对象即i和常数1分别作为与叶对应的结点。而且,计算机系统自"add"的结点向i结点及l结点引边。在此,循环4(414)的第一行代码还包括将上述加法运算的结果分配到i的运算即分配运算。上述分配运算的对象是上述加法运算的结果和i。因此,计算机系统将分配运算("assign")作为与节点对应的结点。计算机系统将上述分配运算的对象即上述加法运算的结果和i分别作为与叶对应的结点。而且,计算机系统自"assign"的结点向表示上述加法运算的"add"结点及i结点引边。 循环4 (414)的第二行代码包括将常数0保存于排列array的第i个要素的运算、即保存运算。因此,计算机系统将上述保存运算(第一"store")作为与节点对应的结点。计算机系统将作为上述保存运算对象的排列array和i、常数0分别作为与叶对应的结点。计算机系统自第一 "store"结点向array的结点、i结点和0结点引边。
接着,说明将循环1 4(411 414)转换为基于CFG的图的过程。在此,CFG的结点与上述ASG中的节点所对应的结点是共用的结点。 在循环1(411)中,最初执行"if <"。因此,计算机系统自开始结点向"if <"结点引边。在此,若"if <"的结果是假,则循环结束。因此,计算机系统自"if <"结点向结束结点引边。 若"if 〈"的结果是真,则执行"load"。因此,计算机系统自"if 〈"结点向"load"结点引边。接着,执行"if =="。因此,计算机系统自"load"结点向"if =="结点引边。在此,若"if二二"的结果是真,则执行表示方式结束的return指令,由此循环结束。因此,计算机系统自"if =="结点向结束结点引边。若"if =="的结果是假,则执行"add"。因此,计算机系统自"if 二二"结点向"add"结点引边。接着执行"assign"。因此,计算机系统自"add"结点向"assign"结点引边。 当执行"assign"时,返回到循环的开头。因此,计算机系统自"assign"结点向"if <"结点引边。 在循环2(412)中,最初执行"if <"。因此,计算机系统自开始结点向"if <"结 点引边。在此,若"if <"的结果是假,则循环结束。因此,计算机系统自"if <"结点向结 束结点引边。若"if 〈"的结果是真,则执行第一"store"。因此,计算机系统自"if <"结 点向第一 "store"结点引边。接着,执行第二 "store"。因此,计算机系统自第一 "store" 结点向第二"store"结点引边。接着执行"add"。因此,计算机系统自第二"store"结点向 "add "结点引边。接着执行"ass i gn "。因此,计算机系统自"add "结点向"ass i gn "结点引 边。 当执行"assign"时,返回到循环的开头。因此,计算机系统自"assign"结点向 "if <"结点引边。 在循环3(413)中,最初执行"if <"。因此,计算机系统自开始结点向"if <"结 点引边。在此,若"if <"的结果是假,则循环结束。因此,计算机系统自"if <"结点向结 束结点引边。若"if 〈"的结果是真,则执行"add"。因此,计算机系统自"if <"结点向 "add"结点引边。接着执行"assign"。因此,计算机系统自"add"结点向"assign"结点引 边。接着执行"load"。因此,计算机系统自"assign"结点向"load"结点引边。接着,执行 "if =="。因此,计算机系统自"load"结点向"if =="结点引边。在此,若"if =="的 结果是真,则执行表示方式结束的return指令,由此循环结束。因此,计算机系统自"if = ="结点向结束结点引边。 若"if =="的结果是假,则返回到循环的开头。因此,计算机系统自"if =="结 点向"if <"结点引边。 在循环4(414)中,最初执行"if <"。因此,计算机系统自开始结点向"if <"结 点引边。在此,若"if <"的结果是假,则循环结束。因此,计算机系统自"if <"结点向结 束结点引边。 若"if <"的结果是真,则执行"store"。因此,计算机系统自"if <"结点向 "store "结点引边。接着执行"add"。因此,计算机系统自"store "结点向"add"结点引边。 接着执行"assign"。因此,计算机系统自"add"结点向"assign"结点引边。
当执行"assign"时,返回到循环的开头。因此,计算机系统自"assign"结点向 "if <"结点引边。 通过以上过程,循环1 4(411 414)被转换为有向图1 4(421 424)。
以上,以将上述输入信息的程序(图4A、400)作为输入的情况为例具体说明了本 发明的实施方式。作为分组表的选项的"属于组的所有图(以下称为所属图)"也登记于分 组表中。 最初,计算机系统将上述输入信息的程序400所包含的循环1 4(411 414)转 换为图来表现。在此,计算机系统将循环1 4(411 414)以基于AST和CFG这两种有向 图的图来表示。通过该转换,作成有向图1 4(421 424)。 接着,计算机系统自有向图1(421)起按顺序进行与各组的代表有向图是否相似 的判定。并且,计算机系统根据上述判定而将有向图1 4(421 424)登记于分组表中。 上述判定使用TEA。在此,有向图1 4(421 424)包含AST的边和CFG的边这两种边。 计算机系统对仅使用AST的边时的有向图和仅使用CFG的边时的有向图分别使用TEA。计
22算机系统在认定为仅使用AST的边时的有向图1 4和仅使用CFG的边时的有向图1 4
各自的有向图,分别与仅使用AST的边时的有向图和仅使用CFG的边时的有向图相似时,判
断为有向图与代表有向图相似。 以下,表示上述判定及登记的详细顺序。 在初始状态,分组表为空。因此,没有与有向图1(421)比较的代表有向图。因此, 计算机系统将有向图1(421)作为新的组的代表有向图而登记于分组表的第一行。计算机 系统还将上述循环1(411)的执行频率即20和有向图1(421)登记于分组表的第一行。分
组表的第一行的要素通过上述登记而成为如下所示。 分组表(1) 代表有向图有向图l 执行频率20 所属有向图有向图l 接着,计算机系统对有向图2(422)进行相似与否的判定。计算机系统比较有向 图2(422)和登记于分组表中的各代表有向图。在此比较的上述代表有向图是上述有向图 1(421)。计算机系统对该比较应用TEA。计算机系统将{有向图1、有向图2}的组应用于 TEA的参数来进行验证。由于有向图2(422)不包含有向图1(421)的全部结点,因此上述验 证的结果是失败。接着,计算机系统将{有向图2、有向图1}的组应用于TEA的参数来进 行验证。由于有向图1(421)不包含有向图2(422)的全部结点,因此上述验证的结果也是 失败。由此,计算机系统将有向图2(422)作为新的组的代表有向图而登记于分组表的第二 行。计算机系统还将上述循环2(412)的执行频率即25和有向图2(422)登记于分组表的
第二行。分组表的第二行的要素通过上述登记而成为如下所示。 分组表(2) 代表有向图有向图2 执行频率25 所属有向图有向图2 接着,计算机系统对有向图3(423)进行相似与否的判定。 计算机系统比较有向图3(423)和登记于分组表中的各代表有向图。在此比较的
上述代表有向图是上述有向图1(421)、有向图2(422)。最初,计算机系统比较上述有向图
3(423)和登记于上述分组表第一行的要素的代表有向图即有向图1(421)。计算机系统对
该比较应用TEA。计算机系统将{有向图1、有向图3}的组应用于TEA的参数来进行验证。
由于有向图3(423)包含有向图1(421)的全部结点且在上述全部结点之间具有与有向图
1(421)相同的路径,因此上述验证的结果是成功。另外,循环1(411)和循环3(413)不是同
一循环,是不同的算法。因此,计算机系统更新分组表的第一行的要素。该更新中,计算机
系统将上述循环3(413)的执行频率即20增加到分组表第一行要素的执行频率。而且,计
算机系统将有向图3(423)登记于分组表的第一行要素。 分组表的第一行的要素通过上述登记而成为如下所示。 分组表(1) 代表有向图有向图l 执行频率40
所属有向图有向图1、有向图3 由于有向图3(423)已登记于分组表中,因此,计算机系统不必对上述分组表的第
二行要素以后的代表有向图与有向图3(423)进行比较。 接着,计算机系统对有向图4(424)进行相似与否的判定。 计算机系统比较有向图4(424)和登记于分组表中的各代表有向图。在此比较的 上述代表有向图是上述有向图1(421)、有向图2(422)。最初,计算机系统比较上述有向图 4(424)和登记于上述分组表第一行的要素的代表有向图即有向图1(421)。计算机系统对 该比较应用TEA。计算机系统将{有向图1、有向图4}的组应用于TEA的参数来进行验证。 由于有向图4(424)不包含有向图1(421)的全部结点,因此上述验证的结果是失败。接着计 算机系统比较上述有向图4(424)和登记于上述分组表第二行的要素的代表有向图即有向 图2(422)。计算机系统对该比较应用TEA。计算机系统将{有向图2、有向图4}的组应用 于TEA的参数来进行验证。由于有向图4(424)不包含有向图2(422)的全部结点,因此上述 验证的结果是失败。接着计算机系统比较上述有向图4(424)和登记于上述分组表第 一行 的要素的代表有向图即有向图1(421)。计算机系统对该比较应用TEA。计算机系统将{有 向图4、有向图1}的组应用于TEA的参数来进行验证。由于有向图1(421)不包含有向图 4(424)的全部结点,因此上述验证的结果是失败。接着计算机系统比较上述有向图4(424) 和登记于上述分组表第二行的要素的代表有向图即有向图2(422)。计算机系统对该比较 应用TEA。计算机系统将{有向图4、有向图2}的组应用于TEA的参数来进行验证。由于 有向图2 (422)包含有向图4 (424)的全部结点且在上述全部结点之间具有与有向图4 (424) 相同的路径,因此上述验证的结果是成功。因此,计算机系统更新分组表的第二行的要素。 该更新中,计算机系统将分组表的第二行的要素的代表有向图置换为有向图4 (424)。而且, 计算机系统将上述循环4(414)的执行频率即5增加到分组表第二行要素的执行频率。而 且,计算机系统将有向图4(424)登记于分组表的第二行要素。
该分组表的第二行的要素通过上述登记而成为如下所示。
分组表(2)
代表有向图有向图4
执行频率30 所属有向图有向图2、有向图4 通过以上处理,上述有向图1 4(421 424)登记于分组表中。在上述有向图
1 4(421 424)的登记全部结束的时刻,分组表如下所示。 分组表(1) 代表有向图有向图l 执行频率40 所属有向图有向图1、有向图3 分组表(2) 代表有向图有向图4 执行频率30 所属有向图有向图2、有向图4 观察循环1 4(411 414)各自的单独的执行频率,则循环2 (412)的执行频率最大。但是,做归总看起来相似的循环来看,可得到这样的结果实际上循环1(411)和循环 3(413)那样的图案的循环的执行频率比其他图案的循环的执行频率大。这是通过将相似的 算法归总一起而得到是效果。 最后,计算机系统例如对上述分组表的每一要素以降序显示与代表有向图对应的 循环和执行频率。 图4C表示本发明的实施方式的显示结果的例子。 在上述登记全部结束的时刻的组,是登记于分组表(1)的组(以下称为第一组) 和登记于分组表(2)的组(以下称为第二组)这两个。在此,第一组的执行频率是40,第二 组的执行频率是30。因此,在以执行频率的降序显示组时,按组1然后是组2的顺序显示。
在显示例431中,第一行显示组1的执行频率,第二 五行显示与组1的代表有向 图即有向图1对应的算法。然后,第六行显示组2的执行频率,第七 九行显示与组2的代 表有向图即有向图1对应的算法。 在显示例432中,第一行显示与组1的代表有向图对应的识别符即"循环l",第二 行显示组1的执行频率,第三 六行显示与组1的代表有向图即有向图1对应的算法。第 七行显示与属于组1的有向图对应的识别符即"循环l"和"循环3",然后第八行显示与组 2的代表有向图对应的识别符即"循环4",第九行显示组2的执行频率,第十 十二行显示 与组2的代表有向图即有向图4对应的算法。第十三行显示与属于组1的有向图对应的识 别符即"循环2"和"循环4"。 通过以上显示,用户容易发现出现频率较高的循环的图案。并且,用户能够发现需 要优先最优化的程序。 在本发明的一实施方式中,计算机系统将有向图所包含的结点和边的至少一个表 现为位映像。在以下的例子中,将表示指令的结点表现为位映像。在此,表示指令的结点例 如是表示上述AST的运算符的结点或CFG的结点。 计算机系统在相似性判定中,最初调查上述位映像之间的包含关系。计算机系统 能够从应用TEA的对象的有向图的组中除去以没有包含关系的位映像表示的有向图的组。 由此,可縮短程序的解析时间。 图5表示本发明的实施方式的位映像的例子。表501是用位映像表现有向图1 4(图4B、421 424)所包含的表示指令的结点而成的。表501的行表示各有向图,表501 的列表示结点,该结点表示各指令。表501的各单元格在有向图包含表示指令的结点时设 定为l,在不包含表示指令的结点时设定为0。 例如,有向图421包含"if 〈"、"load"、"if = = "、"add"和"assign"。有向图 421不包含"store ,,。 计算机系统通过使用上述位映像而能够高速判定某一有向图(以下称为有向图 A)所包含的全部指令是否全部被其他有向图(以下称为有向图B)包含。
计算机系统为了上述高速判定而取有向图A的位映像和有向图B的位映像的逻辑 积(AND)。计算机系统比较上述有向图A的位映像和逻辑积结果的位映像。若上述有向图 A的位映像和逻辑积结果的位映像相同,则计算机系统判断为有向图A所包含的全部指令 已被有向图B包含。若上述有向图A的位映像和逻辑积结果的位映像不同,则计算机系统 判断为有向图A所包含的全部指令不被有向图B包含。在判断为后者时,计算机系统不需要对(有向图A、有向图B1的组应用TEA。例如,有向图(421)的位映像与有向图(422)的 位映像的逻辑积结果的位映像是100101。 100101与有向图(421)的位映像111101不同。 因此,有向图(422)不包含有向图(421)所包含的全部指令。因此,{有向图(421)、有向图 (422)}的组不是TEA的解析对象。 有向图(421)的位映像与有向图(423)的位映像的逻辑积结果的位映像是
111101。 100101与有向图(421)的位映像111101相同。因此,有向图(423)包含有向图
(421)所包含的全部指令。因此,{有向图(421)、有向图(423)}的组是TEA的解析对象。 如此,通过使用位映像调查包含关系,可高速挑选相似的候补。 根据本发明的实施方式,通过用户设定组数的上限N,可縮短程序的解析时间。在
用户设定上述上限N时,计算机系统将所有有向图的执行频率较大的组优先保留于上述分组表。 作为本发明的一实施方式,在组数为上限N时,计算机系统可以从分组表中删除 所有有向图的执行频率最小的组。 另外,作为其他实施方式,在组数为上限N时,计算机系统可以将代表有向图彼此 相似的组彼此合并。上述合并中,计算机系统进行属于各组的代表有向图彼此的相似性判 定。上述相似性判定可以是与判定部的判定相同的判定。在判定为代表有向图彼此相似时, 计算机系统将判定为上述相似的代表有向图所属的组(以下称为相似组)彼此合并。在 此,属于上述相似组的代表有向图中的结点数目最少的代表有向图成为上述合并后的组的 代表有向图。属于上述相似组的全部有向图的执行频率的总和值成为属于上述合并后的组 的全部有向图的执行频率。而且,属于上述相似组的全部有向图成为属于上述合并后的组 的有向图。 根据本发明的实施方式,计算机系统可以使有向图返回到算法。在本发明的一实 施方式中,为了使有向图返回到算法,可以使用指针。计算机系统在将上述算法转换为上述 有向图时,保存指示程序上存在上述算法的指针。计算机系统将上述指针与上述有向图一 起保存于分组表。计算机系统能够通过参照上述保存的指针来取得与上述有向图对应的算 法。 图6表示本发明的实施方式的计算机硬件的框图。计算机系统601包括CPU603和 主存储器602,这些与总线614连接。CPU603优选是基于32位或64位结构的CPU,可以使 用例如英特尔公司的Xeon(商标)系列、Core(商标)系列、Atom(商标)系列、Pentium(商 标)系列、Celeron (商标)系歹lj、 AMD公司的Phenom(商标)系歹lj、 Athlon (商标)系歹lj、 Turion(商标)系列、及Sempron(商标)等。总线614通过显示控制器607与LCD显示器 等显示装置612连接。显示装置612是为了计算机系统的管理,而利用适当的图形接口来 显示与通过通信线路与网络连接的计算机系统相关的信息和与在该计算机系统上动作中 的软件相同的信息。总线614还可通过IDE或SATA控制器604与硬盘或硅盘605、CD-R0M、 DVD驱动器或BD驱动器606连接。 硬盘605可将操作系统、程序及数据载入地存储于主存储器。
CD-R0M、 DVD驱动器或BD驱动器606是为了根据需要而从CD-R0M、 DVD-R0M或BD 将程序追加导入到硬盘而被使用的。总线614还通过键盘、鼠标控制器609与键盘610和 鼠标611连接。
通信接口 613例如按照以太网(商标)协议制定。通信接口 613通过通信控制器 608与总线614连接,起到将计算机系统和通信线路615物理连接的作用,对于计算机系统 的操作系统的通信功能的TCP/IP通信协议,提供网络接口层。另外,通信线路可以是有线 LAN环境,或者也可以是例如基于IEEE802. lla/b/g/n等无线LAN连接标准的无线LAN环 境。
权利要求
一种方法,用于将程序中包含的算法分组化来支援该程序的解析,其特征在于,包括转换步骤,将上述算法转换为有向图,该有向图包括多个结点和连接上述结点的边;判定步骤,判定上述转换后的有向图是否与存储在计算机系统的存储部中的代表有向图相似,该代表有向图是属于上述组的有向图中的上述结点的数目最少的有向图;以及决定步骤,根据上述是否相似的判定,从存储在上述存储部中的组中决定上述转换后的有向图所属的组。
2. 根据权利要求l所述的方法,其特征在于,上述判定步骤包括根据以下条件来判定上述转换后的有向图与上述代表有向图相似的步骤上述转换后的有向图包括至少2个以上的结点且包括第一结点、第二结点和从上述第一结点至上述第二结点的路径,并且上述代表有向图包括至少2个以上的结点且包括第三结点、第四结点和从上述第三结点至上述第四结点的路径,并且上述第三结点与上述第一结点对应,并且上述第四结点与上述第二结点对应。
3. 根据权利要求l所述的方法,其特征在于,上述判定步骤包括根据以下条件来判定上述转换后的有向图与上述代表有向图相似的步骤上述转换后的有向图和上述代表有向图中的任一方的有向图包含与另一方的有向图所包含的结点对应的全部结点,并且上述另一方的有向图所包含的结点之间的全部路径与上述一方的有向图所包含的结点之间的一部分或全部路径对应。
4. 根据权利要求3所述的方法,其特征在于,上述判定步骤包括以下步骤计算被判定为上述相似的上述转换后的有向图和上述代表有向图的相似度,并在该相似度超过阈值时,判断为上述转换后的有向图和上述代表有向图相似。
5. 根据权利要求4所述的方法,其特征在于,计算上述相似度包含根据以下数目来进行计算被判定为上述相似的上述转换后的有向图和上述代表有向图双方所包含的相同结点以及该结点之间路径的至少一个的数目;禾口上述转换后的有向图或上述代表有向图中某一方所包含的结点以及以该结点为始点或终点的路径的至少一个的数目。
6. 根据权利要求5所述的方法,其特征在于,计算上述相似度包括通过N1+ (Nl+N2) X 100来进行计算,在此,N1是被判定为上述相似的上述转换后的有向图和上述代表有向图双方所包含的相同结点以及该结点之间路径的至少一个的数目,N2是上述转换后的有向图或上述代表有向图中某一方所包含的结点以及以该结点为始点或终点的路径的至少一个的数目。
7. 根据权利要求l所述的方法,其特征在于,上述判定步骤包括将上述转换后的有向图和上述代表有向图各自所包含的结点和边的至少一个转换为位映像的步骤;禾口根据上述位映像之间没有包含关系来判定为不相似的步骤。
8. 根据权利要求l所述的方法,其特征在于,还包括计算步骤,该计算步骤根据存储在上述存储部中的上述被决定的组的执行频率和上述转换后的有向图的执行频率来计算组的执行频率。
9. 根据权利要求8所述的方法,其特征在于,上述计算步骤包含以下计算步骤根据由存储在上述存储部中的上述被决定的组的执行频率计算出的值和由上述转换后的有向图的执行频率计算出的值来计算上述组的执行频率。
10. 根据权利要求8所述的方法,其特征在于,还包括对每一上述组显示与上述代表有向图对应的算法和该代表有向图所属的组的执行频率的显示步骤。
11. 根据权利要求10所述的方法,其特征在于,还包括对每一上述组按上述执行频率的降序来显示与上述代表有向图对应的算法的显示步骤。
12. 根据权利要求ll所述的方法,其特征在于,上述显示步骤还包括对每一上述组进一步显示与代表有向图对应的识别符的步骤。
13. 根据权利要求l所述的方法,其特征在于,还包括根据上述转换后的有向图与上述代表有向图相似来将该转换后的有向图的执行频率登记在上述被决定的组中的登记步骤。
14. 根据权利要求13所述的方法,其特征在于,还包括将上述转换后的有向图和属于上述被决定的组的上述代表有向图中的上述结点的数目最少的有向图更新为属于上述被决定的组的代表有向图的更新步骤。
15. 根据权利要求13所述的方法,其特征在于,上述登记步骤还包括以下步骤根据上述转换后的有向图不与上述代表有向图相似而将上述转换后的有向图以及该转换后的有向图的执行频率作为新组的代表有向图和该新组的执行频率。
16. 根据权利要求15所述的方法,其特征在于,上述登记步骤还包括将上述新组的代表有向图和执行频率存储在上述存储部中的步骤。
17. 根据权利要求l所述的方法,其特征在于,上述判定步骤进一步判定属于存储在上述存储部中的第一组的代表有向图(以下称为第一代表有向图)与属于存储在上述存储部中的第二组的代表有向图(以下称为第二代表有向图)是否相似。
18. 根据权利要求17所述的方法,其特征在于,还包括根据上述第一代表有向图与上述第二代表有向图相似而将上述第一组和上述第二组合并的合并步骤。
19. 根据权利要求17所述的方法,其特征在于,还包括合并步骤,根据上述第一代表有向图与上述第二代表有向图相似而将上述第一组和上述第二组合并,并将上述第一代表有向图和上述第二代表有向图中的上述结点数目最少的代表有向图作为属于合并后的组的代表有向图;禾口计算步骤根据上述第一组的执行频率和上述第二组的执行频率来计算上述合并后的组的执行频率。
20. 根据权利要求l所述的方法,其特征在于,还包括根据上述组的数目达到预定值来将存储在上述存储部中的第一组和第二组合并的步骤。
21. 根据权利要求8所述的方法,其特征在于,还包括根据上述组的数目达到预定值来从上述存储部中删除组的执行频率最小的组的步骤。
22. 根据权利要求l所述的方法,其特征在于,上述转换步骤还包括将上述有向图进一步转换为上述算法的步骤。
23. —种方法,用于将程序中包含的算法分组化来支援该程序解析,其特征在于,包括转换步骤,将上述算法转换为有向图,该有向图包括多个结点和连接该结点的边;判定步骤,判定上述转换后的有向图是否与存储于计算机系统的存储部中的代表有向图相似,该代表有向图是属于上述组的有向图中的上述结点的数目最少的有向图;决定步骤,根据上述是否相似的判定来从存储在上述存储部中的组中决定上述转换后的有向图所属的组;计算步骤,根据存储在上述存储部中的上述被决定的组的执行频率和上述转换后的有向图的执行频率来计算组的执行频率;以及显示步骤,对每一上述组来显示与上述代表有向图对应的算法和该代表有向图所属的组的执行频率。
24. —种计算机程序,用于使计算机系统执行权利要求1 23中任一项所述的方法的各步骤。
25. —种计算机系统,用于将程序中包含的算法分组化来支援该程序解析,其特征在于,包括转换部,将上述算法转换为有向图,该有向图包括多个结点和连接该结点的边;存储部,用于存储属于至少一个组的至少一个有向图;判定部,判定上述转换后的有向图是否与代表有向图相似,该代表有向图是属于上述组的有向图中的上述结点的数目最少的有向图;以及决定部,根据上述是否相似的判定来从存储在上述存储部中的组中决定上述转换后的有向图所属的组。
全文摘要
本发明为用于支援程序解析的方法、及其计算机程序以及计算机系统。研发者进行程序的性能解析时,在采用方式单位的解析中,有时得不到预想效果。因此,寻求基于程序的脉络可检测出相似逻辑的方法。本发明提供一种用于将程序所含的算法分组化来支援该程序的解析的方法。该方法包括将上述算法转换为有向图的步骤;判定上述转换后的有向图是否与存储于计算机系统的存储部中的代表有向图相似的步骤;根据上述是否相似的判定来从存储在上述存储部中的组中决定上述转换后的有向图所属的组的步骤。本发明还提供一种用于支援上述程序解析的计算机程序以及计算机系统。
文档编号G06F9/44GK101751333SQ20091022243
公开日2010年6月23日 申请日期2009年11月13日 优先权日2008年12月15日
发明者川人基弘 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1