掌桥专利:专业的专利平台
掌桥专利
首页

热点代码处理方法、装置、电子设备及存储介质

文献发布时间:2023-06-19 11:52:33


热点代码处理方法、装置、电子设备及存储介质

技术领域

本申请涉及数据处理技术领域,更具体地,涉及一种热点代码处理方法、装置、电子设备及存储介质。

背景技术

在电子设备中,为了提高应用程序的执行效率以提高应用程序的性能,在运行时,虚拟机将会将应用程序的代码中的热点代码编译成与本地平台相关的机器码。但是,对于应用程序而言,需要运行一段时间确定哪些代码为热点代码,在应用程序安装初期,无法通过热点代码的编译提升应用程序的性能。

发明内容

本申请提出了一种热点代码处理方法、装置、电子设备及存储介质,以改善上述问题。

第一方面,本申请实施例提供了一种热点代码处理方法,该方法包括:获取目标终端设备的内核文件,所述内核文件中包括系统应用程序的热点配置文件,所述热点配置文件中包括所述系统应用程序的热点代码;目标终端设备在通过所述内核文件对系统应用程序进行安装时,将所述系统应用程序的热点配置文件中的热点代码编译为机器码,获得所述系统应用程序的热点编译文件;所述目标终端设备将所述热点编译文件存储。

第二方面,本申请实施例提供了一种热点代码处理方法,该方法包括:获取目标应用程序的多个热点代码文件,所述目标应用程序为目标终端设备中的系统应用程序,所述多个热点代码文件来自于运行过所述目标应用程序的多个终端设备;根据所述多个热点代码文件生成热点配置文件;在接收到对目标终端设备中系统应用程序的热点代码获取请求时,将所述热点配置文件返回。

第三方面,本申请实施例提供了一种热点代码处理装置,该装置包括:内核文件获取模块,用于获取目标终端设备的内核文件,所述内核文件中包括系统应用程序的热点配置文件,所述热点配置文件中包括所述系统应用程序的热点代码;安装模块,用于目标终端设备在通过所述内核文件对系统应用程序进行安装时,将所述系统应用程序的热点配置文件中的热点代码编译为机器码,获得所述系统应用程序的热点编译文件;存储模块,用于所述目标终端设备将所述热点编译文件存储。

第四方面,本申请实施例提供了一种热点代码处理装置,该装置包括:第一文件获取模块,用于获取目标应用程序的多个热点代码文件,所述目标应用程序为目标终端设备中的系统应用程序,所述多个热点代码文件来自于运行过所述目标应用程序的多个终端设备;第二文件获取模块,用于根据所述多个热点代码文件生成热点配置文件;返回模块,用于在接收到对目标终端设备中系统应用程序的热点代码获取请求时,将所述热点配置文件返回。

第五方面,本申请实施例提供了一种电子设备,该电子设备包括一个或多个处理器;存储器,与所述一个或多个处理器电连接;一个或多个程序,其中所述一个或多个程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行如上述的方法。

第六方面,本申请实施列提供一种计算机可读存储介质,所述计算机可读存储介质中存储有程序代码,其中,在所述程序代码运行时执行上述的方法。

本申请提出的热点代码处理方法、装置、电子设备及存储介质,可以获取包括热点配置文件的内核文件。在通过内核文件对系统应用程序进行安装时,可以将系统应用程序的热点配置文件中热点代码编译为机器码进行存储,从而使系统应用程序在未通过使用生成热点代码时也可以提升使用性能。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出了本申请实施例提供的一种JIT架构图。

图2示出了本申请一个实施例提供的热点代码处理方法的流程图。

图3示出了本申请另一个实施例提供的热点代码处理方法的流程图。

图4示出了本申请实施例提供的服务器与终端设备的一种交互示意图。

图5示出了本申请实施例提供的服务器与终端设备的另一种交互示意图。

图6示出了本申请又一个实施例提供的热点代码处理方法的流程图。

图7示出了本申请再一个实施例提供的热点代码处理方法的流程图。

图8示出了本申请一实施例提供的热点代码处理装置的功能模块图。

图9示出了本申请另一实施例提供的热点代码处理装置的功能模块图。

图10示出了本申请实施例提出的用于执行根据本申请实施例的热点代码处理方法的电子设备的结构框图。

图11示出了本申请实施例提供的用于保存或者携带实现根据本申请实施例的热点代码处理方法的程序代码的存储介质。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。

在终端设备的虚拟机执行环境中,若某个代码块频繁运行,运行次数超过设定的次数,将该代码块确定为热点代码(hot code),将该热点代码记录下来并保存到热点代码文件(profile)。其中,可以理解的,该代码块可以是一个代码集合,或者是代码中的一个方法(method)。

为了提高热点代码的运行效率,可以将热点代码文件中的热点代码经由即时编译器(JIT,Just-In-Time Compiler)编译后获得odex文件或者经预编译(AOT,Ahead-of-Time)编译后得oat文件,热点代码编译后的odex文件以及oat文件中包含的是二进制机器码,可直接交由底层处理器(CPU,central processing unit)执行,当再次需要执行热点代码时,可以直接执行热点代码编译后的odex文件或者oat文件,提高了运行效率。

