即时编译器中一种基于云的热路径优化方法技术

技术编号:10050646 阅读:153 留言:0更新日期:2014-05-15 21:21
本发明专利技术提供了即时编译器中一种基于云的热路径优化方法,当本地程序空闲时,将本地即时编译队列新生成的热路径上传到云端,热路径在上传时进行数据格式整理,将具有相同程序标识符的热路径整理为一个数据上传;在云端可获得同一程序多个上传数据,然后再进行统计整理,使得相同程序的热路径存储在一个数据中。当本地新启动程序或者程序空闲时,从云端下载对应程序的热路径并加入到虚拟机的即时编译队列中。本发明专利技术将各终端本地程序运行获取的“热路径”上传到云端进行整合统计,得到该程序运行时全面的“热路径”统计数据;并在用户程序空闲时,通过下载有效的云端数据来使程序中的“热路径”提前编译,从而提升了运行效率。

【技术实现步骤摘要】

本专利技术涉及即时编译器和热路径技术,具体是即时编译器中一种基于云的热路径优化方法。
技术介绍
即时编译器(Just-In-Time Compiler,JIT编译器)是一种广泛应用于Java虚拟机、Dalvik虚拟机(运行Android程序的虚拟机)以及其他语言虚拟机中的编译系统。即时编译器与传统编译系统的差别在于,它并不预先将被执行程序编译为目标代码,而是在程序运行时,将那些需要被执行的代码即时的编译成目标代码,再予以执行。由于即时编译器是在程序运行时进行编译,因此编译器本身消耗的运行时间和空间都有所限制,这也使得即时编译器中的各种优化方法倾向于采用轻量级的、较快的算法,同时,针对即时编译器的运行特征,扑捉并针对程序运行的“热路径(JIT-Trace)”进行编译,是一种重要的兼顾优化效果和优化开销的折中机制。以Dalvik虚拟机为例,如图1所示,它在启动初始化时,开始解释执行字节码,当解释程序的某段代码被调用时,字节码解释程序会记录被标记的代码执行的次数(profile count),并检测是否达到编译阀值,如果达到编译的条件,则说明该段代码为一“热路径”,切换到JIT编译器模式查找相对应的Trace入口,若不存在对应的Trace,则解释或创建Trace建立请求并提交编译请求,启动编译器线程对热路径进行编译;若存在对应的Trace,则查看是否已被编译,若未被编译,则构建编译单元,生成中间代码,在JIT-Code中对热路径进行编译。解释直到读取下一个Trace记录的头部head为止。热路径被编译后,执行编译后的机器码。与解释器模式相比,JIT编译器生成后的代码运行速度更快,字节码执行效率更好;但同时JIT编译本身也会占用较多的时间和空间资源,造成Android程序运行“卡壳”的现象;热路径的统计和计算本身也会占用大量资源;另外,JIT也存在相关的平台相关性,开发维护成本较高等问题。
技术实现思路
本专利技术针对现有热路径在即时编译器中存在的占用资源量大,开发维护成本高等问题,提出了即时编译器中一种基于云的热路径优化方法。本专利技术的即时编译器中一种基于云的热路径优化方法,针对某一程序,进行如下步骤:步骤一、当程序空闲时,判断本地即使编译器中的热路径是否有更新,若有,则执行步骤二,否则,转步骤三执行;所述的本地即使编译器中的热路径存储为Jit-Trace格式的数据结构,该数据结构包括一个字节码方法和包含该字节码方法的执行路径。步骤二、将本地Jit-Trace格式数据转换为Native-Jit-Traces格式数据,准备进行云端上传;所述的Native-Jit-Traces格式数据包括数据头和路径数据两部分;数据头包含程序标识符和版本号Cloud-Jit,程序标识符包括程序的包名、签名和版本号,版本号Cloud-Jit用于标识程序的热路径信息版本;路径数据部分以<字节码方法,执行路径数组>的键值对方式组织,执行路径数组中包含对应字节码方法的Jit-Trace格式中的各执行路径,一个键值对为一个热路径。步骤三、将位于本地的Native-Jit-Traces格式数据上传到云端,云端对具有相同程序标识符的所有Native-Jit-Traces格式数据进行统计整理,生成Cloud-Jit-Traces格式数据,并存储在云端资源池中;所述的Cloud-Jit-Traces格式数据包括程序的标识符,版本号Cloud-Jit,以及路径数据,路径数据以<字节码方法,执行路径数组,统计数据>的键值对方式组织,其中,统计数据为相应字节码方法的统计次数。一个键值对对应一个热路径。步骤四、在本地程序初始化或者本地程序空闲时,从云端下载对应程序的经过统计处理的Cloud-Jit-Traces格式数据,并将热路径加入到虚拟机的即时编译队列中。所述的步骤一中的Jit-Trace格式的数据结构,其包含的字节码方法中存储了所属类索引、方法ID、入口地址及参数信息,其包含的每条执行路径存储了路径的入口点、出口点、字节码指令数及代码标识。所述的步骤三中生成Cloud-Jit-Traces格式数据时,对于一个Native-Jit-Traces格式数据NT,首先在云端资源池中查找是否存在与NT具有相同程序标识符的Cloud-Jit-Traces格式数据,若存在执行(1),否则执行(2);当程序的Cloud-Jit-Traces格式数据被新创建或者被更新过后,将Cloud-Jit-Traces格式数据的Cloud-Jit版本号进行更新;(1)设找到与NT具有相同程序标识符的Cloud-Jit-Traces格式数据CT,对NT中的每个键值对<字节码方法,执行路径数组>,在CT中查找是否具有相同字节码方法和执行路径数组的键值对,若存在,则更新CT中对应键值对中的统计数据,否则,在CT中生成对应的键值对<字节码方法,执行路径数组,1>;(2)创建一个Cloud-Jit-Traces格式数据CT,设置CT的程序标识符与NT的程序标识符相同,对NT中的每个<字节码方法,执行路径数组>键值对,对应在CT中生成键值对<字节码方法,执行路径数组,统计数据>,初始各键值对的统计数据均为1。所述的步骤四中,设从云端下载程序对应的Cloud-Jit-Traces格式数据CT,首先检测本地是否存在与CT相同Cloud-Jit版本号的Native-Jit-Traces格式数据,若存在,则不进行下载;若不存在,则下载CT,并创建一个Native-Jit-Traces格式数据NT,设置NT的程序标识符与CT的程序标识符相同,并依据CT中每个<字节码方法,执行路径数组,统计数据>键值对,对应生成NT中的每个<字节码方法,执行路径数组>键值对,设置NT的Cloud-Jit版本号为CT的Cloud-Jit的版本号。本专利技术的优点与积极效果在于:通过各终端本地程序的运行获取其运行时程序中“热路径”信息,上传到云端进行整合统计,从而得到该程序运行时全面的“热路径”统计数据;最终,用户程序在空闲时,通过下载有效的云端数据来达到使程序中的“热路径”提前编译的目的,从而使运行效率得到较大的提升。附图说明图1是本专利技术的基于云的热路径优化方法的原理示意图;图2是Jit-Trace格式的数据结构示意图;图3是云端上传的Native-Jit-Traces格式的数据结构示意图;图4是将本地编译队列中的热路径转换为Native-Jit-Tr本文档来自技高网
...
即时编译器中一种基于云的热路径优化方法

