[发明专利]程序代码的热点分析方法及装置在审
申请号: | 201910810378.0 | 申请日: | 2019-08-29 |
公开(公告)号: | CN112445512A | 公开(公告)日: | 2021-03-05 |
发明(设计)人: | 崔莫磊 | 申请(专利权)人: | 上海高德威智能交通系统有限公司 |
主分类号: | G06F8/70 | 分类号: | G06F8/70 |
代理公司: | 北京汇思诚业知识产权代理有限公司 11444 | 代理人: | 王刚;龚敏 |
地址: | 201800 上海市*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 程序代码 热点 分析 方法 装置 | ||
本申请提供了一种程序代码的热点分析方法及装置,包括:以指定函数为主函数对所述程序代码进行静态分析,以生成函数调用关系图;破坏函数调用关系图中出现的循环调用或递归调用,以生成函数调用关系树;在每个子函数的调用前后添加第一类代码,用于在程序代码运行过程中,计算对应子函数被所述函数调用关系树中的函数调用时的运行时间,并将运行时间保存至子函数对应的叶节点;在程序代码中添加第二类代码,用于根据各个叶节点保存的运行时间及对应子函数的被调用次数生成热点分析报表;运行程序代码,以生成函数调用关系树的热点分析报表。本技术方案解决了采用手动添加耗时统计代码无法实现基于函数调用关系树对程序代码进行热点分析的问题。
【技术领域】
本发明涉及计算机技术领域,尤其涉及一种程序代码的热点分析方法及装置。
【背景技术】
在计算机尤其是嵌入式系统中,计算资源通常极为有限,因此对于图像算法、深度学习算法、图像编解码等等计算密集算法往往有比较高的效率要求,往往要求程序员对程序进行深度优化。
通常程序中90%以上的耗时集中在10%的代码段中,因此一种比较有效的优化方法是对程序的热点进行分析,有针对性地对耗时的代码段进行优化(如算法重构,调整计算次序,借助专门的硬件单元,并行化等等),提高优化效率。
然而,目前在嵌入式系统平台下(例如ARM非Linux内核、DSP等),往往缺乏必要的Profiler工具对算法或程序进行热点分析。目前针对算法分析热点时,在代码段中添加代码计算每个模块的运行期的时间戳,然后根据时间戳计算每个代码段的运行时间。
这种手动添加代码测试耗时的方法有如下缺点:
1)手动添加的代码非常容易出错,很多情况下,会因为不小心写错,致耗时统计出现错误。
2)一般手动添加的耗时统计代码,很难实现基于函数调用图和调用树的统计分析,统计分析意味着需要建立大量的全局变量,代码编写量巨大。
3)手动编写的耗时统计代码,难以生成内容详尽且易读的报表,作为临时添加模块,开发人员通常不会在耗时统计模块上花费很多的时间,因此生成的报表往往非常简陋并且格式不统一,这给模块优化的评估以及模块优化的协作带来了一定程度的困难。
【发明内容】
有鉴于此,本发明实施例提供了一种程序代码的热点分析方法,用以解决现有技术中采用手动添加耗时统计代码无法实现基于函数调用关系树对程序代码进行热点分析问题。
一方面,本发明实施例提供了一种程序代码的热点分析方法,包括:以指定函数为主函数对所述程序代码进行静态分析,以生成函数调用关系图;破坏所述函数调用关系图中出现的循环调用或递归调用,以得到函数调用关系树;其中,所述函数调用关系树的根节点对应所述主函数,每个叶节点分别对应一个子函数;在每个所述子函数的调用前后添加第一类代码;其中,所述第一类代码用于在程序代码运行过程中,计算对应所述子函数每次被调用的运行时间,并将所述运行时间保存至所述子函数对应的叶节点;在所述程序代码中添加第二类代码;其中,所述第二类代码用于根据所述函数调用关系树中的各个叶节点保存的运行时间及对应所述子函数的被调用次数生成热点分析报表;运行添加所述第一类代码和所述第二类代码后的程序代码,以生成所述函数调用关系树的热点分析报表。
可选的,所述破坏所述函数调用关系图中出现的循环调用或递归调用,以得到函数调用关系树包括:将所述主函数设置为所述函数调用关系树的根节点;基于所述函数调用关系图,若所述主函数存在第一子函数,将所述第一子函数设置为所述根节点的叶节点;若所述第一子函数还调用第二子函数,判断所述第二子函数是否是循环调用或递归调用;若所述第二子函数是循环调用或递归调用,则将所述第二子函数设置为所述叶节点的叶节点后,停止遍历所述函数调用关系图中所述第二子函数的调用关系;若所述第二子函数不是循环调用或递归调用,则将所述第二子函数设置为所述叶节点的叶节点后,继续遍历所述函数调用关系图。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海高德威智能交通系统有限公司,未经上海高德威智能交通系统有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910810378.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:上行传输方法及通信装置
- 下一篇:基站及其数据重传方法