以如图1所示的安卓系统中的JIT架构为例,由于oat文件中包含的是程序运行的机器码,因此可以直接被安卓运行时(ART,Android-Running-Time)运行。而dex文件中,如果是非热点代码(cold code),是交由java解释器(Interpreter)执行,如果是热点代码,则交由JIT实时编译后存放到JIT代码缓存(JIT CODE CACHE)中,下次再次访问该热点代码,则可以直接从cache中执行对应的机器码。并且,将热点代码放入热点代码文件,当终端设备进入空闲(IDLE)且充电状态时,将热点代码文件中的该热点代码执行AOT过程进行编译生成oat文件。

由于代码块的运行次数超过设定的次数才确定为热点代码,则对于新安装的应用程序而言,需要在终端设备中运行一段时间,终端设备才能根据应用程序中代码的运行次数确定热点代码。而对于终端设备的系统应用程序,在出厂前即在系统中安装,用户在使用新的终端设备时,其中的系统应用程序未确定有热点代码,性能较差。

本申请实施例提供了一种热点代码处理方法,在内核编译获得的内核文件中包括系统应用程序的热点配置文件,在通过内核文件对系统应用程序进行安装时,将系统应用程序的热点配置文件中的热点代码进行编译,并存储编译后的热点编译文件,以提升在使用系统应用程序时的性能请参见图2,该方法包括:

步骤S110:获取目标终端设备的内核文件,所述内核文件中包括系统应用程序的热点配置文件,所述热点配置文件中包括所述系统应用程序的热点代码。

对目标终端设备的内核源码进行内核编译,可以获得目标终端设备的内核文件,如获得的内核文件为内核编译后的镜像文件。因此,目标终端设备可以获取到目标终端设备的内核文件,该内核文件中可以包括目标终端设备的系统应用程序的热点代码,该热点代码可以存放于热点配置文件中。在本申请实施例中,目标终端设备可以在出厂前获得内核文件进行系统安装。当然,在本申请实施例中,通过内核文件进行系统安装也并不限制为出厂前,用户其他时候的刷机以及系统升级也可以进行系统安装。

步骤S120:目标终端设备在通过所述内核文件对系统应用程序进行安装时,将所述系统应用程序的热点配置文件中的热点代码编译为机器码,获得所述系统应用程序的热点编译文件。

在通过内核文件进行系统安装时,可对系统应用程序进行安装。

在该内核文件中,包括系统应用程序的热点配置文件,在通过内核文件进行系统应用程序安装时,对系统应用程序的热点配置文件中的热点代码进行编译,具体的,可以将热点代码编译为目标设备的机器码。热点配置文件中热点代码编译后获得热点编译文件。

步骤S130:所述目标终端设备将所述热点编译文件存储。

将编译后的热点编译文件存储,从而在目标终端设备运行系统应用程序时,系统安装后系统应用程序首次运行时,由于热点代码已经编译为机器码,运行速度更快,系统应用程序的性能更好。

在本申请实施例中,目标终端设备的内核文件中包括系统应用程序的热点配置文件,在通过内核文件进行系统应用程序的安装时,将热点配置文件中的热点代码编译为机器码并存储,使系统应用程序在安装后,即可获得良好的运行性能。

本申请还提供了一种实施例,在该实施例中,包括对热点配置文件的存放。具体的,请参见图3,该实施例提供的方法包括:

步骤S210:对所述目标终端设备的内核源码进行内核编译。

步骤S220:将系统应用程序的热点配置文件存放到编译后的内核文件中。

在对目标终端设备进行内核编译前,可以获取所述目标终端设备的系统应用程序的热点配置文件,用于进行热点编译获得热点编译文件。

在本申请实施例中,可以从服务器获取目标终端设备中各系统应用程序的热点配置文件,每个系统应用程序的热点配置文件中包括该系统应用程序的热点代码。其中,每个系统应用程序的热点配置文件可以根据多个热点代码文件获得,该多个热点代码文件来自于运行过该系统应用程序的多个终端设备,以使热点配置文件中的热点代码可以获得良好的运行效果。

当然,在本申请实施例中,并不限定为热点配置文件从服务器获取,也可以是从其他电子设备获取。热点配置文件的生成方式也不限定,例如也可以是由开发人员根据系统应用程序的运行特征选取代码作为热点配置文件中的热点代码

在本申请实施例中,从服务器获取热点配置文件的可以是目标终端设备,也可以是其他电子设备。

在本申请实施例中,热点配置文件放入内核文件的时机并不限定,对内核源码进行编译获得内核文件的执行设备也并不限定。

在一种实施方式中,可以是,对内核源码进行编译获得内核文件,再将热点配置文件存放于内核文件中。也就是说,在该实施方式中,步骤S210先于步骤S220执行。

可选的,在该实施方式中,可以由该目标终端设备对内核源码进行内核编译获得内核文件,目标终端设备再将热点配置文件存放于内核文件中。

可选的,在该实施方式中,也可以由其他设备对内核源码进行内核编译获得内核文件,如开发人员操作的终端设备或者其他,或者服务器等。目标终端设备可以从其他设备获取到内核文件,再将热点配置文件存放于内核文件中。

