对程序预编译的方法及装置制造方法及图纸

技术编号:15541050 阅读:303 留言:0更新日期:2017-06-05 10:38
本公开是关于一种对程序预编译的方法及装置,属于电子技术应用领域。所述方法包括:获取目标程序的优化信息,所述优化信息中包括所述目标程序中至少一个待优化函数的函数名以及每个待优化函数对应的运行阶段;根据所述优化信息,对每个运行阶段对应的待优化函数进行编译。由于智能设备在对目标程序进行预编译的过程中,可以仅对优化信息中记载的函数进行编译,而无需再对该目标程序中的所有函数进行编译,因此有效提高了对该目标程序的编译效率,进而提高了系统启动和运行的速度。

Method and device for pre compiling program

The present disclosure relates to a method and a device for pre compiling a program, belonging to the field of electronic technology application. The method includes: optimization of information acquisition program, the optimization information including operation stage of the target program in at least one of the function to be optimized and the name of the function to be optimized each corresponding functions; according to the information of each phase of the operation optimization, the corresponding function to be optimized and compiled. Because smart devices in the target program pre compilation process, can be compiled only for the optimization function of the information recorded, and no longer need to all function of the target in the program are compiled, thus effectively improves the target compiler efficiency, and improve the system of starting and running speed.

【技术实现步骤摘要】
对程序预编译的方法及装置
本公开涉及电子技术应用领域,特别涉及一种对程序预编译的方法及装置。
技术介绍
智能设备在首次启动时,或者在操作系统更新后,需要先对系统中所有已安装程序进行预编译。该预编译的过程可以包括:将每个程序中的各个函数编译成预设格式(例如DEX格式)的文件,之后通过虚拟机将该预设格式的文件编译成智能设备所支持的机器码,并保存该机器码。当某个程序被触发时,智能设备可以直接执行该程序对应的机器码,从而实现程序的快速启动和运行。相关技术中,智能设备在首次启动时,或者在操作系统更新后,需要将每个程序中的所有函数全部编译为机器码,该编译时间较长,系统启动和运行速度较慢。
技术实现思路
为了解决相关技术中程序启动和运行速度较慢的问题,本公开提供了一种对程序预编译的方法及装置。所述技术方案如下:根据本公开实施例的第一方面,提供一种对程序预编译的方法,所述方法包括:获取目标程序的优化信息,所述优化信息中包括所述目标程序中至少一个待优化函数的函数名以及每个待优化函数对应的运行阶段;根据所述优化信息,对每个运行阶段对应的待优化函数进行编译。可选的,所述获取目标程序的优化信息,包括:向服务器发送针对所述目标程序的优化信息的获取请求,所述获取请求中包括所述目标程序的标识;接收服务器发送的所述目标程序的优化信息。可选的,所述每个待优化函数对应的运行阶段包括:启动阶段、开始阶段和正常运行阶段,所述根据所述优化信息,对每个运行阶段对应的待优化函数进行编译,包括:在所述目标程序启动前,采用预编译算法对与所述启动阶段对应的待优化函数进行编译;在所述目标程序的启动阶段,采用即时编译算法对与所述开始运行阶段对应的待优化函数进行动态编译;在所述目标程序的开始运行阶段,采用即时编译算法对与所述正常运行阶段对应的待优化函数进行动态编译。可选的,所述方法还包括:保存对待优化函数进行编译后得到的机器码。可选的,所述方法还包括:在第一程序运行的过程中,每隔预设时间段,统计一次所述第一程序中各函数的调用次数,所述第一程序为所述智能设备中安装的任一程序;向服务器发送所述第一程序的统计信息,所述统计信息中包括所述第一程序中每个函数的函数名、每个函数的调用次数以及每个函数对应的运行阶段。可选的,所述预设时间段与所述第一程序的运行时长正相关。可选的,所述方法还包括:检测所述第一程序是否为预设程序;当所述第一程序为预设程序时,根据所述第一程序的统计信息,将第一程序中,调用次数大于第一阈值的函数的函数名和对应的运行阶段记录在所述第一程序的优化信息中。可选的,所述优化信息中还包括所述目标程序中至少一个函数经过编译后的机器码。根据本公开实施例的第二方面,提供一种对程序预编译的方法,所述方法包括:接收智能设备发送的针对目标程序的优化信息的获取请求,所述获取请求中包括所述目标程序的标识;根据所述获取请求,从预先存储的程序标识和优化信息的对应关系中,获取与所述目标程序的标识对应的优化信息,所述优化信息中包括所述目标程序中至少一个待优化函数的函数名以及每个待优化函数对应的运行阶段;将获取到的优化信息发送至所述智能设备。可选的,所述方法还包括:接收多个智能设备上报的针对多个程序的统计信息,其中,所述多个程序中的任一程序的统计信息中包括:所述任一程序中每个函数的函数名、每个函数的调用次数以及每个函数对应的运行阶段;根据多个智能设备上报的针对多个程序的统计信息,计算每个程序中,每个函数的平均调用次数;将每个程序中,平均调用次数大于第一阈值的函数的函数名和对应的运行阶段记录在所述每个程序的优化信息中。可选的,所述任一程序的统计信息中还包括所述任一程序的启动次数,所述方法还包括:根据多个智能设备上报的针对多个程序的统计信息,从所述多个程序中确定待优化程序,所述待优化程序为平均启动次数大于第二阈值的程序;对所述待优化程序中,平均调用次数大于第三阈值的函数进行预编译;将预编译后的机器码记录在所述待优化程序的优化信息中。可选的,所述多个智能设备中第一智能设备上报的统计信息中还包括:所述第一智能设备的设备标识以及所述第一智能设备的操作系统标识,所述第一智能设备为所述多个智能设备中的任一智能设备;所述根据多个智能设备上报的针对多个程序的统计信息,计算每个程序中,每个函数的平均调用次数,包括:将所述多个智能设备划分N组,其中每组智能设备的操作系统标识相同,所述N为正整数;根据预设的设备标识与权重值的对应关系,获取每组智能设备中每个智能设备的权重值;对于所述第一程序中的每个函数,根据所述每组智能设备中每个智能设备的权重值,对每组智能设备中每个智能设备上报的调用次数进行加权平均,计算得到每个函数的N个平均调用次数,其中每个平均调用次数对应一个操作系统标识,所述第一程序为所述多个程序中的任一程序;所述将每个程序中,平均调用次数大于第一阈值的函数的函数名和对应的运行阶段记录在所述每个程序的优化信息中,包括:对于所述第一程序中各个函数的第i个平均调用次数,将第i个平均调用次数大于第一阈值的函数的函数名和对应的运行阶段记录在所述第一程序的第i个优化信息中,得到所述第一程序的N个优化信息,其中每个优化信息对应一个操作系统的标识,i为小于等于N的正整数。可选的,所述获取请求中还包括所述智能设备的操作系统的标识;所述根据所述获取请求,从预先存储的程序标识和优化信息的对应关系中,获取与所述目标程序的标识对应的优化信息,包括:根据所述获取请求,从预先存储的程序标识、操作系统标识和优化信息的对应关系中,获取与所述目标程序的标识和操作系统标识对应的优化信息。根据本公开实施例的第三方面,提供一种对程序预编译的装置,所述装置包括:获取模块,被配置为获取目标程序的优化信息,所述优化信息中包括所述目标程序中至少一个待优化函数的函数名以及每个待优化函数对应的运行阶段;编译模块,被配置为根据所述优化信息,对每个运行阶段对应的待优化函数进行编译。可选的,所述获取模块,被配置为:向服务器发送针对所述目标程序的优化信息的获取请求,所述获取请求中包括所述目标程序的标识;接收服务器发送的所述目标程序的优化信息。可选的,所述每个待优化函数对应的运行阶段包括:启动阶段、开始阶段和正常运行阶段,所述编译模块,被配置为:在所述目标程序启动前,采用预编译算法对与所述启动阶段对应的待优化函数进行编译;在所述目标程序的启动阶段,采用即时编译算法对与所述开始运行阶段对应的待优化函数进行动态编译;在所述目标程序的开始运行阶段,采用即时编译算法对与所述正常运行阶段对应的待优化函数进行动态编译。可选的,所述装置还包括:存储模块,被配置为保存对待优化函数进行编译后得到的机器码。可选的,所述装置还包括:统计模块,被配置为在第一程序运行的过程中,每隔预设时间段,统计一次所述第一程序中各函数的调用次数,所述第一程序为所述智能设备中安装的任一程序;发送模块,被配置为向服务器发送所述第一程序的统计信息,所述统计信息中包括所述第一程序中每个函数的函数名、每个函数的调用次数以及每个函数对应的运行阶段。可选的,所述预设时间段与所述第一程序的运行时长正相关。可选的,所述装置还包括:检测模块,被配置为检测所述第一程序是否为预设程序;记录模块,被配置为当所述第一程本文档来自技高网...
对程序预编译的方法及装置

【技术保护点】
一种对程序预编译的方法,其特征在于,所述方法包括:获取目标程序的优化信息,所述优化信息中包括所述目标程序中至少一个待优化函数的函数名以及每个待优化函数对应的运行阶段;根据所述优化信息,对每个运行阶段对应的待优化函数进行编译。

【技术特征摘要】
1.一种对程序预编译的方法,其特征在于,所述方法包括:获取目标程序的优化信息,所述优化信息中包括所述目标程序中至少一个待优化函数的函数名以及每个待优化函数对应的运行阶段;根据所述优化信息,对每个运行阶段对应的待优化函数进行编译。2.根据权利要求1所述的方法,其特征在于,所述获取目标程序的优化信息,包括:向服务器发送针对所述目标程序的优化信息的获取请求,所述获取请求中包括所述目标程序的标识;接收服务器发送的所述目标程序的优化信息。3.根据权利要求1所述的方法,其特征在于,所述每个待优化函数对应的运行阶段包括:启动阶段、开始阶段和正常运行阶段,所述根据所述优化信息,对每个运行阶段对应的待优化函数进行编译,包括:在所述目标程序启动前,采用预编译算法对与所述启动阶段对应的待优化函数进行编译;在所述目标程序的启动阶段,采用即时编译算法对与所述开始运行阶段对应的待优化函数进行动态编译;在所述目标程序的开始运行阶段,采用即时编译算法对与所述正常运行阶段对应的待优化函数进行动态编译。4.根据权利要求1所述的方法,其特征在于,所述方法还包括:保存对待优化函数进行编译后得到的机器码。5.根据权利要求1所述的方法,其特征在于,所述方法还包括:在第一程序运行的过程中,每隔预设时间段,统计一次所述第一程序中各函数的调用次数,所述第一程序为所述智能设备中安装的任一程序;向服务器发送所述第一程序的统计信息,所述统计信息中包括所述第一程序中每个函数的函数名、每个函数的调用次数以及每个函数对应的运行阶段。6.根据权利要求5所述的方法,其特征在于,所述预设时间段与所述第一程序的运行时长正相关。7.根据权利要求5所述的方法,其特征在于,所述方法还包括:检测所述第一程序是否为预设程序;当所述第一程序为预设程序时,根据所述第一程序的统计信息,将所述第一程序中,调用次数大于第一阈值的函数的函数名和对应的运行阶段记录在所述第一程序的优化信息中。8.根据权利要求1至7任一所述的方法,其特征在于,所述优化信息中还包括所述目标程序中至少一个函数经过编译后的机器码。9.一种对程序预编译的方法,其特征在于,所述方法包括:接收智能设备发送的针对目标程序的优化信息的获取请求,所述获取请求中包括所述目标程序的标识;根据所述获取请求,从预先存储的程序标识和优化信息的对应关系中,获取与所述目标程序的标识对应的优化信息,所述优化信息中包括所述目标程序中至少一个待优化函数的函数名以及每个待优化函数对应的运行阶段;将获取到的优化信息发送至所述智能设备。10.根据权利要求9所述的方法,其特征在于,所述方法还包括:接收多个智能设备上报的针对多个程序的统计信息,其中,所述多个程序中的任一程序的统计信息中包括:所述任一程序中每个函数的函数名、每个函数的调用次数以及每个函数对应的运行阶段;根据多个智能设备上报的针对多个程序的统计信息,计算每个程序中,每个函数的平均调用次数;将每个程序中,平均调用次数大于第一阈值的函数的函数名和对应的运行阶段记录在所述每个程序的优化信息中。11.根据权利要求10所述的方法,其特征在于,所述任一程序的统计信息中还包括所述任一程序的启动次数,所述方法还包括:根据多个智能设备上报的针对多个程序的统计信息,从所述多个程序中确定待优化程序,所述待优化程序为平均启动次数大于第二阈值的程序;对所述待优化程序中,平均调用次数大于第三阈值的函数进行预编译;将预编译后的机器码记录在所述待优化程序的优化信息中。12.根据权利要求10所述的方法,其特征在于,所述多个智能设备中第一智能设备上报的统计信息中还包括:所述第一智能设备的设备标识以及所述第一智能设备的操作系统标识,所述第一智能设备为所述多个智能设备中的任一智能设备;所述根据多个智能设备上报的针对多个程序的统计信息,计算每个程序中,每个函数的平均调用次数,包括:将所述多个智能设备划分N组,其中每组智能设备的操作系统标识相同,所述N为正整数;根据预设的设备标识与权重值的对应关系,获取每组智能设备中每个智能设备的权重值;对于第一程序中的每个函数,根据所述每组智能设备中每个智能设备的权重值,对每组智能设备中每个智能设备上报的调用次数进行加权平均,计算得到每个函数的N个平均调用次数,其中每个平均调用次数对应一个操作系统标识,所述第一程序为所述多个程序中的任一程序;所述将每个程序中,平均调用次数大于第一阈值的函数的函数名和对应的运行阶段记录在所述每个程序的优化信息中,包括:对于所述第一程序中各个函数的第i个平均调用次数,将第i个平均调用次数大于第一阈值的函数的函数名和对应的运行阶段记录在所述第一程序的第i个优化信息中,得到所述第一程序的N个优化信息,其中每个优化信息对应一个操作系统的标识,i为小于等于N的正整数。13.根据权利要求12所述的方法,其特征在于,所述获取请求中还包括所述智能设备的操作系统的标识;所述根据所述获取请求,从预先存储的程序标识和优化信息的对应关系中,获取与所述目标程序的标识对应的优化信息,包括:根据所述获取请求,从预先存储的程序标识、操作系统标识和优化信息的对应关系中,获取与所述目标程序的标识和操作系统标识对应的优化信息。14.一种对程序预编译的装置,其特征在于,所述装置包括:获取模块,被配置为获取目标程序的优化信息,所述优化信息中包括所述目标程序中至少一个待优化函数的函数名以及每个待优化函数对应的运行阶段;编译模块,被配置为根据所述优化信息,对每个运行阶段对应的待优化函数进行编译。15.根据权利要求14所述的装置,其特征在于,所述获取模块,被配置为:向服务器发送针对所述目标程序的优化信息的获取请求,所述获...

【专利技术属性】
技术研发人员:董俊杰曲雯雯杨亮
申请(专利权)人:北京小米移动软件有限公司
类型:发明
国别省市:北京,11

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

1