[发明专利]对程序预编译的方法及装置有效
申请号: | 201611254648.7 | 申请日: | 2016-12-30 |
公开(公告)号: | CN106775893B | 公开(公告)日: | 2020-03-17 |
发明(设计)人: | 董俊杰;曲雯雯;杨亮 | 申请(专利权)人: | 北京小米移动软件有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F9/445 |
代理公司: | 北京三高永信知识产权代理有限责任公司 11138 | 代理人: | 林锦澜 |
地址: | 100085 北京市海淀区清河*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 程序 预编 方法 装置 | ||
本公开是关于一种对程序预编译的方法及装置,属于电子技术应用领域。所述方法包括:获取目标程序的优化信息,所述优化信息中包括所述目标程序中至少一个待优化函数的函数名以及每个待优化函数对应的运行阶段;根据所述优化信息,对每个运行阶段对应的待优化函数进行编译。由于智能设备在对目标程序进行预编译的过程中,可以仅对优化信息中记载的函数进行编译,而无需再对该目标程序中的所有函数进行编译,因此有效提高了对该目标程序的编译效率,进而提高了系统启动和运行的速度。
技术领域
本公开涉及电子技术应用领域,特别涉及一种对程序预编译的方法及装置。
背景技术
智能设备在首次启动时,或者在操作系统更新后,需要先对系统中所有已安装程序进行预编译。该预编译的过程可以包括:将每个程序中的各个函数编译成预设格式(例如DEX格式)的文件,之后通过虚拟机将该预设格式的文件编译成智能设备所支持的机器码,并保存该机器码。当某个程序被触发时,智能设备可以直接执行该程序对应的机器码,从而实现程序的快速启动和运行。
相关技术中,智能设备在首次启动时,或者在操作系统更新后,需要将每个程序中的所有函数全部编译为机器码,该编译时间较长,系统启动和运行速度较慢。
发明内容
为了解决相关技术中程序启动和运行速度较慢的问题,本公开提供了一种对程序预编译的方法及装置。所述技术方案如下:
根据本公开实施例的第一方面,提供一种对程序预编译的方法,所述方法包括:
获取目标程序的优化信息,所述优化信息中包括所述目标程序中至少一个待优化函数的函数名以及每个待优化函数对应的运行阶段;
根据所述优化信息,对每个运行阶段对应的待优化函数进行编译。
可选的,所述获取目标程序的优化信息,包括:
向服务器发送针对所述目标程序的优化信息的获取请求,所述获取请求中包括所述目标程序的标识;
接收服务器发送的所述目标程序的优化信息。
可选的,所述每个待优化函数对应的运行阶段包括:启动阶段、开始阶段和正常运行阶段,
所述根据所述优化信息,对每个运行阶段对应的待优化函数进行编译,包括:
在所述目标程序启动前,采用预编译算法对与所述启动阶段对应的待优化函数进行编译;
在所述目标程序的启动阶段,采用即时编译算法对与所述开始运行阶段对应的待优化函数进行动态编译;
在所述目标程序的开始运行阶段,采用即时编译算法对与所述正常运行阶段对应的待优化函数进行动态编译。
可选的,所述方法还包括:
保存对待优化函数进行编译后得到的机器码。
可选的,所述方法还包括:
在第一程序运行的过程中,每隔预设时间段,统计一次所述第一程序中各函数的调用次数,所述第一程序为所述智能设备中安装的任一程序;
向服务器发送所述第一程序的统计信息,所述统计信息中包括所述第一程序中每个函数的函数名、每个函数的调用次数以及每个函数对应的运行阶段。
可选的,所述预设时间段与所述第一程序的运行时长正相关。
可选的,所述方法还包括:
检测所述第一程序是否为预设程序;
当所述第一程序为预设程序时,根据所述第一程序的统计信息,将第一程序中,调用次数大于第一阈值的函数的函数名和对应的运行阶段记录在所述第一程序的优化信息中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京小米移动软件有限公司,未经北京小米移动软件有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611254648.7/2.html,转载请声明来源钻瓜专利网。