[发明专利]对程序预编译的方法及装置有效
申请号: | 201611254648.7 | 申请日: | 2016-12-30 |
公开(公告)号: | CN106775893B | 公开(公告)日: | 2020-03-17 |
发明(设计)人: | 董俊杰;曲雯雯;杨亮 | 申请(专利权)人: | 北京小米移动软件有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F9/445 |
代理公司: | 北京三高永信知识产权代理有限责任公司 11138 | 代理人: | 林锦澜 |
地址: | 100085 北京市海淀区清河*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 程序 预编 方法 装置 | ||
1.一种对程序预编译的方法,其特征在于,所述方法包括:
获取目标程序的优化信息,所述优化信息中包括所述目标程序中至少一个待优化函数的函数名以及每个待优化函数对应的运行阶段;
根据所述优化信息,对每个运行阶段对应的待优化函数进行编译;
所述方法还包括:
在第一程序运行的过程中,每隔预设时间段,统计一次所述第一程序中各函数的调用次数,所述第一程序为智能设备中安装的任一程序;
向服务器发送所述第一程序的统计信息,所述统计信息中包括所述第一程序中每个函数的函数名、每个函数的调用次数以及每个函数对应的运行阶段。
2.根据权利要求1所述的方法,其特征在于,所述获取目标程序的优化信息,包括:
向服务器发送针对所述目标程序的优化信息的获取请求,所述获取请求中包括所述目标程序的标识;
接收服务器发送的所述目标程序的优化信息。
3.根据权利要求1所述的方法,其特征在于,所述每个待优化函数对应的运行阶段包括:启动阶段、开始运行阶段和正常运行阶段,
所述根据所述优化信息,对每个运行阶段对应的待优化函数进行编译,包括:
在所述目标程序启动前,采用预编译算法对与所述启动阶段对应的待优化函数进行编译;
在所述目标程序的启动阶段,采用即时编译算法对与所述开始运行阶段对应的待优化函数进行动态编译;
在所述目标程序的开始运行阶段,采用即时编译算法对与所述正常运行阶段对应的待优化函数进行动态编译。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
保存对待优化函数进行编译后得到的机器码。
5.根据权利要求1所述的方法,其特征在于,
所述预设时间段与所述第一程序的运行时长正相关。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
检测所述第一程序是否为预设程序;
当所述第一程序为预设程序时,根据所述第一程序的统计信息,将所述第一程序中,调用次数大于第一阈值的函数的函数名和对应的运行阶段记录在所述第一程序的优化信息中。
7.根据权利要求1至6任一所述的方法,其特征在于,
所述优化信息中还包括所述目标程序中至少一个函数经过编译后的机器码。
8.一种对程序预编译的方法,其特征在于,所述方法包括:
接收智能设备发送的针对目标程序的优化信息的获取请求,所述获取请求中包括所述目标程序的标识;
根据所述获取请求,从预先存储的程序标识和优化信息的对应关系中,获取与所述目标程序的标识对应的优化信息,所述优化信息中包括所述目标程序中至少一个待优化函数的函数名以及每个待优化函数对应的运行阶段;
将获取到的优化信息发送至所述智能设备;
所述方法还包括:
接收多个智能设备上报的针对多个程序的统计信息,其中,所述多个程序中的任一程序的统计信息中包括:所述任一程序中每个函数的函数名、每个函数的调用次数以及每个函数对应的运行阶段;
根据多个智能设备上报的针对多个程序的统计信息,计算每个程序中,每个函数的平均调用次数;
将每个程序中,平均调用次数大于第一阈值的函数的函数名和对应的运行阶段记录在所述每个程序的优化信息中。
9.根据权利要求8所述的方法,其特征在于,所述任一程序的统计信息中还包括所述任一程序的启动次数,所述方法还包括:
根据多个智能设备上报的针对多个程序的统计信息,从所述多个程序中确定待优化程序,所述待优化程序为平均启动次数大于第二阈值的程序;
对所述待优化程序中,平均调用次数大于第三阈值的函数进行预编译;
将预编译后的机器码记录在所述待优化程序的优化信息中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京小米移动软件有限公司,未经北京小米移动软件有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611254648.7/1.html,转载请声明来源钻瓜专利网。