[发明专利]一种算法复杂度分析的方法和装置有效
申请号: | 201911376280.5 | 申请日: | 2019-12-27 |
公开(公告)号: | CN111124424B | 公开(公告)日: | 2023-09-19 |
发明(设计)人: | 成朝晖;刘志标;陈诚;谭潇 | 申请(专利权)人: | 珠海金山数字网络科技有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F11/36 |
代理公司: | 北京智信禾专利代理有限公司 11637 | 代理人: | 王治东 |
地址: | 519000 广东省珠海市高新区唐家湾镇前岛环路325号102室*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 算法 复杂度 分析 方法 装置 | ||
1.一种算法复杂度分析的方法,其特征在于,包括:
S201:接收原始代码,计算所述原始代码中每个第一层函数对应的复杂度,其中通过函数调用方式对应的分数来确定每个第一层函数对应的复杂度,获取所述每个第一层函数对应的复杂度超过复杂阈值的第一层函数;
S202:确定获取的所述每个第一层函数对应的复杂度超过复杂阈值的第一层函数对应的运行时间,提取所述第一层函数对应的运行时间超过时间阈值的第一层函数;
S203:计算提取的运行时间超过时间阈值的第i层函数中第i+1层函数对应的复杂度,其中通过函数调用方式对应的分数来确定第i+1层函数对应的复杂度,其中i≥1,获取所述第i+1层函数对应的复杂度超过复杂阈值的第i+1层函数;
S204:确定获取的所述第i+1层函数对应的复杂度超过复杂阈值的第i+1层函数对应的运行时间,提取所述第i+1层函数对应的运行时间超过时间阈值的第i+1层函数;
S205:判断提取的运行时间超过时间阈值的第i+1层函数中是否存在第i+2层函数,若是,将i自增1,执行S203,若否,执行S206;
S206:生成获取的复杂度超过复杂阈值的第一层函数至第i+1层函数对应的运行时间。
2.根据权利要求1所述的方法,其特征在于:计算所述原始代码中每个第一层函数对应的复杂度,包括:
获取评估规则,所述评估规则包括函数中的调用方式以及调用方式对应的分值;
识别所述每个第一层函数中的每个调用方式;
基于所述每个第一层函数中的每个调用方式和所述评估规则,计算所述原始代码中每个第一层函数对应的分值,将所述每个第一层函数对应的分值作为所述每个第一层函数的复杂度。
3.根据权利要求1所述的方法,其特征在于:确定获取的所述每个第一层函数对应的复杂度超过复杂阈值的第一层函数对应的运行时间,包括:
对所述原始代码中提取的每个第一层函数进行打点,以获取待编译代码;
编译所述待编译代码以生成运行程序;
启动所述运行程序,生成获取的所述每个第一层函数对应的复杂度超过复杂阈值的第一层函数对应的运行时间。
4.根据权利要求1或2或3所述的方法,其特征在于:确定获取的所述每个第一层函数对应的复杂度超过复杂阈值的第一层函数对应的运行时间之后,还包括:
根据获取的所述每个第一层函数对应的复杂度超过复杂阈值的第一层函数对应的运行时间以调整时间阈值。
5.根据权利要求1所述的方法,其特征在于:计算提取的运行时间超过时间阈值的第i层函数中第i+1层函数对应的复杂度,包括:
获取评估规则,所述评估规则包括函数中的调用方式以及调用方式对应的分值;
识别提取的运行时间超过时间阈值的第i层函数中所述第i+1层函数的调用方式;
基于所述第i+1层函数中的每个调用方式和所述评估规则,计算提取的运行时间超过时间阈值的第i层函数对应的所述第i+1层函数对应的分值,将所述第i+1层函数对应的分值作为所述第i+1层函数的复杂度。
6.根据权利要求1所述的方法,其特征在于:确定获取的所述第i+1层函数对应的复杂度超过复杂阈值的第i+1层函数对应的运行时间,包括:
对获取的所述第i+1层函数对应的复杂度超过复杂阈值的第i+1层函数进行打点,以获取待编译代码;
编译所述待编译代码以生成运行程序;
启动所述运行程序,生成获取的所述第i+1层函数对应的复杂度超过复杂阈值的第i+1层函数对应的运行时间。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于珠海金山数字网络科技有限公司,未经珠海金山数字网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911376280.5/1.html,转载请声明来源钻瓜专利网。