一种基于热力图的热点代码优化方法及装置制造方法及图纸

技术编号:32577529 阅读:22 留言:0更新日期:2022-03-09 17:07
本发明专利技术公开了一种基于热力图的热点代码优化方法及装置,将函数执行的平均时间作为热力值并绘制函数调用热力图,热力图的可视化显示为寻找热点函数提供了直观的依据;在确定出热点函数和热点代码后,提供代码优化检查单,再依据代码优化检查单,对热点函数和热点代码逐个进行检查、分析,并尝试优化;在优化后重新执行测试算例来检查优化的效果,可以较为快捷地完成代码优化工作;从全部代码中筛选出热点代码,只对热点函数的代码和进行优化,目标明确,不仅实现从微观方面对代码进行优化,同时节约优化占用宽带并提高计算速率。节约优化占用宽带并提高计算速率。节约优化占用宽带并提高计算速率。

【技术实现步骤摘要】
一种基于热力图的热点代码优化方法及装置


[0001]本专利技术涉及软件开发
,具体涉及一种基于热力图的热点代码优化方法及装置。

技术介绍

[0002]在科学计算类程序中,通常包含复杂的逻辑处理过程和大量的数值处理算法,导致其运行速度受到影响;为了提高程序的运行效率,有时需要对已经完成的程序代码进行优化,通过对数据存储方式、程序处理逻辑等部分的优化,达到提高程序运行效率的目的。
[0003]针对全部代码进行优化固然是一个好方法,但是耗时费力;如果能快速准确地分析出程序中耗费时间最多、执行最频繁的热点函数和热点代码,并对其进行优化,会达到事半功倍的效果。
[0004]通过执行典型的测试算例的方式来得到各函数的执行时间和被调用次数,从而确定出热点代码的方法是一种可行的方法,但是存在不直观的问题;热力图是一种以可视化方式反映一个区域的受关注程度、显著程度或者活跃程度的方法,将其用在热点代码的寻找、代码优化后的比较过程中,将为代码优化提供可视化参考。
[0005]为了更好地完成科学计算类程序的代码优化工作,本专利技术提供一种基于热力图的热点代码优化方法及装置。

技术实现思路

[0006]本专利技术所要解决的技术问题是:现有反应堆系统软件热点代码优化方法,主要针对全部代码进行优化,耗时费力,而通过测试算例或算法的优化,只能体现出宏观效果,其内部代码的受关注度及活跃程度不具有直观性,本专利技术目的在于提供一种基于热力图的热点代码优化方法及装置,以解决上述技术问题。
[0007]本专利技术通过下述技术方案实现:
[0008]本方案提供一种基于热力图的热点代码优化方法,包括:
[0009]步骤一:使用测试算例集执行程序,并统计各函数的执行时间平均值和调用次数;
[0010]步骤二:将各函数的执行时间平均值作为热力值,绘制函数调用热力图;
[0011]步骤三:基于函数调用热力图确定热点函数和热点代码;
[0012]步骤四:对照代码优化检查单,对热点函数和热点代码进行检查并尝试优化。
[0013]本方案工作原理:现有反应堆系统软件热点代码优化方法,主要针对全部代码进行优化,耗时费力,而通过测试算例或算法的优化,只能体现出宏观效果,其内部代码的受关注度及活跃程度不具有直观性;为了更好地完成科学计算类程序的代码优化工作,本专利技术提供了一种基于热力图的热点代码优化方法,将函数执行的平均时间作为热力值并绘制函数调用热力图,热力图的可视化显示为寻找热点函数提供了直观的依据;在确定出热点函数和热点代码后,提供代码优化检查单,再依据代码优化检查单,对热点函数和热点代码逐个进行检查、分析,并尝试优化;在优化后重新执行测试算例来检查优化的效果,可以较
为快捷地完成代码优化工作;
[0014]现有技术有对全部代码进行检查和优化,但是这需要耗费大量时间并占用较大宽带,本方案从全部代码中筛选出热点代码,只对热点函数的代码和进行优化,目标明确,不仅实现从微观方面对代码进行优化,同时节约优化占用宽带并提高计算速率;
[0015]对于核反应堆系统来说,需要系统内各个软件具有较好的执行效率和性能,就需要对宏观算法进行优化或者对热点代码进行优化以提升执行效率,而宏观算法进行优化过程只能从宏观方面进行提升,对于与性能有关的内部代码活跃度、受关注度等信息无法及时掌握,本方案实现在现有反应堆系统软件热点代码优化中,自动寻找热点,可视化展现热点代码,实现代码优化,提升软件执行效率和性能。
[0016]进一步优化方案为,步骤一具体包括:
[0017]使用已经编制好的测试算例集中的测试算例分别执行程序;
[0018]再统计测试算例执行程序过程中各函数的执行时间,并计算出执行时间的算术平均值;
[0019]所述函数的执行时间为程序运行时该函数被调用的全部运行时间的总和。
[0020]进一步优化方案为,当运行第一函数还需要调用其他函数时,其他函数的执行时间不统计在第一函数的被调用时间内。
[0021]进一步优化方案为,函数调用热力图绘制方法为:
[0022]对各函数进行编号;
[0023]在直角坐标内,将各函数的序号作为X轴,将各函数的执行时间的算术平均值作为Y轴,Y值即为热力值;
[0024]将X值与Y值的交叉点作为函数的值点;
[0025]将各函数的值点用直线连接得到的折线即为函数调用热力图。将函数执行的平均时间作为热力值并绘制函数调用热力图,热力图的可视化显示为寻找热点函数提供了直观的依据。
[0026]进一步优化方案为,热点函数和热点代码的确定方法为:
[0027]根据函数调用热力图中函数的总数设置一个热力阈值范围,将该热力阈值范围的热力值按照从大到小的顺序确定为热点函数;
[0028]热点函数包含的所有代码确定为热点代码。
[0029]进一步优化方案为,热点函数和热点代码的确定方法为:直接选取函数调用热力图中热力值最大的函数为热点函数,热点函数包含的所有代码确定为热点代码。
[0030]进一步优化方案为,当只确定出一组热点函数时,执行完步骤四后返回步骤三,再按函数调用热力图中热力值顺序确定新的热点函数,循环执行步骤三和步骤四直至遍历所有热点函数。
[0031]进一步优化方案为,所述代码优化检查单包括:
[0032]a.若某函数的调用次数远大于其余函数,检查是否可以减少该函数的参数个数;并检查是否可以作为内联函数;根据代码优化检查单检验结果相应的减少该函数的参数个数或作为内联函数。
[0033]b.若某函数的调用次数远大于其余函数,检查该函数内是否有申请和释放内存的操作,若有,检查是否可以在该函数体外申请内存;根据代码优化检查单检验结果相应的申
请和释放内存的操作,或在该函数体外申请内存。
[0034]c.若函数体内频繁地按某一顺序访问某一个变量空间中的各个值,检查该变量的存储空间是否可以用指针进行连续访问;根据代码优化检查单检验结果相应的优化用指针进行连续访问。
[0035]d.若函数体内包含多重循环,检查该函数里层的代码是否包含判断;若有,检查该判断是否与循环变量有关或与上一次循环运算有关;若无关,检查是否可将该判断放入循环体的外部;根据代码优化检查单检验结果相应的进行将该判断放入循环体的外部优化处理。
[0036]e.若函数体内包含多重循环和对多维数组的访问,检查多重循环的顺序与多维数组的下标顺序是否对应,若不对应,则将其调整为顺序对应。
[0037]进一步优化方案为,还包括:
[0038]步骤五:执行完步骤四后,重新执行步骤一至步骤三,再基于对照代码优化检查单,对整个测试算例集确定的热点函数和热点代码进行检查并优化,或对单个的测试算例确定的热点函数或热点代码热点进行优化。
[0039]本方案还提供一种基于热力图的热点代码优化装置,应用于上述的方法,包括:执行统计模块、绘制模块、确定模块和优化模块;
...