可选的,在该实施方式中,也可以由其他设备对内核源码进行内核编译获得内核文件,该其他设备再将热点配置文件存放于内核文件中。目标终端设备可以从该其他设备获取到包括热点配置文件的内核文件。

在另一种实施方式中,步骤S210与步骤S220可以并行执行。即,在该实施方式中,对所述目标终端设备的内核源码进行内核编译时,可以将系统应用程序的热点配置文件存放到编译后的内核文件中。

具体的,在该实施方式中,在获得热点配置文件后,可以将热点配置文件存放在指定目录下,对所述目标终端设备的内核源码进行内核编译时,将指定目录下系统应用程序的热点配置文件存放到编译后的内核文件中。

在该实施方式中,可以新建有指定目录,该指定目录用于存放系统应用程序的热点配置文件。在内核源码中,可以添加指令代码,该指令代码用于指示在进行内核编译时,获取新建的指定目录下的热点配置文件,并存放到编译后的内核文件中。其中,该指定目录可以是预先创建于内核源码,也可以是基于指令代码进行新建。

其中,可选的,所有系统应用程序的热点配置文件都可以存储于该指定目录下,每个热点配置文件包括唯一身份信息,表明各个热点配置文件分别为哪一系统应用程序的热点配置文件。在将指定目录下的热点配置文件存放到编译后的内核文件中时,根据热点配置文件的唯一身份信息对各个热点配置文件进行辨识。

可选的,也可以是,对应不同系统应用程序分别创建指定目录,将不同系统应用程序的热点配置文件存放在相应的指定目录下。在将指定目录下的热点配置文件存放到编译后的内核文件中时,根据指定目录辨识各个热点配置文件。

在本申请实施例中,在内核文件中可以包括目标文件,该目标文件为内核文件中用于存放系统应用程序的热点代码的文件,不同的系统应用程序对应不同的目标文件。其中,该目标文件可以是内核编译获得内核文件时自动生成的文件,也可以是通过内核源码中加入的指令代码,指示内核编译时生成该目标文件。

在将热点配置文件存放于内核文件中时,可以存放于内核文件中的该目标文件。例如在上述另一种实施方式中,对所述目标终端设备的内核源码进行内核编译时,将指定目录下系统应用程序的热点配置文件存放于内核文件中的目标文件。或者说,在对目标终端设备的内核源码进行编译形成内核文件的过程中,就将指定目录下的热点配置文件存放到生成的目标文件中。

步骤S230:目标终端设备在通过所述内核文件对系统应用程序进行安装时,将所述系统应用程序的热点配置文件中的热点代码编译为机器码,获得所述系统应用程序的热点编译文件。

获得内核文件后,可以将内核文件对目标终端设备进行刷机,即可以通过内核文件对目标终端设备进行系统安装。在内核文件中,包括系统应用程序的安装代码,在通过内核文件进行系统安装时,会对系统应用程序进行安装。

在对系统应用程序进行安装时,触发对热点代码的编译,对系统应用程序的热点配置文件中的热点代码进行编译。具体的,若将热点配置文件存放在目标文件中,则在进行系统应用程序时,将目标文件中的热点代码编译,获得热点编译文件,热点编译文件中包括热点代码编译后的二进制机器码。

在本申请实施例中,对热点代码进行编译的方式可以是AOT编译,编译后的热点编译文件对应可以是oat文件。

步骤S240:所述目标终端设备将所述热点编译文件存储。

将热点编译文件进行存储。其中,各个系统应用程序的热点编译文件可以存储在各个应用程序用于存放热点编译文件的目录下。在系统应用程序运行时,热点编译文件中的机器码可以直接运行,可以提高运行速度。

在本申请实施例中,在内核编译获得的内核文件中添加热点配置文件,通过内核文件进行系统安装时,对内核文件中系统应用程序的安装代码进行系统应用程序的安装。在系统应用程序的安装时,可以将热点配置文件中的热点代码编译为机器码,从而时系统应用程序在运行时可以直接对热点代码编译后的机器码直接运行,提高了系统应用程序的性能。

另外,在本申请实施例中,也可以获取不包括热点配置文件的内核文件,目标终端设备通过该内核文件进行系统安装后,可以获取并存储各系统应用程序的热点配置文件。不同的系统应用程序的热点配置文件,可以存放在相关系统应用程序专门用于存放热点代码的目录下。在将热点配置文件存放后,可以触发编译,对各个系统应用程序的热点配置文件中的热点代码进行编译,获得热点编译文件。该编译的触发可以在目标终端设备出厂前,或者在系统应用程序使用前等,或者也可以在系统应用程序自身生成热点代码前的其他时刻。

本申请实施例提出了一种热点代码处理方法,可以从多个终端设备获取目标终端设备中系统应用程序的热点配置文件,提升目标终端设备中系统应用程序的性能。如图4所示,服务器101与多个终端设备102网络连接。该终端设备可以是智能手机、平板电脑、电子书、智能穿戴设备等能够运行应用程序的智能设备。目标终端设备可以是与该终端设备102相同类型的智能设备,也可以是与终端设备102不同类型的智能设备。

服务器可以从已经产生有目标终端设备的系统应用程序的热点代码文件的多个终端设备中获取热点代码文件,再从获得的热点代码文件选择热点代码生成热点配置文件。在接收到对目标终端设备中系统应用程序的热点代码获取请求时,将热点配置文件返回。

在本申请实施例中,生成热点配置文件的服务器与返回热点配置文件到终端设备的可以是同一个服务器或不同的服务器。当是同一个服务器时,如图4所示,服务器101可以生成热点配置文件,并且在接收到终端设备102发送的热点代码的获取请求,向终端设备102返回热点配置文件。

当生成热点配置文件的服务器与返回热点配置文件到终端设备为不同的服务器,如图5所示,服务器1011可以生成热点配置文件,服务器1012可以接收终端设备102发送的热点代码的获取请求,并且在接收到终端设备102发送的热点代码的获取请求,向服务器1011请求热点代码配置文件。服务器1011在接收到服务器1012发送的热点代码的获取请求时,将热点配置文件中返回给服务器1012。服务器1012再将获取到的热点配置文件发送给请求热点代码的终端设备102。在图5中,各个终端设备102都可以和服务器1012以及服务器1011网络连接,图5中仅示出了部分网络连接示意。

下面将对本申请实施例进行详细的说明。

请参阅图6,示出了本申请实施例提供的一种热点代码处理方法,该方法可应用于服务器。具体的,该方法可以包括:

步骤S310:获取目标应用程序的多个热点代码文件,所述目标应用程序为目标终端设备中的系统应用程序,所述多个热点代码文件来自于运行过所述目标应用程序的多个终端设备。

终端设备在对应用程序运行一段时间后,有些代码块的运行次数达到设定的次数,被确定为热点代码,因此,在终端设备中,可以存储有包括热点代码的热点代码文件。

服务器可以从终端设备端获取应用程序的热点代码,其中,服务器可以通过获取终端设备中的热点代码文件的方式获取终端设备中产生的应用程序的热点代码。

在本申请实施例中,服务器可以获取目标终端设备中系统应用程序的热点代码。为便与描述,定义目标终端设备中的系统应用程序为目标应用程序。

服务器可以从网络连接的多个终端设备中获取到目标应用程序的热点代码文件,则从多个电子设备获取到多个热点代码文件。

步骤S320:根据所述多个热点代码文件生成热点配置文件。

服务器获取到的多个热点代码文件中,每个热点代码文件包括一个或多个热点代码。可以从该多个热点代码文件中选择热点代码生成热点配置文件。

步骤S330:在接收到对目标终端设备中系统应用程序的热点代码获取请求时,将所述热点配置文件返回。

当服务器接收到对目标终端设备中系统应用程序的热点代码获取请求,可以将生成的热点配置文件返回给请求方。

在本申请实施例中,服务器可以从多个终端设备中获取目标终端设备中系统应用程序热点代码文件,并从获取到的热点代码文件中选择热点代码生成热点配置文件。使目标终端设备可以获取到该热点配置文件,在出厂前即对热点配置文件进行编译获得热点编译文件,提升系统应用程序的性能。

本申请还提供了一实施例,描述了获取系统应用程序的热点配置文件的具体方式。请参见图7,该实施例提供的热点代码处理方法包括:

步骤S410:获取目标应用程序的多个热点代码文件,所述目标应用程序为目标终端设备中的系统应用程序,所述多个热点代码文件来自于运行过所述目标应用程序的多个终端设备。

在本申请实施例中,生成有热点代码文件并用于获取热点代码文件的多个终端设备,可以是与目标终端设备型号相同的终端设备,也可以是与目标终端设备型号不同的终端设备。可选的,与服务器网络连接的终端设备的全部或部分,都可以作为服务器获取热点代码文件的终端设备。

目标终端设备可以是某些厂商的终端设备、某些型号的终端设备等。具体以哪些终端设备作为目标终端设备在本申请实施例中并不限定,可以根据需求在服务器设置将哪些类型的终端设备作为目标终端设备。例如,服务器可以从一电子设备获取终端设备列表,该终端设备列表包括需要获取系统应用程序的终端设备,即该终端设备列表中的终端设备为目标终端设备。

目标终端设备的系统应用程序可以是出厂前在系统中进行安装的应用程序,或者说在内核文件中包括了安装代码的应用程序。哪些应用程序为目标终端设备中的系统应用程序可以在服务器设置,或者有目标终端设备或者开发者后台等通知服务器哪些应用程序为目标终端设备中的系统应用程序。例如,可选的,终端设备列表中,对应各个型号的终端设备,还可以有系统程序列表,每个型号的终端设备对应的系统程序列表包括该终端设备中的各种系统应用程序。

在一种实施方式中,服务器可以从多个终端设备中获取多种应用程序的热点代码文件,如获取各终端设备中所有应用程序的热点代码文件。再从获取的热点代码文件中确定目标终端设备中系统应用程序的热点代码文件。

在另一种实施方式中,服务器可以仅从多个终端设备获取目标应用程序的热点代码文件。

