System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请实施例涉及计算机,尤其涉及一种程序启动方法、装置、设备及存储介质。
技术介绍
1、随着计算机技术的快速发展,各种应用程序随之产生,例如社交类的应用程序、视频的应用程序和游戏类的应用程序等。随着云计算的高度发展,可以将一些应用程序运行在云端,例如云游戏,云游戏是指游戏运行在服务端,服务端将压缩编码后的游戏画面传输给客户端,客户端进行显示。
2、在程序启动时,需要启动多个任务,通常将这些任务称为启动任务。这些启动任务之间具有依赖关系,例如任务1在任务2执行后才执行。目前,在程序启动时,对启动任务进行拓扑排序,并对排序后的启动任务进行执行。具体是,当前置依赖任务执行完毕后,再执行子任务。但是,目前的程序启动方法,存在启动时间长的问题。
技术实现思路
1、本申请实施例提供一种程序启动方法、装置、设备及存储介质,可以减少程序的启动时间,提升程序的启动速度。
2、第一方面,本申请实施例提供一种程序启动方法,包括:
3、响应于对目标程序的启动操作,获取所述目标程序的n个启动任务的拓扑排序,所述n为正整数;
4、基于所述拓扑排序,确定所述n个启动任务中的p个可提前预加载任务,所述可提前预加载任务为所述n个启动任务中,父任务为请求任务且所述父任务的请求结果满足预设条件的启动任务,所述预设条件包括请求结果可枚举和可预判的至少一个,所述p为正整数;
5、针对所述p个可提前预加载任务中的第i个可提前预加载任务,确定所述第i个可提前预加载任务
6、在检测到所述第i个可提前预加载任务的父任务执行结束时,基于所述第i个可提前预加载任务的父任务的实际请求结果,从所述m个可能执行结果中,确定与所述实际请求结果匹配的第一执行结果,并基于所述第一执行结果进行所述目标程序启动。
7、第二方面,本申请实施例提供一种程序启动装置,包括:
8、获取单元,用于响应于对目标程序的启动操作,获取所述目标程序的n个启动任务的拓扑排序,所述n为正整数;
9、任务确定单元,用于基于所述拓扑排序,确定所述n个启动任务中的p个可提前预加载任务,所述可提前预加载任务为所述n个启动任务中,父任务为请求任务且所述父任务的请求结果满足预设条件的启动任务,所述预设条件包括请求结果可枚举和可预判的至少一个,所述p为正整数;
10、调度单元,用于针对所述p个可提前预加载任务中的第i个可提前预加载任务,确定所述第i个可提前预加载任务的父任务满足所述预设条件的可能请求结果,并基于所述可能请求结果,预加载所述第i个可提前预加载任务,得到所述第i个可提前预加载任务的m个可能执行结果并进行存储,所述i为小于或等于n的正整数,所述m为正整数;
11、匹配单元,用于在检测到所述第i个可提前预加载任务的父任务执行结束时,基于所述第i个可提前预加载任务的父任务的实际请求结果,从存储的所述m个可能执行结果中,确定与所述实际请求结果匹配的第一执行结果,并基于所述第一执行结果进行所述目标程序启动。
12、在一些实施例中,任务确定单元,具体用于确定所述n个启动任务中每一个启动任务的第一标记,所述启动任务的第一标记是基于所述拓扑排序中所述启动任务的父任务的请求结果是否满足预设条件确定的,所述第一标记用于指示所述启动任务是否为可提前预加载任务;基于所述第一标记,从所述n个启动任务中确定出所述p个可提前预加载任务。
13、在一些实施例中,任务确定单元,具体用于对于所述n个启动任务的任一启动任务,基于所述拓扑排序,确定所述启动任务的父任务;若所述启动任务的父任务为请求任务,且所述启动任务的父任务的请求结果满足所述预设条件时,则确定所述启动任务的第一标记为第一值,所述第一值表示所述启动任务为可提前预加载任务;若所述启动任务的父任务不是请求任务,或者所述启动任务的父任务的请求结果不满足所述预设条件时,则确定所述启动任务的第一标记为第二值,所述第二值表示所述启动任务不是可提前预加载任务。
14、在一些实施例中,任务确定单元,具体用于对于所述n个启动任务中的任一启动任务,基于所述拓扑排序,确定所述启动任务的父任务;若所述启动任务的父任务为请求任务,且所述父任务的请求结果满足所述预设条件时,则确定所述启动任务为所述可提前预加载任务。
15、在一些实施例中,调度单元,具体用于若所述第i个可提前预加载任务的父任务的请求结果可枚举且不可预判时,则将所述第i个可提前预加载任务的父任务的请求结果的可枚举结果,确定为所述可能请求结果;若所述第i个可提前预加载任务的父任务的请求结果可枚举且可预判时,则在所述第i个可提前预加载任务的父任务的请求结果的可枚举结果中,确定所述请求结果的预判结果,并将所述预判结果,确定为所述可能请求结果;若所述第i个可提前预加载任务的父任务的请求结果不可枚举且可预判时,则确定所述第i个可提前预加载任务的父任务的请求结果的预判结果,并将所述预判结果,确定为所述可能请求结果。
16、在一些实施例中,调度单元,在基于所述可能请求结果,预加载所述第i个可提前预加载任务,得到所述第i个可提前预加载任务的m个可能执行结果之前,还用于确定所述n个启动任务中每一个启动任务的任务类型,并基于所述任务类型,将所述n个启动任务放入不同的线程池中;基于所述可能请求结果,通过所述第i个可提前预加载任务对应的线程池,预加载所述第i个可提前预加载任务,得到所述m个可能执行结果。
17、在一些实施例中,所述任务类型包括cpu密集型和io密集型,所述线程池包括cpu密集型线程池和所述io密集型线程池,调度单元,具体用于若所述启动任务的任务类型为所述cpu密集型,则将所述启动任务放入所述cpu密集型线程池;若所述启动任务的任务类型为所述io密集型,则将所述启动任务放入所述io密集型线程池。
18、在一些实施例中,调度单元,具体用于若所述第i个可提前预加载任务的任务类型为所述cpu密集型,则基于所述可能请求结果,通过所述cpu密集型线程池对所述第i个可提前预加载任务进行调度,得到所述m个可能执行结果;若所述第i个可提前预加载任务的任务类型为所述io密集型,则基于所述可能请求结果,通过所述io密集型线程池对所述第i个可提前预加载任务进行调度,得到所述m个可能执行结果。
19、在一些实施例中,调度单元,具体用于在检测到所述第i个可提前预加载任务的父任务开始执行时,则基于所述可能请求结果,预加载所述第i个可提前预加载任务,得到所述m个可能执行结果。
20、在一些实施例中,调度单元,具体用于若所述第i个可提前预加载任务的父任务,在所述第i个可提前预加载任务的祖父任务执行结束后执行时,则在执行所述第i个可提前预加载任务本文档来自技高网...
【技术保护点】
1.一种程序启动方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述基于所述拓扑排序,确定所述N个启动任务中的P个可提前预加载任务,包括:
3.根据权利要求2所述的方法,其特征在于,所述确定所述N个启动任务中每一个启动任务的第一标记,包括:
4.根据权利要求1所述的方法,其特征在于,所述基于所述拓扑排序,确定所述N个启动任务中的P个可提前预加载任务,包括:
5.根据权利要求1所述的方法,其特征在于,所述确定所述第i个可提前预加载任务的父任务满足所述预设条件的可能请求结果,包括:
6.根据权利要求1-5任一项所述的方法,其特征在于,所述基于所述可能请求结果,预加载所述第i个可提前预加载任务,得到所述第i个可提前预加载任务的M个可能执行结果之前,所述方法还包括:
7.根据权利要求6所述的方法,其特征在于,所述任务类型包括CPU密集型和IO密集型,所述线程池包括CPU密集型线程池和所述IO密集型线程池,所述基于所述任务类型,将所述N个启动任务放入不同的线程池中,包括:
8.根据权利要
9.根据权利要求1-5任一项所述的方法,其特征在于,所述基于所述可能请求结果,预加载所述第i个可提前预加载任务,得到所述第i个可提前预加载任务的M个可能执行结果,包括:
10.根据权利要求1-5任一项所述的方法,其特征在于,所述基于所述可能请求结果,预加载所述第i个可提前预加载任务,得到所述第i个可提前预加载任务的M个可能执行结果,包括:
11.根据权利要求1-5任一项所述的方法,其特征在于,所述请求任务包括网络请求任务或磁盘读写任务。
12.根据权利要求11所述的方法,其特征在于,所述目标程序为云游戏程序,所述可提前预加载任务为所述云游戏程序的N个启动任务中,父任务为网络请求任务且所述父任务的请求结果满足所述预设条件的启动任务。
13.一种程序启动装置,其特征在于,包括:
14.一种电子设备,其特征在于,包括:
15.一种计算机可读存储介质,其特征在于,用于存储计算机程序,所述计算机程序使得计算机执行权利要求1至12中任一项所述的方法。
...【技术特征摘要】
1.一种程序启动方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述基于所述拓扑排序,确定所述n个启动任务中的p个可提前预加载任务,包括:
3.根据权利要求2所述的方法,其特征在于,所述确定所述n个启动任务中每一个启动任务的第一标记,包括:
4.根据权利要求1所述的方法,其特征在于,所述基于所述拓扑排序,确定所述n个启动任务中的p个可提前预加载任务,包括:
5.根据权利要求1所述的方法,其特征在于,所述确定所述第i个可提前预加载任务的父任务满足所述预设条件的可能请求结果,包括:
6.根据权利要求1-5任一项所述的方法,其特征在于,所述基于所述可能请求结果,预加载所述第i个可提前预加载任务,得到所述第i个可提前预加载任务的m个可能执行结果之前,所述方法还包括:
7.根据权利要求6所述的方法,其特征在于,所述任务类型包括cpu密集型和io密集型,所述线程池包括cpu密集型线程池和所述io密集型线程池,所述基于所述任务类型,将所述n个启动任务放入不同的线程池中,包括:
8.根据权利要求7所述的方法,其特征在于,所述基于所述可能请求结果,...
【专利技术属性】
技术研发人员:邓金梅,
申请(专利权)人:腾讯科技深圳有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。