发明内容
为解决上述问题,本发明的目的在于提供一种资源缓存设置方法及系统,建立缓存池,用于预存待加载的资源;预设缓存池资源占用内存上限值;运行游戏程序,同时调用检测工具监测程序运行情况,获取测试数据;根据监测工具监测到的内存占用大小和游戏中画面每秒传输帧数,结合缓存上限设置策略,调整缓存池占用内存上限值;获取一定组数的测试数据,,根据最优选择策略,选取内存上限值并设为缓存池的默认内存上限值。
本发明解决其问题所采用的技术方案一方面是:一种资源缓存设置方法,其特征在于,包括以下步骤:S100、建立缓存池,用于预存待加载的资源;S200、预设缓存池资源占用内存上限值,其中上限值可自定义;S300、运行游戏程序,同时调用检测工具监测程序运行情况,获取测试数据;S400、根据监测工具监测到的内存占用大小和游戏中画面每秒传输帧数,结合缓存上限设置策略,调整缓存池占用内存上限值;S500、返回执行步骤S300,获取一定组数的测试数据,其中组数可自定义,根据最优选择策略,选取内存上限值并设为缓存池的默认内存上限值。
进一步的,所述S100包括:根据游戏内现有的缓存池值机使用该缓存池或根据需要频繁加载卸载且耗时的资源,建立一个用于存储该资源的缓存池。
进一步的,所述需要频繁加载卸载且耗时的资源的判断方法为,模拟游戏运行并使用包括Resources.Load和AssetBundle的加载资源方案对游戏资源进行加载,并调用监测插件监测加载资源的时间和加载卸载频率,根据监测数据将资源分为高耗能资源和一般资源。
进一步的,所述S200包括在游戏界面上用NGUI的Text组件动态接受预设的缓存池的上限值。
进一步的,所述S300包括在游戏界面上用NGUI的Label组件动态显示并记录游戏当前的画面每秒传输帧数以及当前的内存占用大小,记录一定时间后,将采集的数据输出为表格,其中一定时间可自定义。
进一步的,所述表格包括一定时间内的画面每秒传输帧数的最大值和平均值,以及内存占用大小的最大值和平均值。
本发明解决其问题所采用的技术方案另一方面是:一种资源缓存设置系统,其特征在于,包括:缓存池模块,用于建立缓存池并预存待加载的资源;程序启动模块,用于运行游戏程序,同时调用检测工具监测程序运行情况,获取测试数据;监测数据分析模块,用于根据监测工具监测到的内存占用大小和游戏中画面每秒传输帧数,结合缓存上限设置策略,向缓存参数设置模块提供待选上限值;缓存参数设置模块,用于设置缓存池占用内存上限值。
进一步的,所述缓存池模块还包括缓存类型模块,用于建立各种类型的缓存池,包括效缓存池和角色缓存池。
进一步的,所述监测数据分析模块还包括表格生成模块,用于根据监测数据生成表格,其中表格包括一定时间内的画面每秒传输帧数的最大值和平均值,以及内存占用大小的最大值和平均值。
进一步的,其特征在于,所述监测数据分析模块还包括优选上限值模块,用于结合缓存上限设置策略,生成待选上限值。
本发明的有益效果是:可以用反复测试的数据来确定最佳的缓存池上限,使内存与性能同时兼顾,可在游戏界面动态调整缓存池上限,无需重现打包,即可直接进行测试,大大缩短测试时间。
具体实施方式
以下将结合实施例和附图对本发明的构思、具体结构及产生的技术效果进行清楚、完整的描述,以充分地理解本发明的目的、方案和效果。
需要说明的是,如无特殊说明,当某一特征被称为“固定”、“连接”在另一个特征,它可以直接固定、连接在另一个特征上,也可以间接地固定、连接在另一个特征上。此外,本公开中所使用的上、下、左、右等描述仅仅是相对于附图中本公开各组成部分的相互位置关系来说的。在本公开中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。此外,除非另有定义,本文所使用的所有的技术和科学术语与本技术领域的技术人员通常理解的含义相同。本文说明书中所使用的术语只是为了描述具体的实施例,而不是为了限制本发明。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的组合。
应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种元件,但这些元件不应限于这些术语。这些术语仅用来将同一类型的元件彼此区分开。例如,在不脱离本公开范围的情况下,第一元件也可以被称为第二元件,类似地,第二元件也可以被称为第一元件。本文所提供的任何以及所有实例或示例性语言(“例如”、“如”等)的使用仅意图更好地说明本发明的实施例,并且除非另外要求,否则不会对本发明的范围施加限制。
参照图1所示为根据本发明较佳实施例的方法流程示意图,
一种资源缓存设置方法,其特征在于,包括以下步骤:S100、建立缓存池,用于预存待加载的资源;S200、预设缓存池资源占用内存上限值,其中上限值可自定义;S300、运行游戏程序,同时调用检测工具监测程序运行情况,获取测试数据;S400、根据监测工具监测到的内存占用大小和游戏中画面每秒传输帧数,结合缓存上限设置策略,调整缓存池占用内存上限值;S500、返回执行步骤S300,获取一定组数的测试数据,其中组数可自定义,根据最优选择策略,选取内存上限值并设为缓存池的默认内存上限值。
进一步的,所述S100包括:根据游戏内现有的缓存池值机使用该缓存池或根据需要频繁加载卸载且耗时的资源,建立一个用于存储该资源的缓存池。
进一步的,所述需要频繁加载卸载且耗时的资源的判断方法为,模拟游戏运行并使用包括Resources.Load和AssetBundle的加载资源方案对游戏资源进行加载,并调用监测插件监测加载资源的时间和加载卸载频率,根据监测数据将资源分为高耗能资源和一般资源。
进一步的,所述S200包括在游戏界面上用NGUI的Text组件动态接受预设的缓存池的上限值。
进一步的,所述S300包括在游戏界面上用NGUI的Label组件动态显示并记录游戏当前的画面每秒传输帧数以及当前的内存占用大小,记录一定时间后,将采集的数据输出为表格,其中一定时间可自定义。
进一步的,所述表格包括一定时间内的画面每秒传输帧数的最大值和平均值,以及内存占用大小的最大值和平均值。
图2所示为根据本发明较佳实施例的系统结构示意图,
一种资源缓存设置系统,其特征在于,包括:缓存池模块,用于建立缓存池并预存待加载的资源;程序启动模块,用于运行游戏程序,同时调用检测工具监测程序运行情况,获取测试数据;监测数据分析模块,用于根据监测工具监测到的内存占用大小和游戏中画面每秒传输帧数,结合缓存上限设置策略,向缓存参数设置模块提供待选上限值;缓存参数设置模块,用于设置缓存池占用内存上限值。
进一步的,所述缓存池模块还包括缓存类型模块,用于建立各种类型的缓存池,包括效缓存池和角色缓存池。
进一步的,所述监测数据分析模块还包括表格生成模块,用于根据监测数据生成表格,其中表格包括一定时间内的画面每秒传输帧数的最大值和平均值,以及内存占用大小的最大值和平均值。
进一步的,其特征在于,所述监测数据分析模块还包括优选上限值模块,用于结合缓存上限设置策略,生成待选上限值。
举例说明,
第一步找到游戏内现有的缓存池进行加以改造或者找到需要频繁加载卸载且比较耗时的资源,做一个用于存储该资源的缓存池
第二步将每一种缓存池都单纯设置一个默认上限UpLimit,默认上限可以比较大。
第三步同时在游戏界面上用NGUI的Text组件动态接受用户输入的各类缓存池的上限值
第四步同时在游戏界面上用NGUI的Label组件动态显示并记录游戏当前的FPS以及当前的内存占用大小,每帧的FPS,内存占用都用EXEEL表格存储起来,用于计算平均FPS,最大的内存峰值。
第五步模拟一个多人战斗的PVP测试场景,不同门派不同体型的玩家释放不同的技能,同时还有大量的玩家不停的上线下线。
第六步根据个人的经验值,设置所有缓存池的上限,然后在第五步的测试场景下测试15min。
第七步整理测试过程中的内存和FPS的最大值最小值平均值,
第八步不断的调整各类缓存池的上限值,重复第五步到第八步的测试,观察游戏的流畅度,内存占用大小和上限的关系,取内存与性能最好的一组上限值,作为缓存池的上限。
例如手游《XX》中应用。
第一步找到游戏内现有的缓存池加以改造或者找到需要频繁加载卸载且比较耗时的资源,做一个用于存储该资源的缓存池,如特效缓存池,角色缓存池。
第二步根据个人的经验值,设置所有缓存池的上限,将特效缓存池的上限设为1000,角色缓存池上限为100。
第三步同时在游戏界面上用NGUI的Text组件动态接受用户输入的各类缓存池的上限值
第四步同时在游戏界面上用NGUI的Label组件动态显示并记录游戏当前的FPS以及当前的内存占用大小,每帧的FPS,内存占用都用EXEEL表格存储起来,用于计算平均FPS,最大的内存峰值。
第五步模拟一个多人战斗的PVP测试场景,不同门派不同体型的玩家释放不同的技能,同时还有大量的玩家不停的上线下线。
第六步用默认缓存池上限,在第五步的测试场景下测试15min
第七步整理测试过程中的内存和FPS的最大值最小值平均值
第八步不断的调整特效缓存池,角色缓存池的上限值,重复第五步到第八步的测试,观察游戏的流畅度,内存占用大小和上限的关系,取内存与性能最好的一组上限值,作为缓存池的上限。
应当认识到,本发明的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术-包括配置有计算机程序的非暂时性计算机可读存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作——根据在具体实施例中描述的方法和附图。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。
此外,可按任何合适的顺序来执行本文描述的过程的操作,除非本文另外指示或以其他方式明显地与上下文矛盾。本文描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。
进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本发明的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、RAM、ROM等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本文所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本发明所述的方法和技术编程时,本发明还包括计算机本身。
计算机程序能够应用于输入数据以执行本文所述的功能,从而转换输入数据以生成存储至非易失性存储器的输出数据。输出信息还可以应用于一个或多个输出设备如显示器。在本发明优选的实施例中,转换的数据表示物理和有形的对象,包括显示器上产生的物理和有形对象的特定视觉描绘。
以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相同的手段达到本发明的技术效果,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。在本发明的保护范围内其技术方案和/或实施方式可以有各种不同的修改和变化。