一种文件处理方法及装置与流程

摘要: 本技术实施例涉及计算机,尤其涉及一种文件处理方法及装置。背景技术:1、随着软件技术的发展,手机、个人电脑和服务器的应用负载日趋复杂,导致中央处理器(centra...
一种文件处理方法及装置与流程

本技术实施例涉及计算机,尤其涉及一种文件处理方法及装置。

背景技术:

1、随着软件技术的发展,手机、个人电脑和服务器的应用负载日趋复杂,导致中央处理器(central processing unit,cpu)微架构流水线出现瓶颈,影响cpu的执行效率。

2、当前,计算机领域不同软件生态具有共性,即应用程序逻辑复杂以及开发时使用大量中间件和系统库(即库文件),这提升了应用程序的开发效率,但是也导致了应用程序镜像大的问题。当应用程序运行时,可能会在不同库文件之间跳转,cpu经常发生缓存命中失败、页表命中失败和分支预测失败等问题,应用程序的指令流的执行效率较低。

技术实现思路

1、本技术实施例提供一种文件处理方法及装置,提高了应用程序的指令流的执行效率。

2、为达到上述目的,本技术实施例采用如下技术方案。

3、第一方面,本技术实施例提供一种文件处理方法,该文件处理方法包括:获取多个第一库文件,将多个第一库文件映射到连续的虚拟地址空间,得到第二库文件,对第二库文件进行重排,得到第三库文件。

4、由此,本技术实施例提供的文件处理方法中,将多个第一库文件映射到连续的虚拟地址空间,即将多个不同随机虚拟地址空间的第一库文件,映射到连续的虚拟地址空间,由此可以从全局的角度对第二库文件进行重排,以进行应用程序的指令流的优化。相较于对单个库文件进行指令流的优化,本技术实施例提供的文件处理方法可以从全局的角度对多个第一库文件进行指令流的优化,即可以做到单个库文件的优化,同时也可以做到跨库文件的优化,减少缓存命中失败次数和分支预测失败次数,以提高应用程序的指令流的执行效率。

5、在一种可能的实现方式中,第二库文件包括多个第一代码段,对第二库文件进行重排,得到第三文件,包括:获取第二库文件中每个第一代码段的执行次数,将执行次数大于预设阈值的多个第一代码段连续排列,以及将执行次数小于或等于预设阈值的多个第一代码段连续排列,得到第三库文件。

6、这种实现方式中,执行次数大于预设阈值的第一代码段可以理解为热代码段,执行次数小于或等于预设阈值的第一代码段可以理解为冷代码段,本技术实施例提供的文件处理方法可以实现全局热代码段的汇聚,可以减少缓存命中失败次数、分支跳转失败次数和分支预测失败次数,提高了指令流的执行效率。

7、在一种可能的实现方式中,获取第二库文件中每个第一代码段的执行次数,包括:对每个第一代码段对应的原始代码进行编译,得到重定位二进制文件,基于重定位二进制文件,得到每个第一代码段的执行次数。

8、在一种可能的实现方式中,获取第二库文件中每个第一代码段的执行次数,包括:基于每个第一代码段对应的原始代码得到原始二进制,对原始二进制进行采样,得到每个第一代码段的执行次数。

9、在一种可能的实现方式中,第一库文件包括第二数据段和第二代码段,将多个第一库文件映射到连续的虚拟地址空间,得到第二库文件,包括:合并多个第一库文件,得到第四库文件,第四库文件包括第三数据段、第三代码段和合并段,第三数据段包括多个第二数据段,第三代码段包括多个第二代码段,合并段包括第四库文件和多个第一库文件的映射关系,将第四库文件映射到连续的虚拟地址空间,得到第二库文件。

10、这种实现方式中,该文件处理方法可以将多个第一库文件合并为一个第四库文件,第四库文件中的数据段和代码段重新组合,并增加了合并段,合并段包括了第四库文件和多个第一库文件的映射关系。该文件处理方法后续可以对合并后的第四库文件进行全局的优化,以提高应用程序的指令流的执行效率。

11、在一种可能的实现方式中,将多个第一库文件映射到连续的虚拟地址空间,得到第二库文件,包括:将多个第一库文件依次映射到连续的虚拟地址空间,以得到第二库文件。

12、这种实现方式中,该文件处理方法可以将多个第一库文件依次映射到连续的虚拟地址空间,以后续对第二库文件进行全局的优化,以提高应用程序的指令流的执行效率。

13、在一种可能的实现方式中,方法还包括:将第三库文件对应的虚拟地址空间映射到大页内存。

14、这种实现方式中,将第三库文件对应的虚拟地址空间映射到大页内存,可以减少页表项的数量,提高了查询缓存的命中率。

15、第二方面,本技术实施例提供一种文件处理装置,该文件处理装置包括:获取模块、处理模块和重排模块。获取模块用于获取多个第一库文件,处理模块用于将多个第一库文件映射到连续的虚拟地址空间,得到第二库文件,重排模块用于对第二库文件进行重排,得到第三库文件。

16、在一种可能的实现方式中,重排模块具体用于:获取第二库文件中每个第一代码段的执行次数,将执行次数大于预设阈值的多个第一代码段连续排列,以及将执行次数小于或等于预设阈值的多个第一代码段连续排列,得到第三库文件。

17、在一种可能的实现方式中,重排模块具体用于:对每个第一代码段对应的原始代码进行编译,得到重定位二进制文件,基于重定位二进制文件,得到每个第一代码段的执行次数。

18、在一种可能的实现方式中,重排模块具体用于:基于每个第一代码段对应的原始代码得到原始二进制,对原始二进制进行采样,得到每个第一代码段的执行次数。

19、在一种可能的实现方式中,第一库文件包括第二数据段和第二代码段,处理模块,具体用于:合并多个第一库文件,得到第四库文件,第四库文件包括第三数据段、第三代码段和合并段,第三数据段包括多个第二数据段,第三代码段包括多个第二代码段,合并段包括第四库文件和多个第一库文件的映射关系。将第四库文件映射到连续的虚拟地址空间,得到第二库文件。

20、在一种可能的实现方式中,处理模块,具体用于:将多个第一库文件依次映射到连续的虚拟地址空间,上一个第一库文件的结束地址和下一个第一库文件的起始地址连续,以得到第二库文件。

21、在一种可能的实现方式中,处理模块,还用于:将第三库文件对应的虚拟地址空间映射到大页内存。

22、第三方面,本技术实施例提供了一种电子设备,包括一个或多个处理器以及一个或多个存储器。该一个或多个存储器与一个或多个处理器耦合,一个或多个存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,当一个或多个处理器执行计算机指令时,使得电子设备执行上述第一方面中任一项可能的实现方式中的文件处理方法。

23、第四方面,本技术实施例提供了一种计算机可读存储介质,包括计算机指令,当计算机指令在电子设备上运行时,使得电子设备执行上述第一方面中任一项可能的实现方式中的文件处理方法。

24、第五方面,本技术实施例提供了一种计算机程序产品,当计算机程序产品在计算机或处理器上运行时,使得计算机或处理器执行上述第一方面中任一项可能的实现方式中的文件处理方法。

25、可以理解的是,上述提供的任一种文件处理装置、电子设备、计算机可读存储介质或计算机程序产品等均可以应用于上文所提供的对应的方法,因此,其所能达到的有益效果可参考对应的方法中的有益效果,此处不再赘述。

26、本技术的这些方面或其他方面在以下的描述中会更加简明易懂。