可选的,在该实施方式中,服务器中可以存储有应用程序列表,该应用程序列表中包括多种应用程序。服务器可以判断存储的应用程序列表中各个应用程序是否为目标终端设备的系统应用程序;若是,从多个终端设备中获取所述系统应用程序的热点代码文件。

可选的,在该实施方式中,服务器也可以存储有目标终端设备的系统应用程序列表,系统应用程序列表中包括目标终端设备的系统应用程序。依次获取系统应用程序列表中各系统应用程序的热点代码文件。

服务器从多个终端设备获取应用程序的热点代码的方式在本申请实施例中并不限定。

在一种具体的实施方式中,服务器从多个终端设备获取应用程序的热点代码文件时,可以向终端设备发起热点代码文件获取请求,并在该热点代码文件获取请求中携带需要获取热点代码文件的应用程序的程序标识。终端设备可以根据该热点代码文件获取请求,向服务器返回程序标识对应的应用程序的热点代码文件,服务器获取到终端设备返回的热点代码文件。

在该实施方式中,服务器可以按照设置的频率更新应用程序的热点代码文件,也就是说,服务器可以每隔预设的时间,向安装有相应应用程序的全部或者部分终端设备发送热点代码文件获取请求,获取热点代码文件。服务器在发送热点代码文件获取请求时,若有终端设备未与服务器网络连接,则当该终端设备在与服务器网络连接时,可以向该终端设备发送热点代码文件获取请求。

在另一种实施方式中,服务器和终端设备可以预先协商,由终端设备定期将服务器有需求的应用程序的热点代码文件发送到服务器,从而服务器可以获取到终端设备中发送的应用程序的热点代码文件。在该实施方式中,可选的,服务器与终端设备的协商,可以是与终端设备的厂商协商,在终端设备进行热点代码文件的发送设置;可选的,服务器与终端设备的协商,也可以是服务器与相关应用程序预先协商,当应用程序在终端设备安装,由应用程序安装于终端设备的客户端将热点代码文件发送到服务器。

在服务器获取到的热点代码文件中,除了包括应用程序的热点代码,还可以包括其他与应用程序相关的信息,如应用程序的唯一身份信息,该唯一身份信息可以包括应用程序的名称、应用程序的版本名称以及应用程序的版本号等,以准确定位到热点代码文件的身份,确定不同应用程序的热点代码文件。

在本申请实施例中,不同身份信息的应用程序,可以认为是不同的应用程序。可选的,由于同一名称不同版本的应用程序,其程序代码可能有不同,可能产生的热点代码也不同。在本申请实施例中,将同一名称同一版本的应用程序作为相同应用程序进行处理,不同名称的应用程序作为不同的应用程序,相同名称不同版本的应用程序作为不同的应用程序,也就是说,将上线时程序代码相同的应用程序作为相同的应用程序。

步骤S420:从所述多个热点代码文件中选择满足预设条件的热点代码,生成热点配置文件。

对于目标终端设备的每一系统应用程序,可以从多个终端设备获取到多个热点代码文件,该多个热点代码文件从不同的终端设备获得。根据该系统应用程序的多个热点代码文件生成该系统应用程序的热点配置文件。本申请实施例以获取一系统应用程序的多个热点代码文件,并根据多个热点代码文件生成热点配置文件为例进行说明。获取各种系统应用程序的热点配置文件的方式可以参阅。

服务器根据多个热点代码文件生成热点配置文件时,可以从多个热点代码文件中选择满足预设条件的热点代码生产热点配置文件。例如,服务器获取到目标应用程序的热点代码文件包括A和B,从A中选择到热点代码a1、a2以及a3,从B中选择到热点代码b1,则可以生成包括热点代码a1、a2、a3以及b1的热点配置文件。该热点配置文件可以仅包括选择的热点代码,也可以包括其他信息,如目标应用程序的唯一身份信息。该目标应用程序为目标终端设备中的系统应用程序。

在本申请实施例中,预设条件可以根据需求设置,使生成的热点配置文件包括的热点代码尽可能覆盖到目标用户在使用目标应用程序时会经常运行到的代码块。该目标用户为使用该热点配置文件的用户。

由于热点代码的热度越高,代表该热点代码越可能是获取热点配置文件的电子设备中频繁运行的代码。在本申请实施例中,该预设条件可以包括热点代码的热度。其中,热点代码的热度可以由经常使用该热点代码对应的功能的用户数量确定,或者说,通过热点代码在多个热点代码文件中的出现次数衡量。

在本申请实施例中,热点代码在多个热点代码文件中的出现次数,即包括该热点代码的热点代码文件数量。例如,若获取到的多个热点代码文件中,有5个热点代码文件都包括某热点代码c,则可以确定该热点代码c的出现次数为5。

在本申请实施例中,对于所述多个热点代码文件中的不同热点代码,可以统计每个热点代码在所述多个热点代码文件中的出现次数;根据每个热点代码的出现次数,选择多个热点代码。其中,选择的热点代码的出现次数靠前,即选择的热点代码的出现次数不小于未选择的热点代码的出现次数。

例如,服务器获取到目标应用程序的热点代码文件包括A、B、C、D以及E。热点代码文件A中包括热点代码c1,c2,c3以及c4;热点代码文件B中包括热点代码c1,c2,c4;热点代码文件C中包括热点代码c1以及c5;热点代码文件D中包括热点代码c1,c4,c5以及c6。

