【技术实现步骤摘要】
一种应用程序的运行方法和装置
[0001]本申请实施例涉及电子设备领域,尤其涉及一种应用程序的运行方法和装置。
技术介绍
[0002]对于具有解释型语言,例如JAVA,Perl,Python,MATLAB等,可以提前将解释型语言转换高级编程语言到更有效率的字节码,字节码是一种不依赖于目标平台的中间码,可以被解释执行,也可以被运行在直接支持字节码的处理器中,然后由电子设备通过解释执行的方式对字节码进行逐行的解释执行,实现该应用程序的运行,对字节码解释执行的效率低于直接执行编译后的原生机器码,为了提升执行效率,技术人员提出了即时编译(Just
‑
in
‑
timecompilation)技术,即在运行中对字节码编译成原生机器码进行执行,研发人员致力于持续在性能和内存占用上优化即时编译(Just
‑
in
‑
time compilation)技术的应用。
技术实现思路
[0003]本申请实施例提供一种应用程序的运行方法和装置,可以避免对同一个函数的多次JIT 编译和存储,从而提升JIT编译获取的机器码的使用效率,提升电子设备的运行效率。
[0004]为了达到上述目的,本申请实施例采用如下技术方案:
[0005]第一方面,提供一种应用程序的运行方法,应用于电子设备,该电子设备中安装有第一应用程序,该第一应用程序中包括第一函数,该方法包括:在第一进程中加载该第一应用程序。在该第一进程中解释执行该第一函数。在该第一进程中在解释执行 ...
【技术保护点】
【技术特征摘要】
1.一种应用程序的运行方法,其特征在于,应用于电子设备,所述电子设备中安装有第一应用程序,所述第一应用程序中包括第一函数,所述方法包括:在第一进程中加载所述第一应用程序;在所述第一进程中解释执行所述第一函数;在所述第一进程中在解释执行所述第一函数的次数达到所述第一函数的第一编译阈值后,对所述第一函数执行编译;将所述第一函数执行编译的结果存储在共享代码缓存中,所述共享代码缓存是所述电子设备中至少进程都能够访问的缓存。2.根据权利要求1所述的方法,其特征在于,所述电子设备中还安装有第二应用程序,所述第二应用程序中包括第一函数,所述方法还包括:在第二进程中加载所述第二应用程序;所述第二进程与所述第一进程的父进程相同;在所述第二进程中调用所述第一函数时,从所述共享代码缓存中,读取并运行所述第一函数执行编译的结果。3.根据权利要求2所述的方法,其特征在于,所述电子设备中存储有第一函数状态记录表,所述第一函数状态记录表用于记录不同函数经过编译之后的存储地址,所述第二进程从所述共享代码缓存中,读取并运行所述第一函数执行编译的结果,包括:在所述第二进程中读取所述第一函数状态记录表,根据所述第一函数的函数签名,查找所述第一函数状态记录表中是否存在所述第一函数对应的存储地址;在存在所述第一函数对应的存储地址时,从所述存储地址读取所述第一函数经过编译的机器码,执行所述第一函数经过编译的机器码。4.根据权利要求3所述的方法,其特征在于,在所述第一进程将所述第一函数执行编译的结果存储在共享代码缓存中之前,所述方法还包括:所述第一进程建立/更新所述第一函数状态记录表中所述第一函数经过编译之后的存储地址。5.根据权利要求3或4所述的方法,其特征在于,在所述第一函数状态记录表中不存在所述第一函数对应的存储地址时,所述方法还包括:在所述第二进程中解释执行所述第一函数。6.根据权利要求1
‑
5中任一项所述的方法,其特征在于,在所述第一进程中对所述第一函数执行编译之前,所述方法还包括:确定所述第一函数被多个不同进程调用。7.根据权利要求6所述的方法,其特征在于,所述电子设备中存储有所述第一函数对应的函数访问记录表;所述确定所述第一函数被多个不同进程调用,包括:读取所述函数访问记录表,根据所述函数访问记录表中,存在至少一个第三进程调用过所述第一函数,确定所述第一函数被多个不同进程调用;所述第三进程不同于所述第一进程。8.根据权利要求7所述的方法,其特征在于,所述方法还包括:在所述第三进程调用所述第一函数时,在所述函数访问记录表中,建立/更新与所述第
一函数对应的第一表项,所述第一表项用于指示所述第一函数被所述第三进程调用的次数。9.根据权利要求7或8所述的方法,其特征在于,所述方法还包括:在所述第一进程调用所述第一函数时,在所述函数访问记录表中,建立/更新与所述第一函数对应的第二表项,所述第二表项用于指示所述第一函数被所述第一进程调用的次数。10.根据权利要求1
‑
9中任一项所述的方法,其特征在于,在所述编译过程中不使用内联优化。11.根据权利要求10所述的方法,其特征在于,所述方法还包括:在所述第一进程中在解释执行所述第一函数的次数达到所述第一函数的第二编译阈值后,对所述第一函数执行编译,将所述第一函数执行编译的结果存储在所述第一进程的私有代码缓存中。12.根据权利要求11所述的方法,其特征在于,所述方法还包括:在所述第一进程中,再次调用所述第一函数时,从所述私有代码缓存中,读取并执行所述第一函数执行编译获取的机器码。13.根据权利要求12所述的方法,其...
【专利技术属性】
技术研发人员:季柯丞,邱榆,彭卓立,李文韬,
申请(专利权)人:华为技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。