【技术保护点】
即时编译器中一种基于云的热路径优化方法,其特征在于,针对某一程序,进行如下步骤:步骤1:当程序空闲时,判断本地即使编译器中的热路径是否有更新,若有,执行步骤二,否则,执行步骤三;所述的本地即使编译器中的热路径存储为Jit‑Trace格式的数据结构,该数据结构包括一个字节码方法和包含该字节码方法的执行路径;步骤2:将本地Jit‑Trace格式数据转换为Native‑Jit‑Traces格式数据;所述的Native‑Jit‑Traces格式数据包括数据头和路径数据两部分;数据头包含程序标识符和版本号Cloud‑Jit,程序标识符包括程序的包名、签名和版本号;路径数据部分以<字节码方法,执行路径数组>的键值对方式组织,执行路径数组中包含对应字节码方法的Jit‑Trace格式中的各执行路径,一个键值对对应一个热路径;步骤3:将位于本地的Native‑Jit‑Traces格式数据上传到云端,云端对具有相同程序标识符的所有Native‑Jit‑Traces格式数据进行统计整理,生成Cloud‑Jit‑Traces格式数据,并存储在云端资源池中;所述的Cloud‑Jit‑Traces格式数据包括程序标识符,版本号Cloud‑Jit,以及路径数据,路径数据以<字节码方法,执行路径数组,统计数据>的键值对方式组织,其中,统计数据为相应字节码方法的统计次数,一个键值对对应一个热路径;步骤4:在本地程序初始化或者本地程序空闲时,从云端下载对应程序的经过统计处理的Cloud‑Jit‑Traces格式数据,并将热路径加入到虚拟机的即时编译队列中。...

【技术特征摘要】
1.即时编译器中一种基于云的热路径优化方法,其特征在于,针对某一程序,进行如下
步骤:
步骤1:当程序空闲时,判断本地即使编译器中的热路径是否有更新,若有,执行步骤
二,否则,执行步骤三;
所述的本地即使编译器中的热路径存储为Jit-Trace格式的数据结构,该数据结构包括一
个字节码方法和包含该字节码方法的执行路径;
步骤2:将本地Jit-Trace格式数据转换为Native-Jit-Traces格式数据;
所述的Native-Jit-Traces格式数据包括数据头和路径数据两部分;数据头包含程序标识符
和版本号Cloud-Jit,程序标识符包括程序的包名、签名和版本号;路径数据部分以<字节码方
法,执行路径数组>的键值对方式组织,执行路径数组中包含对应字节码方法的Jit-Trace格式
中的各执行路径,一个键值对对应一个热路径;
步骤3:将位于本地的Native-Jit-Traces格式数据上传到云端,云端对具有相同程序标识
符的所有Native-Jit-Traces格式数据进行统计整理,生成Cloud-Jit-Traces格式数据,并存储在
云端资源池中;
所述的Cloud-Jit-Traces格式数据包括程序标识符,版本号Cloud-Jit,以及路径数据,路
径数据以<字节码方法,执行路径数组,统计数据>的键值对方式组织,其中,统计数据为相
应字节码方法的统计次数,一个键值对对应一个热路径;
步骤4:在本地程序初始化或者本地程序空闲时,从云端下载对应程序的经过统计处理
的Cloud-Jit-Traces格式数据,并将热路径加入到虚拟机的即时编译队列中。
2.根据权利要求1所述的即时编译器中一种基于云的热路径优化方法,其特征在于,步
骤1中所述的Jit-Trace格式的数据结构,其包含的字节码方法中存储了所属类索引、方法ID、
入口地址及参数信息,其包含的每条执行路径存储了路径的入口点、出口点、字节码指令数
及代码标识。
3.根据权利要求...

【专利技术属性】
技术研发人员:范礼阳史晓华赵胜男杨海燕
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:北京;11

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

1