则服务器获取到的多个热点代码文件中的不同热点代码包括c1,c2,c3,c4,c5以及c6,其中,包括热点代码c1的热点代码文件的数量为4,热点代码c1的出现次数为4;包括热点代码c2的热点代码文件的数量为2,热点代码c2的出现次数为2;包括热点代码c3的热点代码文件的数量为1,热点代码c3的出现次数为1;包括热点代码c4的热点代码文件的数量为3,热点代码c4的出现次数为3;包括热点代码c5的热点代码文件的数量为2,热点代码c5的出现次数为2;包括热点代码c6的热点代码文件的数量为1,热点代码c6的出现次数为1。

对应出现次数由多到少的不同的热点代码分别为c1,c4,c2,c5,c6以及c3,其中c5和c2对应的热点文件数量相同,都为2;c6和c3对应的热点文件数量相同,都为1。

则从依次排列的多个不同热点代码c1,c2,c3,c4,c5以及c6中选择热点代码时,选择的为c1,c4,c2,c5,c6以及c3中靠前的热点代码,其中,c2和c5的位置可以互换,c6和c3的位置可以互换。该靠前表示,从前往后选,或者说,在前面的热点代码未选的情况下,不选后面未选的热点代码,使选择的热点代码的出现次数不小于未选择的热点代码的出现次数。

作为一种具体的实施方式,可以将所有热点代码用于生产热点配置文件。例如在前述举例说明中,选择热点代码c1,c2,c3,c4,c5以及c6生成热点配置文件,在生成的热点配置文件中包括c1,c2,c3,c4,c5以及c6。

为了减少选择的热点代码的总的数据量,在本申请实施例中,可以从所有热点代码中选择部分热点代码,用于生成热点配置文件。

作为一种具体的实施方式,可以设置生成的热点配置文件包括预设数量的热点代码,在根据每个热点代码的出现次数,选择多个热点代码时,按照出现次数由大到小,选择预设数量的热点代码。

该预设数量可以是预先设置的一个值,例如,在前述举例说明中,若预设数量为2,由于c1以及c4的出现次数比c2,c5,c3以及c6的出现次数多,则选择c1以及c4,生成包括c1以及c4的热点配置文件。

在本申请实施例中,预设数量的具体数值并不做具体限定,例如,预设数量的确定方式可以是,确定一个使用时长范围,获取使用时长在该使用时长范围内的目标应用程序产生的热点代码文件,并计算获得的热点代码文件的平均热点代码数量,向上取整或向下取整作为预设数量。例如,使用时长范围为3个月,获取使用时长为3个月的目标应用程序产生的热点代码文件4个,该4个热点代码文件中总共有不同的热点代码17,平均热点代码数量为17/4,向下取整得到4,以4作为预设数量。其中,该使用时长范围可以是目标应用程序可以产生大部分热点代码的一个时长范围。对于刚开始使用目标应用程序的用户,该大部分的热点代码已经基本可以代表可能频繁运行的代码块。

该预设数量也可以根据预先设置的比例计算,具体可以计算不同热点代码的数量与比例的乘积,获得预设数量。其中,若不同热点代码的数量与比例的乘积并非整数,可以根据需求向上取整或向下取整。例如在前述举例说明中,若预先设置的比例为0.3,因为不同热点代码的数量与比例的乘积为6*0.3=1.8,向上取整,得到预设数量为2,选择c1以及c4用于生成热点配置文件。

作为一种实施方式,可以按照出现次数由大到小选择热点代码,使选择的热点代码的总数据量小于预设数据量,且达到最大的可选择数量。在该实施方式中,可以按照出现次数由大到小,依次累计热点代码的数据量,当累计到热点代码的数据量大于或等于预设数据量时,舍弃累计的热点代码中的最后一个,得到选择的热点代码。其中,数据量可以是一个字节数,单位可以是B,KB,MB,GB等。

例如在前述举例说明中,从c1,c4,c2,c5,c6以及c3依次累计选择热点代码,若c1和c4的数据量小于预设数据量,c1、c4和c2的总数据量大于预设的数据量,则选择c1以及c4用于生成热点配置文件。

可选的,在本申请实施例中,当按照出现次数由大到小的排序选择热点代码时,出现次数相同的热点代码的排序可以是并列。当累计到热点代码的数据量大于或等于预设数据量时,舍弃累计的热点代码中的最后一个,若该累计的热点代码中的最后一个有排序是并列的热点代码,则选择排序是并列的热点代码,计算累计的总的数据量。

例如在前述举例说明中,从c1,c4,c2,c5,c6以及c3依次累计选择热点代码,若c1和c4的数据量小于预设数据量,c1、c4和c2的总数据量大于预设的数据量,由于c2和c5出现次数相同,再计算c1、c4以及c5的总数据量是否大于预设的数据量。若c1、c4以及c5的总数据量大于预设的数据量,则选择c1以及c4用于生成热点配置文件;若c1、c4以及c5的总数据量小于预设的数据量,则选择c1、c4以及c5,并继续计算c1、c4、c5以及c6的总数据量是否大于预设的数据量;若c1、c4以及c5的总数据量等于预设的数据量,则选择c1、c4以及c5用于生成热点配置文件,不再继续计算c1、c4、c5以及c6的总数据量是否大于预设的数据量。

