CN109960507B - 编译优化方法、装置、存储介质、智能终端及服务器 - Google Patents
编译优化方法、装置、存储介质、智能终端及服务器 Download PDFInfo
- Publication number
- CN109960507B CN109960507B CN201711341481.2A CN201711341481A CN109960507B CN 109960507 B CN109960507 B CN 109960507B CN 201711341481 A CN201711341481 A CN 201711341481A CN 109960507 B CN109960507 B CN 109960507B
- Authority
- CN
- China
- Prior art keywords
- function
- application program
- current
- preset
- intelligent terminal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
- G06F8/4442—Reducing the number of cache misses; Data prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
Abstract
本申请实施例公开了编译优化方法、装置、存储介质、智能终端及服务器。该方法包括:检测到智能终端中存在未运行过的目标应用程序,对于目标应用程序中的每个函数,从预设服务器获取当前函数对应的第一统计值,第一统计值包括根据当前函数对应的第一频次计算得到的统计值,第一频次包括第一预设统计周期内预设用户群体在使用目标应用程序过程中当前函数被执行的频次,根据第一统计值确定目标应用程序中的第一热点函数,通过虚拟机运行前编译的方式将第一热点函数编译为本地机器代码。本申请实施例通过采用上述技术方案,可以提升应用程序首次运行效率。
Description
技术领域
本申请实施例涉及计算机技术领域,尤其涉及编译优化方法、装置、存储介质、智能终端及服务器。
背景技术
目前,随着智能终端技术的快速发展,诸如智能手机、平板电脑以及智能电视等智能设备已成为人们生活中必不可少的电子设备。
智能终端中普遍安装有操作系统,安卓(Android)操作系统是最常见的智能操作系统之一,已经得到了广泛的使用。智能终端中通常包括底层和应用层,并采用不同的语言进行编写,需要通过虚拟机进行编译后才能够使应用程序在智能终端中正常运行。以Android操作系统为例,底层(如Linux内核层)一般由C/C++语言编写,而应用层一般由Java语言编写,而基于Java的程序需要在虚拟机上运行。虚拟机(Virtual Machine,VM)负责将基于Java开发的应用程序对应的文件或代码解释或编译成本地可执行的文件或代码,使得应用程序得以运行。然而,在解释或编译的过程中,通常需要消耗较多的时间,影响运行速度,因此,基于虚拟机的编译方案仍需要改进。
发明内容
本申请实施例提供一种编译优化方法、装置、存储介质及智能终端,可以优化智能终端中基于虚拟机的编译方案。
第一方面,本申请实施例提供了一种编译优化方法,应用于智能终端,包括:
检测到智能终端中存在未运行过的目标应用程序;
对于所述目标应用程序中的每个函数,从预设服务器获取当前函数对应的第一统计值,所述第一统计值包括根据当前函数对应的第一频次计算得到的统计值,所述第一频次包括第一预设统计周期内预设用户群体在使用所述目标应用程序过程中当前函数被执行的频次;
根据所述第一统计值确定所述目标应用程序中的第一热点函数;
通过虚拟机运行前编译的方式将所述第一热点函数编译为本地机器代码。
第二方面,本申请实施例提供了一种编译优化方法,应用于服务器,包括:
对于当前应用程序中的每个函数,在第一预设统计周期内收集预设用户群体在使用当前应用程序过程中当前函数被执行的第一频次,根据所述第一频次计算出当前函数对应的第一统计值;
接收到智能终端获取当前应用中各函数分别对应的第一统计值的获取请求,其中,所述智能终端在检测到当前应用程序未运行过时,向所述服务器发送所述获取请求;
将所述当前应用程序中各函数分别对应的第一统计值发送至所述智能终端,所述第一统计值用于指示所述智能终端根据所述第一统计值确定当前应用程序中的第一热点函数,并通过虚拟机运行前编译的方式将所述第一热点函数编译为本地机器代码。
第三方面,本申请实施例提供了一种编译优化装置,配置于智能终端中,包括:
运行监测模块,用于检测智能终端中是否存在未运行过的目标应用程序;
统计值获取模块,用于在检测到智能终端中存在未运行过的目标应用程序时,对于所述目标应用程序中的每个函数,从预设服务器获取当前函数对应的第一统计值,所述第一统计值包括根据当前函数对应的第一频次计算得到的统计值,所述第一频次包括第一预设统计周期内预设用户群体在使用所述目标应用程序过程中当前函数被执行的频次;
热点函数确定模块,用于根据所述第一统计值确定所述目标应用程序中的第一热点函数;
编译模块,用于通过虚拟机运行前编译的方式将所述第一热点函数编译为本地机器代码。
第四方面,本申请实施例提供了一种编译优化装置,配置于服务器中,包括:
统计值计算模块,用于对于当前应用程序中的每个函数,在第一预设统计周期内收集预设用户群体在使用当前应用程序过程中当前函数被执行的第一频次,根据所述第一频次计算出当前函数对应的第一统计值;
获取请求接收模块,用于接收智能终端获取当前应用中各函数分别对应的第一统计值的获取请求,其中,所述智能终端在检测到当前应用程序未运行过时,向所述服务器发送所述获取请求;
统计值发送模块,用于在接收到所述智能终端获取当前应用中各函数分别对应的第一统计值的获取请求时,将所述当前应用程序中各函数分别对应的第一统计值发送至所述智能终端,所述第一统计值用于指示所述智能终端根据所述第一统计值确定当前应用程序中的第一热点函数,并通过虚拟机运行前编译的方式将所述第一热点函数编译为本地机器代码。
第五方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请实施例第一方面所述的编译优化方法。
第六方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请实施例第二方面所述的编译优化方法。
第七方面,本申请实施例提供了一种智能终端,包括存储器,处理器及存储在存储器上并可在处理器运行的计算机程序,所述处理器执行所述计算机程序时实现如本申请实施例第一方面所述的编译优化方法。
第八方面,本申请实施例提供了一种智能终端,包括存储器,处理器及存储在存储器上并可在处理器运行的计算机程序,所述处理器执行所述计算机程序时实现如本申请实施例第二方面所述的编译优化方法。
本申请实施例中提供的编译优化方案,检测到智能终端中存在未运行过的目标应用程序,对于目标应用程序中的每个函数,从预设服务器获取当前函数对应的第一统计值,所述第一统计值包括根据第一预设统计周期内预设用户群体在使用目标应用程序过程中当前函数被执行的频次计算得到的数值,再根据第一统计值确定目标应用程序中的第一热点函数,通过虚拟机运行前编译的方式将所确定的第一热点函数编译为本地机器代码。通过采用上述技术方案,智能终端可以在首次运行应用程序前,从预设服务器获取针对应用程序中各函数的大数据统计情况,并根据统计情况确定需要进行预编译的热点函数,进而通过虚拟机运行前编译的方式将热点函数编译为本地机器代码,提升应用程序首次运行效率。
本申请实施例中提供的编译优化方案,服务器对于当前应用程序中的每个函数,在第一预设统计周期内收集预设用户群体在使用当前应用程序过程中当前函数被执行的第一频次,根据第一频次计算出当前函数对应的第一统计值,在接收到智能终端获取当前应用中各函数分别对应的第一统计值的获取请求时,将第一统计值发送至智能终端,以指示智能终端根据第一统计值确定需要通过虚拟机运行前编译的方式进行编译的热点函数。通过采用上述技术方案,服务器能够通过大数据方式统计出预设用户群体在使用应用程序过程中不同函数的执行频次情况,进而计算出第一统计值,将第一统计值发送给智能终端,指导智能终端在首次运行应用程序前对热点函数进行预编译,提升应用程序首次运行效率。
附图说明
图1为本申请实施例提供的一种编译优化方法的流程示意图;
图2为本申请实施例提供的又一种编译优化方法的流程示意图;
图3为本申请实施例提供的另一种编译优化方法的流程示意图;
图4为本申请实施例提供的再一种编译优化方法的流程示意图;
图5为本申请实施例提供的一种智能终端与服务器进行交互的信令图;
图6为本申请实施例提供的一种编译优化装置的结构框图;
图7为本申请实施例提供的又一种编译优化装置的结构框图;
图8为本申请实施例提供的一种智能终端的结构示意图;
图9为本申请实施例提供的又一种智能终端的结构示意图;
图10为本申请实施例提供的一种服务器的结构示意图。
具体实施方式
下面结合附图并通过具体实施方式来进一步说明本申请的技术方案。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部结构。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
为了更好地理解本申请的技术方案,以Android操作系统为例,对Android操作系统常见的两种虚拟机Dalvik虚拟机(又称DVM)以及ART(Android Runtime)虚拟机进行简单的介绍。
Dalvik是Google公司设计开发的用于Android平台的虚拟机,它是Android平台的重要组成部分,支持dex(Dalvik Executable)格式的Java应用程序的运行。dex格式是专门为Dalvik设计的一种压缩格式,Java程序中,Java类会被编译成一个或多个class文件,然后通过DEX工具将class文件转换成dex文件,Dalvik虚拟机再从中读取指令和数据。具体的,Dalvik虚拟机是解释执行机制,负责解释dex文件为机器码,在每次运行时刻对dex文件中Java字节码给予解析运行,但缺点是性能不佳,运行速度慢。随着Android版本的不断升级,基于Dalvik虚拟机出现了即时编译技术(Just In Time Compiler,JIT),当应用程序运行时,每当遇到一个新类,JIT编译器就会对这个类进行编译,经过编译后的代码,会被优化成原生型指令码(native code),这样在下次执行到相同逻辑(又称方法或函数)的时候,速度就会变快,但是,使用JIT也不一定加快执行速度,如果大部分代码的执行次数很少,那么编译花费的时间不一定少于执行dex的时间,另外dex字节码翻译成本地机器码是发生在应用程序的运行过程中的,并且应用程序每一次重新运行的时候,都要做重做这个翻译工作,也即每次重新打开App,都需要JIT编译。
ART虚拟机采用运行前编译(Ahead of Time,AOT,又称提前编译或预编译)方式,在第一次开机时将所有应用(之后是安装某个应用时针对该应用)预先编译成本地可执行文件(又称本地机器码或本地机器代码),之后应用程序启动时,不需要额外的翻译工作,直接使用本地机器码运行,从而加快运行效率,但缺点是第一次开机等待时间过长,可能达到十分钟,从而带来的用户体验不好,另外需要的存储空间也有一定开销。
本申请中,对于Android操作系统可采用ART虚拟机、JIT以及解释执行相结合的机制来优化虚拟机的编译方案,可以提升智能终端中应用程序的运行效率。具体的,取消第一次开机时将所有应用程序全部进行编译的流程,改成基于智能终端用户的使用习惯对高频访问或执行的函数(又称执行热点或热点函数)择机编译,能够达到越用越快的效果,然而发明人发现,在得到足够量的本机统计数据前,智能终端中的应用程序仍需要以解释执行的方式运行,速度较慢,因此发明人针对统计数据不足的情况,提出了基于大数据统计结果确定热点函数的方案,下面结合具体实施方式进行进一步说明。
图1为本申请实施例提供的一种编译优化方法的流程示意图,该方法可以由编译优化装置执行,其中该装置可由软件和/或硬件实现,一般可集成在智能终端中。如图1所示,该方法包括:
步骤101、检测到智能终端中存在未运行过的目标应用程序。
示例性的,本申请实施例中的智能终端可包括智能手机、平板电脑、媒体播放器以及智能家电等安装有操作系统的智能设备。本申请实施例中对操作系统的具体类型不做限定,可以是Android操作系统,iOS操作系统以及窗口(Windows)操作系统等,为了便于说明,将以Android操作系统为例进行详细的说明。
本申请实施例中,未运行过的目标应用程序可包括已经在智能终端中安装完毕但未运行过的应用程序,还可包括安装过程中的应用程序。本步骤中检测智能终端中是否存在未运行过的目标应用程序的时机可以包括:智能终端开机时,检测到应用程序安装完毕时,检测到应用程序安装文件下载事件被触发或下载完毕时,以及检测到用户触发未运行程序检测事件时(如用户开启应用程序首次运行加速开关)等。
步骤102、对于目标应用程序中的每个函数,从预设服务器获取当前函数对应的第一统计值。
其中,所述第一统计值包括根据当前函数对应的第一频次计算得到的统计值,所述第一频次包括第一预设统计周期内预设用户群体在使用所述目标应用程序过程中当前函数被执行的频次。
示例性的,计算第一统计值以及收集用于计算第一统计值的相关数据的相关步骤可由预设服务器来完成。第一预设统计周期可根据智能终端的特性或用户使用需求等情况来确定,本申请不做限定,例如智能终端为智能手机,多数用户几乎每天都会长时间使用,第一预设统计周期可设置得短一些,如一周。
示例性的,预设用户群体可包括所有使用过目标应用程序的智能终端用户,也可以选择部分用户作为样本组成预设用户群体,如事先同意数据收集条款的2万名用户。预设用户群体还可以是具备相同用户属性的群体,例如女性用户群体,指定年龄段(如20到30岁)的用户群体等。本申请对具体的用户群体采集对象不做限定,可根据实际需求进行选取。
需要说明的是,预设用户群体在使用目标应用程序时实际使用的智能终端的类型可以相同也可以不同,可以由不同智能终端中的同一款应用程序的差异性来确定。以微信为例,若手机版微信和平板版微信中包含的函数差别较大,对于智能手机来说,可仅收集预设用户群体通过智能手机使用微信时的使用数据;若手机版微信和平板版微信中包含的函数基本相同或完全相同,对于智能手机来说,也可同时收集预设用户群体通过智能手机和平板电脑使用微信时的使用数据。
在一个应用程序中,通常会包含一个或多个类,每个类中又包括一个或多个函数(又称方法),不同的函数一般对应不同的功能,在应用程序运行的过程中,由于用户使用习惯的不同,不同功能被使用的频率也不同。以微信为例,聊天功能和朋友圈功能比较常用,对应的函数被执行(或调用)的频率较高,重要程度高,而收藏功能或卡包功能对于很多用户来说可能并不经常使用,那么对应的函数被执行的频率就会比较低,重要程度低。本申请中,收集第一预设统计周期内预设用户群体在使用一个应用程序的过程中各个函数分别被执行的频次,进而计算出每个函数对应的统计值,该统计值可反映出对应的函数被使用的频繁程度以及重要程度,进而有利于智能终端确定热点函数,用于执行预编译相关操作。其中,第一统计值包括根据当前函数对应的第一频次计算得到的统计值,具体的计算方式本申请不做限定,例如,可以是取多个第一频次中的最高值,可以是计算多个第一频次的平均值或加权平均值等。
步骤103、根据第一统计值确定目标应用程序中的第一热点函数。
可以理解的是,由于通过虚拟机运行前编译的方式将函数编译为本地机器代码后,本地机器代码会占用智能终端中一定的存储空间,因此需要有选择性地确定热点函数进行编译。本申请实施例中,可选取所对应的第一统计值较高的函数作为第一热点函数。例如,目标应用程序中共有函数A个,按照第一统计值由高到低排序,可选取前bA个函数作为第一热点函数,b为小于1的系数,bA可向上或向下取整,b的具体数值可自由设定,也可根据智能终端当前的剩余存储空间确定;又如,还可选取前B(B小于或等于A)个函数作为第一热点函数,B可以是固定数值,或根据智能终端当前的剩余存储空间动态确定的数值;再如,可预先设置一个统计阈值,可记为第一预设统计阈值,将所对应的第一统计值达到第一预设统计阈值的函数确定为目标应用程序中的第一热点函数,这样设置的好处在于,确保使用频率较高的函数被预编译,若当前应用程序中仅有少量满足要求的函数,说明当前应用程序本身被使用的频率就不高,那么不会预编译不满足要求的函数,以为其他应用程序的热点函数节省存储空间。
步骤104、通过虚拟机运行前编译的方式将第一热点函数编译为本地机器代码。
本申请实施例中,在确定了第一热点函数后,通过虚拟机运行前编译的方式将第一热点函数编译为本地机器代码,当目标应用程序首次启动时,需要执行第一热点函数时,可直接使用对应的本地机器代码,而不需要以解释执行或及时编译的方式进行编译,可有效提高目标应用程序的首次运行效率。具体的编译过程可由智能终端操作系统中采用的虚拟机来确定,本申请实施例不做限定。可以在目标应用程序安装完毕,首次运行前进行编译,也可以在目标应用程序的安装过程中进行编译。可以理解的是,对于目标应用程序中未被确定为第一热点函数的其他函数,在目标应用程序运行过程中,如果需要执行这些其他函数,可以解释执行的方式进行编译,不会影响目标应用程序的运行。
本申请实施例中提供的编译优化方法,检测到智能终端中存在未运行过的目标应用程序,对于目标应用程序中的每个函数,从预设服务器获取当前函数对应的第一统计值,所述第一统计值包括根据第一预设统计周期内预设用户群体在使用目标应用程序过程中当前函数被执行的频次计算得到的数值,再根据第一统计值确定目标应用程序中的第一热点函数,通过虚拟机运行前编译的方式将所确定的第一热点函数编译为本地机器代码。通过采用上述技术方案,智能终端可以在首次运行应用程序前,从预设服务器获取针对应用程序中各函数的大数据统计情况,并根据统计情况确定需要进行预编译的热点函数,进而通过虚拟机运行前编译的方式将热点函数编译为本地机器代码,提升应用程序首次运行效率。对于Android操作系统,本申请实施例创新性地将ART虚拟机、JIT以及解释执行相结合,并以大数据统计结果加以辅助,有效提升应用程序在智能终端中的运行速度及效率,在积累到足量的本机统计数据之前无需采用解释执行的方式执行目标应用程序中的所有函数。
在一些实施例中,一个函数对应的第一统计值通过以下方式确定:在第一预设统计周期内收集预设用户群体在使用所述目标应用程序过程中当前函数被执行的第一频次;在所述第一预设统计周期内获取所述预设用户群体中的每个用户对应的使用强度信息;根据所述使用强度信息确定所述每个用户分别对应的第一权重系数,并根据所述第一权重系数和所述第一频次进行加权平均运算,得到当前函数对应的第一统计值。这样设置的好处在于,充分考虑预设用户群体中不同个体的差异,以及对统计结果的影响。其中,使用强度信息可包括用户的使用时长,可以是对智能终端的使用时长,也可以是目标应用程序的使用时长等,使用强度信息还可以包括智能终端中安装的应用程序总数等等,本申请不做具体限定。上述使用时长可以是第一预设统计周期内的使用时长,如一周内累计使用时长,还可以是第一预设统计周期内单位时间内的使用时长,如单位时间为一天,使用时长为一天内累计使用时长。
在一些实施例中,在所述通过虚拟机运行前编译的方式将所述第一热点函数编译为本地机器代码之后,还包括:对于所述目标应用程序中包含的每个函数,在第二预设统计周期内记录当前用户在使用所述目标应用程序过程中当前函数被执行的第二频次,根据预设权重系数、所述第一统计值和所述第二频次进行加权平均运算,得到当前函数对应的第二统计值,其中,所述第一统计值对应第一预设权重系数,所述第二频次对应第二预设权重系数;根据所述第二统计值确定所述目标应用程序中的第二热点函数;根据所述第二热点函数对所述目标应用程序的编译策略进行更新。这样设置的好处在于,能够根据当前用户个人的使用习惯对热点函数进行变更,使得被预编译的热点函数更加贴合用户的个人习惯与偏好。其中,第二预设统计周期可以与第一预设统计周期相同,也可不同,本申请实施例不做限定。示例性的,第一统计值为P,第二频次为q,第一预设权重系数为k1,第二预设权重系数为k2,第二统计值Q,那么可以得到Q=(k1*P+k2q)/2,k1和k2的具体数值本申请实施例不做限定,一般的,k2可大于k1,因为第二频次更能够反应用户的个人习惯,例如,k2为0.7,k1为0.3。第二热点函数的确定方式可与第一热点函数的确定方式类似。例如,判断当前函数对应的第二统计值是否达到第二预设统计阈值,若达到,则将当前函数确定为所述目标应用程序中的第二热点函数。第二预设统计阈值可以与第一预设统计阈值相同,也可以不同,本申请实施例不做限定。
进一步的,所述根据所述第二热点函数对所述目标应用程序的编译策略进行更新,包括:在确定当前第二热点函数未被编译时,通过虚拟机运行前编译的方式将当前第二热点函数编译为本地机器代码;和/或,在确定已被编译的当前第一热点函数不属于第二热点函数时,删除当前第一热点函数对应的本地机器代码。前者的好处在于,让能够得到运行前编译的函数更加贴合用户个人的使用习惯;后者的好处在于,可以让不贴合当前用户使用习惯的第一热点函数的本地机器代码被清除,释放存储空间,让智能终端的存储资源能够得到更加合理地利用;两者均包括的好处在于,即能够让贴合用户个人使用习惯的第二热点函数被编译成本地机器代码,又能够清除不贴合当前用户使用习惯的本地机器代码,从整体上贴合用户使用需求,优化智能终端的整体性能。
在一些实施例中,在所述对于所述目标应用程序中的每个函数,从预设服务器获取当前函数对应的第一统计值之前,包括:获取当前用户的目标属性信息。所述从预设服务器获取当前函数对应的第一统计值,包括:从预设服务器中获取与所述目标属性信息相匹配的当前函数对应的第一统计值。这样设置的好处在于,能够让基于大数据的第一统计值更加贴合当前用户的属性,使得获取的第一统计值更加准确。属性信息可包括如性别、年龄段、职业以及所处区域等等,预设服务器在进行第一统计值相关数据收集时,可按照属性信息分类进行收集并计算对应的第一统计值,当智能终端需要从预设服务器获取第一统计值时,预设服务器可根据智能终端发送的当前用户的目标属性信息查找到相应的第一统计值,并反馈给智能终端,以便智能终端更加准确地确定热点函数。
在一些实施例中,目标应用程序可能包含多个,那么所述根据所述第一统计值确定所述目标应用程序中的第一热点函数,可包括:根据多个应用程序中的所有函数分别对应的第一统计值的综合排序确定各应用程序分别对应的第一热点函数。这样设置的好处在于,由于智能终端中的存储空间有限,为了减少本地机器代码对存储空间的占用,可综合考虑多个应用程序中各函数对应的大数据统计情况,从而确定需要进行运行前编译的热点函数。示例性的,当检测到所述智能终端首次开机时,所述目标应用程序包括所述智能终端中装载的所有应用程序;所述根据所述第一统计值确定所述目标应用程序中的第一热点函数,包括:根据所有应用程序中的所有函数分别对应的第一统计值的综合排序确定各应用程序分别对应的第一热点函数。这样,在智能终端首次开机时,能够基于大数据有选择性的预编译热点函数,相比与传统的ART虚拟机工作方式能够避免开机集中编译的缺点,有效减少开机等待时长,并且能够做到在本机统计数据不足的情况下,利用大数据精准地筛选出热点函数,能够兼顾绝大部分用户的使用场景,而不需在积累到足够的本机统计数据之前采用解释执行的方式执行所有函数,即利用大数据统计结果避免单个用户一一统计的真空期,让用户更快地享受到流畅的应用执行效果,提升应用程序的运行速度。
图2为本申请实施例提供的又一种编译优化方法的流程示意图,该方法包括如下步骤:
步骤201、检测到智能终端中存在未运行过的目标应用程序。
步骤202、获取当前用户的目标属性信息。
步骤203、对于所述目标应用程序中的每个函数,从预设服务器中获取与所述目标属性信息相匹配的当前函数对应的第一统计值。
步骤204、根据所述第一统计值确定所述目标应用程序中的第一热点函数。
步骤205、通过虚拟机运行前编译的方式将所述第一热点函数编译为本地机器代码。
步骤206、对于目标应用程序中包含的每个函数,在第二预设统计周期内记录当前用户在使用目标应用程序过程中当前函数被执行的第二频次,根据预设权重系数、第一统计值和第二频次进行加权平均运算,得到当前函数对应的第二统计值。
步骤207、根据所述第二统计值确定所述目标应用程序中的第二热点函数。
步骤208、在确定已被编译的当前第一热点函数不属于第二热点函数时,删除当前第一热点函数对应的本地机器代码,在确定当前第二热点函数未被编译时,通过虚拟机运行前编译的方式将当前第二热点函数编译为本地机器代码。
本申请实施例提供的编译优化方法,智能终端可以在首次运行应用程序前,从预设服务器获取针对应用程序中各函数的大数据统计情况,并根据统计情况确定需要进行预编译的热点函数,进而通过虚拟机运行前编译的方式将热点函数编译为本地机器代码,提升应用程序首次运行效率,随后,继续采集本机用户的使用习惯数据,结合大数据统计情况和本机用户使用习惯数据对热点函数进行自回馈调整,让贴合用户个人使用习惯的第二热点函数被编译成本地机器代码,清除不贴合当前用户使用习惯的本地机器代码,从整体上贴合用户使用需求,合理利用智能终端的存储空间,优化智能终端的整体性能。
图3为本申请实施例提供的另一种编译优化方法的流程示意图,该方法可以由编译优化装置执行,其中该装置可由软件和/或硬件实现,一般可集成在服务器中。如图3所示,该方法包括:
步骤301、对于当前应用程序中的每个函数,在第一预设统计周期内收集预设用户群体在使用当前应用程序过程中当前函数被执行的第一频次,根据所述第一频次计算出当前函数对应的第一统计值。
示例性的,服务器可以针对应用商店中或市面上发布的应用程序进行统计,预设用户群体在使用智能终端时,智能终端会将用户的使用应用程序的时间及频次等数据上传至服务器,服务器基于收集到数据进行统计,得到每个应用程序中的每个函数分别对应的第一统计值。
下面给出一种具体的确定第一统计值的实现方式,作为示意性说明。在服务器中建立预设数据结构,例如,该预设数据结构的形式可以是包名-Key-Value。其中,包名指应用程序对应的包名(package name),是应用程序的身份标识,具有全局唯一性;Key的取值形式可以是类名+执行函数名,类名和执行函数名一般为字符串形式,为了方便统计及计算,可对字符串进行转换,如采用哈希(Hash)计算的方式,将其映射为固定长度的值,例如,采用消息摘要算法(Message Digest Algorithm,MD)第五版MD5编码的方式将类名+执行函数名转换为8字节(Byte)的形式;Value可以是该函数实际使用的频次信息。云端的服务器在得到海量用户(当预设用户群体的样本数量足够多时)统计结果后,基于用户的手机使用强度,对每个用户赋以权值,做加权平均计算,得到全局每个应用中每个类中的每个函数的权重信息(即本申请实施例中的第一统计值)。
步骤302、接收到智能终端获取当前应用中各函数分别对应的第一统计值的获取请求。
其中,所述智能终端在检测到当前应用程序未运行过时,向所述服务器发送所述获取请求;
步骤303、将所述当前应用程序中各函数分别对应的第一统计值发送至所述智能终端。
其中,所述第一统计值用于指示所述智能终端根据所述第一统计值确定当前应用程序中的第一热点函数,并通过虚拟机运行前编译的方式将所述第一热点函数编译为本地机器代码。
本申请实施例中提供的编译优化方法,服务器对于当前应用程序中的每个函数,在第一预设统计周期内收集预设用户群体在使用当前应用程序过程中当前函数被执行的第一频次,根据第一频次计算出当前函数对应的第一统计值,在接收到智能终端获取当前应用中各函数分别对应的第一统计值的获取请求时,将第一统计值发送至智能终端,以指示智能终端根据第一统计值确定需要通过虚拟机运行前编译的方式进行编译的热点函数。通过采用上述技术方案,服务器能够通过大数据方式统计出预设用户群体在使用应用程序过程中不同函数的执行频次情况,进而计算出第一统计值,将第一统计值发送给智能终端,指导智能终端在首次运行应用程序前对热点函数进行预编译,提升应用程序首次运行效率。
图4为本申请实施例提供的再一种编译优化方法的流程示意图,以智能终端与预设服务器交互的场景进行描述,该方法包括:
步骤401、服务器在第一预设统计周期内收集预设用户群体在使用不同应用程序过程中每个函数被执行的第一频次,根据第一频次计算出每个函数分别对应的第一统计值。
步骤402、智能终端在检测到存在未运行过的目标应用程序时,向服务器发送获取目标应用程序中各函数分别对应的第一统计值的获取请求。
步骤403、服务器根据获取请求查找目标应用程序中各函数分别对应的第一统计值,并发送给智能终端。
步骤404、智能终端根据第一统计值确定目标应用程序中的第一热点函数,并通过虚拟机运行前编译的方式将第一热点函数编译为本地机器代码。
步骤405、智能终端在第二预设统计周期内记录当前用户在使用目标应用程序过程中各函数分别被执行的第二频次。
步骤406、智能终端根据第二统计值确定所述目标应用程序中的第二热点函数,根据第二热点函数对目标应用程序的编译策略进行更新。
图5为本申请实施例提供的一种智能终端与服务器进行交互的信令图,可结合该信令图对上述实施例进行理解。
本申请实施例提供的编译优化方法,由服务器进行预设用户群体使用应用程序的历史习惯数据,形成大数据统计结果反馈给智能终端,智能终端基于大数据统计结果确定未运行应用程序中的热点函数,对热点函数进行运行前编译,有效提升应用程序的运行速度。
图6为本申请实施例提供的一种编译优化装置的结构框图,该装置可由软件和/或硬件实现,一般集成在智能终端中,可通过执行编译优化方法来优化智能终端中基于虚拟机的编译方案。如图6所示,该装置包括:
运行监测模块601,用于检测智能终端中是否存在未运行过的目标应用程序;
统计值获取模块602,用于在检测到智能终端中存在未运行过的目标应用程序时,对于所述目标应用程序中的每个函数,从预设服务器获取当前函数对应的第一统计值,所述第一统计值包括根据当前函数对应的第一频次计算得到的统计值,所述第一频次包括第一预设统计周期内预设用户群体在使用所述目标应用程序过程中当前函数被执行的频次;
热点函数确定模块603,用于根据所述第一统计值确定所述目标应用程序中的第一热点函数;
编译模块604,用于通过虚拟机运行前编译的方式将所述第一热点函数编译为本地机器代码。
本申请实施例提供的编译优化装置,检测到智能终端中存在未运行过的目标应用程序,对于目标应用程序中的每个函数,从预设服务器获取当前函数对应的第一统计值,所述第一统计值包括根据第一预设统计周期内预设用户群体在使用目标应用程序过程中当前函数被执行的频次计算得到的数值,再根据第一统计值确定目标应用程序中的第一热点函数,通过虚拟机运行前编译的方式将所确定的第一热点函数编译为本地机器代码。通过采用上述技术方案,智能终端可以在首次运行应用程序前,从预设服务器获取针对应用程序中各函数的大数据统计情况,并根据统计情况确定需要进行预编译的热点函数,进而通过虚拟机运行前编译的方式将热点函数编译为本地机器代码,提升应用程序首次运行效率。
可选的,一个函数对应的第一统计值通过以下方式确定:
在第一预设统计周期内收集预设用户群体在使用所述目标应用程序过程中当前函数被执行的第一频次;
在所述第一预设统计周期内获取所述预设用户群体中的每个用户对应的使用强度信息;
根据所述使用强度信息确定所述每个用户分别对应的第一权重系数,并根据所述第一权重系数和所述第一频次进行加权平均运算,得到当前函数对应的第一统计值。
可选的,该装置还包括第二统计值计算模块,用于在所述通过虚拟机运行前编译的方式将所述第一热点函数编译为本地机器代码之后,对于所述目标应用程序中包含的每个函数,在第二预设统计周期内记录当前用户在使用所述目标应用程序过程中当前函数被执行的第二频次,根据预设权重系数、所述第一统计值和所述第二频次进行加权平均运算,得到当前函数对应的第二统计值,其中,所述第一统计值对应第一预设权重系数,所述第二频次对应第二预设权重系数;
第二热点函数确定模块,用于根据所述第二统计值确定所述目标应用程序中的第二热点函数;
编译策略更新模块,用于根据所述第二热点函数对所述目标应用程序的编译策略进行更新。
可选的,所述编译策略更新模块,用于:
在确定当前第二热点函数未被编译时,通过虚拟机运行前编译的方式将当前第二热点函数编译为本地机器代码;
和/或,
在确定已被编译的当前第一热点函数不属于第二热点函数时,删除当前第一热点函数对应的本地机器代码。
可选的,所述根据所述第一统计值确定所述目标应用程序中的第一热点函数,包括:
判断当前函数对应的第一统计值是否达到第一预设统计阈值,若达到,则将当前函数确定为所述目标应用程序中的第一热点函数。
可选的,该装置还包括属性信息获取模块,用于在所述对于所述目标应用程序中的每个函数,从预设服务器获取当前函数对应的第一统计值之前,获取当前用户的目标属性信息;
所述从预设服务器获取当前函数对应的第一统计值,包括:
从预设服务器中获取与所述目标属性信息相匹配的当前函数对应的第一统计值。
可选的,当检测到所述智能终端首次开机时,所述目标应用程序包括所述智能终端中装载的所有应用程序;
所述根据所述第一统计值确定所述目标应用程序中的第一热点函数,包括:
根据所有应用程序中的所有函数分别对应的第一统计值的综合排序确定各应用程序分别对应的第一热点函数。
图7为本申请实施例提供的又一种编译优化装置的结构框图,该装置可由软件和/或硬件实现,一般集成在服务器中,可通过执行编译优化方法来优化智能终端中基于虚拟机的编译方案。如图7所示,该装置包括:
统计值计算模块701,用于对于当前应用程序中的每个函数,在第一预设统计周期内收集预设用户群体在使用当前应用程序过程中当前函数被执行的第一频次,根据所述第一频次计算出当前函数对应的第一统计值;
获取请求接收模块702,用于接收智能终端获取当前应用中各函数分别对应的第一统计值的获取请求,其中,所述智能终端在检测到当前应用程序未运行过时,向所述服务器发送所述获取请求;
统计值发送模块703,用于在接收到所述智能终端获取当前应用中各函数分别对应的第一统计值的获取请求时,将所述当前应用程序中各函数分别对应的第一统计值发送至所述智能终端,所述第一统计值用于指示所述智能终端根据所述第一统计值确定当前应用程序中的第一热点函数,并通过虚拟机运行前编译的方式将所述第一热点函数编译为本地机器代码。
本申请实施例提供的编译优化装置,服务器对于当前应用程序中的每个函数,在第一预设统计周期内收集预设用户群体在使用当前应用程序过程中当前函数被执行的第一频次,根据第一频次计算出当前函数对应的第一统计值,在接收到智能终端获取当前应用中各函数分别对应的第一统计值的获取请求时,将第一统计值发送至智能终端,以指示智能终端根据第一统计值确定需要通过虚拟机运行前编译的方式进行编译的热点函数。通过采用上述技术方案,服务器能够通过大数据方式统计出预设用户群体在使用应用程序过程中不同函数的执行频次情况,进而计算出第一统计值,将第一统计值发送给智能终端,指导智能终端在首次运行应用程序前对热点函数进行预编译,提升应用程序首次运行效率。
本申请实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行编译优化方法,该方法包括:
检测到智能终端中存在未运行过的目标应用程序;
对于所述目标应用程序中的每个函数,从预设服务器获取当前函数对应的第一统计值,所述第一统计值包括根据当前函数对应的第一频次计算得到的统计值,所述第一频次包括第一预设统计周期内预设用户群体在使用所述目标应用程序过程中当前函数被执行的频次;
根据所述第一统计值确定所述目标应用程序中的第一热点函数;
通过虚拟机运行前编译的方式将所述第一热点函数编译为本地机器代码。
存储介质——任何的各种类型的存储器设备或存储设备。术语“存储介质”旨在包括:安装介质,例如CD-ROM、软盘或磁带装置;计算机系统存储器或随机存取存储器,诸如DRAM、DDRRAM、SRAM、EDORAM,兰巴斯(Rambus)RAM等;非易失性存储器,诸如闪存、磁介质(例如硬盘或光存储);寄存器或其它相似类型的存储器元件等。存储介质可以还包括其它类型的存储器或其组合。另外,存储介质可以位于程序在其中被执行的第一计算机系统中,或者可以位于不同的第二计算机系统中,第二计算机系统通过网络(诸如因特网)连接到第一计算机系统。第二计算机系统可以提供程序指令给第一计算机用于执行。术语“存储介质”可以包括可以驻留在不同位置中(例如在通过网络连接的不同计算机系统中)的两个或更多存储介质。存储介质可以存储可由一个或多个处理器执行的程序指令(例如具体实现为计算机程序)。
当然,本申请实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的编译优化操作,还可以执行本申请对应智能终端的任意实施例所提供的编译优化方法中的相关操作。
本申请实施例还提供另一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行编译优化方法,该方法包括:
对于当前应用程序中的每个函数,在第一预设统计周期内收集预设用户群体在使用当前应用程序过程中当前函数被执行的第一频次,根据所述第一频次计算出当前函数对应的第一统计值;
接收到智能终端获取当前应用中各函数分别对应的第一统计值的获取请求,其中,所述智能终端在检测到当前应用程序未运行过时,向所述服务器发送所述获取请求;
将所述当前应用程序中各函数分别对应的第一统计值发送至所述智能终端,所述第一统计值用于指示所述智能终端根据所述第一统计值确定当前应用程序中的第一热点函数,并通过虚拟机运行前编译的方式将所述第一热点函数编译为本地机器代码。
本申请实施例的计算机存储介质的具体细节与上面所述的计算机存储介质相似,此处不再赘述。
本申请实施例提供了一种智能终端,该智能终端中可集成本申请实施例提供的对应智能终端的编译优化装置。图8为本申请实施例提供的一种智能终端的结构示意图。智能终端800可以包括:存储器801,处理器802及存储在存储器801上并可在处理器802运行的计算机程序,所述处理器802执行所述计算机程序时实现如本申请实施例所述的对应智能终端的编译优化方法。
本申请实施例提供的智能终端,可以在首次运行应用程序前,从预设服务器获取针对应用程序中各函数的大数据统计情况,并根据统计情况确定需要进行预编译的热点函数,进而通过虚拟机运行前编译的方式将热点函数编译为本地机器代码,提升应用程序首次运行效率。
图9为本申请实施例提供的另一种智能终端的结构示意图,该智能终端可以包括:壳体(图中未示出)、存储器901、中央处理器(central processing unit,CPU)902(又称处理器,以下简称CPU)、电路板(图中未示出)和电源电路(图中未示出)。所述电路板安置在所述壳体围成的空间内部;所述CPU902和所述存储器901设置在所述电路板上;所述电源电路,用于为所述智能终端的各个电路或器件供电;所述存储器901,用于存储可执行程序代码;所述CPU902通过读取所述存储器901中存储的可执行程序代码来运行与所述可执行程序代码对应的计算机程序,以实现以下步骤:
检测到智能终端中存在未运行过的目标应用程序;
对于所述目标应用程序中的每个函数,从预设服务器获取当前函数对应的第一统计值,所述第一统计值包括根据当前函数对应的第一频次计算得到的统计值,所述第一频次包括第一预设统计周期内预设用户群体在使用所述目标应用程序过程中当前函数被执行的频次;
根据所述第一统计值确定所述目标应用程序中的第一热点函数;
通过虚拟机运行前编译的方式将所述第一热点函数编译为本地机器代码。
所述智能终端还包括:外设接口903、RF(Radio Frequency,射频)电路905、音频电路906、扬声器911、电源管理芯片908、输入/输出(I/O)子系统909、其他输入/控制设备910、触摸屏912、其他输入/控制设备910以及外部端口904,这些部件通过一个或多个通信总线或信号线907来通信。
应该理解的是,图示智能终端900仅仅是智能终端的一个范例,并且智能终端900可以具有比图中所示出的更多的或者更少的部件,可以组合两个或更多的部件,或者可以具有不同的部件配置。图中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。
下面就本实施例提供的用于优化虚拟机编译的智能终端进行详细的描述,该智能终端以手机为例。
存储器901,所述存储器901可以被CPU902、外设接口903等访问,所述存储器901可以包括高速随机存取存储器,还可以包括非易失性存储器,例如一个或多个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
外设接口903,所述外设接口903可以将设备的输入和输出外设连接到CPU902和存储器901。
I/O子系统909,所述I/O子系统909可以将设备上的输入输出外设,例如触摸屏912和其他输入/控制设备910,连接到外设接口903。I/O子系统909可以包括显示控制器9091和用于控制其他输入/控制设备910的一个或多个输入控制器9092。其中,一个或多个输入控制器9092从其他输入/控制设备910接收电信号或者向其他输入/控制设备910发送电信号,其他输入/控制设备910可以包括物理按钮(按压按钮、摇臂按钮等)、拨号盘、滑动开关、操纵杆、点击滚轮。值得说明的是,输入控制器9092可以与以下任一个连接:键盘、红外端口、USB接口以及诸如鼠标的指示设备。
触摸屏912,所述触摸屏912是用户智能终端与用户之间的输入接口和输出接口,将可视输出显示给用户,可视输出可以包括图形、文本、图标、视频等。
I/O子系统909中的显示控制器9091从触摸屏912接收电信号或者向触摸屏912发送电信号。触摸屏912检测触摸屏上的接触,显示控制器9091将检测到的接触转换为与显示在触摸屏912上的用户界面对象的交互,即实现人机交互,显示在触摸屏912上的用户界面对象可以是运行游戏的图标、联网到相应网络的图标等。值得说明的是,设备还可以包括光鼠,光鼠是不显示可视输出的触摸敏感表面,或者是由触摸屏形成的触摸敏感表面的延伸。
RF电路905,主要用于建立手机与无线网络(即网络侧)的通信,实现手机与无线网络的数据接收和发送。例如收发短信息、电子邮件等。具体地,RF电路905接收并发送RF信号,RF信号也称为电磁信号,RF电路905将电信号转换为电磁信号或将电磁信号转换为电信号,并且通过该电磁信号与通信网络以及其他设备进行通信。RF电路905可以包括用于执行这些功能的已知电路,其包括但不限于天线系统、RF收发机、一个或多个放大器、调谐器、一个或多个振荡器、数字信号处理器、CODEC(COder-DECoder,编译码器)芯片组、用户标识模块(Subscriber Identity Module,SIM)等等。
音频电路906,主要用于从外设接口903接收音频数据,将该音频数据转换为电信号,并且将该电信号发送给扬声器911。
扬声器911,用于将手机通过RF电路905从无线网络接收的语音信号,还原为声音并向用户播放该声音。
电源管理芯片908,用于为CPU902、I/O子系统及外设接口所连接的硬件进行供电及电源管理。
本申请实施例还提供了一种服务器,该服务器中可集成本申请实施例提供的对应服务器的编译优化装置。图10为本申请实施例提供的一种服务器的结构示意图。服务器1000可以包括:存储器1001,处理器1002及存储在存储器1001上并可在处理器1002运行的计算机程序,所述处理器1002执行所述计算机程序时实现如本申请实施例所述的对应服务器的编译优化方法。
本申请实施例提供的服务器,能够通过大数据方式统计出预设用户群体在使用应用程序过程中不同函数的执行频次情况,进而计算出第一统计值,将第一统计值发送给智能终端,指导智能终端在首次运行应用程序前对热点函数进行预编译,提升应用程序首次运行效率。
上述实施例中提供的编译优化装置、存储介质、智能终端及服务器可执行本申请对应实施例所提供的编译优化方法,具备执行方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本申请相关实施例所提供的编译优化方法。
注意,上述仅为本申请的较佳实施例及所运用技术原理。本领域技术人员会理解,本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由所附的权利要求范围决定。
Claims (11)
1.一种编译优化方法,其特征在于,应用于智能终端,包括:
检测到智能终端中存在未运行过的目标应用程序,其中,所述目标应用程序包括已经在所述智能终端中安装完毕但未运行过的应用程序,以及包括安装过程中的应用程序;
对于所述目标应用程序中的每个函数,从预设服务器获取当前函数对应的第一统计值,所述第一统计值包括根据当前函数对应的第一频次计算得到的统计值,所述第一频次包括第一预设统计周期内预设用户群体在使用所述目标应用程序过程中当前函数被执行的频次;
根据所述第一统计值确定所述目标应用程序中的第一热点函数;
通过虚拟机运行前编译的方式将所述第一热点函数编译为本地机器代码;
其中,在所述目标应用程序安装完毕首次运行前进行编译或在所述目标应用程序的安装过程中进行编译;
一个函数对应的第一统计值通过以下方式确定:在第一预设统计周期内收集预设用户群体在使用所述目标应用程序过程中当前函数被执行的第一频次;在所述第一预设统计周期内获取所述预设用户群体中的每个用户对应的使用强度信息;根据所述使用强度信息确定所述每个用户分别对应的第一权重系数,并根据所述第一权重系数和所述第一频次进行加权平均运算,得到当前函数对应的第一统计值;其中,使用强度信息包括用户对智能终端的使用时长或用户对目标应用程序的使用时长;
在所述通过虚拟机运行前编译的方式将所述第一热点函数编译为本地机器代码之后,还包括:对于所述目标应用程序中包含的每个函数,在第二预设统计周期内记录当前用户在使用所述目标应用程序过程中当前函数被执行的第二频次,根据预设权重系数、所述第一统计值和所述第二频次进行加权平均运算,得到当前函数对应的第二统计值,其中,所述第一统计值对应第一预设权重系数,所述第二频次对应第二预设权重系数,所述第二预设权重系数大于所述第一权重系数;根据所述第二统计值确定所述目标应用程序中的第二热点函数;在确定当前第二热点函数未被编译时,通过虚拟机运行前编译的方式将当前第二热点函数编译为本地机器代码,以及在确定已被编译的当前第一热点函数不属于第二热点函数时,删除当前第一热点函数对应的本地机器代码。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一统计值确定所述目标应用程序中的第一热点函数,包括:
判断当前函数对应的第一统计值是否达到第一预设统计阈值,若达到,则将当前函数确定为所述目标应用程序中的第一热点函数。
3.根据权利要求1所述的方法,其特征在于,在所述对于所述目标应用程序中的每个函数,从预设服务器获取当前函数对应的第一统计值之前,包括:
获取当前用户的目标属性信息;
所述从预设服务器获取当前函数对应的第一统计值,包括:
从预设服务器中获取与所述目标属性信息相匹配的当前函数对应的第一统计值。
4.根据权利要求1所述的方法,其特征在于,当检测到所述智能终端首次开机时,所述目标应用程序包括所述智能终端中装载的所有应用程序;
所述根据所述第一统计值确定所述目标应用程序中的第一热点函数,包括:
根据所有应用程序中的所有函数分别对应的第一统计值的综合排序确定各应用程序分别对应的第一热点函数。
5.一种编译优化方法,其特征在于,应用于服务器,包括:
对于当前应用程序中的每个函数,在第一预设统计周期内收集预设用户群体在使用当前应用程序过程中当前函数被执行的第一频次,根据所述第一频次计算出当前函数对应的第一统计值;
接收到智能终端获取当前应用中各函数分别对应的第一统计值的获取请求,其中,所述智能终端在检测到当前应用程序未运行过时,向所述服务器发送所述获取请求,其中,所述当前应用程序包括已经在所述智能终端中安装完毕但未运行过的应用程序,以及包括安装过程中的应用程序;
将所述当前应用程序中各函数分别对应的第一统计值发送至所述智能终端,所述第一统计值用于指示所述智能终端根据所述第一统计值确定当前应用程序中的第一热点函数,并通过虚拟机运行前编译的方式将所述第一热点函数编译为本地机器代码,其中,在所述当前应用程序安装完毕首次运行前进行编译或在所述当前应用程序的安装过程中进行编译;
其中,一个函数对应的第一统计值通过以下方式确定:在第一预设统计周期内收集预设用户群体在使用目标应用程序过程中当前函数被执行的第一频次;在所述第一预设统计周期内获取所述预设用户群体中的每个用户对应的使用强度信息;根据所述使用强度信息确定所述每个用户分别对应的第一权重系数,并根据所述第一权重系数和所述第一频次进行加权平均运算,得到当前函数对应的第一统计值;其中,使用强度信息包括用户对智能终端的使用时长或用户对目标应用程序的使用时长;
在所述通过虚拟机运行前编译的方式将所述第一热点函数编译为本地机器代码之后,还包括:对于所述目标应用程序中包含的每个函数,在第二预设统计周期内记录当前用户在使用所述目标应用程序过程中当前函数被执行的第二频次,根据预设权重系数、所述第一统计值和所述第二频次进行加权平均运算,得到当前函数对应的第二统计值,其中,所述第一统计值对应第一预设权重系数,所述第二频次对应第二预设权重系数,所述第二预设权重系数大于所述第一权重系数;根据所述第二统计值确定所述目标应用程序中的第二热点函数;在确定当前第二热点函数未被编译时,通过虚拟机运行前编译的方式将当前第二热点函数编译为本地机器代码,以及在确定已被编译的当前第一热点函数不属于第二热点函数时,删除当前第一热点函数对应的本地机器代码。
6.一种编译优化装置,其特征在于,配置于智能终端中,包括:
运行监测模块,用于检测智能终端中是否存在未运行过的目标应用程序,其中,所述目标应用程序包括已经在所述智能终端中安装完毕但未运行过的应用程序,以及包括安装过程中的应用程序;
统计值获取模块,用于在检测到智能终端中存在未运行过的目标应用程序时,对于所述目标应用程序中的每个函数,从预设服务器获取当前函数对应的第一统计值,所述第一统计值包括根据当前函数对应的第一频次计算得到的统计值,所述第一频次包括第一预设统计周期内预设用户群体在使用所述目标应用程序过程中当前函数被执行的频次;
热点函数确定模块,用于根据所述第一统计值确定所述目标应用程序中的第一热点函数;
编译模块,用于通过虚拟机运行前编译的方式将所述第一热点函数编译为本地机器代码,其中,在所述目标应用程序安装完毕首次运行前进行编译或在所述目标应用程序的安装过程中进行编译;
其中,一个函数对应的第一统计值通过以下方式确定:在第一预设统计周期内收集预设用户群体在使用所述目标应用程序过程中当前函数被执行的第一频次;在所述第一预设统计周期内获取所述预设用户群体中的每个用户对应的使用强度信息;根据所述使用强度信息确定所述每个用户分别对应的第一权重系数,并根据所述第一权重系数和所述第一频次进行加权平均运算,得到当前函数对应的第一统计值;其中,使用强度信息包括用户对智能终端的使用时长或用户对目标应用程序的使用时长;
所述装置还包括:
第二统计值计算模块,用于在所述通过虚拟机运行前编译的方式将所述第一热点函数编译为本地机器代码之后,对于所述目标应用程序中包含的每个函数,在第二预设统计周期内记录当前用户在使用所述目标应用程序过程中当前函数被执行的第二频次,根据预设权重系数、所述第一统计值和所述第二频次进行加权平均运算,得到当前函数对应的第二统计值,其中,所述第一统计值对应第一预设权重系数,所述第二频次对应第二预设权重系数,所述第二预设权重系数大于所述第一权重系数;
第二热点函数确定模块,用于根据所述第二统计值确定所述目标应用程序中的第二热点函数;
编译策略更新模块,用于在确定当前第二热点函数未被编译时,通过虚拟机运行前编译的方式将当前第二热点函数编译为本地机器代码,以及在确定已被编译的当前第一热点函数不属于第二热点函数时,删除当前第一热点函数对应的本地机器代码。
7.一种编译优化装置,其特征在于,配置于服务器中,包括:
统计值计算模块,用于对于当前应用程序中的每个函数,在第一预设统计周期内收集预设用户群体在使用当前应用程序过程中当前函数被执行的第一频次,根据所述第一频次计算出当前函数对应的第一统计值,其中,所述当前应用程序包括已经在智能终端中安装完毕但未运行过的应用程序,以及包括安装过程中的应用程序;
获取请求接收模块,用于接收智能终端获取当前应用中各函数分别对应的第一统计值的获取请求,其中,所述智能终端在检测到当前应用程序未运行过时,向所述服务器发送所述获取请求;
统计值发送模块,用于在接收到所述智能终端获取当前应用中各函数分别对应的第一统计值的获取请求时,将所述当前应用程序中各函数分别对应的第一统计值发送至所述智能终端,所述第一统计值用于指示所述智能终端根据所述第一统计值确定当前应用程序中的第一热点函数,并通过虚拟机运行前编译的方式将所述第一热点函数编译为本地机器代码,其中,目标应用程序包括已经在所述智能终端中安装完毕但未运行过的应用程序,以及包括安装过程中的应用程序;
其中,一个函数对应的第一统计值通过以下方式确定:在第一预设统计周期内收集预设用户群体在使用所述目标应用程序过程中当前函数被执行的第一频次;在所述第一预设统计周期内获取所述预设用户群体中的每个用户对应的使用强度信息;根据所述使用强度信息确定所述每个用户分别对应的第一权重系数,并根据所述第一权重系数和所述第一频次进行加权平均运算,得到当前函数对应的第一统计值;其中,使用强度信息包括用户对智能终端的使用时长或用户对目标应用程序的使用时长;
在所述通过虚拟机运行前编译的方式将所述第一热点函数编译为本地机器代码之后,还包括:对于所述目标应用程序中包含的每个函数,在第二预设统计周期内记录当前用户在使用所述目标应用程序过程中当前函数被执行的第二频次,根据预设权重系数、所述第一统计值和所述第二频次进行加权平均运算,得到当前函数对应的第二统计值,其中,所述第一统计值对应第一预设权重系数,所述第二频次对应第二预设权重系数,所述第二预设权重系数大于所述第一权重系数;根据所述第二统计值确定所述目标应用程序中的第二热点函数;在确定当前第二热点函数未被编译时,通过虚拟机运行前编译的方式将当前第二热点函数编译为本地机器代码,以及在确定已被编译的当前第一热点函数不属于第二热点函数时,删除当前第一热点函数对应的本地机器代码。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-4中任一所述的编译优化方法。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求5中所述的编译优化方法。
10.一种智能终端,其特征在于,包括存储器,处理器及存储在存储器上并可在处理器运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1-4任一所述的编译优化方法。
11.一种服务器,其特征在于,包括存储器,处理器及存储在存储器上并可在处理器运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求5所述的编译优化方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711341481.2A CN109960507B (zh) | 2017-12-14 | 2017-12-14 | 编译优化方法、装置、存储介质、智能终端及服务器 |
PCT/CN2018/116586 WO2019114506A1 (zh) | 2017-12-14 | 2018-11-21 | 编译优化方法、装置、存储介质、智能终端及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711341481.2A CN109960507B (zh) | 2017-12-14 | 2017-12-14 | 编译优化方法、装置、存储介质、智能终端及服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109960507A CN109960507A (zh) | 2019-07-02 |
CN109960507B true CN109960507B (zh) | 2021-06-08 |
Family
ID=66818934
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711341481.2A Active CN109960507B (zh) | 2017-12-14 | 2017-12-14 | 编译优化方法、装置、存储介质、智能终端及服务器 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN109960507B (zh) |
WO (1) | WO2019114506A1 (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110543338A (zh) * | 2019-09-09 | 2019-12-06 | 北京安云世纪科技有限公司 | 一种文件的动态加载方法及装置 |
CN112783500B (zh) * | 2019-11-08 | 2024-01-05 | Oppo广东移动通信有限公司 | 编译优化信息生成方法、装置及电子设备 |
CN112783499A (zh) * | 2019-11-08 | 2021-05-11 | Oppo广东移动通信有限公司 | 应用程序预编译的方法、装置、电子设备以及服务器 |
CN111061483B (zh) * | 2019-11-28 | 2023-12-01 | Oppo广东移动通信有限公司 | 编译优化方法、装置及电子设备 |
CN110941424B (zh) * | 2019-11-28 | 2023-06-13 | Oppo广东移动通信有限公司 | 编译参数优化方法、装置及电子设备 |
CN113031953A (zh) * | 2019-12-09 | 2021-06-25 | Oppo广东移动通信有限公司 | 应用程序预编译的方法、装置、电子设备以及服务器 |
CN112988169A (zh) * | 2019-12-13 | 2021-06-18 | Oppo广东移动通信有限公司 | 应用安装方法、装置、终端设备、服务器及存储介质 |
CN113031955A (zh) * | 2019-12-24 | 2021-06-25 | Oppo广东移动通信有限公司 | 应用程序预编译的方法、装置以及电子设备 |
CN113032035B (zh) * | 2019-12-24 | 2022-07-12 | Oppo广东移动通信有限公司 | 配置文件处理方法、装置以及电子设备 |
CN113127047A (zh) * | 2019-12-31 | 2021-07-16 | Oppo广东移动通信有限公司 | 热点代码处理方法、装置、服务器及存储介质 |
CN113126995A (zh) * | 2019-12-31 | 2021-07-16 | Oppo广东移动通信有限公司 | 热点代码处理方法、请求方法、装置及电子设备 |
CN113126994A (zh) * | 2019-12-31 | 2021-07-16 | Oppo广东移动通信有限公司 | 热点代码处理方法、装置、电子设备及存储介质 |
CN112148386A (zh) * | 2020-10-12 | 2020-12-29 | Oppo广东移动通信有限公司 | 一种应用加载方法、装置及计算机可读存储介质 |
CN112540767B (zh) * | 2020-12-25 | 2023-07-25 | 北京百度网讯科技有限公司 | 程序代码的生成方法、装置、电子设备及存储介质 |
CN112631609A (zh) * | 2021-01-05 | 2021-04-09 | 北京字节跳动网络技术有限公司 | 编译方法、装置、终端及存储介质 |
CN112929449B (zh) * | 2021-03-10 | 2023-04-07 | 深圳创维-Rgb电子有限公司 | Ota升级包的编译方法、系统及计算机可读存储介质 |
CN113886251B (zh) * | 2021-09-30 | 2023-04-11 | 四川大学 | 基于热力图的热点函数确定方法 |
CN116382702B (zh) * | 2023-06-06 | 2023-08-18 | 湖南天河国云科技有限公司 | 智能合约热点探测方法、装置、电子设备和存储介质 |
CN116661909A (zh) * | 2023-08-01 | 2023-08-29 | 北京小米移动软件有限公司 | 应用程序的运行方法、装置、终端设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1571955A (zh) * | 2001-10-19 | 2005-01-26 | 皇家飞利浦电子股份有限公司 | 将字节码编译成原码的方法 |
CN103348323A (zh) * | 2011-01-28 | 2013-10-09 | 国际商业机器公司 | 动态二进制优化 |
CN106775893A (zh) * | 2016-12-30 | 2017-05-31 | 北京小米移动软件有限公司 | 对程序预编译的方法及装置 |
WO2017127206A1 (en) * | 2016-01-20 | 2017-07-27 | Google Inc. | Methods and apparatus to selectively provide cached and presently compiled applications |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8880991B2 (en) * | 2011-04-21 | 2014-11-04 | Qualcomm Innovation Center, Inc. | Methods and apparatus for improved browsing performance by precompilation of high-priority JavaScripts in a webpage and delaying the removal of corresponding compiled code |
US10324741B2 (en) * | 2014-08-30 | 2019-06-18 | Oracle International Corporation | Speeding up dynamic language execution on a virtual machine with type speculation |
CN104794004B (zh) * | 2015-03-17 | 2018-09-04 | 中国石油天然气集团公司 | 信息预加载的方法 |
CN106201611B (zh) * | 2016-07-07 | 2019-07-23 | 北京小米移动软件有限公司 | 运行应用的方法及装置 |
CN106406966B (zh) * | 2016-10-31 | 2020-04-07 | 维沃移动通信有限公司 | 一种应用程序的预加载方法及移动终端 |
CN106648747B (zh) * | 2016-11-14 | 2021-01-05 | 腾讯科技(深圳)有限公司 | 进程预加载处理方法及装置 |
CN107193610A (zh) * | 2017-05-31 | 2017-09-22 | 广东欧珀移动通信有限公司 | 一种动态库的加载方法、装置、终端设备及存储介质 |
-
2017
- 2017-12-14 CN CN201711341481.2A patent/CN109960507B/zh active Active
-
2018
- 2018-11-21 WO PCT/CN2018/116586 patent/WO2019114506A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1571955A (zh) * | 2001-10-19 | 2005-01-26 | 皇家飞利浦电子股份有限公司 | 将字节码编译成原码的方法 |
CN103348323A (zh) * | 2011-01-28 | 2013-10-09 | 国际商业机器公司 | 动态二进制优化 |
WO2017127206A1 (en) * | 2016-01-20 | 2017-07-27 | Google Inc. | Methods and apparatus to selectively provide cached and presently compiled applications |
CN106775893A (zh) * | 2016-12-30 | 2017-05-31 | 北京小米移动软件有限公司 | 对程序预编译的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2019114506A1 (zh) | 2019-06-20 |
CN109960507A (zh) | 2019-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109960507B (zh) | 编译优化方法、装置、存储介质、智能终端及服务器 | |
CN111061484B (zh) | 代码编译方法、装置、服务器、用户终端及可读介质 | |
US11429880B2 (en) | Methods and systems for preloading applications and generating prediction models | |
EP3502880B1 (en) | Method for preloading application, storage medium, and terminal device | |
WO2018059076A1 (zh) | 一种内存回收方法及装置 | |
EP3502878B1 (en) | Method for preloading application and terminal device | |
CN109947496B (zh) | 应用程序预加载方法、装置、存储介质及移动终端 | |
US20190370657A1 (en) | Method and apparatus for updating application prediction model, storage medium, and terminal | |
CN111736980B (zh) | 一种内存管理方法及装置 | |
CN106502703B (zh) | 一种函数调用方法和装置 | |
CN107872523B (zh) | 网络数据的加载方法、装置、存储介质及移动终端 | |
CN109033247B (zh) | 一种应用程序的管理方法、装置、存储介质及终端 | |
CN109240991B (zh) | 文件推荐方法、装置、存储介质及智能终端 | |
CN110955584B (zh) | 块设备访问追踪方法、装置、存储介质及终端 | |
CN110222288B (zh) | 页面展示方法、装置及存储介质 | |
CN109408465B (zh) | 文件归属信息记录方法、装置、存储介质及终端 | |
CN110968508B (zh) | 一种小程序的加载时间确定方法、装置、终端及存储介质 | |
CN107766177A (zh) | 开机优化方法、装置、存储介质及终端设备 | |
CN110046497B (zh) | 一种函数挂钩实现方法、装置和存储介质 | |
CN108984374B (zh) | 一种数据库性能的测试方法和系统 | |
CN110347578B (zh) | 一种应用的测试方法、装置及存储介质 | |
CN107832131B (zh) | 应用程序关闭方法、装置、存储介质和电子设备 | |
CN110955486B (zh) | 文件缓存效率的追踪方法、装置、存储介质及终端 | |
CN109107148A (zh) | 控制方法、装置、存储介质及移动终端 | |
CN109343961B (zh) | 内存信息的处理方法、装置、存储介质及终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: Changan town in Guangdong province Dongguan 523860 usha Beach Road No. 18 Applicant after: GUANGDONG OPPO MOBILE TELECOMMUNICATIONS Corp.,Ltd. Address before: Changan town in Guangdong province Dongguan 523860 usha Beach Road No. 18 Applicant before: GUANGDONG OPPO MOBILE TELECOMMUNICATIONS Corp.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |