应用程序的流畅度检测方法、装置、终端及存储介质转让专利

申请号 : CN202010112413.4

文献号 : CN111290960B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 叶前乾

申请人 : 腾讯科技(深圳)有限公司

摘要 :

本申请提供了一种应用程序的流畅度检测方法、装置、终端及存储介质,属于软件测试技术领域。所述方法包括:运行目标应用程序,目标应用程序是基于游戏引擎运行的游戏应用程序;在目标应用程序的运行过程中,通过游戏引擎获取目标应用程序的至少一个功能模块的流畅度信息;根据流畅度信息,生成目标应用程序的流畅度检测结果。本申请实施例使得流程度检测结果中可以包含各个功能模块的流畅度信息,这样就可以明确地体现出流畅度不佳的功能模块,为流畅度优化指明方向,提升应用流畅度优化的效率。

权利要求 :

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任一项所述的方法。

说明书 :

应用程序的流畅度检测方法、装置、终端及存储介质

技术领域

[0001] 本申请实施例涉及软件测试技术领域,特别涉及一种应用程序的流畅度检测方法、装置、终端及存储介质。

背景技术

[0002] 游戏应用程序的运行流畅度会直接关系到用户使用时的产品体验。因此,在游戏应用程序的版本发布之前,会对游戏应用程序进行流畅度检测,在检测达标后才会正式发
布。
[0003] 在相关技术中,通过使用游戏引擎的开发版本,构建游戏应用程序的开发测试版本,将该游戏应用程序的开发测试版本在手机上安装运行,并通过USB(Universal Serial 
Bus,通用串行总线)将手机与测试人员使用的电脑相连接。在电脑上打开Unity编辑器,接
收手机传递过来的采样数据,然后测试人员在Unity编辑器中观察采样数据,以对游戏应用
程序的流畅度进行分析。
[0004] 目前,测试人员只能获知游戏应用程序的流畅度,但当该游戏应用程序的流畅度不佳时,测试人员并不能够获知造成流畅度不佳的原因,进而导致对应用流畅度优化的效
率低。

发明内容

[0005] 本申请实施例提供了一种应用程序的流畅度检测方法、装置、终端及存储介质,能够帮助测试人员定位流畅度不佳的原因,提升应用流畅度优化的效率。
[0006] 所述技术方案如下:
[0007] 一方面,本申请实施例提供了一种应用程序的流畅度检测方法,所述方法包括:
[0008] 运行目标应用程序,所述目标应用程序是基于游戏引擎运行的游戏应用程序;
[0009] 在所述目标应用程序的运行过程中,通过所述游戏引擎获取所述目标应用程序的至少一个功能模块的流畅度信息,所述流畅度信息用于指示执行所述功能模块时的流畅
度;
[0010] 根据所述流畅度信息,生成所述目标应用程序的流畅度检测结果。
[0011] 另一方面,本申请实施例提供了一种应用程序的流畅度检测装置,所述装置包括:
[0012] 应用运行模块,用于运行目标应用程序,所述目标应用程序是基于游戏引擎运行的游戏应用程序;
[0013] 信息获取模块,用于在所述目标应用程序的运行过程中,通过所述游戏引擎获取所述目标应用程序的至少一个功能模块的流畅度信息,所述流畅度信息用于指示执行所述
功能模块时的流畅度;
[0014] 结果生成模块,用于根据所述流畅度信息,生成所述目标应用程序的流畅度检测结果。
[0015] 再一方面,本申请实施例提供了一种终端,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至
少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述应用程序的流畅度
检测方法。
[0016] 再一方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至
少一段程序、所述代码集或指令集由处理器加载并执行以实现上述应用程序的流畅度检测
方法。
[0017] 还一方面,本申请实施例提供了一种计算机程序产品,所述计算机程序产品被处理器执行时,用于实现上述应用程序的流畅度检测方法。
[0018] 本申请实施例提供的技术方案可以包括如下有益效果:
[0019] 通过在游戏应用程序的运行过程中,通过游戏引擎获取该游戏应用程序的至少一个功能模块的流畅度信息,并据此生成该游戏应用程序的流畅度检测结果,使得流程度检
测结果中可以包含各个功能模块的流畅度信息,这样就可以明确地体现出流畅度不佳的功
能模块,为流畅度优化指明方向,提升应用流畅度优化的效率。

附图说明

[0020] 为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于
本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他
的附图。
[0021] 图1是本申请一个实施例提供的实施环境的示意图;
[0022] 图2是本申请一个实施例提供的应用程序的流畅度检测方法的流程图;
[0023] 图3是本申请一个实施例提供的各功能模块的执行耗时的示意图;
[0024] 图4是本申请另一个实施例提供的应用程序的流畅度检测方法的流程图;
[0025] 图5是图4实施例中步骤403的流程图;
[0026] 图6是本申请一个实施例提供的应用程序的流畅度检测装置的框图;
[0027] 图7是本申请另一个实施例提供的应用程序的流畅度检测装置的框图;
[0028] 图8是本申请一个实施例提供的终端的结构示意图。

具体实施方式

[0029] 为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
[0030] 请参考图1,其示出了本申请一个实施例提供的实施环境的示意图。该实施环境可以包括:终端120和后台设备140。
[0031] 终端120可以是诸如手机、平板电脑、多媒体播放设备、游戏主机、PC(Personal Computer,个人计算机)等电子设备。终端120中可以安装运行目标应用程序,该目标应用程
序是基于游戏引擎运行的游戏应用程序,且该目标应用程序可以是正式发布版本,而非内
部开发版本。在本申请实施例中,对游戏应用程序的类型不作限定,例如其可以是射击类游
戏、MOBA(Multiplayer Online Battle Arena,多人在线战术竞技)类游戏、RPG(Role‑
playing Game,角色扮演游戏)等等。终端120为普通用户所使用的用户设备。
[0032] 后台设备140可以是PC,是指由目标应用程序的后台技术人员(如测试人员、开发人员等)所使用的计算机设备。
[0033] 终端120和后台设备140之间可以通过网络进行直接或者间接地连接。其中,间接连接是指终端120和后台设备140之间并不直接建立通信连接,而是通过其它中转设备建立
通信连接。例如,终端120可以通过网络与目标应用程序的后台服务器建立第一通信连接,
后台设备140也可以通过网络与目标应用程序的后台服务器建立第二通信连接,这样,终端
120和后台设备140之间就通过后台服务器实现了间接连接。直接连接是指终端120和后台
设备140之间直接建立通信连接,中间并不存在中转设备。
[0034] 终端120可以在目标应用程序的运行过程中,采集流畅度信息并生成该目标应用程序的流畅度检测结果,然后将该流畅度检测结果发送给后台设备140。后台设备140可以
将该目标应用程序的流畅度检测结果进行展示,以便后台技术人员获知该流畅度检测结
果。
[0035] 请参考图2,其示出了本申请一个实施例提供的应用程序的流畅度检测方法的流程图。该方法的执行主体可以是上文介绍的实施环境中的终端120。该方法可以包括如下几
个步骤(201~203):
[0036] 步骤201,运行目标应用程序,目标应用程序是基于游戏引擎运行的游戏应用程序。
[0037] 游戏引擎是指一些已编写好的可编辑游戏系统或者一些交互式实时图像应用程序的核心组件。这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让
游戏设计者能容易和快速地做出游戏应用程序而不用由零开始。游戏引擎是一套由多个子
系统共同构成的复杂系统,从建模、动画到光影、粒子特效,从物理系统、碰撞检测到文件管
理、网络特性,还有专业的编辑工具和插件,几乎涵盖了开发过程中的所有重要环节。游戏
引擎可用于为目标应用程序提供一些基础的代码集、工具集等集合库,目标应用程序在运
行时能够利用上述集合库进行运行。可选地,游戏引擎可以是Unity 3d游戏引擎。
[0038] 步骤202,在目标应用程序的运行过程中,通过游戏引擎获取目标应用程序的至少一个功能模块的流畅度信息。
[0039] 流畅度信息用于指示执行功能模块时的流畅度。可选地,功能模块的流畅度信息包括:基于功能模块的起始执行时刻与结束执行时刻所确定的执行耗时。功能模块的执行
流畅度,可以由该功能模块的执行耗时来反映。通过获取该功能模块的起始执行时刻与结
束执行时刻,计算该起始执行时刻与结束执行时刻之间的时间差,即可以得到该功能模块
的执行耗时。起始执行时刻可以是该功能模块开始执行时的CPU(Central Processing 
Unit,中央处理器)时间,结束执行时刻可以是该功能模块执行完成时的CPU时间。
[0040] 功能模块是指用于实现目标应用程序的某项功能的软件模块。可选地,上述至少一个功能模块包括但不限于以下至少一项:主线程模块、主线程的脚本更新模块、主线程的
粒子更新模块、主线程的动画更新模块、主线程的界面更新模块、主线程的CPU渲染模块、主
线程的相机更新模块,以及GPU(Graphics Processing Unit,图形处理器)渲染线程模块。
当然,此处所述的功能模块仅是示例性和解释性的,在不同应用程序中,可以根据应用程序
所要实现的产品功能,设计不同的功能模块。
[0041] 在本申请实施例中,通过对目标应用程序的功能进行细粒度的划分,划分为一个个功能模块,然后分别获取每个功能模块的流畅度信息,从而对流畅度信息的统计更加细
致化,使得后台技术人员能够获知每个功能模块的流畅度信息。另外,后台技术人员可以结
合项目实际情况,确定出耗时负载较高(如耗时负载大于阈值)的功能模块,然后通过游戏
引擎获取这部分耗时负载较高的功能模块的流畅度信息。
[0042] 结合参考图3,游戏引擎采集目标应用程序的多个功能模块的执行耗时,包括主线程模块的耗时、脚本更新模块的耗时、粒子更新模块的耗时、动画更新模块的耗时、界面更
新模块的耗时、CPU渲染模块(线程)的耗时、相机更新模块的耗时、GPU渲染线程的耗时等,
然后基于该多个功能模块的执行耗时,生成目标应用程序的流畅度检测结果。
[0043] 步骤203,根据流畅度信息,生成目标应用程序的流畅度检测结果。
[0044] 目标应用程序的流畅度检测结果用于反映该目标应用程序的流畅度是否达标。目标应用程序的流畅度检测结果中可以包括该目标应用程序的平均帧率,即FPS(Frames Per 
Second,每秒传输帧数),以反映该目标应用程序的流畅度是否达标。另外,目标应用程序的
流畅度检测结果中,还包括各个功能模块的流畅度信息,以分别体现各个功能模块的流畅
度是否达标。这样,后台技术人员在得到该目标应用程序的流畅度检测结果之后,不仅能够
得到该目标应用程序的平均帧率,还能够得到该目标应用程序的各个功能模块的执行耗
时,这样就可以明确地获知流畅度不佳的功能模块,为流畅度优化指明方向。
[0045] 另外,游戏引擎在生成流畅度检测结果之后,可以将该流畅度检测结果存储在终端本地存储介质中,也可以通过网络向目标设备(如上文介绍的后台设备)发送该流畅度检
测结果。例如,游戏引擎可以将流畅度检测结果实时地存储在终端本地存储介质中,并定期
向后台设备发送最近获取到的流畅度检测结果。
[0046] 示例性地,流畅度检测结果所包括的信息可以如下表1所示:
[0047] 表1
[0048]
[0049] 在表1中,在同一个终端机型(也即终端机型1)上,分别运行目标应用程序的两个不同版本(即应用版本1和应用版本2),获取到该应用版本1的平均FPS和应用版本2的平均
FPS。另外,还获取到应用版本1的各个功能模块的执行耗时,以及应用版本2的各个功能模
块的执行耗时。与此同时,还可以输出应用版本1和应用版本2的平均FPS的差值,以及各个
功能模块的执行耗时的差值。
[0050] 综上所述,本申请实施例提供的技术方案,通过在游戏应用程序的运行过程中,通过游戏引擎获取该游戏应用程序的至少一个功能模块的流畅度信息,并据此生成该游戏应
用程序的流畅度检测结果,使得流程度检测结果中可以包含各个功能模块的流畅度信息,
这样就可以明确地体现出流畅度不佳的功能模块,为流畅度优化指明方向,提升应用流畅
度优化的效率。
[0051] 另外,在相关技术中,由于游戏应用程序的开发测试版本中,附带了非常多与调试相关的额外逻辑,这些额外逻辑本身会带来负载,导致基于该开发测试版本获取到的采样
数据,无法真实地反映出正式发布版本的流畅度。本申请实施例提供的技术方案,通过游戏
引擎直接获取游戏应用程序的正式发布版本的流畅度信息,能够克服相关技术所存在的上
述问题,提升流畅度检测的准确性。
[0052] 另外,本申请实施例提供的技术方案,不需要通过USB线来传输采样数据,终端可以灵活保存并按需向后台设备发送流畅度检测结果,提升了灵活性,且克服了USB连接所带
来的数据传输的不稳定性。
[0053] 请参考图4,其示出了本申请另一个实施例提供的应用程序的流畅度检测方法的流程图。该方法可以包括如下几个步骤(401~405):
[0054] 步骤401,运行目标应用程序,目标应用程序是基于游戏引擎运行的游戏应用程序。
[0055] 步骤402,通过游戏引擎执行自定义脚本,该自定义脚本用于确定是否开启流畅度信息的获取功能。
[0056] 该自定义脚本可以是由后台技术人员预先置入游戏引擎的脚本。通过执行该自定义脚本,游戏引擎能够确定是否开启流畅度信息的获取功能。例如,该自定义脚本可以定义
流畅度信息的获取功能的开启时间段,在该开启时间段内,开启流畅度信息的获取功能。可
选地,该自定义脚本可以是一个C#语言脚本。
[0057] 步骤403,若根据自定义脚本确定开启流畅度信息的获取功能,则在目标应用程序的运行过程中,通过游戏引擎执行采集功能逻辑,获取目标应用程序的至少一个功能模块
的流畅度信息。
[0058] 若根据自定义脚本确定开启流畅度信息的获取功能,则在目标应用程序的运行过程中,游戏引擎获取该目标应用程序的至少一个功能模块的流畅度信息;若根据自定义脚
本确定开启流畅度信息的获取功能,则在目标应用程序的运行过程中,游戏引擎不执行获
取该目标应用程序的至少一个功能模块的流畅度信息的步骤,正常运行该目标应用程序即
可。
[0059] 采集功能逻辑是用于实现流畅度信息的获取功能的代码逻辑,该采集功能逻辑可以采用C#语言编写。游戏引擎通过执行该采集功能逻辑,便可获取目标应用程序的至少一
个功能模块的流畅度信息。
[0060] 在示例性实施例中,如图5所示,以获取目标应用程序的第n(n为正整数)帧的流畅度信息为例,步骤403可以包括如下几个子步骤:
[0061] 步骤403a,响应于目标应用程序的第n帧开始,执行第n帧对应的应用处理逻辑;
[0062] 步骤403b,在应用处理逻辑的执行过程中,通过游戏引擎执行采集功能逻辑,获取目标应用程序的至少一个功能模块在第n帧的流畅度信息;
[0063] 步骤403c,响应于应用处理逻辑执行完成且第n帧的流畅度信息采集完成,执行业务层注册的回调函数,该业务层的业务逻辑在回调函数中向游戏引擎获取第n帧的流畅度
信息。
[0064] 在本申请实施例中,通过对游戏引擎进行改造,插入采集功能逻辑,通过游戏引擎执行该采集功能逻辑以获取目标应用程序的至少一个功能模块在第n帧的流畅度信息。有
关功能模块和流畅度信息的介绍说明,可参见上文实施例,本实施例对此不再赘述。
[0065] 在本申请实施例中,在执行第n帧对应的应用处理逻辑的过程中,同步执行采集功能逻辑,以获取应用处理逻辑执行过程中产生的各个功能模块的流畅度信息;并且,当第n
帧对应的应用处理逻辑执行完成之后,再停止执行采集功能逻辑,能够保证获取结果的完
整性和准确性。在第n帧对应的应用处理逻辑执行完成且该第n帧的流畅度信息采集完成之
后,执行业务层注册的回调函数,业务层的业务逻辑在该回调函数中向游戏引擎获取第n帧
的流畅度信息。之后,业务层的业务逻辑可以按照预定义的操作,将获取到的流畅度信息保
存到本地或者发送给后台设备进行归档。另外,对于每一帧,可以重复上述步骤403a~403c
的流程,以分别获取各个功能模块在各个帧的流畅度信息。然后,对于每个功能模块,通过
求取该功能模块在多个帧的流畅度信息的平均值,便能够获取该功能模块的平均流畅度信
息,将该功能模块的平均流畅度信息作为流畅度是否达标的评价指标。
[0066] 步骤404,根据流畅度信息,确定流畅度不达标的功能模块。
[0067] 在获取各个功能模块的平均流畅度信息之后,游戏引擎可以确定流畅度不达标的功能模块。例如,针对每个功能模块,可以制定相应的流畅度是否达标的指标,当某一功能
模块的平均流畅度信息达到相应指标时,确定该功能模块的流畅度达标;反之,当某一功能
模块的平均流畅度信息未达到相应指标时,确定该功能模块的流畅度不达标。
[0068] 步骤405,在目标应用程序的流畅度检测结果中,标识流畅度不达标的功能模块。
[0069] 目标应用程序的流畅度检测结果用于反映该目标应用程序的流畅度是否达标。目标应用程序的流畅度检测结果中可以包括该目标应用程序的平均帧率,以反映该目标应用
程序的流畅度是否达标。另外,目标应用程序的流畅度检测结果中,还包括各个功能模块的
流畅度信息,以分别体现各个功能模块的流畅度是否达标。另外,对于流畅度不达标的功能
模块,可以直接在流畅度检测结果中标识出来,实现自动化地标识检测流畅度未达标的功
能模块,以便于后台技术人员能够更加高效地获知流畅度未达标的功能模块。
[0070] 综上所述,本申请实施例提供的技术方案,通过在游戏应用程序的运行过程中,通过游戏引擎获取该游戏应用程序的至少一个功能模块的流畅度信息,并据此生成该游戏应
用程序的流畅度检测结果,使得流程度检测结果中可以包含各个功能模块的流畅度信息,
这样就可以明确地体现出流畅度不佳的功能模块,为流畅度优化指明方向,提升应用流畅
度优化的效率。
[0071] 另外,在每一帧对应的应用处理逻辑执行过程中,同步执行采集功能逻辑,以获取应用处理逻辑执行过程中产生的各个功能模块的流畅度信息,当该帧对应的应用处理逻辑
执行完成时,停止执行采集功能逻辑,能够保证获取结果的完整性和准确性。
[0072] 另外,流畅度信息的获取功能具备动态开启和关闭的能力,更具灵活性,且能够实现按需使用流畅度信息的获取功能。
[0073] 下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
[0074] 请参考图6,其示出了本申请一个实施例提供的应用程序的流畅度检测装置的框图。该装置具有实现上述方法示例的功能,所述功能可以由硬件实现,也可以由硬件执行相
应的软件实现。该装置可以是上文介绍的终端,也可以设置在终端中。该装置600可以包括:
应用运行模块610、信息获取模块620和结果生成模块630。
[0075] 应用运行模块610,用于运行目标应用程序,所述目标应用程序是基于游戏引擎运行的游戏应用程序。
[0076] 信息获取模块620,用于在所述目标应用程序的运行过程中,通过所述游戏引擎获取所述目标应用程序的至少一个功能模块的流畅度信息,所述流畅度信息用于指示执行所
述功能模块时的流畅度。
[0077] 结果生成模块630,用于根据所述流畅度信息,生成所述目标应用程序的流畅度检测结果。
[0078] 综上所述,本申请实施例提供的技术方案,通过在游戏应用程序的运行过程中,通过游戏引擎获取该游戏应用程序的至少一个功能模块的流畅度信息,并据此生成该游戏应
用程序的流畅度检测结果,使得流程度检测结果中可以包含各个功能模块的流畅度信息,
这样就可以明确地体现出流畅度不佳的功能模块,为流畅度优化指明方向,提升应用流畅
度优化的效率。
[0079] 在示例性实施例中,所述功能模块的流畅度信息包括:基于所述功能模块的起始执行时刻与结束执行时刻所确定的执行耗时。
[0080] 在示例性实施例中,所述游戏引擎包括用于获取所述流畅度信息的采集功能逻辑。所述信息获取模块620,用于通过所述游戏引擎执行所述采集功能逻辑,获取所述目标
应用程序的至少一个功能模块的流畅度信息。
[0081] 在示例性实施例中,所述信息获取模块620,用于:
[0082] 响应于所述目标应用程序的第n帧开始,执行所述第n帧对应的应用处理逻辑,所述n为正整数;
[0083] 在所述应用处理逻辑的执行过程中,通过所述游戏引擎执行所述采集功能逻辑,获取所述目标应用程序的至少一个功能模块在所述第n帧的流畅度信息;
[0084] 响应于所述应用处理逻辑执行完成且所述第n帧的流畅度信息采集完成,执行业务层注册的回调函数,所述业务层的业务逻辑在所述回调函数中向所述游戏引擎获取所述
第n帧的流畅度信息。
[0085] 在示例性实施例中,所述至少一个功能模块包括以下至少一项:主线程模块、主线程的脚本更新模块、主线程的粒子更新模块、主线程的动画更新模块、主线程的界面更新模
块、主线程的CPU渲染模块、主线程的相机更新模块,以及GPU渲染线程模块。
[0086] 在示例性实施例中,所述结果生成模块630,用于:
[0087] 根据所述流畅度信息,确定流畅度不达标的功能模块;
[0088] 在所述目标应用程序的流畅度检测结果中,标识所述流畅度不达标的功能模块。
[0089] 在示例性实施例中,如图7所示,所述装置600还包括:脚本执行模块640。
[0090] 脚本执行模块640,用于通过所述游戏引擎执行自定义脚本,所述自定义脚本用于确定是否开启所述流畅度信息的获取功能。
[0091] 所述信息获取模块620,还用于在根据所述自定义脚本确定开启所述流畅度信息的获取功能的情况下,通过所述游戏引擎获取所述目标应用程序的至少一个功能模块的流
畅度信息。
[0092] 在示例性实施例中,如图7所示,所述装置600还包括:信息存储模块650和/或信息发送模块660。
[0093] 信息存储模块650,用于将所述流畅度检测结果存储在本地存储介质中。
[0094] 信息发送模块660,用于通过网络向目标设备发送所述流畅度检测结果。
[0095] 需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,
即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,
上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这
里不再赘述。
[0096] 请参考图8,其示出了本申请一个实施例提供的终端800的结构框图。该终端800可以是手机、平板电脑、可穿戴设备、多媒体播放设备、游戏主机、PC等电子设备。
[0097] 通常,终端800包括有:处理器801和存储器802。
[0098] 处理器801可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器801可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field 
Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程
逻辑阵列)中的至少一种硬件形式来实现。处理器801也可以包括主处理器和协处理器,主
处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU;协处理器是用于对在待
机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器801可以在集成有GPU,
GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器801还可以包
括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的
计算操作。
[0099] 存储器802可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器802还可包括高速随机存取存储器,以及非易失性存储器,比如一个
或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器802中的非暂态的计算机可
读存储介质用于存储至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、至
少一段程序、代码集或指令集用于被处理器801所执行以实现上述应用程序的流畅度检测
方法。
[0100] 在一些实施例中,终端800还可选包括有:外围设备接口803和至少一个外围设备。处理器801、存储器802和外围设备接口803之间可以通过总线或信号线相连。各个外围设备
可以通过总线、信号线或电路板与外围设备接口803相连。具体地,外围设备可以包括:射频
电路804、触摸显示屏805、摄像头806、音频电路807、定位组件808和电源809中的至少一种。
[0101] 本领域技术人员可以理解,图8中示出的结构并不构成对终端800的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
[0102] 在示例性实施例中,还提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所
述代码集或所述指令集在被终端的处理器执行时以实现上述应用程序的流畅度检测方法。
[0103] 可选地,该计算机可读存储介质可以包括:ROM(Read Only Memory,只读存储器)、RAM(Random Access Memory,随机存取存储器)、SSD(Solid State Drives,固态硬盘)或光
盘等。其中,随机存取记忆体可以包括ReRAM(Resistance Random Access Memory,电阻式
随机存取记忆体)和DRAM(Dynamic Random Access Memory,动态随机存取存储器)。
[0104] 在示例性实施例中,还提供一种计算机程序产品,所述计算机程序产品被终端的处理器执行时,用于实现上述应用程序的流畅度检测方法。
[0105] 应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A
和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。另外,本文
中描述的步骤编号,仅示例性示出了步骤间的一种可能的执行先后顺序,在一些其它实施
例中,上述步骤也可以不按照编号顺序来执行,如两个不同编号的步骤同时执行,或者两个
不同编号的步骤按照与图示相反的顺序执行,本申请实施例对此不作限定。
[0106] 以上所述仅为本申请的示例性实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。