System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及计算机,尤其涉及一种代码处理方法、装置及电子设备。
技术介绍
1、随着中央处理器(centralprocessingunit,cpu)的发展放缓,软硬件协同优化的重要性日益突出。目前,大量的应用程序由于分支过多或者二进制过大等原因容易造成cpu前端依赖(frontend bound),cpu前端依赖是指cpu获取指令速度较慢或者cpu对复杂指令的翻译过程较长,从而降低了应用程序的性能。因此,如何降低cpu前端依赖,提高应用程序的性能成为目前亟需解决问题。
2、现有技术中,利用二进制优化工具(binaryoptimizationandlayouttool,bolt)对应用程序中的基本块重新排布,以降低cpu前端依赖,提高应用程序的性能。具体的,cpu每执行一次应用程序,bolt就按照应用程序中基本块使用频率从高到低的顺序对基本块进行一次重新排布,并将重新排布后的基本块存储在连续的内存中,以更新二进制文件;cpu再次执行,按照缓存行大小在内存中获取指令时,获取到的大多数都是热块,提高了获取指令的效率,缩短了cpu获取指令的时间,从而提高了应用程序的性能。
3、但是,cpu每运行一次应用程序,基本块就需要重新排布一次,二进制文件就需要更新一次,增大运维压力。
技术实现思路
1、本申请提供一种代码处理方法、装置及电子设备,用于降低cpu前端依赖的同时,减小运维压力。
2、为达到上述目的,本申请采用如下技术方案:
3、第一方面,提供一
4、本申请提供的技术方案中,根据当前执行的第一代码块的标识信息,在目标代码的调用信息中,获取在第一代码块之后执行的第二代码块的标识信息,并在缓存中存储该第二代码块。实现cpu在执行第一代码块时,提前将第一代码块之后执行的第二代码块存储在缓存中,当执行第二代码块时,可以直接在缓存中获取第二代码块,无需再去内存中获取第二代码块,由于在缓存中获取指令的速度比在内存中获取指令的速度快,提高了获取第二代码块的速度,从而降低了cpu前端依赖,提高了应用程序的性能;且在此过程中没有生成新的代码文件,与现有技术中不断更新代码文件相比,节省了内存和时间,减小了运维压力,进一步提高了应用程序的性能。
5、在第一方面的一种可能的实现方式中,该第二代码块为该第一代码块所在组的下一跳组中的代码块。上述可能的实现方式中,提前将第一代码块所在组的下一跳组中的代码块存储在缓存中,由于在缓存中获取指令的速度比在内存中获取指令的速度快,提高了获取代码块的速度。
6、在第一方面的一种可能的实现方式中,该第一代码块为该目标代码的第一个组中的一个代码块,该第二代码块包括该第一个组中其余代码块,和该第一代码块所在组的下一跳组中的代码块。上述可能的实现方式中,提前将第一个组中其余代码块,和该第一代码块所在组的下一跳组中的代码块存储在缓存中,由于在缓存中获取指令的速度比在内存中获取指令的速度快,提高了获取代码块的速度。
7、在第一方面的一种可能的实现方式中,该方法还包括:根据该目标代码包括的代码块在多个不同业务路径下的执行顺序,确定该调用信息。上述可能的实现方式中,根据多个不同业务路径下的执行顺序,确定调用信息,提高了调用信息的准确性。
8、在第一方面的一种可能的实现方式中,该根据该目标代码包括的代码块在多个不同业务路径下的执行顺序,确定该调用信息,包括:根据该执行顺序,分别确定该目标代码中代码块的块信息,该块信息包括代码块的标识信息和下一跳块的标识信息;根据该块信息,将满足条件的代码块作为一个组,得到多个代码块组;其中,该条件用于指示属于相同的业务路径,且被连续调用;生成该调用信息,该调用信息包括该多个代码块组中每个代码块组的组信息,该组信息包括组标识信息、下一跳组的标识信息和代码块组中代码块的标识信息。上述可能的实现方式中,该调用信息包括该多个代码块组中每个代码块组的组信息,该组信息包括组标识信息、下一跳组的标识信息和代码块组中代码块的标识信息,提高了获取第二代码块的标识信息的效率。
9、在第一方面的一种可能的实现方式中,该组信息还包括组被调用次数,该方法还包括:删除调用信息中组被调用次数小于第一阈值的代码块组的组信息。上述可能的实现方式中,提高了调用信息的利用率。
10、在第一方面的一种可能的实现方式中,该第二代码块为该第一代码块的下一跳块。上述可能的实现方式中,提前将第一代码块的下一跳块存储在缓存中,执行第一代码块的下一跳块时,直接在缓存中获取,由于在缓存中获取指令的速度比在内存中获取指令的速度快,提高了获取代码块的速度。
11、在第一方面的一种可能的实现方式中,该分别确定该目标代码中代码块的块信息,包括:分别确定该目标代码中热块的该块信息,该热块为该目标代码中该代码块被调用次大于第二阈值的代码块。上述可能的实现方式中,确定该目标代码中热块的该块信息,提高了块信息的利用率。
12、在第一方面的一种可能的实现方式中,该代码块的大小为该缓存的缓存行大小的整数倍。上述可能的实现方式中,增加了划分目标代码的可选择性。
13、在第一方面的一种可能的实现方式中,该目标代码包括二进制代码段。上述可能的实现方式中,增加了目标代码的可选择性。
14、在第一方面的一种可能的实现方式中,该按照该第二代码块的标识信息,在缓存中存储该第二代码块,包括:按照该第二代码块的标识信息,从该缓存对应的内存中,读取该缓存中未存储的该第二代码块。上述可能的实现方式中,读取该缓存中未存储的该第二代码块,确保第二代码块均存储在缓存中,在执行第二代码块时,提高了获取第二代码块的速度。
15、在第一方面的一种可能的实现方式中,该按照该第二代码块的标识信息,从该缓存对应的内存中,读取该缓存中未存储的该第二代码块,包括:按照该第二代码块的标识信息,确定该缓存中未存储的该第二代码块的目标地址;根据该目标地址,在该内存中读取目标代码块;将读取的该目标代码块存储在该缓存中。上述可能的实现方式中,读取该缓存中未存储的该第二代码块,确保第二代码块均存储在缓存中,在执行第二代码块时,提高了获取第二代码块的速度。
16、第二方面,提供一种代码处理装置,该装置包括:获取单元,用于获取目标代码中当前执行的第一代码块的标识信息;该获取单元,还用于根据该第一代码块的标识信息,在该目标代码的调用信息中,获取该第一代码块之后执行的第二代码块的标识信息,该调用信息包括该目标代码中多个代码块的标识信息以及执行顺序;存储单元,用于按照该第二代码块的标识信息,在缓存中存储该第二代码块。
17、在第本文档来自技高网...
【技术保护点】
1.一种代码处理方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述第二代码块为所述第一代码块所在组的下一跳组中的代码块。
3.根据权利要求1所述的方法,其特征在于,所述第一代码块为所述目标代码的第一个组中的一个代码块,所述第二代码块包括所述第一个组中其余代码块,和所述第一代码块所在组的下一跳组中的代码块。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
5.根据权利要求4所述的方法,其特征在于,所述根据所述目标代码包括的代码块在多个不同业务路径下的执行顺序,确定所述调用信息,包括:
6.根据权利要求5所述的方法,其特征在于,所述组信息还包括组被调用次数,所述方法还包括:
7.根据权利要求1所述的方法,其特征在于,所述第二代码块为所述第一代码块的下一跳块。
8.根据权利要求5-7任一项所述的方法,其特征在于,所述分别确定所述目标代码中代码块的块信息,包括:
9.根据权利要求1-8任一项所述的方法,其特征在于,所述代码块的大小为所述缓存的
10.根据权利要求1-9任一项所述的方法,其特征在于,所述目标代码包括二进制代码段。
11.根据权利要求1-10任一项所述的方法,其特征在于,所述按照所述第二代码块的标识信息,在缓存中存储所述第二代码块,包括:
12.根据权利要求11所述的方法,其特征在于,所述按照所述第二代码块的标识信息,从所述缓存对应的内存中,读取所述缓存中未存储的所述第二代码块,包括:
13.一种代码处理装置,其特征在于,所述装置包括:
14.根据权利要求13所述的装置,其特征在于,所述第二代码块为所述第一代码块所在组的下一跳组中的代码块。
15.根据权利要求13所述的装置,其特征在于,所述第一代码块为所述目标代码的第一个组中的一个代码块,所述第二代码块包括所述第一个组中其余代码块,和所述第一代码块所在组的下一跳组中的代码块。
16.根据权利要求13-15任一项所述的装置,其特征在于,所述装置还包括:
17.根据权利要求16所述的装置,其特征在于,所述确定单元具体用于:
18.根据权利要求17所述的装置,其特征在于,所述组信息还包括组被调用次数,所述装置还包括:
19.根据权利要求13所述的装置,其特征在于,所述第二代码块为所述第一代码块的下一跳块。
20.根据权利要求17-19任一项所述的装置,其特征在于,所述确定单元还用于:
21.根据权利要求13-20任一项所述的装置,其特征在于,所述代码块的大小为所述缓存的缓存行大小的整数倍。
22.根据权利要求13-21任一项所述的装置,其特征在于,所述目标代码包括二进制代码段。
23.根据权利要求13-22任一项所述的装置,其特征在于,所述装置还包括:
24.根据权利要求23所述的装置,其特征在于,所述读取单元具体用于:
25.一种电子设备,其特征在于,所述电子设备包括处理器和存储器,所述存储器用于存储指令,所述处理器用于执行如权利要求1-12任一项所述的代码处理方法。
26.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括计算机指令,当所述计算机指令在代码处理装置上运行时,使得所述代码处理装置执行如权利要求1-12任一项所述的代码处理方法。
27.一种包含指令的计算机程序产品,其特征在于,当所述计算机程序产品在计算机设备上运行时,使得计算机设备执行如权利要求1-12任一项所述的代码处理方法。
...【技术特征摘要】
1.一种代码处理方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述第二代码块为所述第一代码块所在组的下一跳组中的代码块。
3.根据权利要求1所述的方法,其特征在于,所述第一代码块为所述目标代码的第一个组中的一个代码块,所述第二代码块包括所述第一个组中其余代码块,和所述第一代码块所在组的下一跳组中的代码块。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
5.根据权利要求4所述的方法,其特征在于,所述根据所述目标代码包括的代码块在多个不同业务路径下的执行顺序,确定所述调用信息,包括:
6.根据权利要求5所述的方法,其特征在于,所述组信息还包括组被调用次数,所述方法还包括:
7.根据权利要求1所述的方法,其特征在于,所述第二代码块为所述第一代码块的下一跳块。
8.根据权利要求5-7任一项所述的方法,其特征在于,所述分别确定所述目标代码中代码块的块信息,包括:
9.根据权利要求1-8任一项所述的方法,其特征在于,所述代码块的大小为所述缓存的缓存行大小的整数倍。
10.根据权利要求1-9任一项所述的方法,其特征在于,所述目标代码包括二进制代码段。
11.根据权利要求1-10任一项所述的方法,其特征在于,所述按照所述第二代码块的标识信息,在缓存中存储所述第二代码块,包括:
12.根据权利要求11所述的方法,其特征在于,所述按照所述第二代码块的标识信息,从所述缓存对应的内存中,读取所述缓存中未存储的所述第二代码块,包括:
13.一种代码处理装置,其特征在于,所述装置包括:
14.根据权利要求13所述的装置,其特征在于,所述第二代码块为所述第一代码块所在组的下一跳组中的代码块。<...
【专利技术属性】
技术研发人员:侯冰剑,李渊,朱志坤,付鹤鸣,叶沣,
申请(专利权)人:华为技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。