【技术保护点】

【技术特征摘要】
1.一种基于热力图的热点代码优化方法,其特征在于,包括:步骤一:使用测试算例集执行程序,并统计各函数的执行时间平均值和调用次数;步骤二:将各函数的执行时间平均值作为热力值,绘制函数调用热力图;步骤三:基于函数调用热力图确定热点函数和热点代码;步骤四:对照代码优化检查单,对热点函数和热点代码进行检查并优化。2.根据权利要求1所述的一种基于热力图的热点代码优化方法,其特征在于,步骤一具体包括:使用已经编制好的测试算例集中的测试算例分别执行程序;再统计测试算例执行程序过程中各函数的执行时间,并计算出执行时间的算术平均值;所述函数的执行时间为程序运行时该函数被调用的全部运行时间的总和。3.根据权利要求2所述的一种基于热力图的热点代码优化方法,其特征在于,当运行第一函数还需要调用其他函数时,其他函数的执行时间不统计在第一函数的被调用时间内。4.根据权利要求1所述的一种基于热力图的热点代码优化方法,其特征在于,函数调用热力图绘制方法为:对各函数进行编号;在直角坐标内,将各函数的序号作为X轴,将各函数的执行时间的算术平均值作为Y轴,Y值即为热力值;将X值与Y值的交叉点作为函数的值点;将各函数的值点用直线连接得到的折线即为函数调用热力图。5.根据权利要求1所述的一种基于热力图的热点代码优化方法,其特征在于,热点函数和热点代码的确定方法为:根据函数调用热力图中函数的总数设置一个热力阈值范围,将该热力阈值范围的热力值按照从大到小的顺序确定为热点函数;热点函数包含的所有代码确定为热点代码。6.根据权利要求1所述的一种基于热力图的热点代码优化方法,其特征在于,热点函数和热点代码的确定方法为:直接选取函数调用热力图中热力值最大的函数为热点函数,热点函数包含的所有代码确定为热点代码。7.根据权利要求6所述的一种基于热力图的热点代码优化方法,其特征在于,当只确定出一组热点函数时...

【专利技术属性】
技术研发人员:安萍芦韡马永强杨洪润卢川张吉斌李治刚毛辉辉吕新知马党伟郑勇潘俊杰郭凤晨涂晓兰
申请(专利权)人:中国核动力研究设计院
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1