一种确定应用程序计算逻辑的方法及装置的制造方法_5

文档序号:9631424阅读:来源:国知局
S105b)之前,本发明 实施例的方法还可以包括S105c-S105d:
[0244] S105c、根据子应用组中每个应用程序的流图相似度,计算子应用组中应用程序的 流图相似度的期望值。
[0245] S105d、根据每个应用程序的流图相似度以及子应用组中应用程序的流图相似度 的期望值,计算子应用组中应用程序的流图相似度的方差。
[0246] 需要说明的是,S105c-S105d中计算子应用组中应用程序的流图相似度的期望值 以及计算子应用组中应用程序的流图相似度的方差的具体方法可以参考本发明实施例中 计算一组应用程序的流图相似度的期望值以及流图相似度的方差的方法,本实施例这里不 再赘述。
[0247] 相应的,S105b可以替换为S105b':
[0248] S105b'、若子应用组中应用程序的流图相似度的方差小于或等于第二预设阈值, 则根据第二公共频繁子图,确定子应用组中应用程序的计算逻辑。
[0249] 可以想到的是,子应用组中应用程序的流图相似度的方差可以体现出子应用组中 每个应用程序的流图相似度之间的波动性。如果子应用组中应用程序的流图相似度较小, 则表示子应用组中每个应用程序的流图相似度之间的波动不大,则表示分析子应用组中每 个应用程序的数据流图,得到的至少一个第二公共频繁子图可以体现出该子应用组中的所 有应用程序在算法流程上的相似性以及计算结构上的共性。
[0250] 因此,在子应用组中应用程序的流图相似度的方差较小(小于或等于第二预设阈 值)时,再根据第二公共频繁子图,确定子应用组中应用程序的计算逻辑,可以保证得到的 计算逻辑更加适用于该子应用组中的所有应用程序,根据该计算逻辑设计得到的体系结构 则更加适用于子应用组中的所有应用程序。
[0251] 进一步的,本发明实施例的方法还可以包括S112-S113 :
[0252] S112、若子应用组中应用程序的流图相似度的方差大于第二预设阈值,则重新分 析子应用组中应用程序的数据流图,得到至少一个第四公共频繁子图,第四公共频繁子图 为子应用组中至少三个应用程序的数据流图的公共部分。
[0253] S113、根据第四公共频繁子图,确定子应用组中应用程序的计算逻辑。
[0254] 如果子应用组中应用程序的流图相似度较大,则表示子应用组中每个应用程序的 流图相似度之间的波动较大,则表示分析子应用组中每个应用程序的数据流图,得到的至 少一个第二公共频繁子图不足以最大程度地体现出该子应用组中的所有应用程序在算法 流程上的相似性以及计算结构上的共性。
[0255] 由于至少三个应用程序的数据流图的公共部分相较于至少两个应用程序的数据 流图的公共部分更能够体现出该组应用程序在算法流程上的相似性以及计算结构上的共 性,因此,在重新分析子应用组中应用程序的数据流图时,将一组应用程序中至少三个应用 程序的数据流图的公共部分作为子应用组中所有应用程序的公共频繁子图,可以提高后续 确定子应用组中应用程序的计算逻辑的准确性。
[0256] 综上所述,通过本方案实现了一组应用程序的自动分析,提高了对应用程序进行 分析的效率,并且可以针对一个子应用组设计适用于该子应用组中的所有应用程序的计算 逻辑,从而扩大了采用该计算逻辑设计得到的体系结构的适用范围。
[0257] 进一步的,在获得分组结果后,可以通过分析子应用组中应用程序的数据流图,得 到相较于第一公共频繁子图能够更加突出的体现出该子应用组的公共计算逻辑的至少一 个第二公共频繁子图,根据第二公共频繁子图确定出更加适合设计子应用组中的应用程序 的体系结构的计算逻辑。
[0258] 实施例二
[0259] 本发明实施例提供一种确定应用程序计算逻辑的装置,如图9所示,该确定应用 程序计算逻辑的装置包括:获取单元21、分析单元22、计算单元23、分组单元24和确定单 元25。
[0260] 获取单元21,用于获取一组应用程序中每个应用程序的数据流图。
[0261] 分析单元22,用于通过分析所述获取单元21获取的所述每个应用程序的数据流 图,得到至少一个第一公共频繁子图,所述第一公共频繁子图为所述一组应用程序中至少 两个应用程序的数据流图的公共部分。
[0262] 计算单元23,用于根据所述分析单元22分析得到的所述第一公共频繁子图和所 述获取单元21获取的所述每个应用程序的数据流图,计算所述每个应用程序的流图相似 度,所述流图相似度用于表征所述一组应用程序中的一个应用程序与所述一组应用程序中 其他应用程序的相似性。
[0263] 分组单元24,用于根据所述计算单元23计算得到的所述每个应用程序的流图相 似度,得到对所述一组应用程序中的应用程序的分组结果,所述分组结果包括至少一个子 应用组。
[0264] 确定单元25,用于根据所述获取单元21获取的所述分组结果中任一子应用组中 的应用程序的数据流图,确定所述子应用组中应用程序的计算逻辑,所述计算逻辑用于设 计所述子应用组中的应用程序的体系结构。
[0265] 进一步的,如图10所示,所述确定单元25,包括:分析模块251和第一确定模块 252。
[0266] 分析模块251,用于分析所述子应用组中应用程序的数据流图,得到至少一个第二 公共频繁子图,所述第二公共频繁子图为所述子应用组中至少两个应用程序的数据流图的 公共部分。
[0267] 第一确定模块252,用于根据所述分析模块251分析得到的所述第二公共频繁子 图,确定所述子应用组中应用程序的计算逻辑。
[0268] 进一步的,如图11所示,所述计算单元23,包括:第二确定模块231和第一计算模 块 232〇
[0269] 第二确定模块231,用于确定第一应用程序的匹配顶点个数和所述第一应用程序 的数据流图中的顶点个数,所述第一应用程序为所述一组应用程序中的任一个应用程序, 所述第一应用程序的匹配顶点个数为所述第一公共频繁子图在所述第一应用程序的数据 流图中所匹配的顶点个数之和。
[0270] 第一计算模块232,用于计算所述第二确定模块231确定的所述第一应用程序的 匹配顶点个数和所述第一应用程序的数据流图中的顶点个数的比值,所述比值用于表征所 述第一应用程序的流图相似度。
[0271] 进一步的,如图12所示,所述分组单元24,包括:第二计算模块241和分组模块 242〇
[0272] 第二计算模块241,用于计算所述一组应用程序中任意两个应用程序的流图相似 度的平均值,所述任意两个应用程序的流图相似度的平均值用于表征该两个应用程序的相 对相似度;采用1减去所述任意两个应用程序的相对相似度,得到该两个应用程序的差异 度。
[0273] 分组模块242,用于根据所述第二计算模块241计算得到的所述一组应用程序中 所有应用程序两两之间的差异度,得到对所述一组应用程序中的应用程序的分组结果。
[0274] 进一步的,所述计算单元23,还用于在所述分组单元24根据所述每个应用程序的 流图相似度,得到所述分组结果之前,
[0275] 根据所述每个应用程序的流图相似度,计算所述一组应用程序的流图相似度的期 望值;
[0276] 根据所述每个应用程序的流图相似度以及所述一组应用程序的流图相似度的期 望值,计算所述一组应用程序的流图相似度的方差。
[0277] 所述分组单元24,具体用于:
[0278] 若所述计算单元23计算得到的所述一组应用程序的流图相似度的方差小于或等 于第一预设阈值,则根据所述每个应用程序的流图相似度,得到所述分组结果。
[0279] 进一步的,所述分析单元22,还用于:
[0280] 若所述计算单元23计算得到的所述一组应用程序的流图相似度的方差大于所述 第一预设阈值,则重新分析所述每个应用程序的数据流图,得到至少一个第三公共频繁子 图,所述第三公共频繁子图为所述一组应用程序中至少三个应用程序的数据流图的公共部 分。
[0281] 其中,所述第三公共频繁子图用于计算所述每个应用程序的流图相似度。
[0282] 进一步的,所述计算单元23,还用于在所述第一确定模块252根据所述第二公共 频繁子图,确定所述子应用组中应用程序的计算逻辑之前,
[0283] 根据所述子应用组中每个应用程序的流图相似度,计算所述子应用组中应用程序 的流图相似度的期望值;
[0284] 根据所述子应用组中每个应用程序的流图相似度以及所述子应用组中应用程序 的流图相似度的期望值,计算所述子应用组中应用程序的流图相似度的方差。
[0285] 所述第一确定模块252,具体用于:
[0286] 若所述计算单元23计算得到的所述子应用组中应用程序的流图相似度的方差小 于或等于第二预设阈值,则根据所述第二公共频繁子图,确定所述子应用组中应用程序的 计算逻辑。
[0287] 进一步的,所述分析模块251,还用于:
[0288]若所述计算单元23计算得到的所述子应用组中应用程序的流图相似度的方差大 于所述第二预设阈值,则重新分析所述子应用组中应用程序的数据流图,得到至少一个第 四公共频繁子图,所述第四公共频繁子图为所述子应用组中至少三个应用程序的数据流图 的公共部分。
[0289] 进一步的,所述获取单元21,具体用于:
[0290] 获取所述一组应用程序中每个应用程序的源代码;
[0291] 编译所述一组应用程序中每个应用程序的源代码,得到所述一组应用程序中每个 应用程序的数据流图。
[0292] 进一步的,所述分析单元22,具体用于采用频繁子图挖掘工具CGFSM,从所述每个 应用程序的数据流图中挖掘出所述第一公共频繁子图。
[0293] 进一步的,所述获取单元21,具体用于采用底层虚拟机LLVM工具将所述一组应用 程序中每个应用程序的源代码编译为中间代码IR,并将中间代码IR转化为数据流图。
[0294] 进一步的,所述一组应用程序中的应用程序属于一个或多个领域。
[0295] 本发明实施例提供一种确定应用程序计算逻辑的装置,如图13所示,该确定应用 程序计算逻辑的装置包括:存储器31和处理器32,存储器31和处理器32通过总线33连 接并完成相互间的通信,其中:
[0296] 所述存储器31用于存储可执行程序代码,所述存储器31为所述确定应用程序计 算逻辑的装置的计算机存储介质,所述计算机存储介质可能包含高速RAM存储器,也可能 还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。
[0297] 所述处理器32可能是一个中央处理器(CentralProcessingUnit,CPU),或者是 特定集成电路(ApplicationSpecificIntegratedCircuit,ASIC),或者是被配置成实施 本发明实施例的一个或多个集成电路。
[0298] 处理器32,用于执行所述存储器31存储所述程序代码,并具体用于代替上述实施 例中的获取单元21、分析单元22、计算单元23、分组单元24以及确定单元25,确定应用程 序计算逻辑。
[0299] 需要说明的是,本发明实施例中的处理器32可以为上述实施例中获取单元21、分 析单元22、计算单元23、分组单元24以及确定单元25等功能单元或功能模块的集成,SP上 述各功能单元可以集成在一个该处理器32中。
[0300] 其中,总线可以是工业标准体系结构(IndustryStandardArchitecture,ISA)总 线、外部设备互连(PeripheralComponentInterconnect,PCI)总线或扩展工业标准体系 结构(ExtendedIndustryStandardArchitecture,EISA)总线等。该总线可以分为地址 总线、数据总线、控制总线等。为便于表示,图13中仅用一条粗线表示,但并不表示仅有一 根总线或一种类型的总线。
[0301] 需要说明的是,本发明实施例提供的确定应用程序计算逻辑的装置中你功能模块 的具体描述可以参考本发明方法实施例中对应部分的相关描述,本实施例这里不再赘述。 [0302] 本发明实施例提供的确定应用程序计算逻辑的装置,可以通过分析一组应用程序 中的每个应用程序,得到该组应用程序的公共频繁子图(至少一个第一公共频繁子图);由 于第一公共频繁子图为该组应用程序中至少两个应用程序的数据流图中的公共部分,因此 根据第一公共频繁子图和每个应用程序的数据流图,计算得到的每个应用程序的流图相似 度则可以用于表征一组应用程序中每个应用程序与一组应用程序中其他应用程序的相似 性;然后根据每个应用程序的流图相似度则可以将该组应用程序中的应用程序划分至不同 的子应用组,这样则可以将相似度较高的应用程序划分至同一子应用组,针对各个子应用 组,根据其包含的应用程序的数据流图,确定该子应用组中的应用程序的计算逻辑。
[0303] 通过本方案,不需要采用人工分析的方式对各个应用程序逐个分析,而是根据一 组应用程序中各个应用程序与其他应用程序的相似度对应用程序进行分组,然后确定该子 应用组中的应用程序的计算逻辑,该计算逻辑是分析一个子应用组中的应用程序得到的, 因此采用该计算逻辑设计得到的体系结构则可以适用于该子应用组中的所有应用程序的。
[0304] 由此可见,本方案实现了一组应用程序的自动分析,提高了对应用程序进行分析 的效率;并且可以针对一个子应用组中的所有应用程序确定计算逻辑,从而减少了设计工 作量,由于该计算逻辑能够体现出该组应用程序在算法流程上的相似性以及计算结构上的 共性,因此采用该计算逻辑设计得到的体系结构则可以适用于该组应用程序中的每一个应 用程序,从而扩大了设计得到的体系结构的适用范围。
[0305] 通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的 方便和简洁,仅以上述各功能模块的
当前第5页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1