一种文件加载方法、装置、设备及存储介质与流程

文档序号:18464513发布日期:2019-08-17 02:20阅读:184来源:国知局
一种文件加载方法、装置、设备及存储介质与流程
本公开涉及数据处理
技术领域
,具体涉及一种文件加载方法、装置、设备、存储介质。
背景技术
:随着现代硬件技术的发展,硬盘、内存之间的性能差异越来越明显。硬盘容量大,但是加载速度慢。内存容量小,但是加载速度快。为了充分利用硬盘容量大、内存加载速度快的性能特点,在大多数项目中,都是用了lru(最近最少使用)技术来加快读取速度。但现有技术方法存在一个明显缺点。当文件结构过于复杂时,要读取的数据在硬盘中分布很散,缓存率会大大降低,达不到利用缓存来加速加载的作用。以一个复杂结果文件assetbundle(是unity提出并实现的一种资源打包压缩技术,用于管理各类assets资源)为例,每个缓存块大小设置为128kb,读取指定资源a,该a资源分布在硬盘上597个缓存块大小的空间上,一共申请3597次缓存块读取申请(由于会出现反复读取某一块缓存块的情况,故申请缓存块读取次数>>实际占用缓存块个数)。下表为缓存块命中率的测试结果:表1缓存块命中率测试结果从上表可以看出,如果最大缓存块数量设置为2,则命中率为仅为0.9%;如果最大缓存块数量设置为512,则占用内存为64mb。也就是说,现有广泛应用的标准的lru技术,针对复杂结构文件来说,要么命中率低,加载耗时长;要么占用极大内存,对低内存设备不友好。在性能方面,不能同时获取到低内存和高命中率的优点。技术实现要素:本公开提出了一种文件加载方法、装置、设备及存储介质,能够提高文件加载的灵活性。本公开具体是以如下技术方案实现的:一方面,本公开提供了一种文件加载方法,包括:确定目标文件中至少一个资源信息的关联特征;根据所述资源信息的关联特征确定所述资源信息的类型;利用所述资源信息的类型对应的加载算法加载所述资源信息。另一方面,本公开提供了一种文件加载装置,包括:第一确定模块,用于确定目标文件中至少一个资源信息的关联特征;第二确定模块,用于根据所述资源信息的关联特征确定所述资源信息的类型;加载模块,用于利用所述资源信息的类型对应的加载算法加载所述资源信息。进一步的,所述第一确定模块包括:第一获取单元,用于获取所述资源信息的占用的内存;第一确定单元,用于将所述占用的内存作为所述资源信息的关联特征。进一步的,所述第二确定模块包括:第二确定单元,用于根据所述占用的内存的大小确定所述资源信息的类型;所述资源信息的类型包括第一类型和第二类型,所述第一类型的资源信息占用的内存小于所述第二类型的资源信息占用的内存。进一步的,所述第一确定模块还包括:第二获取单元,用于获取所述资源信息的读取频率;第三确定单元,用于将所述读取频率作为所述资源信息的关联特征。进一步的,所述第二确定模块还包括:第四确定单元,用于根据所述读取频率的高低将确定所述资源信息的类型;所述资源信息的类型包括第一类型和第二类型,所述第一类型的资源信息的读取频率大于所述第二类型的资源信息的读取频率。进一步的,所述加载模块包括:第一调整单元,用于将第一数量的缓存块扩大到第二数量的缓存块;第一加载单元,用于基于所述第二数量的缓存块加载所述第一类型的资源信息;第二调整单元,用于所述第一类型的资源信息加载完成后,将所述第二数量的缓存块恢复到所述第一数量的缓存块。进一步的,所述加载模块包括:第二加载单元,用于基于第一数量的缓存块加载所述第二类型的资源信息。另一方面,本公开提供了一种文件加载设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述的文件加载方法。另一方面,本公开提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上述的文件加载方法。本公开提供了一种文件加载方法、装置、设备及存储介质,具有如下技术效果:通过对文件中的资源信息进行分类,基于资源信息的不同类型采用不同的加载方法进行加载,提高了文件加载的灵活性。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。图1是本发明实施例提供的一种文件加载方法的应用场景示意图;图2是本发明实施例提供的一种文件加载方法的流程示意图;图3是本发明实施例提供的一种界面资源拆包的配置文件示例图;图4是本发明实施例提供的一种动态调节缓存块大小的接口的示例图;图5是本发明实施例提供的一种assetbundle中资源的加载方法的流程示意图;图6是本发明实施例提供的一种文件加载方法的在赛车游戏中的应用背景示例图;图7是本发明实施例提供的一种文件加载装置的结构示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。以下介绍本发明文件加载方法,本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或服务器产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。图1是本发明实施例提供的一种文件加载方法的实际应用场景示意图,如图1所示,该应用场景包括硬盘01、缓存02以及显示页面03。具体的,所述硬盘01可以是固态硬盘、机械硬盘、混合硬盘等。所述硬盘01可以放在本地设备中,也可以放在远程设备中。所述硬盘01用于存储目标文件(待加载文件)。具体的,所述缓存02缓存(cachememory)可以是硬盘控制器上的一块内存芯片,也可以是手机芯片上的缓存。所述缓存02具有极快的存取速度,它是所述硬盘01内部存储和外界接口显示页面03之间的缓冲器。具体的,所述显示页面03是显示从硬盘中加载的数据的页面。具体工作流程包括:1、分析硬盘中资源包中各资源的类型;2、根据各资源的类型对内存中的缓存块进行调整或不调整;3、利用调整或未调整的缓存块分别加载各资源。4、将加载后的各资源显示在显示页面。图2本发明实施例提供的一种文件加载方法的流程示意图,如图2所示,具体包括:s201:确定目标文件中至少一个资源信息的关联特征。在本说明书实施例中,所述确定目标文件中的至少一个资源信息的关联特征可以包括:获取所述资源信息的占用的内存;将所述占用的内存作为所述资源信息的关联特征。另外,所述确定目标文件中的至少一个资源信息的关联特征还可以包括:获取所述资源信息的读取频率;将所述读取频率作为所述资源信息的关联特征。资源信息占用的内存和读取频率是在资源信息存储和读写过程中的重要参数,也会影响资源信息的加载效率,因此将占用的内存或读取频率作为确定资源信息类型的关联特征。在本说明书实施例中,目标文件可以是复杂结构的待加载文件。在实际应用中,可以是游戏中的待加载文件。例如,赛车游戏单局耗时短,在场景切换过程中需要释放及加载大量资源,在保持对玩家设备的广泛支持基础上,减少单局加载时长是很有必要的。同时,由于游戏的规模扩大需要多人合作,以及现代面向对象设计导致的数据分散性,游戏设计和使用过程中不可避免的会出现大量的复杂结构文件。s203:根据所述资源信息的关联特征确定所述资源信息的类型。具体的,所述根据所述资源信息的关联特征确定所述资源信息的类型可以包括:根据所述占用的内存的大小确定所述资源信息的类型;所述资源信息的类型包括第一类型和第二类型,所述第一类型的资源信息占用的内存小于所述第二类型的资源信息占用的内存。另外,所述根据所述资源信息的关联特征确定所述资源信息的类型还可以包括:根据所述读取频率的高低将确定所述资源信息的类型;所述资源信息的类型包括第一类型和第二类型,所述第一类型的资源信息的读取频率大于所述第二类型的资源信息的读取频率。s205:利用所述资源信息的类型对应的加载算法加载所述资源信息。具体的,当所述资源信息的类型为第一类型时,所述利用所述资源信息的类型对应的加载算法加载所述资源信息包括:将第一数量的缓存块扩大到第二数量的缓存块;基于所述第二数量的缓存块加载所述第一类型的资源信息;所述第一类型的资源信息加载完成后,将所第二数量的缓存块恢复到所述第一数量的缓存块。本说明书的实施例,通过临时扩大资源信息可使用的缓存块数量,提高了资源信息加载效率,在资源信息加载完成后,又恢复缓存块数量,释放了缓存空间,从而也不会影响其他资源信息继续利用该方法进行加载。另外,当所述资源信息的类型为第二类型时,所述利用所述资源信息的类型对应的加载算法加载所述资源信息包括:基于第一数量的缓存块加载所述第二类型的资源信息。第二类型的资源信息由于本身占用内存已经较大且结构简单,因此直接使用lru技术即可加快读取速度。本公开介绍的一种文件加载方法,主要针对复杂结构文件。通过对复杂结构文件中资源信息关联特征的分析,根据分析结果将资源信息进行分类,再根据不同类型的资源信息设计并使用相应的加载方法。借助本公开的技术,可以在充分节省内存的情况下,即使是在低端移动端设备上,也能极快得加载文件,使得在场景切换、加载关卡、打开界面等重输入输出操作的情况下,能大幅节省加载时间。下面以assetbundle资源包为例进一步描述本说明书实施例的文件加载方案。(1)拆分复杂结构文件检测复杂结构文件assetbundle资源包,对其中的资源按类别分为两类:a类和b类。a类主要指结构复杂但是占用空间相对小的资源,比如界面预制件,这类资源的特点是在加载过程过程中,会出现重复加载缓存块的情况。b类主要指结构简单但是占用空间大的资源,可以包括各类贴图、模型、声音甚至场景资源。这类资源结构简单,在加载过程中,很少出现重复加载缓存块的情况。具体实现方式是,在生成assetbundle文件的过程中,对复杂结构文件依据包含的资源类型划分为多个assetbundle,将a类资源和b类资源分开。以界面资源为例,项目实践中划分方式如图3,图3提供了一种界面资源拆包的配置文件示例。如图3,对资源进行拆分,将界面预制件对应的资源拆分成a类和b类。a类资源对应uiprefab_,一共拆分了90份;b类是贴图、mat、shader等。对于a类资源、b类资源,都要求小于10mb,防止被操作系统在执行系统清理时,误认为是大文件,而删除。对于a类资源:由于命中率很低,所以单个资源文件的大小,要小于缓存块总大小。本示例中a类资源总大小有约100mb,由于设定的最大缓存块数量为16个,单个缓存块128kb,故对一个文件来说,期望不高于缓存块的总大小(128kbx16=2mb)。故将界面预制件均分到90个文件中,平均每个1.1mb,材质、着色器资源合并为1个文件,其他的资源(包括文本、字节数组、动画)等合并为1个文件。其中a类资源单个文件内存占用小于2mb。其他项目组在实践中,可依赖项目资源情况合理划分a类资源的文件个数。对于b类资源:由于命中率很高,所以缓存块总大小跟资源总大小关联不高。本示例中b类资源主要是界面引用到的贴图,界面引用到的贴图总大小有约60mb,对每个资源生成guid,然后依据guid将所有贴图资源均匀划分到8个文件中,平均每个7.5mb。a、b类资源总大小,是我们用到的美术资源总和,跟项目有关。不同项目使用到的资源量不一样,越大的项目用得越多。(2)引擎层添加缓存块数量控制函数图4是本说明书实施例提供的一种动态调节缓存块大小的接口的示例图。通过引擎层(实现底层功能)的缓存块数量控制函数使得逻辑层(实现判断调用和控制功能)能够方便调整最大整缓存块数量。对于单个assetbundle对应的缓存块,在代码实现中,可以用字典进行管理,便于快速增加、删除缓存块。(3)动态调整lru的缓存块数量图5是本说明书实施例提供的一种assetbundle中资源的加载方法的流程示意图。如图5所示,对于待加载的assetbundle中的资源1,先判断其是否为a类资源,若是a类资源,则利用扩大数量后的缓存块加载资源1,若不是a类资源,则直接利用内存中固定的缓存块加载资源1,加载结束后,再继续加载下一个资源2,该资源2可以是与资源1处于同一个assetbundle,也可以是不同的assetbundle中的资源。具体的,对于a类资源,由于占用空间小,虽然其结构非常复杂,但是整体占用缓存块数量不高,控制在16个以内,最多占用2mb内存资源。对于b类资源,占用空间较大,标准的lru算法已经非常适合,且缓存块命中率正常,故用标准lru算法即可。在加载a类资源时,临时扩大a类资源可占用的最大缓存块数量到16个,加载过程中其缓存块可全部放置到内存中,由于不会出现移出缓存块的情况,故其缓存块命中率达到了理论最大值。当a类资源加载完毕,即可立即卸载因临时扩大缓存块数量而多加载的缓存块。在加载多个a类资源的过程中,由于加载完一个a类资源,就会立即释放其多占用的缓存块,故即使需要顺序加载多个a类资源,其内存占用也不高。其中,一般情况下缓存块最大数量为2个,占用256kb内存。临时扩大缓存块的最大数量为16个,最多占用2mb内存(依据项目实践,a类资源单个文件的内存占用大小控制在16个缓存块占用以内,自身最多占用2mb内存)。(4)总结通过上述流程,在加载a类资源过程中动态的调整缓存块最大数量。使得在加载多个assetbundle中的资源时,内存峰值比原方案最多增加1.75mb(本方案的16个缓存块x128kb–标准lru的2个缓存块x128kb),以多占用1.75mb的内存,就换取到了理论最高的缓存命中率,大大加快了复杂结构文件的加载速度。启用本技术方案后,项目的单局加载数据提高非常明显。同时由于加载时间的减少,因加载耗时而导致的掉线率得到了降低。以下是启用本技术方案与原方案的单局加载耗时对比表:单局地图标准lru加载耗时本技术方案改进后耗时减少加载时间马达加斯加15.4310.435.00中国城14.329.265.06十一城15.039.935.10表2中端机红米note5单局加载耗时(单位:秒)单局地图标准lru加载耗时本技术方案改进后耗时减少加载时间马达加斯加32.5325.836.70中国城30.0623.996.07十一城31.9624.327.64表3低端机红米4x单局加载耗时(单位:秒)图6提供了本发明实施例的一种文件加载方法的在赛车游戏中的应用背景示例图。玩家在玩赛车游戏时,经常需要在游戏大厅和赛车游戏场景之间进行切换。因为在赛车游戏场景中,玩家需要专心开赛车,而跑完游戏设定的赛道后,需要返回游戏大厅领取新的赛车任务以及与其他玩家进行交流,而在该切换过程中,需要频繁地加载各种页面资源,因此,使用本申请的文件加载方法,可以大大减少用户在场景切换等过程中的等待时间,提高了用户体验,加强了用户的对游戏的粘度。本发明实施例还提供了一种文件加载装置,如图7所示,所述装置包括:第一确定模块701,用于确定目标文件中至少一个资源信息的关联特征;第二确定模块703,用于根据所述资源信息的关联特征确定所述资源信息的类型;加载模块705,用于利用所述资源信息的类型对应的加载算法加载所述资源信息。进一步的,所述第一确定模块包括:第一获取单元,用于获取所述资源信息的占用的内存;第一确定单元,用于将所述占用的内存作为所述资源信息的关联特征。进一步的,所述第二确定模块包括:第二确定单元,用于根据所述占用的内存的大小确定所述资源信息的类型;所述资源信息的类型包括第一类型和第二类型,所述第一类型的资源信息占用的内存小于所述第二类型的资源信息占用的内存。进一步的,所述第一确定模块还包括:第二获取单元,用于获取所述资源信息的读取频率;第三确定单元,用于将所述读取频率作为所述资源信息的关联特征。进一步的,所述第二确定模块还包括:第四确定单元,用于根据所述读取频率的高低将确定所述资源信息的类型;所述资源信息的类型包括第一类型和第二类型,所述第一类型的资源信息的读取频率大于所述第二类型的资源信息的读取频率。进一步的,所述加载模块包括:第一调整单元,用于将第一数量的缓存块扩大到第二数量的缓存块;第一加载单元,用于基于所述第二数量的缓存块加载所述第一类型的资源信息;第二调整单元,用于所述第一类型的资源信息加载完成后,将所述第二数量的缓存块恢复到所述第一数量的缓存块。进一步的,所述加载模块包括:第二加载单元,用于基于第一数量的缓存块加载所述第二类型的资源信息。本发明还提供了一种文件加载设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述的文件加载方法。另一方面,本公开提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上述的文件加载方法。本说明书实施例中,所述存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、功能所需的应用程序等;存储数据区可存储根据所述设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器还可以包括存储器控制器,以提供处理器对存储器的访问。由上述本发明提供的文件加载方法、装置、设备及存储介质的实施例可见,本公开介绍的一种文件加载方法,主要针对复杂结构文件。通过对复杂结构文件中资源信息关联特征的分析,根据分析结果将资源信息进行分类,再根据不同类型的资源信息设计并使用相应的加载方法。借助本公开的技术,可以在充分节省内存的情况下,即使是在低端移动端设备上,也能极快得加载文件,使得在场景切换、加载关卡、打开界面等重输入输出操作的情况下,能大幅节省加载时间。并且,本公开提出的这种针对复杂结构文件的低内存消耗且快速读取的技术方案,能够广泛地支持各种规格的移动端设备,不会对设备产生额外的性能要求,同时能够大幅提高加载速度,减少等待时间,给用户带来爽快的加载体验。需要说明的是:上述本发明实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、系统和服务器实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1