在本申请实施例中,预设数据量的具体数值并不做具体限定,例如,预设数据量的确定方式可以是,确定一个使用时长范围,获取使用时长在该使用时长范围内的目标应用程序产生的热点代码文件,并计算获得的热点代码文件的平均数据量,向上取整或向下取整作为预设数据量。例如,使用时长范围为3个月,获取使用时长为3个月的目标应用程序产生的热点代码文件4个,该4个热点代码文件中总共有不同的热点代码1200kb,热点代码文件的平均数据量为1200kb/4=300kb,以300kb作为预设数据量。

作为一种实施方式,可以根据热点代码的热度进行选择,即选择热度大于或等于一定热度的热点代码。其中,热点代码的热度可以通过热度代码出现次数表示,则可以选择出现次数大于或等于指定数量的热点代码。

例如,在前述举例说明中,若指定数量为2,由于c1,c4,c2以及c5的出现次数大于或等于2,则选择c1,c4,c2以及c5用于生成热点配置文件。

作为一种实施方式,目标应用程序的运行时间过短,可能产生的热点代码不够或不具有代表性,在目标应用程序运行一段时间后,可能就生成了大部分的热点代码。对于刚开始使用目标应用程序的用户,该大部分的热点代码已经基本可以代表可能频繁运行的代码块。因此,在该实施方式中,从所述多个热点代码文件中,选择目标应用程序使用时长达到预设时长的热点代码文件,作为目标代码文件。例如,在服务器获得的多个热点代码文件中包括热点代码文件A、热点代码文件B、热点代码文件C以及热点代码文件D,其中,产生热点代码文件B以及热点代码文件C的目标应用程序的使用时长达到预设时长,产生热点代码文件A以及热点代码文件D的目标应用程序的使用时长未达到预设时长,则选择热点代码文件B以及热点代码文件C作为目标代码文件。

以目标代码文件作为选择热点代码的热点代码文件,根据每个热点代码的出现次数,从目标代码文件中选择热点代码,使选择的热点代码的出现次数不小于未选择的热点代码对应的出现次数。

在该实施方式中,根据每个热点代码对应的出现次数,从目标代码文件中选择热点代码的选择方式可以参照前述实施方式,如选择目标代码文件中的所有热点代码;或者如按照出现次数由大到小,选择预设数量的热点代码;或者如选择出现次数大于或等于指定数量的热点代码;或者如使选择的热点代码的总数据量小于预设数据量等,在此不再赘述。

可选的,在该实施方式中,还可以通过指定时长对选择的目标代码文件的数量进行限定。具体的,指定时长大于预设时长,从所述多个热点代码文件中,选择目标应用程序使用时长达到预设时长、且小于指定时长的热点代码文件,作为目标代码文件。

可选的,在本申请实施例中,按照对应的热点文件数量由大到小选择热点代码后,若有未选择的热点代码以及已选择的热点代码出现次数相同,可以将该出现次数相同的未选择的热点代码也选择用于生成热点配置文件。

另外,在本申请实施例中,若目标终端设备包括多种型号,不同型号的目标终端设备的系统应用程序可能不同。则对于每一型号的目标终端设备,服务器可以获取其系统应用程序的热点配置文件。获取方式可以参见上述描述的获取方式。

可选的,对于不同型号的目标终端设备,若有相同的系统应用程序,该相同的系统应用程序可以复用。例如,型号H1的目标终端设备具有系统应用程序P1,型号H2的目标终端设备也具有系统应用程序P1,在获取到型号H1的目标终端设备系统应用程序P1的热点配置文件时,该热点配置文件也可以作为型号H2的目标终端设备的系统应用程序P1的热点配置文件。

步骤S430:在接收到对目标终端设备中系统应用程序的热点代码获取请求时,将所述热点配置文件返回。

服务器接收到对所述目标应用程序的热点代码的获取请求时,根据获取请求选择热点配置文件返回给请求方。

可以理解的,在本申请实施例中,服务器可以生成目标终端设备中不同系统应用程序的热点配置文件。服务器在接收到热点代码获取请求时,可以根据热点代码获取请求携带的应用程序唯一身份信息,确定将哪一系统应用程序的热点配置文件返回到请求方。

在一些实施方式中,若如图4所示,终端设备102向生成热点配置文件的服务器101请求目标应用程序的热点配置文件,服务器101可以将选择该目标应用程序的热点配置文件返回到该终端设备。

在一些实施方式中,如图5所示,也可以是其他服务器发起对所述目标应用程序的热点代码的获取请求。即生成热点配置文件的服务器与将热点配置文件发送到目标终端设备的可以为不同的服务器。如图5所示,生成热点配置文件的为服务器1011,终端设备102向服务器1012请求目标应用程序的热点配置文件,热点配置文件在服务器1011生成,服务器1012向服务器1011请求获取热点配置文件。服务器1011选择目标应用程序的热点配置文件发送到服务器1012,服务器1012在从服务器1011获取到热点配置文件后发送给终端设备102。在本申请实施例中,若无特殊说明,描述的服务器为生成热点配置文件的服务器1011或服务器101。

在本申请实施例中,从服务器请求热点配置文件的终端设备可以是目标终端设备,也可以是其他终端设备。若是其他终端设备从服务器请求获得热点配置文件,并且若目标终端设备需要获取该热点配置文件,目标终端设备可以再从该其他终端设备获取热点配置文件。

在本申请实施例中,服务器根据热度选择目标应用程序的热点代码生成热点配置文件,使生成的热点配置文件更可能包括新用户使用目标应用程序时经常运行到的代码块,在根据热点配置文件生成目标应用程序的热点编译文件后,提高了目标应用程序的执行效率,从而提高了目标应用程序的性能。

本申请实施例还提供了一种热点代码处理装置500,请参见图8,该装置500包括:第一文件获取模块510,用于获取目标应用程序的多个热点代码文件,所述目标应用程序为目标终端设备中的系统应用程序,所述多个热点代码文件来自于运行过所述目标应用程序的多个终端设备;第二文件获取模块520,用于根据所述多个热点代码文件生成热点配置文件;返回模块530,用于在接收到对目标终端设备中系统应用程序的热点代码获取请求时,将所述热点配置文件返回。

可选的,第一文件获取模块510可以用于判断应用程序列表中各个应用程序是否为所述目标终端设备的系统应用程序;若是,从多个终端设备中获取所述系统应用程序的热点代码文件。

可选的,第一文件获取模块510可以用于获取所述多个终端设备中应用程序的热点代码文件;从获取的热点代码文件中确定目标终端设备中系统应用程序的热点代码文件。

本申请实施例还提供了一种热点代码处理装置600,请参见图9,该装置600包括:内核文件获取模块610,用于获取目标终端设备的内核文件,所述内核文件中包括系统应用程序的热点配置文件,所述热点配置文件中包括所述系统应用程序的热点代码;安装模块620,用于目标终端设备在通过所述内核文件对系统应用程序进行安装时,将所述系统应用程序的热点配置文件中的热点代码编译为机器码,获得所述系统应用程序的热点编译文件;存储模块630,用于所述目标终端设备将所述热点编译文件存储。

可选的,内核文件获取模块610可以用于对所述目标终端设备的内核源码进行内核编译时,将指定目录下系统应用程序的热点配置文件存放到编译后的内核文件中。

可选的,该装置600还可以包括文件获取模块,用于从服务器获取所述目标终端设备中系统应用程序的热点配置文件,所述热点配置文件根据多个热点代码文件获得,所述多个热点代码文件来自于运行过所述系统应用程序的多个终端设备;存放模块,用于将所述热点配置文件存放在所述指定目录下。

可选的,该装置600还可以包括目录新建模块,用于新建指定目录,用于存放所述系统应用程序的热点配置文件。

可选的,内核文件获取模块610还可以用于将指定目录下系统应用程序的所述热点配置文件存放于内核文件中的目标文件,所述目标文件为所述内核文件中用于存放所述系统应用程序的热点代码的文件。

可选的,安装模块620可以用于在通过所述内核文件进行系统安装时,对所述系统应用程序进行安装;对所述系统应用程序进行安装时,将所述目标文件中的热点代码编译为机器码。

需要说明的是,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。另外,方法实施例中的各种实施方式,都可以对应有相应的模块,在本申请实施例中不再一一赘述。

在本申请所提供的几个实施例中,所显示或讨论的模块相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。

另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

请参考图10,其示出了本申请实施例提供的一种电子设备700的结构框图。本申请中的电子设备700可以是服务器或者终端设备,即可以是服务器,目标终端设备或者其他终端设备。

该电子设备700可以包括一个或多个如下部件:处理器710、存储器720,以及一个或多个程序,其中一个或多个程序可以被存储在存储器720中并被配置为由一个或多个处理器710执行,一个或多个程序配置用于执行如前述方法实施例所描述的方法。

处理器710可以包括一个或者多个处理核。处理器710利用各种接口和线路连接整个电子设备700内的各个部分,通过运行或执行存储在存储器720内的指令、程序、代码集或指令集,以及调用存储在存储器720内的数据,执行电子设备700的各种功能和处理数据。可选地,处理器710可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器710可集成中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器710中,单独通过一块通信芯片进行实现。

存储器720可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。存储器720可用于存储指令、程序、代码、代码集或指令集。存储器720可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等。存储数据区还可以存储电子设备700在使用中所创建的数据等。

请参考图11,其示出了本申请实施例提供的一种计算机可读存储介质的结构框图。该计算机可读存储介质800中存储有程序代码,所述程序代码可被处理器调用执行上述方法实施例中所描述的方法。

计算机可读存储介质800可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。可选地,计算机可读存储介质800包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。计算机可读存储介质800具有执行上述方法中的任何方法步骤的程序代码810的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码810可以例如以适当形式进行压缩。

最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

相关技术
  • 热点代码处理方法、装置、电子设备及存储介质
  • 热点代码处理方法、请求方法、装置及电子设备
技术分类

06120113084507