热点代码处理方法、装置、服务器及存储介质
文献发布时间:2023-06-19 11:52:33
技术领域
本申请涉及数据处理技术领域,更具体地,涉及一种热点代码处理方法、装置、服务器及存储介质。
背景技术
在电子设备中,为了提高应用程序的执行效率以提高应用程序的性能,在运行时,虚拟机将会将应用程序的代码中的热点代码编译成与本地平台相关的机器码。但是,对于应用程序而言,需要运行一段时间确定哪些代码为热点代码,在应用程序安装初期,无法通过热点代码的编译提升应用程序的性能。
发明内容
本申请提出了一种热点代码处理方法、装置、服务器及存储介质,以改善上述问题。
第一方面,本申请实施例提供了一种热点代码处理方法,该方法包括:获取目标应用程序的多个热点代码文件,所述多个热点代码文件来自于运行过所述目标应用程序的多个电子设备;根据所述多个热点代码文件中不同热点代码对应的热点文件数量,选择多个热点代码,生成热点配置文件,其中,每个热点代码对应的热点文件数量为包括该热点代码的热点代码文件的数量;在接收到目标电子设备对所述目标应用程序的热点代码获取请求时,将所述热点配置文件发送给所述目标电子设备。
第二方面,本申请实施例提供了一种热点代码处理装置,该装置包括:信息搜集模块,用于获取目标应用程序的多个热点代码文件,所述多个热点代码文件来自于运行过所述目标应用程序的多个电子设备;文件生成模块,用于根据所述多个热点代码文件中不同热点代码对应的热点文件数量,选择多个热点代码,生成热点配置文件,其中,每个热点代码对应的热点文件数量为包括该热点代码的热点代码文件的数量;文件发送模块,用于在接收到目标电子设备对所述目标应用程序的热点代码获取请求时,将所述热点配置文件发送给所述目标电子设备。
第三方面,本申请实施例提供了一种服务器,该服务器包括一个或多个处理器;存储器,与所述一个或多个处理器电连接;一个或多个程序,其中所述一个或多个程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行如上述的方法。
第四方面,本申请实施列提供一种计算机可读存储介质,所述计算机可读存储介质中存储有程序代码,其中,在所述程序代码运行时执行上述的方法。
本申请提出的热点代码处理方法、装置、服务器及存储介质,可以从多个电子设备获取目标应用程序的热点代码文件,再从获得的多个热点代码文件中根据所述多个热点代码文件中不同热点代码对应的热点文件数量,选择多个热点代码,生成热点配置文件,使生成的热点配置文件中包括不同电子设备中产生的目标应用程序的热点代码。在接收到目标电子设备对目标应用程序的热点代码获取请求时,可以将该热点代码配置文件发送给目标电子设备,从而使目标电子设备在目标应用程序使用时间较短未生成有足够的热点代码的情况下,也可以快速获取到目标应用程序的热点代码,提高目标应用程序的性能。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请实施例提供的一种JIT架构图。
图2示出了本申请实施例提供的服务器与电子设备的交互示意图。
图3示出了本申请一个实施例提供的热点代码处理方法的流程图。
图4示出了本申请实施例提供的服务器与电子设备的另一种交互示意图。
图5示出了本申请另一个实施例提供的热点代码处理方法的流程图。
图6示出了本申请又一实施例提供的热点代码处理方法的流程图。
图7示出了本申请一实施例提供的热点代码处理装置的流程图。
图8示出了本申请另一实施例提供的热点代码处理装置的功能模块图。
图9示出了本申请实施例提出的用于执行根据本申请实施例的热点代码处理方法的服务器的结构框图。
图10示出了本申请实施例提供的用于保存或者携带实现根据本申请实施例的热点代码处理方法的程序代码的存储介质。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
在电子设备的虚拟机执行环境中,若某个代码块频繁运行,运行次数超过设定的次数,将该代码块确定为热点代码(hot code),将该热点代码记录下来并保存到热点代码文件(profile)。其中,可以理解的,该代码块可以是一个代码集合,或者是代码中的一个方法。
为了提高热点代码的运行效率,可以将热点代码文件中的热点代码经由即时编译器(JIT,Just-In-Time Compiler)获得odex文件或者经预编译(AOT,Ahead-of-Time)编译后得oat文件,热点代码编译后的odex文件以及oat文件中包含的是二进制机器码,可直接交由底层cpu执行,当再次需要执行热点代码时,可以直接执行热点代码编译后的odex文件或者oat文件,提高了运行效率。
以如图1所示的安卓系统中的JIT架构为例,由于oat文件中包含的是程序运行的机器码,因此可以直接被安卓运行时(ART,Android-Running-Time)运行。而dex文件中,如果是非热点代码(cold code),是交由java解释器(Interpreter)执行,如果是热点代码,则交由JIT实时编译后存放到JIT代码缓存(JIT CODE CACHE)中,下次再次访问该热点代码,则可以直接从cache中执行对应的机器码。并且,将热点代码放入热点代码文件,当电子设备进入空闲(IDLE)且充电状态时,将热点代码文件中的该热点代码执行AOT过程进行编译生成oat文件。
由于代码块的运行次数超过设定的次数才确定为热点代码,则对于新安装的应用程序而言,需要在电子设备中运行一段时间,电子设备才能根据应用程序中代码的运行次数确定热点代码。
本申请实施例提出了一种热点代码处理方法、装置、服务器及存储介质,如图2所示,服务器101与电子设备102网络连接。服务器可以从已经产生有目标应用程序的热点代码文件的多个电子设备中获取热点代码文件,再从获得的热点代码文件选择热点代码生成热点配置文件,使该热点配置文件可以发送给具有需求的电子设备,接收到该热点配置文件的电子设备可以在未运行生成热点代码文件的情况下确定目标应用程序的热点代码,提高目标应用程序的运行效率,从而提高目标应用程序的性能。该电子设备可以是智能手机、平板电脑、电子书、智能穿戴设备等能够运行应用程序的电子设备。
下面将对本申请实施例进行详细的说明。
请参阅图3,示出了本申请实施例提供的一种热点代码处理方法,该方法可应用于服务器。具体的,该方法可以包括:
步骤S110:获取目标应用程序的多个热点代码文件,所述多个热点代码文件来自于运行过所述目标应用程序的多个电子设备。
电子设备在对应有程序运行一段时间后,有些代码块的运行次数达到设定的次数,被确定为热点代码,因此,在电子设备中,可以存储有包括热点代码的热点代码文件。
服务器可以从电子设备端获取应用程序的热点代码,其中,服务器可以通过获取电子设备中的热点代码文件的方式获取电子设备中产生的应用程序的热点代码。
在本申请实施例中,服务器具体可以获取哪些应用程序的热点代码并不限定,可以根据需求获取一种或多种应用程序的热点代码。本申请实施例以获取一种或一个应用程序的热点代码为例进行说明,定义该应用程序为目标应用程序。获取各种或多个应用程序的热点代码的方式可以参见该目标应用程序的获取方式。
服务器可以从运行过所述目标应用程序的电子设备中获取到目标应用程序的热点代码文件。
步骤S120:根据所述多个热点代码文件中不同热点代码对应的热点文件数量,选择多个热点代码,生成热点配置文件,其中,每个热点代码对应的热点文件数量为包括该热点代码的热点代码文件的数量。
服务器获取到的多个热点代码文件中,每个热点代码文件包括一个或多个热点代码。可以从该多个热点代码文件中选择热点代码生成热点配置文件。
由于热点代码的热度越高,代表该热点代码越可能是获取热点配置文件的电子设备中频繁运行的代码。在本申请实施例中,该预设条件可以包括热点代码的热度。其中,热点代码的热度可以由经常使用该热点代码对应的功能的用户数量确定,或者说,通过将该热点代码确定为热点代码的电子设备的数量确定。
服务器获取到的每个热点代码文件由一个电子设备产生,因此,对于多个热点代码文件中的不同热点代码,可以统计每个热点代码对应的热点代码文件数量。其中,每个热点代码对应的热点文件数量为包括该热点代码的热点代码文件的数量。
根据每个热点代码对应的热点文件数量,选择多个热点代码,根据选择的多个热点代码生成热点配置文件。
其中,选择的可以是满足预设条件的热点代码,该预设条件可以根据需要设置,使生成的热点配置文件性能最佳,尽可能覆盖到一般用户在使用目标应用程序时,目标应用程序中可能产生的热点代码。
步骤S130:在接收到目标电子设备对所述目标应用程序的热点代码获取请求时,将所述热点配置文件发送给所述目标电子设备。
当服务器接收到对目标应用程序的热点代码获取请求时,可以将生成的该目标应用程序的热点配置文件发送给请求方。
若电子设备向服务器请求目标应用程序的热点配置文件,服务器可以将该目标应用程序的热点配置文件返回到该电子设备。本申请实施例中,定义向服务器发送热点代码获取请求的电子设备为目标电子设备。目标电子设备可以是运行过目标应用程序中的电子设备中的一个电子设备,也可以是其他电子设备。若目标电子设备中安装有目标应用程序,则可以使用获得的热点配置文件中的热点代码作为该目标应用程序的热点代码,提高目标应用程序的运行效率,从而提高目标应用程序的性能。
在本申请实施例中,服务器可以从多个电子设备中获取热点代码文件,并从获取到的热点代码文件中选择热点代码生成热点配置文件,使获取到该热点配置文件的电子设备可以通过该热点配置文件中的热点代码提升应用程序的运行效率,从而提高应用程序的性能。
本申请实施例提供的热点代码处理方法,根据预设条件从热点代码文件中选择热点代码,在本申请实施例中,预设条件可以为多个选择维度中的一个或大于一个。下面通过具体实施方式进行说明。在该实施例中,热点代码处理方法可以包括如下步骤。
步骤S210:获取目标应用程序的多个热点代码文件,所述多个热点代码文件来自于运行过所述目标应用程序的多个电子设备。
服务器具体获取哪些电子设备的热点代码文件在本申请实施例中并不限定。其中,电子设备可以包括与服务器网络连接的各种电子设备中运行过目标应用程序的电子设备的全部或部分。若与服务器网络连接的电子设备中安装有目标应用程序,服务器则可以从该电子设备中获取目标应用程序的热点代码文件。
其中,在一种具体的实施方式中,服务器可以向电子设备发起热点代码文件获取请求,并在该热点代码文件获取请求中携带需要获取的目标应用程序的程序标识。电子设备可以根据该热点代码文件获取请求,向服务器返回程序标识对应的目标应用程序的热点代码文件,服务器获取到电子设备返回的热点代码文件。
在该实施方式中,服务器可以按照设置的频率更新目标应用程序的热点代码文件,也就是说,服务器可以每隔预设的时间,向运行过目标应用程序的全部或者部分电子设备发送热点代码文件获取请求,获取热点代码文件。服务器在发送热点代码文件获取请求时,若有电子设备未与服务器网络连接,则当该电子设备在于服务器网络连接时,可以向该电子设备发送热点代码文件获取请求。
在另一种实施方式中,服务器和电子设备可以预先协商,由电子设备定期将目标应用程序的热点代码文件发送到服务器,从而服务器可以获取到电子设备中发送的目标应用程序的热点代码文件。在该实施方式中,可选的,服务器与电子设备的协商,可以是与电子设备的厂商协商,在电子设备进行热点代码文件的发送设置;可选的,服务器与电子设备的协商,也可以是服务器与目标应用程序预先协商,当目标应用程序在电子设备安装,由目标应用程序安装于电子设备的客户端将热点代码文件发送到服务器。
在服务器获取到的热点代码文件中,除了包括目标应用程序的热点代码,还可以包括其他与目标应用程序相关的信息,如目标应用程序的唯一身份信息,该唯一身份信息可以包括目标应用程序的名称、目标应用程序的版本名称以及目标应用程序的版本号等,以准确定位到热点代码文件的身份。
在本申请实施例中,不同身份信息的应用程序,可以认为是不同的应用程序。可选的,由于同一名称不同版本的应用程序,其程序代码可能有不同,可能产生的热点代码也不同。在本申请实施例中,将同一名称同一版本的应用程序作为相同应用程序进行处理,不同名称的应用程序作为不同的应用程序,相同名称不同版本的应用程序作为不同的应用程序,也就是说,将上线时程序代码相同的应用程序作为相同的应用程序。在多个电子设备中的目标应用程序,为同一版本同一名称的应用程序。
步骤S220:对于所述多个热点代码文件中的不同热点代码,统计每个热点代码对应的热点文件数量,其中,每个热点代码对应的热点文件数量为包括该热点代码的热点代码文件的数量。
步骤S230:根据每个热点代码对应的热点文件数量,选择多个热点代码,其中,选择的热点代码对应的热点文件数量不小于未选择的热点代码对应的热点文件数量。
服务器可以从多个热点代码文件中选择满足预设条件的热点代码,将选择的热点代码生成热点配置文件。例如,服务器获取到目标应用程序的热点代码文件包括A和B,从A中选择到热点代码a1、a2以及a3,从B中选择到热点代码b1,则可以生成包括热点代码a1、a2、a3以及b1的热点配置文件。该热点配置文件可以仅包括选择的热点代码,也可以包括其他信息,如目标应用程序的唯一身份信息。
在本申请实施例中,预设条件可以根据需求设置,使生成的热点配置文件包括的热点代码尽可能覆盖到目标用户在使用目标应用程序时会经常运行到的代码块。该目标用户为使用该热点配置文件的用户。
由于热点代码的热度越高,代表该热点代码越可能是获取热点配置文件的电子设备中频繁运行的代码。在本申请实施例中,该预设条件可以包括热点代码的热度。其中,热点代码的热度可以由经常使用该热点代码对应的功能的用户数量确定,或者说,通过将该热点代码确定为热点代码的电子设备的数量确定。
服务器获取到的每个热点代码文件由一个电子设备产生,因此,对于多个热点代码文件中的不同热点代码,可以统计每个热点代码对应的热点代码文件数量。其中,每个热点代码对应的热点文件数量为包括该热点代码的热点代码文件的数量。
根据每个热点代码对应的热点文件数量,选择多个热点代码,根据选择的多个热点代码生成热点配置文件。其中,选择的热点代码对应的热点文件数量靠前,即选择的热点代码对应的热点文件数量不小于未选择的热点代码对应的热点文件数量,或者说,选择的热点代码对应的热点文件数量大于或等于未选择的热点代码对应的热点文件数量。
例如,服务器获取到目标应用程序的热点代码文件包括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;包括热点代码c2的热点代码文件的数量为2;包括热点代码c3的热点代码文件的数量为1;包括热点代码c4的热点代码文件的数量为3;包括热点代码c5的热点代码文件的数量为2;包括热点代码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作为目标代码文件。
以目标代码文件作为选择热点代码的热点代码文件,根据每个热点代码对应的热点文件数量,从目标代码文件中选择热点代码,使选择的热点代码对应的热点文件数量不小于未选择的热点代码对应的热点文件数量。
在该实施方式中,根据每个热点代码对应的热点文件数量,从目标代码文件中选择热点代码的选择方式可以参照前述实施方式,如选择目标代码文件中的所有热点代码;或者如按照对应的热点文件数量由大到小,选择预设数量的热点代码;或者如选择对应的热点文件数量大于或等于指定数量的热点代码;或者如使选择的热点代码的总数据量小于预设数据量等,在此不再赘述。
可选的,在该实施方式中,还可以通过指定时长对选择的目标代码文件的数量进行限定。具体的,指定时长大于预设时长,从所述多个热点代码文件中,选择目标应用程序使用时长达到预设时长、且小于指定时长的热点代码文件,作为目标代码文件。
可选的,在本申请实施例中,按照对应的热点文件数量由大到小选择热点代码后,若有未选择的热点代码以及已选择的热点代码对应相同的热点文件数量,可以将该对应相同的热点文件数量的未选择的热点代码也选择用于生成热点配置文件。
步骤S240:根据选择的多个热点代码生成热点配置文件。
将选择的热点代码放入一个配置文件中,生成热点配置文件。
另外,在热点配置文件中,还可以包括其他与目标应用程序相关的信息,如目标应用程序的唯一身份信息,该唯一身份信息可以包括目标应用程序的名称、目标应用程序的版本名称以及目标应用程序的版本号等。
步骤S250:在接收到目标电子设备对所述目标应用程序的热点代码获取请求时,将所述热点配置文件发送给所述目标电子设备。
服务器接收到电子设备对目标应用程序的热点代码获取请求时,将目标应用程序对应的热点配置文件发送给该电子设备。为便于描述,向服务器请求热点配置文件的电子设备为目标电子设备。
在本申请实施例中,向服务器请求热点配置文件的目标电子设备可以解释为终端设备,该终端设备可以安装并运行目标应用程序。
电子设备在安装应用程序时,该应用程序未在电子设备中运行,未生成有热点代码,不能很好地提高应用程序的执行效率。因此,电子设备在向服务器发起应用程序的安装请求时,可以在安装请求中携带请求获取热点配置文件的信息,表示电子设备需要获取该应用程序的热点配置文件。服务器在接收到目标电子设备对所述目标应用程序的安装请求时,若所述安装请求中携带有请求获取热点配置文件的信息,则将目标应用程序的热点配置文件以及目标应用程序的安装包发送给所述电子设备。若所述安装请求中未携带有请求获取热点配置文件的信息,表示电子设备不需要获取目标应用程序的热点配置文件,则将所述目标应用程序的安装包发送给所述电子设备。
在一些实施例中,向服务器请求热点配置文件的目标电子设备也可以解释为服务器。即生成热点配置文件的服务器与将热点配置文件发送到终端设备的可以为不同的服务器。如图4所示,作为终端设备的电子设备103向第一服务器104请求目标应用程序的热点配置文件,热点配置文件在第二服务器105生成,第一服务器104向第二服务器105请求获取热点配置文件。第二服务器105将目标应用程序的热点配置文件发送到第一服务器104,第一服务器104在从第二服务器105获取到热点配置文件后发送给终端设备103。
可以理解的,在本申请实施例中,服务器可以生成不同应用程序的热点配置文件。服务器在接收到热点代码获取请求时,可以根据热点代码获取请求携带的应用程序唯一身份信息,确定将哪一应用程序的热点配置文件返回到请求方。
可选的,在本申请实施例中,为了提高应用程序的安装速度以及启动速度,服务器在生成热点配置文件后,可以将热点配置文件中的热点代码编译成机器码。在接收到热点代码获取请求时,将编译成机器码的热点配置文件返回给请求方。
在本申请实施例中,服务器根据热度选择目标应用程序的热点代码生成热点配置文件,使生成的热点配置文件更可能包括新用户使用目标应用程序时经常运行到的代码块,提高了目标应用程序的执行效率,从而提高了目标应用程序的性能。
本申请实施例提供的热点代码处理方法,可以从多个并列的维度选择维度生成热点配置文件。具体的,请参见图5,在该方法中,包括:
步骤S310:从多个电子设备中获取目标应用程序的热点代码文件,获得多个热点代码文件。
步骤S310可以参见前述实施例中相同或相似的步骤,在此不再赘述。
步骤S320:从所述多个热点代码文件中选择满足预设条件的热点代码,生成热点配置文件。
在本申请实施例中,预设条件可以根据需要设置。
在一种实施方式中,选择满足预设条件的热点代码可以是,对多个热点代码文件取交集,获得的热点代码作为选择的热点代码。即,选择在每个热点代码文件中都存在的热点代码。
在一种实施方式中,选择满足预设条件的热点代码可以是,对多个热点代码文件取并集,获得的热点代码作为选择的热点代码。即,选择多个热点代码文件中包括的所有不同的热点代码。
在一种实施方式中,选择满足预设条件的热点代码可以是,选择目标应用程序中实现指定功能的热点代码。例如,选择目标应用程序启动相关的热点代码;选择目标应用程序主用户界面(UI,user interface)相关的热点代码等。指定功能在本申请实施例中并不限定,可以是根据大数据搜集以及根据对目标应用程序的分析确定的常用功能。
在一种实施方式中,选择满足预设条件的热点代码可以是,选择预设数量的热点代码。
可选的,在该实施方式中,可以按照对应的热点文件数量由大到小,选择预设数量的热点代码。
在一种实施方式中,选择满足预设条件的热点代码可以是,选择总数据量小于预设数据量的热点代码,且选择的热点代码数量可以是达到可选择的最大数量。可以理解的,该达到可选择的最大数量表示,若选择x个热点代码的总数据量小于预设数据量,选择x+1个热点代码的总数据量大于或等于预设数据量,则选择该x个热点代码。
可选的,在该实施方式中,按照对应的热点文件数量由大到小选择热点代码,使选择的热点代码的总数据量小于预设数据量。
在一种实施方式中,可以是,若选择的预设数量的热点代码的总数据量小于预设数据量,则选择总数据量小于预设数据量、且可选择的最多数量的热点代码。若选择的预设数量的热点代码的总数据量不小于预设数据量,则选择预设数量的热点代码。
在一种实施方式中,选择满足预设条件的热点代码可以是,从所述多个热点代码文件中,选择目标应用程序使用时长达到预设时长的热点代码文件,作为目标代码文件。再从目标代码文件中选择热点代码。在该实施方式中,从目标代码文件中选择热点代码的方式可以是前述实施方式中的任意一种。
可选的,在本申请实施例中,上述各种实施方式可以在合乎逻辑的情况下合理结合,作为新的实施方式。例如,按照对应的热点文件数量由大到小,选择目标应用程序中实现指定功能的预设数量的热点代码;按照对应的热点文件数量由大到小,从目标应用程序中实现指定功能的热点代码中,选择对应的热点文件数量大于或等于指定数量的热点代码等等。
可选的,在本申请实施例中,对应目标应用程序,可以生成一个或多个热点配置文件,每个热点配置文件通过前述的一种实施方式生成。在前述的同一实施方式中,若有不同的生成热点代码的方式,也可以生成不同的热点配置文件,例如,选择目标应用程序中实现指定功能的热点代码生成热点配置文件时,不同指定功能生成不同的热点配置文件。
可选的,在本申请实施例中,也可以采用任意一种实施方式生成目标应用程序的热点配置文件。
另外,在本申请实施例中,各实施方式的具体描述可以参见前述实施例中相同或相应的部分,在此不再赘述。
步骤S330:在接收到目标电子设备对所述目标应用程序的热点代码获取请求时,将所述热点配置文件发送给所述目标电子设备。
服务器将生成的热点配置文件发送给目标电子设备。
可选的,若服务器对应目标应用程序生成多个热点配置文件,若目标电子设备没有选择请求获取目标应用程序的哪一个热点配置文件,可以将默认的热点配置文件发送给目标电子设备。例如,由于与目标应用程序启动功能相关的热点代码可以帮助目标应用程序加速启动,因此,可以将选择启动相关的热点代码生成的热点配置文件作为默认的热点配置文件。
另外,用户还可以在目标电子设备根据需要选择请求哪一个热点配置文件,服务器目标电子设备的请求选择热点配置文件发送到在目标电子设备。
可选的,用户可以在安装目标应用程序时,选择根据哪一种方式进行安装,用户所选择的安装方式对应不同的热点配置文件,如选择极速模式对应对多个热点代码文件取并集生成的热点配置文件,普通模式对应默认的热点配置文件,或普通模式对应启动相关的热点代码生成的热点配置文件。目标电子设备可以在向服务器发起安装请求时,在安装请求中携带有请求获取热点配置文件的信息,服务器根据该信息确定选择哪一个热点配置文件发送到目标电子设备。
在本申请实施例中,可以从不同的维度生成热点配置文件,使生成的热点配置文件更符合用户的使用需求,电子设备通过运行热点配置文件中的热点代码,提升目标应用程序的性能。
在本申请实施例中,生成热点配置文件的服务器和将热点配置文件发送到电子设备的服务器可以是不同的服务器,例如,第一服务器可以是应用商店服务器,第二服务器可以是云端服务器。如图4所示,作为终端设备的电子设备103向第一服务器104请求热点配置文件,第一服务器104根据电子设备103的请求向第二服务器104请求热点配置文件。请参见图6,本申请实施例提供的热点代码处理方法可以包括如下步骤。
步骤S410:第一服务器接收目标电子设备发送的对所述目标应用程序的安装请求。
电子设备安装目标应用程序时,向第一服务器发送目标应用程序的安装请求。
步骤S420:第一服务器根据所述安装请求,获取所述目标应用程序对应的热点配置文件,所述热点配置文件根据多个热点代码文件中选择的热点代码生成,所述多个热点代码文件为从多个电子设备中获取的目标应用程序的热点代码文件。
第一服务器接收到目标应用程序的安装请求,可以获取目标应用程序对应的热点配置文件。具体的,目标应用程序对应的热点配置文件可以由第二服务器生成,第一服务器可以向第二服务器请求获取目标应用程序对应的热点配置文件。
若热点配置文件由第二服务器生成,第二服务器获得的多个用于生成热点配置文件的热点代码文件,可以是由第二服务器从电子设备获得,也可以是第一服务器从各个电子设备获得热点代码文件,第二服务器再从第一服务器获得热点代码文件。
可选的,在本申请实施例中,也可以是第一服务器生成目标应用程序对应的热点配置文件。
步骤S430:第一服务器将所述热点配置文件以及所述目标应用程序的安装包发送给所述目标电子设备。
第一服务器将目标应用程序对应的热点配置文件以及目标应用程序对应的安装包发送到目标电子设备。
接收到安装包以及热点配置文件的目标电子设备可以通过安装包安装目标电子设备。
若电子设备接收到的热点配置文件中的热点代码未编译,可以对热点配置文件中的热点代码进行编译。
若电子设备接收到的热点配置文件中的热点代码已编译,可以在运行到热点代码时直接运行编译后的机器码。
在本申请实施例中,生成热点配置文件的服务器以及向电子设备发送热点配置文件的服务器不同,通过服务器的不同分工,提升了服务器的工作效率。电子设备在安装目标应用程序时即可获得热点配置文件,使电子设备在安装目标应用程序后,即可通过热点代码提升目标应用程序的执行效率,不必等到目标应用程序使用一段时间后生成热点代码,提升了目标应用程序的性能,减少应用程序的丢帧率。
本申请实施例还提供了一种热点代码处理装置500。请参见图7,该装置包括信息搜集模块510,用于获取目标应用程序的多个热点代码文件,所述多个热点代码文件来自于运行过所述目标应用程序的多个电子设备;文件生成模块520,用于根据所述多个热点代码文件中不同热点代码对应的热点文件数量,选择多个热点代码,生成热点配置文件,其中,每个热点代码对应的热点文件数量为包括该热点代码的热点代码文件的数量;文件发送模块530,用于在接收到目标电子设备对所述目标应用程序的热点代码获取请求时,将所述热点配置文件发送给所述目标电子设备。
可选的,文件生成模块520包括,统计单元,用于对于所述多个热点代码文件中的不同热点代码,统计每个热点代码对应的热点代码文件数量,其中,每个热点代码对应的热点文件数量为包括该热点代码的热点代码文件的数量;选择单元,用于根据每个热点代码对应的热点文件数量,选择多个热点代码,其中,选择的热点代码对应的热点文件数量不小于未选择的热点代码对应的热点文件数量;生成单元,用于根据选择的多个热点代码生成热点配置文件。
可选的,选择单元可以用于按照对应的热点文件数量由大到小,选择预设数量的热点代码。
可选的,选择单元可以用于选择对应的热点文件数量大于或等于指定数量的热点代码。
可选的,选择单元可以用于按照对应的热点文件数量由大到小选择热点代码,使选择的热点代码的总数据量小于预设数据量。
可选的,文件生成模块520可以用于从所述多个热点代码文件中,选择目标应用程序使用时长达到预设时长的热点代码文件,作为目标代码文件;以目标代码文件作为选择热点代码的热点代码文件。
可选的,文件发送模块530可以用于在接收到目标电子设备对所述目标应用程序的安装请求时,若所述安装请求中携带有请求获取热点配置文件的信息,将所述热点配置文件以及所述目标应用程序的安装包发送给所述电子设备;若所述安装请求中未携带有请求获取热点配置文件的信息,将所述目标应用程序的安装包发送给所述电子设备。
本申请实施例还提供了一种热点代码处理装置600。请参见图8,该装置600包括:请求接收模块610,用于接收目标电子设备发送的对所述目标应用程序的安装请求;文件获取模块620,用于根据所述安装请求,获取所述目标应用程序对应的热点配置文件,所述热点配置文件根据多个热点代码文件中选择的热点代码生成,所述多个热点代码文件为从多个电子设备中获取的目标应用程序的热点代码文件;文件发送模块630,用于将所述热点配置文件以及所述目标应用程序的安装包发送给所述目标电子设备。
需要说明的是,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。另外,方法实施例中的各种实施方式,都可以对应有相应的模块,在本申请实施例中不再一一赘述。
在本申请所提供的几个实施例中,所显示或讨论的模块相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
请参考图9,其示出了本申请实施例提供的一种服务器的结构框图。本申请中的服务器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在使用中所创建的数据等。
请参考图10,其示出了本申请实施例提供的一种计算机可读存储介质的结构框图。该计算机可读存储介质800中存储有程序代码,所述程序代码可被处理器调用执行上述方法实施例中所描述的方法。
计算机可读存储介质800可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。可选地,计算机可读存储介质800包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。计算机可读存储介质800具有执行上述方法中的任何方法步骤的程序代码810的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码810可以例如以适当形式进行压缩。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
- 热点代码处理方法、装置、服务器及存储介质
- 热点代码确定方法、装置、服务器以及存储介质