CN110262847A - 应用程序启动加速方法、装置及机器可读存储介质 - Google Patents
应用程序启动加速方法、装置及机器可读存储介质 Download PDFInfo
- Publication number
- CN110262847A CN110262847A CN201910399750.3A CN201910399750A CN110262847A CN 110262847 A CN110262847 A CN 110262847A CN 201910399750 A CN201910399750 A CN 201910399750A CN 110262847 A CN110262847 A CN 110262847A
- Authority
- CN
- China
- Prior art keywords
- module
- correlation module
- starting
- application program
- component packet
- 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.)
- Granted
Links
Classifications
-
- 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
- G06F9/44568—Immediately runnable code
- G06F9/44578—Preparing or optimising for loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及计算机技术领域,公开了一种应用程序启动加速方法、装置及机器可读存储介质,该方法包括:在应用程序启动的生命周期里配置组件包、获取与应用程序的相关模块对应的相关参数;组件包根据所述相关参数对相关模块进行线程分配以及对相关模块的启动顺序进行调整得到启动调整参数;根据启动调整参数对相关模块进行多线程并发调度;其中,在组件包对相关模块的启动顺序执行n次调整后,若第n+1次相关模块的启动顺序相较于第n次的启动顺序的变动不超过预设百分比,则保留第n次得到的启动调整参数,且停止调整相关模块的启动顺序。本发明可通过组件包对应用程序进行启动加速。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种应用程序启动加速方法、装置及机器可读存储介质。
背景技术
在当前的应用程序中,启动承载任务多,启动时间较长。为了能够减少应用程序的启动时间,使用户能够第一时间进入应用程序以提升用户体验,故需要实现应用程序内部的智能启动提速技术。
请参阅图1,图1为本发明提供的现有技术中应用程序启动提速方法的流程示意图。如图1所示,应用程序中的启动提速优化目前普遍采用如下办法来解决:启动时调用新建子线程分配给非必要模块,进行多线程异步化处理。
现有技术具有如下缺点:
(1)异步线程单一,启动提升效率较低;
(2)启动模块无优先级之分,启动效率低;
(3)模块可控性差,启动加载顺序固定,不能很好的根据实际情况进行调整。
发明内容
针对上述现有技术中存在的不足,本发明提供了一种应用程序启动提速方法、装置及机器可读存储介质,可解决现有技术中应用程序启动效率低的技术问题。
本发明第一方面提供了一种应用程序启动提速方法,该方法包括:
在应用程序启动的生命周期里配置组件包、获取与所述应用程序的相关模块对应的相关参数;
所述组件包根据所述相关参数对所述相关模块进行线程分配以及对所述相关模块的启动顺序进行调整得到启动调整参数;
根据所述启动调整参数对所述相关模块进行多线程并发调度;
其中,在所述组件包对所述相关模块的启动顺序执行n次调整后,若第n+1次所述相关模块的启动顺序相较于第n次的启动顺序的变动不超过预设百分比,则保留第n次得到的启动调整参数,且停止调整所述相关模块的启动顺序。
可选的,在所述应用程序启动的生命周期里配置所述组件包、相关模块及相关参数之前,还包括:
通过三方库/组件库管理工具在所述应用程序中引入所述组件包。
可选的,所述相关参数包括所述相关模块的启动优先级和唯一标识符,则所述组件包根据所述相关参数对所述相关模块进行线程分配以及对所述相关模块的启动顺序进行调整的步骤包括:
所述组件包解析所述相关参数以获取所述相关参数中的唯一标识符和启动优先级;
所述组件包根据所述启动优先级对所述唯一标识符对应的相关模块进行线程分配以及对所述相关模块的启动顺序进行调整。
可选的,所述组件包根据所述相关参数对所述相关模块进行线程分配以及对所述相关模块的启动顺序进行调整的步骤还包括:
所述组件包从本地缓存数据中取得所述相关模块的历史数据,其中,所述历史数据包括所述相关模块的历史加载时长;
当多个所述相关模块的启动优先级相同时,所述组件包根据所述历史加载时长以及预设规则调整所述相关模块的加载顺序。
可选的,所述组件包根据所述历史加载时长以及预设规则调整所述相关模块的加载顺序的步骤包括:
根据所述历史加载时长由短到长的顺序依次加载所述优先级相同的所述相关模块。
本发明第二方面还提供了一种应用程序启动提速装置,该装置包括:
配置模块,用于在应用程序启动的生命周期里配置组件包、获取与所述应用程序的相关模块对应的相关参数;
分配调整模块,用于所述组件包根据所述相关参数对所述相关模块进行线程分配以及对所述相关模块的启动顺序进行调整得到启动调整参数;
并发调度模块,用于根据所述启动调整参数对所述相关模块进行多线程并发调度;
其中,分配调整模块还用于在所述组件包对所述相关模块的启动顺序执行n次调整后,若第n+1次所述相关模块的启动顺序相较于第n次的启动顺序的变动不超过预设百分比,则保留第n次得到的启动调整参数,且停止调整所述相关模块的启动顺序。
可选的,在所述配置模块之前还包括:
引入模块,用于通过三方库/组件库管理工具在所述应用程序中引入所述组件包。
可选的,所述相关参数包括所述相关模块的启动优先级和唯一标识符,则所述分配调整模块包括:
解析模块,用于所述组件包解析所述相关参数以获取所述相关参数中的唯一标识符和启动优先级;
调整模块,用于所述组件包根据所述启动优先级对所述相关模块进行线程分配以及对所述相关模块的启动顺序进行调整。
可选的,所述分配调整模块还包括:
历史数据获取模块,用于所述组件包从本地缓存数据中取得所述相关模块的历史数据,其中,所述历史数据包括所述相关模块的历史加载时长;
加载顺序调整模块,用于当多个所述相关模块的启动优先级相同时,所述组件包根据所述历史加载时长以及预设规则调整所述相关模块的加载顺序。
可选的,所述加载顺序调整模块还用于根据所述历史加载时长由短到长的顺序依次加载所述优先级相同的所述相关模块。
本发明第三方面还提供了一种机器可读存储介质,所述机器可读存储介质上存储有指令,所述指令用于使得所述机器可读存储介质能够执行上述本发明第一方面提供的所述应用程序启动加速方法。
本发明提供的应用程序启动提速方法、装置及机器可读存储介质,实现了移动端平台上各类应用程序的智能启动提速功能,根据对启动模块的优先级等配置参数的解析与本地模块启动的历史缓存数据对比进行调度,采用多线程的方式去异步并发启动线程,使应用程序的启动时间能够达到最快。对于配置了启动优先级不同的相关模块,可以直接根据启动优先级依次加载相关模块。对于配置了具有相同启动优先级的相关模块,需要根据每次启动应用程序后更新的历史加载时长来重新调整加载顺序,且调整到第n次后,若第n+1次的相关模块的加载顺序变动相较于第n次不超过预设百分比,则可以不再变更相关模块的加载顺序,此时从第n+1次开始,启动调整参数即相关模块的启动优先级和加载顺序已完全固定,只需要按照启动调整参数依次加载相关模块即可。该技术不仅解决了传统提速方案的异步化线程单一启动提升效率低、启动模块无优先级之分和模块可控性差等问题,同时还对根据不同手机与其性能去最大限度地提升应用程序的启动时间,也大大提升了用户体验。同时将启动技术功能代码生成为相应的组件包工具,为以后开发奠定基础,使开发效率也得到了很大提升。
附图说明
为了更清楚地说明本发明实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施方式,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的现有技术中应用程序启动提速方法的流程示意图;
图2为本发明实施方式一提供的应用程序启动提速方法的流程示意图;
图3为本发明实施方式二提供的应用程序启动提速方法的流程示意图;
图4为本发明实施方式三提供的应用程序启动提速方法应用于iPone7(OS:11.4.128GB)的优化前后的应用程序的启动时间对比图;
图5为本发明实施方式四提供的应用程序启动提速方法应用于Samsung SM.C5000(Android 6.0.1)的优化前后的应用程序的启动时间比对图;
图6为本发明实施方式五提供的应用程序启动提速方法应用于OPPO R9m 5.1的优化前后的应用程序的启动时间比对图;
图7为本发明提供的应用应用程序启动提速方法后的应用程序的层次架构示意图;
图8为本发明实施方式六提供的应用程序启动提速装置的结构示意图。
具体实施方式
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施方式中的附图,对本发明实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本发明一部分实施方式,而非全部实施方式。基于本发明中的实施方式,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。
请参阅图2,图2为本发明实施方式一提供的应用程序启动提速方法的流程示意图。
如图2所示,本发明第一方面提供了一种应用程序启动提速方法,该方法包括:
S100、在应用程序启动的生命周期里配置组件包、获取与应用程序的相关模块对应的相关参数。
较佳的,组件包的配置是在应用程序启动的时候引入相关的类进行配置操作。相关模块指的是使用方启动时配置自己需要配置的一些模块,通过实现相关代理或相关协议,来实现制作组件包可使用的模块,并配置相关参数,相关参数包括唯一标识符和启动优先级等。
S200、组件包根据相关参数对相关模块进行线程分配以及对相关模块的启动顺序进行调整得到启动调整参数。
其中,启动调整参数即包括相关模块的线程分配及调整后的启动顺序。
较佳的,当应用程序运行到启动组件包的时候,根据配置的启动优先级对相关模块进行启动操作,如同一优先级的多个模块,则从本地相关模块的历史加载时长来调整相关模块的加载顺序。
较佳的,当应用程序运行到加载相关模块时,将当前相关模块配置的启动优先级、历史加载时长等数据与其他相关模块的相关参数进行对比,当启动优先级不同时,按照启动优先级从高到低的顺序依次加载相关模块。当启动优先级相同时,则比较相关模块的历史加载时长,按照历史加载时长从长到短或者从短到长的顺序依次加载相关模块。
比如按照历史加载时长从短到长的顺序依次加载相关模块,在iPhone7上A模块的历史加载时长是3s(秒),与其同启动优先级的B模块的历史加载时长是1s,则会在iPhone7上先加载B模块,再加载A模块。在iPhone4上A模块的历史加载时长是2s,B模块的历史加载时长是3s,那么在iPhone 4上就会先加载A模块,再加载B模块。按照历史加载时长从长到短的顺序依次加载相关模块的过程与上述例子原理相同,此处不再赘述。
S300、根据启动调整参数对相关模块进行多线程并发调度。
较佳的,该方法可应用于不同的操作系统,其中,iOS采用gcd的形式进行多线程并发调度,android采用线程池的形式进行多线程并发调度。
由于使用这样的方式会使得系统充分利用并自动调整硬件资源,所以系统的并发效率能够达到最高。
S500、其中,在组件包对相关模块的启动顺序执行n次调整后,若第n+1次相关模块的启动顺序相较于第n次的启动顺序的变动不超过预设百分比,则保留第n次得到的启动调整参数,且停止调整相关模块的启动顺序,其中,n为大于0的正整数。较佳的,n的取值范围为3-5。预设百分比的取值范围为25%-35%。
在根据本地相关模块的历史加载时长对相关模块排完序后,通过写入文件的方式对启动调整参数做了持久化操作,保存了排序之后的相关模块的加载顺序,下次启动应用程序时按照相关模块的文件制定加载顺序进行加载。
较佳的,在执行三次将启动调整参数写入文件的操作之后,如后续相关模块的加载顺序的变动不超过30%,将不再做文件读写操作,减少文件操作耗时,从而最快提升启动速度。
例如,在本发明的一种具体实施方式中,在第一次启动应用程序时,只需要为相关模块配置启动优先级以及获取本地的相关模块的历史加载时长,当m个相关模块配置的启动优先级相同时,通过历史加载时长调整相关模块的加载顺序得到第一次启动调整参数,其中,m为大于0的正整数。
第二次启动应用程序时,根据第一次启动调整参数对相关模块进行多线程并发调度,由于对相关模块的启动顺序进行了排序处理,第二次启动应用程序时的启动时长会较第一次的启动时长较短,同时,本地的相关模块的历史加载时长会更新为第二次启动相关模块实际的加载时长,即通过第二次启动相关模块实际的加载时长对启动优先级相同的m个相关模块进行加载顺序的调整并得到第二次启动调整参数。
同理,第n次启动应用程序时,此处n大于2,根据第n-1次启动调整参数对相关模块进行多线程并发调度。并通过第n次启动相关模块实际的加载时长对启动优先级相同的m个相关模块进行加载顺序的调整并得到第n次启动调整参数。
示例性地,有7个相关模块分配的启动优先级相同,且预设百分比为30%。第三次相关模块的加载顺序是1、2、3、4、5、6、7,第四次加载顺序如果是1、2、3、4、5、7、6,那么变动率就是2/7=28%<30%,后续加载顺序就还是1、2、3、4、5、6、7,就不会发生变动。
请参阅图3,图3为本发明实施方式二提供的应用程序启动提速方法的流程示意图。
进一步地,如图3所示,在应用程序启动的生命周期里配置组件包、相关模块及相关参数之前,还包括:
S400、通过三方库/组件库管理工具在应用程序中引入组件包。
较佳的,通过pod或则maven在项目中引入组件包。pod和maven是分别对应iOS和Android的三方库/组件库管理工具,例如通过pod修改podfile文件、maven修改POM文件进行组件包的导入。
进一步地,相关参数包括相关模块的启动优先级和唯一标识符,则S200中组件包根据相关参数对相关模块进行线程分配以及对相关模块的启动顺序进行调整的步骤包括:
S201、组件包解析相关参数以获取唯一标识符和启动优先级;
S202、组件包根据启动优先级对唯一标识符对应的相关模块进行线程分配以及对相关模块的启动顺序进行调整。
进一步地,S200中组件包根据相关参数对相关模块进行线程分配以及对相关模块的启动顺序进行调整的步骤还包括:
S203、组件包从本地缓存数据中取得相关模块的历史数据,其中,历史数据包括相关模块的历史加载时长。
S204、当多个相关模块的启动优先级相同时,组件包根据历史加载时长以及预设规则调整相关模块的加载顺序。
进一步地,S204中组件包根据历史加载时长以及预设规则调整相关模块的加载顺序的步骤包括:
根据历史加载时长由短到长的顺序依次加载优先级相同的相关模块。
较佳的,该方法还包括:
从第n+1次开始,使用第n次得到的启动调整参数执行应用程序的启动。
组件包从第n+1次开始不再调整相关模块的启动顺序。
需要说明的是,相关模块的优先级已经配置。
对于启动优先级不同的相关模块,可以直接根据启动优先级依次加载相关模块。
对于具有相同启动优先级的相关模块,需要根据每次启动应用程序后更新的历史加载时长来重新调整加载顺序,且调整到第n次后,若第n+1次的相关模块的加载顺序变动相较于第n次不超过预设百分比,则可以不再变更相关模块的加载顺序,此时从第n+1次开始,启动调整参数即相关模块的启动优先级和加载顺序已完全固定,只需要按照启动调整参数依次加载相关模块即可。
请参阅图4至图6,图4为本发明实施方式三提供的应用程序启动提速方法应用于iPone7(OS:11.4.128GB)的优化前后的应用程序的启动时间对比图,图5为本发明实施方式四提供的应用程序启动提速方法应用于Samsung SM.C5000(Android 6.0.1)的优化前后的应用程序的启动时间比对图,图6为本发明实施方式五提供的应用程序启动提速方法应用于OPPO R9m 5.1的优化前后的应用程序的启动时间比对图。
其中,图5至图6中位于上方的折线为优化前的应用程序的启动时间与启动次数的函数曲线,图5至图6中位于下方的折线为应用本发明提供的应用程序启动提速方法进行优化后的应用程序的启动时间与启动次数的函数曲线。
如图4所示,iPone7(OS:11.4.128GB)的优化前的应用程序的启动时间均值为1607.53ms(毫秒),应用本发明提供的应用程序启动提速方法进行优化后的应用程序的启动时间均值为1124.45ms,同比提升16%。
如图5所示,Samsung SM.C5000(Android 6.0.1)的优化前的应用程序的启动时间均值为812.8ms,应用本发明提供的应用程序启动提速方法进行优化后的应用程序的启动时间均值为606.9ms,同比提升25%。
如图6所示,OPPO R9m 5.1的优化前的应用程序的启动时间均值为590.7ms,应用本发明提供的应用程序启动提速方法进行优化后的应用程序的启动时间均值为507.9ms,同比提升14%。
请参阅图7至图8,图7为本发明提供的应用应用程序启动提速方法后的应用程序的层次架构示意图,图8为本发明实施方式六提供的应用程序启动提速装置的结构示意图。
如图7所示,应用应用程序启动提速方法后的应用程序的层次架构包括业务逻辑层、组件包和框架基础。其中,业务逻辑层包括相关模块和其他业务模块,且用于应用程序启动相关模块的注册操作。组件包包括相关模块注册、相关模块换出处理和相关模块调度,且用于相关模块的注册、相关参数的解析和相关模块的多线程调度等。框架基础包括:Andoird/IOS Foundation/File/多线程。
如图8所示,本发明第二方面还提供了一种应用程序启动提速装置,该装置包括:
配置模块1,用于在应用程序启动的生命周期里配置组件包、至少一个相关模块以及与相关模块对应的相关参数。
分配调整模块2,用于组件包根据相关参数对相关模块进行线程分配以及对相关模块的启动顺序进行调整得到启动调整参数。
并发调度模块3,用于根据启动调整参数对相关模块进行多线程并发调度。
其中,分配调整模块2还用于在组件包对相关模块的启动顺序执行n次调整后,若第n+1次相关模块的启动顺序相较于第n次的启动顺序的变动不超过预设百分比,则保留第n次得到的启动调整参数,且停止调整相关模块的启动顺序。
进一步地,在配置模块1之前还包括:
引入模块4,用于通过三方库/组件库管理工具在应用程序中引入组件包。
进一步地,相关参数包括相关模块的启动优先级和唯一标识符,则分配调整模块2包括:
解析模块21,用于组件包解析相关参数以获取相关参数中的唯一标识符和启动优先级。
调整模块22,用于组件包根据启动优先级对相关模块进行线程分配以及对相关模块的启动顺序进行调整。
进一步地,分配调整模块2还包括:
历史数据获取模块23,用于组件包从本地缓存数据中取得相关模块的历史数据,其中,历史数据包括相关模块的历史加载时长。
加载顺序调整模块24,用于当多个相关模块的启动优先级相同时,根据历史加载时长以及预设规则调整相关模块的加载顺序。
进一步地,加载顺序调整模块24还用于根据历史加载时长由短到长的顺序依次加载优先级相同的相关模块。
进一步地,从第n+1次开始,使用第n次得到的启动调整参数执行应用程序的启动;
组件包从第n+1次开始不再调整相关模块的启动顺序。
本发明第二方面提供的应用程序启动加速装置的工作原理与本发明第一方面提供的应用程序启动加速方法的工作原理完全相同,此处不再赘述。
本发明第三方面还提供了一种机器可读存储介质,所述机器可读存储介质上存储有指令,所述指令用于使得所述机器可读存储介质能够执行上述本发明第一方面提供的所述应用程序启动加速方法。
本发明提供的应用程序启动提速方法、装置及机器可读存储介质,实现了移动端平台上各类应用程序的智能启动提速功能,根据对启动模块的优先级等配置参数的解析与本地模块启动的历史缓存数据对比进行动态调度,采用多线程的方式去异步并发启动线程,使应用程序的启动时间能够达到最快。对于配置了启动优先级不同的相关模块,可以直接根据启动优先级依次加载相关模块。对于配置了具有相同启动优先级的相关模块,需要根据每次启动应用程序后更新的历史加载时长来重新调整加载顺序,且调整到第n次后,若第n+1次的相关模块的加载顺序变动相较于第n次不超过预设百分比,则可以不再变更相关模块的加载顺序,此时从第n+1次开始,启动调整参数即相关模块的启动优先级和加载顺序已完全固定,只需要按照启动调整参数依次加载相关模块即可。该技术不仅解决了传统提速方案的异步化线程单一启动提升效率低、启动模块无优先级之分和模块可控性差等问题,同时还对根据不同手机与其性能去最大限度地提升应用程序的启动时间,也大大提升了用户体验。同时将启动技术功能代码生成为相应的组件包工具,为以后开发奠定基础,使开发效率也得到了很大提升。
在上述实施方式中,对各个实施方式的描述都各有侧重,某个实施方式中没有详述的部分,可以参见其它实施方式的相关描述。以上为对本发明所提供的应用程序启动提速方法、装置及机器可读存储介质的描述,对于本领域的一般技术人员,依据本发明实施方式的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。
所述应用程序启动提速装置包括处理器和存储器,上述配置模块1、分配调整模块2和并发调度模块3等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来同时处理多个图像。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现所述本发明提供的应用程序启动加速方法。
本发明实施例提供了一种设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:上述本发明提供的所述应用程序启动加速方法。本文中的设备可以是服务器、PC、PAD、手机等。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如上述本发明提供的应用程序启动加速方法步骤的程序。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (11)
1.一种应用程序启动提速方法,其特征在于,该方法包括:
在应用程序启动的生命周期里配置组件包、获取与所述应用程序的相关模块对应的相关参数;
所述组件包根据所述相关参数对所述相关模块进行线程分配以及对所述相关模块的启动顺序进行调整得到启动调整参数;
根据所述启动调整参数对所述相关模块进行多线程并发调度;
其中,在所述组件包对所述相关模块的启动顺序执行n次调整后,若第n+1次所述相关模块的启动顺序相较于第n次的启动顺序的变动不超过预设百分比,则保留第n次得到的启动调整参数,且停止调整所述相关模块的启动顺序。
2.根据权利要求1所述的方法,其特征在于,在所述应用程序启动的生命周期里配置所述组件包、相关模块及相关参数之前,还包括:
通过三方库/组件库管理工具在所述应用程序中引入所述组件包。
3.根据权利要求1所述的方法,其特征在于,所述相关参数包括所述相关模块的启动优先级和唯一标识符,则所述组件包根据所述相关参数对所述相关模块进行线程分配以及对所述相关模块的启动顺序进行调整的步骤包括:
所述组件包解析所述相关参数以获取所述相关参数中的唯一标识符和启动优先级;
所述组件包根据所述启动优先级对所述唯一标识符对应的相关模块进行线程分配以及对所述相关模块的启动顺序进行调整。
4.根据权利要求3所述的方法,其特征在于,所述组件包根据所述相关参数对所述相关模块进行线程分配以及对所述相关模块的启动顺序进行调整的步骤还包括:
所述组件包从本地缓存数据中取得所述相关模块的历史数据,其中,所述历史数据包括所述相关模块的历史加载时长;
当多个所述相关模块的启动优先级相同时,所述组件包根据所述历史加载时长以及预设规则调整所述相关模块的加载顺序。
5.根据权利要求4所述的方法,其特征在于,所述组件包根据所述历史加载时长以及预设规则调整所述相关模块的加载顺序的步骤包括:
根据所述历史加载时长由短到长的顺序依次加载所述优先级相同的所述相关模块。
6.一种应用程序启动提速装置,其特征在于,该装置包括:
配置模块,用于在应用程序启动的生命周期里配置组件包、获取与所述应用程序的相关模块对应的相关参数;
分配调整模块,用于所述组件包根据所述相关参数对所述相关模块进行线程分配以及对所述相关模块的启动顺序进行调整得到启动调整参数;
并发调度模块,用于根据所述启动调整参数对所述相关模块进行多线程并发调度;
其中,分配调整模块还用于在所述组件包对所述相关模块的启动顺序执行n次调整后,若第n+1次所述相关模块的启动顺序相较于第n次的启动顺序的变动不超过预设百分比,则保留第n次得到的启动调整参数,且停止调整所述相关模块的启动顺序。
7.根据权利要求6所述的装置,其特征在于,在所述配置模块之前还包括:
引入模块,用于通过三方库/组件库管理工具在所述应用程序中引入所述组件包。
8.根据权利要求6所述的装置,其特征在于,所述相关参数包括所述相关模块的启动优先级和唯一标识符,则所述分配调整模块包括:
解析模块,用于所述组件包解析所述相关参数以获取所述相关参数中的唯一标识符和启动优先级;
调整模块,用于所述组件包根据所述启动优先级对所述相关模块进行线程分配以及对所述相关模块的启动顺序进行调整。
9.根据权利要求8所述的装置,其特征在于,所述分配调整模块还包括:
历史数据获取模块,用于所述组件包从本地缓存数据中取得所述相关模块的历史数据,其中,所述历史数据包括所述相关模块的历史加载时长;
加载顺序调整模块,用于当多个所述相关模块的启动优先级相同时,所述组件包根据所述历史加载时长以及预设规则调整所述相关模块的加载顺序。
10.根据权利要求9所述的装置,其特征在于,所述加载顺序调整模块还用于根据所述历史加载时长由短到长的顺序依次加载所述优先级相同的所述相关模块。
11.一种机器可读存储介质,其特征在于,所述机器可读存储介质上存储有指令,所述指令用于使得所述机器可读存储介质能够执行根据权利要求1至5中任一项所述的应用程序启动加速方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910399750.3A CN110262847B (zh) | 2019-05-14 | 2019-05-14 | 应用程序启动加速方法、装置及机器可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910399750.3A CN110262847B (zh) | 2019-05-14 | 2019-05-14 | 应用程序启动加速方法、装置及机器可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110262847A true CN110262847A (zh) | 2019-09-20 |
CN110262847B CN110262847B (zh) | 2022-05-20 |
Family
ID=67913180
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910399750.3A Active CN110262847B (zh) | 2019-05-14 | 2019-05-14 | 应用程序启动加速方法、装置及机器可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110262847B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111190654A (zh) * | 2019-12-30 | 2020-05-22 | 网易(杭州)网络有限公司 | 功能模块的加载方法、装置、存储介质和电子装置 |
CN112181517A (zh) * | 2020-09-24 | 2021-01-05 | 北京达佳互联信息技术有限公司 | 一种应用软件的启动方法、装置、设备和介质 |
CN113835782A (zh) * | 2021-09-23 | 2021-12-24 | 掌阅科技股份有限公司 | 应用启动方法、电子设备及存储介质 |
CN114064141A (zh) * | 2021-10-22 | 2022-02-18 | 用友网络科技股份有限公司 | 中间件启动时长优化方法、装置和可读存储介质 |
CN115543490A (zh) * | 2022-12-01 | 2022-12-30 | 江苏华存电子科技有限公司 | 一种闪存固件启动方法及系统 |
CN116302209A (zh) * | 2023-05-15 | 2023-06-23 | 阿里云计算有限公司 | 应用进程加速启动的方法、分布式系统、节点和存储介质 |
CN114064141B (zh) * | 2021-10-22 | 2024-11-05 | 用友网络科技股份有限公司 | 中间件启动时长优化方法、装置和可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107766101A (zh) * | 2017-09-30 | 2018-03-06 | 五八有限公司 | App启动事件的处理方法、装置和设备 |
CN108228367A (zh) * | 2017-12-29 | 2018-06-29 | 北京安云世纪科技有限公司 | 一种基于分级广播进行启动控制的方法、系统和移动终端 |
-
2019
- 2019-05-14 CN CN201910399750.3A patent/CN110262847B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107766101A (zh) * | 2017-09-30 | 2018-03-06 | 五八有限公司 | App启动事件的处理方法、装置和设备 |
CN108228367A (zh) * | 2017-12-29 | 2018-06-29 | 北京安云世纪科技有限公司 | 一种基于分级广播进行启动控制的方法、系统和移动终端 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111190654A (zh) * | 2019-12-30 | 2020-05-22 | 网易(杭州)网络有限公司 | 功能模块的加载方法、装置、存储介质和电子装置 |
CN112181517A (zh) * | 2020-09-24 | 2021-01-05 | 北京达佳互联信息技术有限公司 | 一种应用软件的启动方法、装置、设备和介质 |
CN113835782A (zh) * | 2021-09-23 | 2021-12-24 | 掌阅科技股份有限公司 | 应用启动方法、电子设备及存储介质 |
CN114064141A (zh) * | 2021-10-22 | 2022-02-18 | 用友网络科技股份有限公司 | 中间件启动时长优化方法、装置和可读存储介质 |
CN114064141B (zh) * | 2021-10-22 | 2024-11-05 | 用友网络科技股份有限公司 | 中间件启动时长优化方法、装置和可读存储介质 |
CN115543490A (zh) * | 2022-12-01 | 2022-12-30 | 江苏华存电子科技有限公司 | 一种闪存固件启动方法及系统 |
CN116302209A (zh) * | 2023-05-15 | 2023-06-23 | 阿里云计算有限公司 | 应用进程加速启动的方法、分布式系统、节点和存储介质 |
CN116302209B (zh) * | 2023-05-15 | 2023-08-04 | 阿里云计算有限公司 | 应用进程加速启动的方法、分布式系统、节点和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110262847B (zh) | 2022-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110262847A (zh) | 应用程序启动加速方法、装置及机器可读存储介质 | |
CN106056529B (zh) | 一种对用于图片识别的卷积神经网络训练的方法与设备 | |
CN109144699A (zh) | 分布式任务调度方法、装置及系统 | |
CN110889492A (zh) | 用于训练深度学习模型的方法和装置 | |
CN108958796A (zh) | 业务请求处理方法及装置、业务请求处理系统 | |
CN104978228B (zh) | 一种分布式计算系统的调度方法和装置 | |
CN104111800A (zh) | 一种虚拟磁盘的io口调度方法及其调度装置 | |
CN110069312A (zh) | 一种ui组件配置和生成ui组件库的方法及装置 | |
CN107066266A (zh) | 安卓应用中支持Unity的数据处理方法及装置 | |
CN108399094A (zh) | 一种应用的部署方法、其部署装置及边缘数据中心 | |
CN109343793A (zh) | 数据迁移方法及装置 | |
CN109376020B (zh) | 多区块链交互并发下的数据处理方法、装置及存储介质 | |
CN109740765A (zh) | 一种基于亚马逊网络服务器的机器学习系统搭建方法 | |
WO2023116067A1 (zh) | 面向5g云边端协同的电力业务分解方法及系统 | |
CN108520077A (zh) | 一种避免重复下载的方法和装置 | |
CN107562516A (zh) | 多线程处理方法和装置、存储介质及处理器 | |
CN114186693B (zh) | 一种量子操作系统的调度方法、系统、装置及计算机介质 | |
CN106407231A (zh) | 一种数据多线程导出方法及系统 | |
CN110019298A (zh) | 数据处理方法和装置 | |
US10489220B2 (en) | Priority based scheduling | |
CN109145055A (zh) | 一种基于Flink的数据同步方法和系统 | |
CN114443284A (zh) | 一种集群资源负载均衡方法、装置、电子设备和介质 | |
CN107168795B (zh) | 基于cpu-gpu异构复合式并行计算框架的密码子偏差系数模型方法 | |
CN118035618B (zh) | 数据处理器、数据处理方法、电子设备、存储介质 | |
CN108880896A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |