CN114153494A - 一种基于热力图的热点代码优化方法及装置 - Google Patents
一种基于热力图的热点代码优化方法及装置 Download PDFInfo
- Publication number
- CN114153494A CN114153494A CN202111462111.0A CN202111462111A CN114153494A CN 114153494 A CN114153494 A CN 114153494A CN 202111462111 A CN202111462111 A CN 202111462111A CN 114153494 A CN114153494 A CN 114153494A
- Authority
- CN
- China
- Prior art keywords
- function
- hot spot
- code
- optimization
- thermodynamic diagram
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000005457 optimization Methods 0.000 title claims abstract description 93
- 238000010586 diagram Methods 0.000 title claims abstract description 64
- 238000000034 method Methods 0.000 title claims abstract description 51
- 230000006870 function Effects 0.000 claims abstract description 252
- 238000012360 testing method Methods 0.000 claims abstract description 34
- 238000010438 heat treatment Methods 0.000 claims description 9
- 230000008569 process Effects 0.000 claims description 8
- 230000000694 effects Effects 0.000 abstract description 17
- 230000000007 visual effect Effects 0.000 abstract description 5
- 238000004364 calculation method Methods 0.000 abstract description 3
- 238000007689 inspection Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 238000000338 in vitro Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/72—Code refactoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于热力图的热点代码优化方法及装置,将函数执行的平均时间作为热力值并绘制函数调用热力图,热力图的可视化显示为寻找热点函数提供了直观的依据;在确定出热点函数和热点代码后,提供代码优化检查单,再依据代码优化检查单,对热点函数和热点代码逐个进行检查、分析,并尝试优化;在优化后重新执行测试算例来检查优化的效果,可以较为快捷地完成代码优化工作;从全部代码中筛选出热点代码,只对热点函数的代码和进行优化,目标明确,不仅实现从微观方面对代码进行优化,同时节约优化占用宽带并提高计算速率。
Description
技术领域
本发明涉及软件开发技术领域,具体涉及一种基于热力图的热点代码优化方法及装置。
背景技术
在科学计算类程序中,通常包含复杂的逻辑处理过程和大量的数值处理算法,导致其运行速度受到影响;为了提高程序的运行效率,有时需要对已经完成的程序代码进行优化,通过对数据存储方式、程序处理逻辑等部分的优化,达到提高程序运行效率的目的。
针对全部代码进行优化固然是一个好方法,但是耗时费力;如果能快速准确地分析出程序中耗费时间最多、执行最频繁的热点函数和热点代码,并对其进行优化,会达到事半功倍的效果。
通过执行典型的测试算例的方式来得到各函数的执行时间和被调用次数,从而确定出热点代码的方法是一种可行的方法,但是存在不直观的问题;热力图是一种以可视化方式反映一个区域的受关注程度、显著程度或者活跃程度的方法,将其用在热点代码的寻找、代码优化后的比较过程中,将为代码优化提供可视化参考。
为了更好地完成科学计算类程序的代码优化工作,本发明提供一种基于热力图的热点代码优化方法及装置。
发明内容
本发明所要解决的技术问题是:现有反应堆系统软件热点代码优化方法,主要针对全部代码进行优化,耗时费力,而通过测试算例或算法的优化,只能体现出宏观效果,其内部代码的受关注度及活跃程度不具有直观性,本发明目的在于提供一种基于热力图的热点代码优化方法及装置,以解决上述技术问题。
本发明通过下述技术方案实现:
本方案提供一种基于热力图的热点代码优化方法,包括:
步骤一:使用测试算例集执行程序,并统计各函数的执行时间平均值和调用次数;
步骤二:将各函数的执行时间平均值作为热力值,绘制函数调用热力图;
步骤三:基于函数调用热力图确定热点函数和热点代码;
步骤四:对照代码优化检查单,对热点函数和热点代码进行检查并尝试优化。
本方案工作原理:现有反应堆系统软件热点代码优化方法,主要针对全部代码进行优化,耗时费力,而通过测试算例或算法的优化,只能体现出宏观效果,其内部代码的受关注度及活跃程度不具有直观性;为了更好地完成科学计算类程序的代码优化工作,本发明提供了一种基于热力图的热点代码优化方法,将函数执行的平均时间作为热力值并绘制函数调用热力图,热力图的可视化显示为寻找热点函数提供了直观的依据;在确定出热点函数和热点代码后,提供代码优化检查单,再依据代码优化检查单,对热点函数和热点代码逐个进行检查、分析,并尝试优化;在优化后重新执行测试算例来检查优化的效果,可以较为快捷地完成代码优化工作;
现有技术有对全部代码进行检查和优化,但是这需要耗费大量时间并占用较大宽带,本方案从全部代码中筛选出热点代码,只对热点函数的代码和进行优化,目标明确,不仅实现从微观方面对代码进行优化,同时节约优化占用宽带并提高计算速率;
对于核反应堆系统来说,需要系统内各个软件具有较好的执行效率和性能,就需要对宏观算法进行优化或者对热点代码进行优化以提升执行效率,而宏观算法进行优化过程只能从宏观方面进行提升,对于与性能有关的内部代码活跃度、受关注度等信息无法及时掌握,本方案实现在现有反应堆系统软件热点代码优化中,自动寻找热点,可视化展现热点代码,实现代码优化,提升软件执行效率和性能。
进一步优化方案为,步骤一具体包括:
使用已经编制好的测试算例集中的测试算例分别执行程序;
再统计测试算例执行程序过程中各函数的执行时间,并计算出执行时间的算术平均值;
所述函数的执行时间为程序运行时该函数被调用的全部运行时间的总和。
进一步优化方案为,当运行第一函数还需要调用其他函数时,其他函数的执行时间不统计在第一函数的被调用时间内。
进一步优化方案为,函数调用热力图绘制方法为:
对各函数进行编号;
在直角坐标内,将各函数的序号作为X轴,将各函数的执行时间的算术平均值作为Y轴,Y值即为热力值;
将X值与Y值的交叉点作为函数的值点;
将各函数的值点用直线连接得到的折线即为函数调用热力图。将函数执行的平均时间作为热力值并绘制函数调用热力图,热力图的可视化显示为寻找热点函数提供了直观的依据。
进一步优化方案为,热点函数和热点代码的确定方法为:
根据函数调用热力图中函数的总数设置一个热力阈值范围,将该热力阈值范围的热力值按照从大到小的顺序确定为热点函数;
热点函数包含的所有代码确定为热点代码。
进一步优化方案为,热点函数和热点代码的确定方法为:直接选取函数调用热力图中热力值最大的函数为热点函数,热点函数包含的所有代码确定为热点代码。
进一步优化方案为,当只确定出一组热点函数时,执行完步骤四后返回步骤三,再按函数调用热力图中热力值顺序确定新的热点函数,循环执行步骤三和步骤四直至遍历所有热点函数。
进一步优化方案为,所述代码优化检查单包括:
a.若某函数的调用次数远大于其余函数,检查是否可以减少该函数的参数个数;并检查是否可以作为内联函数;根据代码优化检查单检验结果相应的减少该函数的参数个数或作为内联函数。
b.若某函数的调用次数远大于其余函数,检查该函数内是否有申请和释放内存的操作,若有,检查是否可以在该函数体外申请内存;根据代码优化检查单检验结果相应的申请和释放内存的操作,或在该函数体外申请内存。
c.若函数体内频繁地按某一顺序访问某一个变量空间中的各个值,检查该变量的存储空间是否可以用指针进行连续访问;根据代码优化检查单检验结果相应的优化用指针进行连续访问。
d.若函数体内包含多重循环,检查该函数里层的代码是否包含判断;若有,检查该判断是否与循环变量有关或与上一次循环运算有关;若无关,检查是否可将该判断放入循环体的外部;根据代码优化检查单检验结果相应的进行将该判断放入循环体的外部优化处理。
e.若函数体内包含多重循环和对多维数组的访问,检查多重循环的顺序与多维数组的下标顺序是否对应,若不对应,则将其调整为顺序对应。
进一步优化方案为,还包括:
步骤五:执行完步骤四后,重新执行步骤一至步骤三,再基于对照代码优化检查单,对整个测试算例集确定的热点函数和热点代码进行检查并优化,或对单个的测试算例确定的热点函数或热点代码热点进行优化。
本方案还提供一种基于热力图的热点代码优化装置,应用于上述的方法,包括:执行统计模块、绘制模块、确定模块和优化模块;
所述执行统计模块使用测试算例集执行程序,并统计各函数的执行时间平均值和调用次数;
所述绘制模块将各函数的执行时间平均值作为热力值,绘制函数调用热力图;
所述确定模块基于函数调用热力图确定为热点函数和热点代码;
所述优化模块对照代码优化检查单,对热点函数和热点代码进行检查并尝试优化。本发明与现有技术相比,具有如下的优点和有益效果:
本发明提供的本发明提供了一种基于热力图的热点代码优化方法,将函数执行的平均时间作为热力值并绘制函数调用热力图,热力图的可视化显示为寻找热点函数提供了直观的依据;在确定出热点函数和热点代码后,提供代码优化检查单,再依据代码优化检查单,对热点函数和热点代码逐个进行检查、分析,并尝试优化;在优化后重新执行测试算例来检查优化的效果,可以较为快捷地完成代码优化工作;只对热点函数的代码和进行优化,目标明确,不仅实现从微观方面对代码进行优化,同时节约优化占用宽带并提高计算速率。
附图说明
为了更清楚地说明本发明示例性实施方式的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。在附图中:
图1为基于热力图的热点代码优化方法流程示意图;
图2为施例3测试算例运行后的情况统计图;
图3为实施例3测试算例运行后获得的函数调用热力图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明作进一步的详细说明,本发明的示意性实施方式及其说明仅用于解释本发明,并不作为对本发明的限定。
现有反应堆系统软件热点代码优化方法,主要针对全部代码进行优化,耗时费力,而通过测试算例或算法的优化,只能体现出宏观效果,其内部代码的受关注度及活跃程度不具有直观性,鉴于此,本发明提供以下实施例以解决上述问题;
实施例1
本实施例提供一种基于热力图的热点代码优化方法,包括:
步骤一:使用测试算例集执行程序,并统计各函数的执行时间平均值和调用次数;
步骤二:将各函数的执行时间平均值作为热力值,绘制函数调用热力图;
步骤三:基于函数调用热力图确定热点函数和热点代码;
步骤四:对照代码优化检查单,对热点函数和热点代码进行检查并尝试优化;
步骤五:执行完步骤四后,重新执行步骤一至步骤三,再基于对照代码优化检查单,对整个测试算例集确定的热点函数和热点代码进行检查并优化,或对单个的测试算例确定的热点函数或热点代码热点进行优化。
步骤一具体包括:
使用已经编制好的测试算例集中的测试算例分别执行程序;
再统计测试算例执行程序过程中各函数的执行时间,并计算出执行时间的算术平均值;
所述函数的执行时间为程序运行时该函数被调用的全部运行时间的总和。
当运行第一函数还需要调用其他函数时,其他函数的执行时间不统计在第一函数的被调用时间内。
函数调用热力图绘制方法为:
对各函数进行编号;
在直角坐标内,将各函数的序号作为X轴,将各函数的执行时间的算术平均值作为Y轴,Y值即为热力值;
将X值与Y值的交叉点作为函数的值点;
将各函数的值点用直线连接得到的折线即为函数调用热力图。
热点函数和热点代码的确定方法为:
根据函数调用热力图中函数的总数设置一个热力阈值范围,将该热力阈值范围的热力值按照从大到小的顺序确定为热点函数;
热点函数包含的所有代码确定为热点代码。
热点函数和热点代码的确定方法为:直接选取函数调用热力图中热力值最大的函数为热点函数,热点函数包含的所有代码确定为热点代码。
当只确定出一组热点函数时,执行完步骤四后返回步骤三,再按函数调用热力图中热力值顺序确定新的热点函数,循环执行步骤三和步骤四直至遍历所有热点函数。
所述代码优化检查单包括:
a.若某函数的调用次数远大于其余函数,检查是否可以减少该函数的参数个数;并检查是否可以作为内联函数;根据代码优化检查单检验结果相应的减少该函数的参数个数或作为内联函数。
b.若某函数的调用次数远大于其余函数,检查该函数内是否有申请和释放内存的操作,若有,检查是否可以在该函数体外申请内存;根据代码优化检查单检验结果相应的申请和释放内存的操作,或在该函数体外申请内存。
c.若函数体内频繁地按某一顺序访问某一个变量空间中的各个值,检查该变量的存储空间是否可以用指针进行连续访问;根据代码优化检查单检验结果相应的优化用指针进行连续访问。
d.若函数体内包含多重循环,检查该函数里层的代码是否包含判断;若有,检查该判断是否与循环变量有关或与上一次循环运算有关;若无关,检查是否可将该判断放入循环体的外部;根据代码优化检查单检验结果相应的进行将该判断放入循环体的外部优化处理。
e.若函数体内包含多重循环和对多维数组的访问,检查多重循环的顺序与多维数组的下标顺序是否对应,若不对应,则将其调整为顺序对应。
实施例2
本实施例提供一种基于热力图的热点代码优化装置,应用于上一实施例所述的方法,包括:执行统计模块、绘制模块、确定模块和优化模块;
所述执行统计模块使用测试算例集执行程序,并统计各函数的执行时间平均值和调用次数;
所述绘制模块将各函数的执行时间平均值作为热力值,绘制函数调用热力图;
所述确定模块基于函数调用热力图确定为热点函数和热点代码;
所述优化模块对照代码优化检查单,对热点函数和热点代码进行检查并尝试优化。
实施例3
为了更加清楚地展示本发明的目的和技术方案,本实施例将结合具体的实施过程对上述具体实施方式和参数进行更加详细的描述。
基于热力图的热点代码优化方法,包括以下步骤:
步骤1,使用测试算例集来执行程序,统计得到各函数的执行时间的平均值和调用次数。设待测软件包括5个函数,分别为F1-F5;测试算例集执行后的平均情况如图2所示,时间单位为秒。
步骤2,将函数的执行时间平均值作为热力值,绘制函数调用热力图。本实施例获得的函数调用热力图如图3所示。
步骤3,取函数调用热力图中热力值较大的函数,确定为热点函数。
根据图3可以直观地得出函数F5和F4是热点函数的结论;我们这里挑选了2个函数,为总函数个数的40%;实际情况中可以设定为总函数个数的5%~40%的范围,并根据实际情况调整。也可以先挑选热力值最大的函数F5作为热点函数,在对其进行优化检查和尝试后,再将函数F4确定类热点函数并进行优化检查和尝试。
步骤4,对照代码优化检查单,对热点函数和热点代码进行检查并优化;
检查单1,若某函数的调用次数远大于其余函数,检查是否可以减少该函数的参数个数;并检查是否可以作为内联函数。这里的远大于指一个比例,如可设为10,如函数F5的被调用次数为50000,函数F4的被调用次数为40000,其余4个函数的被调用次数最大值为200,则函数F5和函数F4的被调用次数大于其余函数被调用次数最大值的10倍,满足远大于这一要求。
可选地,这里的远大于也可以设置为一个具体的值,如十万次;只要函数的执行次数大于这个值,就可以视为远大于并进行优化检查和尝试。
函数F5的调用次数为50000,可以考虑优化函数的参数。
本例中的代码均以C语言为例,设函数F5的原型为:
int F5(int x1,double x2,float x3,int*x4,double*x2,float*x6);
则可以考虑将这些参数放入一个结构体,然后将这个结构体指针作为函数参数:
struct para{int x1;double x2;float x3,int*x4;double*x2;float*x6};
将函数F5的原型修改为:
int F5(struct para*);
这样在调用该函数时,参数从6个减少为1个,大大减少了调用参数时的入栈和出栈开销;一般而言,当函数调用次数大于万次时,该优化将有明显的效果;若该函数代码简单时,将该函数修改inline内联函数,也可以达到同样的效果。
检查单2,若函数的调用次数远大于其余函数,检查函数内是否有申请和释放内存的操作,若有,检查是否可以在函数体外申请内存。
若函数体内有申请内存和释放内存的操作,设函数的部分代码为:
调用处的代码为:
for(int i=0;i<1000;i++)F5(100,3.2);
则优化后的代码为:
int F5(int x1,double x2,double&*x3){other codes;}
调用处的代码修改为:
double*x3=(double*)malloc(100*sizeof(double));
for(int i=0;i<1000;i++)F5(100,3.2,x3);
free(x3);
这样在函数外申请和释放内存并将内存地址传入函数,只需要申请和释放内存一次;
当函数的调用次数即这个for循环的循环次数大于一万时,该优化将有的显著效果。
检查单3,若函数体内频繁访问某一个变量,检查变量的存储空间是否可以用指针进行连续访问。
假设函数体内使用了下标对数组进行访问,代码如下:
for(int i=0;i<10000;i++)A[i]=B*A[i];
该处代码可以优化为:
这样使用指针访问连续的内存空间时,效率大于直接用下标访问;
在for循环的循环次数大于一万时,该优化会有明显的效果。
检查单4,若函数体内包含多重循环,检查里层的代码是否包含判断;若有,检查该判断是否与循环变量有关或与上一次循环运算有关;如无关,检查是否可将该判断放入循环体的外部。
假设函数体内包括如下代码:
该处代码可以优化为:
上述优化将减少上百万次的逻辑判断;
当上述循环次数达到十万次以上时,优化将有明显的效果。
检查单5,若函数体内包含多重循环和对多维数组的访问,检查多重循环的顺序与多维数组的下标顺序是否对应,若不对应,则尝试将其调整为顺序对应。
假设函数体内包括如下代码:
则可以优化为
上述优化使循环变量的顺序与下标存储顺序一致,其访问效率将有一定的提升;
注意如果是Fortran语言编写的代码,则上述顺序需要相反而不是一致。
步骤5,优化完成,重新执行测试算例集,对比分析检查优化的效果。
上述代码优化结束后,需要重新执行相应的测试算例,或者测试算例集中全部算例,以便对优化的效果进行检查。
最后应说明的是,以上实施例仅用以说明本发明的技术方案,而非对其进行限制;尽管前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解,通过对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换,或者修改各个步骤的顺序,而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围;本发明中各种阈值及范围的取值,也会因为具体情况不同而有所改变。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于热力图的热点代码优化方法,其特征在于,包括:
步骤一:使用测试算例集执行程序,并统计各函数的执行时间平均值和调用次数;
步骤二:将各函数的执行时间平均值作为热力值,绘制函数调用热力图;
步骤三:基于函数调用热力图确定热点函数和热点代码;
步骤四:对照代码优化检查单,对热点函数和热点代码进行检查并优化。
2.根据权利要求1所述的一种基于热力图的热点代码优化方法,其特征在于,步骤一具体包括:
使用已经编制好的测试算例集中的测试算例分别执行程序;
再统计测试算例执行程序过程中各函数的执行时间,并计算出执行时间的算术平均值;
所述函数的执行时间为程序运行时该函数被调用的全部运行时间的总和。
3.根据权利要求2所述的一种基于热力图的热点代码优化方法,其特征在于,当运行第一函数还需要调用其他函数时,其他函数的执行时间不统计在第一函数的被调用时间内。
4.根据权利要求1所述的一种基于热力图的热点代码优化方法,其特征在于,函数调用热力图绘制方法为:
对各函数进行编号;
在直角坐标内,将各函数的序号作为X轴,将各函数的执行时间的算术平均值作为Y轴,Y值即为热力值;
将X值与Y值的交叉点作为函数的值点;
将各函数的值点用直线连接得到的折线即为函数调用热力图。
5.根据权利要求1所述的一种基于热力图的热点代码优化方法,其特征在于,热点函数和热点代码的确定方法为:
根据函数调用热力图中函数的总数设置一个热力阈值范围,将该热力阈值范围的热力值按照从大到小的顺序确定为热点函数;
热点函数包含的所有代码确定为热点代码。
6.根据权利要求1所述的一种基于热力图的热点代码优化方法,其特征在于,热点函数和热点代码的确定方法为:直接选取函数调用热力图中热力值最大的函数为热点函数,热点函数包含的所有代码确定为热点代码。
7.根据权利要求6所述的一种基于热力图的热点代码优化方法,其特征在于,当只确定出一组热点函数时,执行完步骤四后返回步骤三,再按函数调用热力图中热力值顺序确定新的热点函数,循环执行步骤三和步骤四直至遍历所有热点函数。
8.根据权利要求1所述的一种基于热力图的热点代码优化方法,其特征在于,所述代码优化检查单包括:
a.若某函数的调用次数远大于其余函数,检查是否可以减少该函数的参数个数;并检查是否可以作为内联函数;
b.若某函数的调用次数远大于其余函数,检查该函数内是否有申请和释放内存的操作,若有,检查是否可以在该函数体外申请内存;
c.若函数体内频繁地按某一顺序访问某一个变量空间中的各个值,检查该变量的存储空间是否可以用指针进行连续访问;
d.若函数体内包含多重循环,检查该函数里层的代码是否包含判断;若有,检查该判断是否与循环变量有关或与上一次循环运算有关;若无关,检查是否可将该判断放入循环体的外部;
e.若函数体内包含多重循环和对多维数组的访问,检查多重循环的顺序与多维数组的下标顺序是否对应,若不对应,则将其调整为顺序对应。
9.根据权利要求1所述的一种基于热力图的热点代码优化方法,其特征在于,还包括:步骤五:执行完步骤四后,重新执行步骤一至步骤三,再基于对照代码优化检查单,对整个测试算例集确定的热点函数和热点代码进行检查并优化,或对单个的测试算例确定的热点函数或热点代码热点进行检查并优化。
10.一种基于热力图的热点代码优化装置,应用于权利要求1-9任意一项所述的方法,其特征在于,包括:执行统计模块、绘制模块、确定模块和优化模块;
所述执行统计模块使用测试算例集执行程序,并统计各函数的执行时间平均值和调用次数;
所述绘制模块将各函数的执行时间平均值作为热力值,绘制函数调用热力图;
所述确定模块基于函数调用热力图确定为热点函数和热点代码;
所述优化模块对照代码优化检查单,对热点函数和热点代码进行检查并尝试优化。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111462111.0A CN114153494B (zh) | 2021-12-02 | 2021-12-02 | 一种基于热力图的热点代码优化方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111462111.0A CN114153494B (zh) | 2021-12-02 | 2021-12-02 | 一种基于热力图的热点代码优化方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114153494A true CN114153494A (zh) | 2022-03-08 |
CN114153494B CN114153494B (zh) | 2024-02-13 |
Family
ID=80456005
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111462111.0A Active CN114153494B (zh) | 2021-12-02 | 2021-12-02 | 一种基于热力图的热点代码优化方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114153494B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115718620A (zh) * | 2022-11-22 | 2023-02-28 | 科东(广州)软件科技有限公司 | 一种代码程序迁移方法、装置、设备和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101441564A (zh) * | 2008-12-04 | 2009-05-27 | 浙江大学 | 为程序定制的可重构加速器实现方法 |
CN106095396A (zh) * | 2016-06-20 | 2016-11-09 | 国家海洋局第海洋研究所 | 循环折叠cpu流水线优化方法 |
CN106502876A (zh) * | 2016-10-26 | 2017-03-15 | 腾讯科技(深圳)有限公司 | 一种热点函数确定的方法及相关设备 |
CN111666071A (zh) * | 2020-04-17 | 2020-09-15 | 中国海洋大学 | 一种基于目标众核的对抗网络移植与优化的方法及系统 |
CN111858066A (zh) * | 2020-07-30 | 2020-10-30 | 中国空气动力研究与发展中心超高速空气动力研究所 | 气体动理论统一算法中的cpu+gpu异构并行优化方法 |
CN112445481A (zh) * | 2019-08-27 | 2021-03-05 | 无锡江南计算技术研究所 | 低功耗的寄存器分配编译优化方法 |
-
2021
- 2021-12-02 CN CN202111462111.0A patent/CN114153494B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101441564A (zh) * | 2008-12-04 | 2009-05-27 | 浙江大学 | 为程序定制的可重构加速器实现方法 |
CN106095396A (zh) * | 2016-06-20 | 2016-11-09 | 国家海洋局第海洋研究所 | 循环折叠cpu流水线优化方法 |
CN106502876A (zh) * | 2016-10-26 | 2017-03-15 | 腾讯科技(深圳)有限公司 | 一种热点函数确定的方法及相关设备 |
CN112445481A (zh) * | 2019-08-27 | 2021-03-05 | 无锡江南计算技术研究所 | 低功耗的寄存器分配编译优化方法 |
CN111666071A (zh) * | 2020-04-17 | 2020-09-15 | 中国海洋大学 | 一种基于目标众核的对抗网络移植与优化的方法及系统 |
CN111858066A (zh) * | 2020-07-30 | 2020-10-30 | 中国空气动力研究与发展中心超高速空气动力研究所 | 气体动理论统一算法中的cpu+gpu异构并行优化方法 |
Non-Patent Citations (7)
Title |
---|
QURRAT UL AIN等: "Analysis of hotspot methods in JVM for best-effort run-time parallelization", IC4E \'18: PROCEEDINGS OF THE 9TH INTERNATIONAL CONFERENCE ON E-EDUCATION, E-BUSINESS, E-MANAGEMENT AND E-LEARNING, 11 January 2018 (2018-01-11), pages 60 - 65, XP059109673, DOI: 10.1145/3183586.3183607 * |
ROBERTO VERDECCHIA等: "Code-Level Energy Hotspot Localization via Naive Spectrum Based Testing", ADVANCES AND NEW TRENDS IN ENVIRONMENTAL INFORMATICS, 4 November 2018 (2018-11-04), pages 111 - 130 * |
廖陈志: "HPCG在多核/众核平台上的实现与优化", 中国优秀硕士学位论文全文数据库 信息科技辑, no. 1, pages 137 - 251 * |
杨晓丹 等: "MASNUM海浪模式的代码现代化优化", 海洋科学进展, vol. 35, no. 04, pages 473 - 482 * |
胡益斌 等: "基于特性分析的SURF加速方法研究", 计算机应用与软件, vol. 29, no. 9, 15 September 2012 (2012-09-15), pages 18 - 22 * |
董仕: "可压缩NS方程求解软件性能优化与并行技术研究", 中国优秀硕士学位论文全文数据库 基础科学辑, no. 2, pages 002 - 934 * |
黄昕: "基于热点函数的代码体积优化", 软件导刊, vol. 18, no. 6, 26 February 2019 (2019-02-26), pages 42 - 45 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115718620A (zh) * | 2022-11-22 | 2023-02-28 | 科东(广州)软件科技有限公司 | 一种代码程序迁移方法、装置、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114153494B (zh) | 2024-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5805863A (en) | Memory pattern analysis tool for use in optimizing computer program code | |
Zhang et al. | Accurately estimating worst-case execution time for multi-core processors with shared direct-mapped instruction caches | |
WO2020191549A1 (zh) | 一种soc芯片、确定热点函数的方法及终端设备 | |
Yin et al. | DFGNet: Mapping dataflow graph onto CGRA by a deep learning approach | |
CN114153494A (zh) | 一种基于热力图的热点代码优化方法及装置 | |
Fang et al. | Aristotle: A performance impact indicator for the OpenCL kernels using local memory | |
US8607204B2 (en) | Method of analyzing single thread access of variable in multi-threaded program | |
CN108021563B (zh) | 一种指令间数据依赖的检测方法和装置 | |
CN102541738B (zh) | 加速多核cpu抗软错误测试的方法 | |
US20040199907A1 (en) | Compiler and method for optimizing object codes for hierarchical memories | |
Du et al. | Feature-aware task scheduling on CPU-FPGA heterogeneous platforms | |
CN101727513A (zh) | 一种超长指令字处理器的设计和优化方法 | |
CN105487911A (zh) | 一种基于编译指导的众核数据分片方法 | |
Campoy et al. | Using genetic algorithms in content selection for locking-caches | |
Mariano et al. | Analyzing and improving memory access patterns of large irregular applications on numa machines | |
Garashchenko et al. | System of Combined Specialized Test Generators for the New Generation of VLIW DSP Processors with Elcore50 Architecture | |
CN118502964B (zh) | 托卡马克新经典环向粘滞力矩cuda模拟实现方法 | |
Chen et al. | Static analysis of run-time inter-thread interferences in shared cache multi-core architectures based on instruction fetching timing | |
van den Braak et al. | Simulation and architecture improvements of atomic operations on GPU scratchpad memory | |
CN111048156A (zh) | 一种大规模染色阵列性能检测评价方法 | |
CN113886251B (zh) | 基于热力图的热点函数确定方法 | |
Yu et al. | Hierarchical Read/Write Analysis for Pointer-Based OpenCL Programs on RRAM | |
CN104881840B (zh) | 一种基于图数据处理系统的数据并行访问方法 | |
Zhang et al. | Optimization and performance modeling of stencil computations on arm architectures | |
CN113468047B (zh) | 基于启发式规则的并发式自适应随机测试方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |