应用程序的流畅度检测方法、装置、终端及存储介质转让专利
申请号 : CN202010112413.4
文献号 : CN111290960B
文献日 : 2021-08-10
发明人 : 叶前乾
申请人 : 腾讯科技(深圳)有限公司
摘要 :
权利要求 :
1.一种应用程序的流畅度检测方法,其特征在于,所述方法包括:运行目标应用程序,所述目标应用程序是基于游戏引擎运行的游戏应用程序;
在所述目标应用程序的运行过程中,响应于所述目标应用程序的第n帧开始,执行所述第n帧对应的应用处理逻辑,所述n为正整数;
在所述应用处理逻辑的执行过程中,通过所述游戏引擎获取所述目标应用程序的至少一个功能模块在所述第n帧的流畅度信息,所述流畅度信息用于指示执行所述功能模块时的流畅度;
响应于所述应用处理逻辑执行完成且所述第n帧的流畅度信息采集完成,执行业务层注册的回调函数,所述业务层的业务逻辑在所述回调函数中向所述游戏引擎获取所述第n帧的流畅度信息;
基于所述至少一个功能模块在各个帧的流畅度信息,确定所述至少一个功能模块的流畅度信息;
根据所述至少一个功能模块的流畅度信息,生成所述目标应用程序的流畅度检测结果。
2.根据权利要求1所述的方法,其特征在于,所述功能模块的流畅度信息包括:基于所述功能模块的起始执行时刻与结束执行时刻所确定的执行耗时。
3.根据权利要求1所述的方法,其特征在于,所述游戏引擎包括用于获取所述流畅度信息的采集功能逻辑;
所述通过所述游戏引擎获取所述目标应用程序的至少一个功能模块在所述第n帧的流畅度信息,包括:
通过所述游戏引擎执行所述采集功能逻辑,获取所述目标应用程序的至少一个功能模块在所述第n帧的流畅度信息。
4.根据权利要求1所述的方法,其特征在于,所述至少一个功能模块包括以下至少一项:主线程模块、主线程的脚本更新模块、主线程的粒子更新模块、主线程的动画更新模块、主线程的界面更新模块、主线程的中央处理器CPU渲染模块、主线程的相机更新模块,以及图形处理器GPU渲染线程模块。
5.根据权利要求1所述的方法,其特征在于,所述根据所述至少一个功能模块的流畅度信息,生成所述目标应用程序的流畅度检测结果,包括:根据所述至少一个功能模块的流畅度信息,确定流畅度不达标的功能模块;
在所述目标应用程序的流畅度检测结果中,标识所述流畅度不达标的功能模块。
6.根据权利要求1至5任一项所述的方法,其特征在于,所述方法还包括:通过所述游戏引擎执行自定义脚本,所述自定义脚本用于确定是否开启所述流畅度信息的获取功能;
若根据所述自定义脚本确定开启所述流畅度信息的获取功能,则执行所述通过所述游戏引擎获取所述目标应用程序的至少一个功能模块的流畅度信息的步骤。
7.根据权利要求1至5任一项所述的方法,其特征在于,所述根据所述至少一个功能模块的流畅度信息,生成所述目标应用程序的流畅度检测结果之后,还包括:将所述流畅度检测结果存储在本地存储介质中;
或者,
通过网络向目标设备发送所述流畅度检测结果。
8.一种应用程序的流畅度检测装置,其特征在于,所述装置包括:应用运行模块,用于运行目标应用程序,所述目标应用程序是基于游戏引擎运行的游戏应用程序;
信息获取模块,用于在所述目标应用程序的运行过程中,响应于所述目标应用程序的第n帧开始,执行所述第n帧对应的应用处理逻辑,所述n为正整数;在所述应用处理逻辑的执行过程中,通过所述游戏引擎获取所述目标应用程序的至少一个功能模块在所述第n帧的流畅度信息,所述流畅度信息用于指示执行所述功能模块时的流畅度;响应于所述应用处理逻辑执行完成且所述第n帧的流畅度信息采集完成,执行业务层注册的回调函数,所述业务层的业务逻辑在所述回调函数中向所述游戏引擎获取所述第n帧的流畅度信息;基于所述至少一个功能模块在各个帧的流畅度信息,确定所述至少一个功能模块的流畅度信息;
结果生成模块,用于根据所述至少一个功能模块的流畅度信息,生成所述目标应用程序的流畅度检测结果。
9.一种终端,其特征在于,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1至7任一项所述的方法。
说明书 :
应用程序的流畅度检测方法、装置、终端及存储介质
技术领域
背景技术
布。
Bus,通用串行总线)将手机与测试人员使用的电脑相连接。在电脑上打开Unity编辑器,接
收手机传递过来的采样数据,然后测试人员在Unity编辑器中观察采样数据,以对游戏应用
程序的流畅度进行分析。
率低。
发明内容
度;
功能模块时的流畅度;
少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述应用程序的流畅度
检测方法。
少一段程序、所述代码集或指令集由处理器加载并执行以实现上述应用程序的流畅度检测
方法。
测结果中可以包含各个功能模块的流畅度信息,这样就可以明确地体现出流畅度不佳的功
能模块,为流畅度优化指明方向,提升应用流畅度优化的效率。
附图说明
本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他
的附图。
具体实施方式
序是基于游戏引擎运行的游戏应用程序,且该目标应用程序可以是正式发布版本,而非内
部开发版本。在本申请实施例中,对游戏应用程序的类型不作限定,例如其可以是射击类游
戏、MOBA(Multiplayer Online Battle Arena,多人在线战术竞技)类游戏、RPG(Role‑
playing Game,角色扮演游戏)等等。终端120为普通用户所使用的用户设备。
通信连接。例如,终端120可以通过网络与目标应用程序的后台服务器建立第一通信连接,
后台设备140也可以通过网络与目标应用程序的后台服务器建立第二通信连接,这样,终端
120和后台设备140之间就通过后台服务器实现了间接连接。直接连接是指终端120和后台
设备140之间直接建立通信连接,中间并不存在中转设备。
将该目标应用程序的流畅度检测结果进行展示,以便后台技术人员获知该流畅度检测结
果。
个步骤(201~203):
游戏设计者能容易和快速地做出游戏应用程序而不用由零开始。游戏引擎是一套由多个子
系统共同构成的复杂系统,从建模、动画到光影、粒子特效,从物理系统、碰撞检测到文件管
理、网络特性,还有专业的编辑工具和插件,几乎涵盖了开发过程中的所有重要环节。游戏
引擎可用于为目标应用程序提供一些基础的代码集、工具集等集合库,目标应用程序在运
行时能够利用上述集合库进行运行。可选地,游戏引擎可以是Unity 3d游戏引擎。
流畅度,可以由该功能模块的执行耗时来反映。通过获取该功能模块的起始执行时刻与结
束执行时刻,计算该起始执行时刻与结束执行时刻之间的时间差,即可以得到该功能模块
的执行耗时。起始执行时刻可以是该功能模块开始执行时的CPU(Central Processing
Unit,中央处理器)时间,结束执行时刻可以是该功能模块执行完成时的CPU时间。
粒子更新模块、主线程的动画更新模块、主线程的界面更新模块、主线程的CPU渲染模块、主
线程的相机更新模块,以及GPU(Graphics Processing Unit,图形处理器)渲染线程模块。
当然,此处所述的功能模块仅是示例性和解释性的,在不同应用程序中,可以根据应用程序
所要实现的产品功能,设计不同的功能模块。
致化,使得后台技术人员能够获知每个功能模块的流畅度信息。另外,后台技术人员可以结
合项目实际情况,确定出耗时负载较高(如耗时负载大于阈值)的功能模块,然后通过游戏
引擎获取这部分耗时负载较高的功能模块的流畅度信息。
新模块的耗时、CPU渲染模块(线程)的耗时、相机更新模块的耗时、GPU渲染线程的耗时等,
然后基于该多个功能模块的执行耗时,生成目标应用程序的流畅度检测结果。
Second,每秒传输帧数),以反映该目标应用程序的流畅度是否达标。另外,目标应用程序的
流畅度检测结果中,还包括各个功能模块的流畅度信息,以分别体现各个功能模块的流畅
度是否达标。这样,后台技术人员在得到该目标应用程序的流畅度检测结果之后,不仅能够
得到该目标应用程序的平均帧率,还能够得到该目标应用程序的各个功能模块的执行耗
时,这样就可以明确地获知流畅度不佳的功能模块,为流畅度优化指明方向。
测结果。例如,游戏引擎可以将流畅度检测结果实时地存储在终端本地存储介质中,并定期
向后台设备发送最近获取到的流畅度检测结果。
FPS。另外,还获取到应用版本1的各个功能模块的执行耗时,以及应用版本2的各个功能模
块的执行耗时。与此同时,还可以输出应用版本1和应用版本2的平均FPS的差值,以及各个
功能模块的执行耗时的差值。
用程序的流畅度检测结果,使得流程度检测结果中可以包含各个功能模块的流畅度信息,
这样就可以明确地体现出流畅度不佳的功能模块,为流畅度优化指明方向,提升应用流畅
度优化的效率。
数据,无法真实地反映出正式发布版本的流畅度。本申请实施例提供的技术方案,通过游戏
引擎直接获取游戏应用程序的正式发布版本的流畅度信息,能够克服相关技术所存在的上
述问题,提升流畅度检测的准确性。
来的数据传输的不稳定性。
流畅度信息的获取功能的开启时间段,在该开启时间段内,开启流畅度信息的获取功能。可
选地,该自定义脚本可以是一个C#语言脚本。
的流畅度信息。
本确定开启流畅度信息的获取功能,则在目标应用程序的运行过程中,游戏引擎不执行获
取该目标应用程序的至少一个功能模块的流畅度信息的步骤,正常运行该目标应用程序即
可。
个功能模块的流畅度信息。
信息。
关功能模块和流畅度信息的介绍说明,可参见上文实施例,本实施例对此不再赘述。
帧对应的应用处理逻辑执行完成之后,再停止执行采集功能逻辑,能够保证获取结果的完
整性和准确性。在第n帧对应的应用处理逻辑执行完成且该第n帧的流畅度信息采集完成之
后,执行业务层注册的回调函数,业务层的业务逻辑在该回调函数中向游戏引擎获取第n帧
的流畅度信息。之后,业务层的业务逻辑可以按照预定义的操作,将获取到的流畅度信息保
存到本地或者发送给后台设备进行归档。另外,对于每一帧,可以重复上述步骤403a~403c
的流程,以分别获取各个功能模块在各个帧的流畅度信息。然后,对于每个功能模块,通过
求取该功能模块在多个帧的流畅度信息的平均值,便能够获取该功能模块的平均流畅度信
息,将该功能模块的平均流畅度信息作为流畅度是否达标的评价指标。
模块的平均流畅度信息达到相应指标时,确定该功能模块的流畅度达标;反之,当某一功能
模块的平均流畅度信息未达到相应指标时,确定该功能模块的流畅度不达标。
程序的流畅度是否达标。另外,目标应用程序的流畅度检测结果中,还包括各个功能模块的
流畅度信息,以分别体现各个功能模块的流畅度是否达标。另外,对于流畅度不达标的功能
模块,可以直接在流畅度检测结果中标识出来,实现自动化地标识检测流畅度未达标的功
能模块,以便于后台技术人员能够更加高效地获知流畅度未达标的功能模块。
用程序的流畅度检测结果,使得流程度检测结果中可以包含各个功能模块的流畅度信息,
这样就可以明确地体现出流畅度不佳的功能模块,为流畅度优化指明方向,提升应用流畅
度优化的效率。
执行完成时,停止执行采集功能逻辑,能够保证获取结果的完整性和准确性。
应的软件实现。该装置可以是上文介绍的终端,也可以设置在终端中。该装置600可以包括:
应用运行模块610、信息获取模块620和结果生成模块630。
述功能模块时的流畅度。
用程序的流畅度检测结果,使得流程度检测结果中可以包含各个功能模块的流畅度信息,
这样就可以明确地体现出流畅度不佳的功能模块,为流畅度优化指明方向,提升应用流畅
度优化的效率。
应用程序的至少一个功能模块的流畅度信息。
第n帧的流畅度信息。
块、主线程的CPU渲染模块、主线程的相机更新模块,以及GPU渲染线程模块。
畅度信息。
即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,
上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这
里不再赘述。
Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程
逻辑阵列)中的至少一种硬件形式来实现。处理器801也可以包括主处理器和协处理器,主
处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU;协处理器是用于对在待
机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器801可以在集成有GPU,
GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器801还可以包
括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的
计算操作。
或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器802中的非暂态的计算机可
读存储介质用于存储至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、至
少一段程序、代码集或指令集用于被处理器801所执行以实现上述应用程序的流畅度检测
方法。
可以通过总线、信号线或电路板与外围设备接口803相连。具体地,外围设备可以包括:射频
电路804、触摸显示屏805、摄像头806、音频电路807、定位组件808和电源809中的至少一种。
述代码集或所述指令集在被终端的处理器执行时以实现上述应用程序的流畅度检测方法。
盘等。其中,随机存取记忆体可以包括ReRAM(Resistance Random Access Memory,电阻式
随机存取记忆体)和DRAM(Dynamic Random Access Memory,动态随机存取存储器)。
和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。另外,本文
中描述的步骤编号,仅示例性示出了步骤间的一种可能的执行先后顺序,在一些其它实施
例中,上述步骤也可以不按照编号顺序来执行,如两个不同编号的步骤同时执行,或者两个
不同编号的步骤按照与图示相反的顺序执行,本申请实施例对此不作限定。