一种流畅度的评估方法和移动终端以及存储介质与流程

文档序号:11432175阅读:212来源:国知局
一种流畅度的评估方法和移动终端以及存储介质与流程

本发明涉及计算机技术领域,尤其涉及一种流畅度的评估方法和移动终端以及存储介质。



背景技术:

随着智能移动终端的快速发展,各种移动终端如手机、平板电脑等的使用越来越普及,用户使用移动终端的频率和时间也越来越多,用户在使用移动终端的过程中,流畅性是影响用户对设备性能评价最直接和重要的因素之一,移动终端的应用程序(application,app)是否流畅,己成为用户衡量其性能的重要指标。

在用户操作移动终端的过程中,移动终端的显示界面通常会显示应用程序的画面,该画面是由多帧静态画面组成的,当画面显示比较流畅的时候,用户人眼的感觉会比较舒服,用户体验度也会较好,而如果画面显示不流畅,出现卡顿、抖动的现象,用户的体验度就会较低。

移动终端的图像变化是否流畅运行直接影响用户体验,因此流畅度性能测试对于开发者优化改进应用程序、提高用户体验具有很重要的现实意义。现有技术中,移动终端的的图像变化的流畅度测试主要由测试人员通过开发工具进行性能优化测试,而对于用户在实际的移动终端使用环境中,用户不可能借助于专业的开发工具来监测移动终端的流畅度,用户无法获取到在移动终端使用环境中的卡顿情况。



技术实现要素:

本发明实施例提供了一种流畅度的评估方法和移动终端以及存储介质,用于实现用户在真实使用环境下的流畅度评估。

为解决上述技术问题,本发明实施例提供以下技术方案:

第一方面,本发明实施例提供一种流畅度的评估方法,所述方法应用于移动终端,所述移动终端设置有中央处理器cpu和图形处理器gpu,所述cpu和所述gpu通过总线进行通信,所述方法包括:

获取所述cpu绘制图像数据帧所耗用的第一时长,以及获取所述gpu在接收到同步绘制指令之后将所述图像数据帧渲染后生成位图bitmap像素数据帧所耗用的第二时长,所述同步绘制指令由所述cpu绘制完成所述图像数据帧之后通过所述总线向所述gpu发送;

根据所述第一时长计算所述cpu的第一每秒传输帧数fps,以及根据所述第二时长计算所述gpu的第二fps;

判断所述第一fps和所述第二fps是否分别满足预定的帧数门限条件,并根据判断结果确定所述移动终端的流畅度。

第二方面,本发明实施例还提供一种移动终端,所述移动终端设置有中央处理器cpu和图形处理器gpu,所述cpu和所述gpu通过总线进行通信,所述移动终端包括:

耗时获取模块,用于获取所述cpu绘制图像数据帧所耗用的第一时长,以及获取所述gpu在接收到同步绘制指令之后将所述图像数据帧渲染后生成位图bitmap像素数据帧所耗用的第二时长,所述同步绘制指令由所述cpu绘制完成所述图像数据帧之后通过所述总线向所述gpu发送;

帧数计算模块,用于根据所述第一时长计算所述cpu的第一每秒传输帧数fps,以及根据所述第二时长计算所述gpu的第二fps;

流畅度判断模块,用于判断所述第一fps和所述第二fps是否分别满足预定的帧数门限条件,并根据判断结果确定所述移动终端的流畅度。

本申请的第三方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。

从以上技术方案可以看出,本发明实施例具有以下优点:

在本发明实施例中,获取cpu绘制图像数据帧所耗用的第一时长,以及获取gpu在接收到同步绘制指令之后将图像数据帧渲染后生成bitmap像素数据帧所耗用的第二时长,同步绘制指令由cpu绘制完成图像数据帧之后通过总线向gpu发送,根据第一时长计算cpu的第一每秒传输帧数fps,以及根据第二时长计算gpu的第二fps,判断第一fps和第二fps是否分别满足预定的帧数门限条件,并根据判断结果确定移动终端的流畅度。本发明实施例中在cpu绘制图像数据帧时通过第一时长计算出了cpu的第一fps,在gpu渲染该图像数据帧时通过第二时长计算出了gpu的第二fps,即在cpu和gpu的运行时测量了fps,从而获取到用户在真实使用移动终端的环境下的第一fps和第二fps,通过对第一fps和第二fps的评估可以确定出移动终端的流畅度,本发明实施例中不需要由测试人员使用开发工具就可以判断出移动终端的流畅度,也不需要局限于开发环境,同样适用于用户使用移动终端的使用环境。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的技术人员来讲,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的移动终端内的硬件结构之间的连接示意图;

图2为本发明实施例提供的一种流畅度的评估方法的流程方框示意图;

图3为本发明实施例提供的移动终端在显示设备上显示图像的数据处理过程示意图;

图4为本发明实施例提供的移动终端采用ios系统时使用主线程的实现场景示意图;

图5为本发明实施例提供的gpu执行同步绘制指令的实现场景示意图;

图6-a为本发明实施例提供的一种移动终端的组成结构示意图;

图6-b为本发明实施例提供的一种耗时获取模块的组成结构示意图;

图6-c为本发明实施例提供的另一种耗时获取模块的组成结构示意图;

图6-d为本发明实施例提供的另一种耗时获取模块的组成结构示意图;

图6-e为本发明实施例提供的另一种耗时获取模块的组成结构示意图;

图6-f为本发明实施例提供的一种帧数计算模块的组成结构示意图;

图7为本发明实施例提供的流畅度的评估方法应用于终端的组成结构示意图。

具体实施方式

本发明实施例提供了一种流畅度的评估方法和移动终端以及存储介质,用于实现用户在真实使用环境下的流畅度评估。

为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域的技术人员所获得的所有其他实施例,都属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。

以下分别进行详细说明。

图1是本发明一个实施例中提供的移动终端内的硬件结构之间的连接示意图。该移动终端可以执行后续实施例中描述的流畅度的评估方法,该移动终端具体可以为智能手机、平板电脑、台式电脑、多媒体播放器、电子阅读器等电子设备,只要该移动终端中设置有中央处理器(centralprocessingunit,cpu)和图形处理器(graphicsprocessingunit,gpu),通过cpu和gpu完成图像输出即可,其中cpu和gpu之间通过系统总线(简称为总线)进行连接。该移动终端内除了设置cpu和gpu之外,该移动终端还可以包括:帧缓存区(framebuffer)、视频控制器和显示设备。其中,帧缓存区也称为帧缓冲存储器,是屏幕所显示画面的一个直接映象,帧缓存区中保存的是位映射图(bitmap)像素数据帧。帧缓存的每一存储单元对应屏幕上的一个像素,整个帧缓存对应一帧图像。视频控制器分别连接帧缓存区和显示设备,视频控制器可以按照一定的频率读取帧缓存区中的bitmap像素数据帧,根据读取到的数据操控制显示设备进行显示。视频控制器本身的刷新频率会影响用户的视觉体验。

接下来从移动终端的角度对本发明实施例提供的流畅度的评估方法进行举例说明,本发明实施例中可以在用户操作移动终端的使用过程中进行流畅度的评估,例如用户可以通过移动终端的显示设备点击应用程序,移动终端内的cpu和gpu对该应用程序进行图像绘制,本发明实施例中可以在应用程序的运行过程中实现流畅度的评估,请参阅图2所示,本发明一个实施例提供的流畅度的评估方法可应用于前述图1所示的移动终端,移动终端设置有cpu和gpu,cpu和gpu通过总线进行通信,该流畅度的评估方法可包括如下步骤:

201、获取cpu绘制图像数据帧所耗用的第一时长,以及获取gpu在接收到同步绘制指令之后将图像数据帧渲染后生成bitmap像素数据帧所耗用的第二时长,同步绘制指令由cpu绘制完成图像数据帧之后通过总线向gpu发送。

在本发明实施例中,移动终端将图像数据帧绘制在显示屏的过程可以包括:cpu首先对将要绘制的图像数据帧进行处理,将处理后的图像数据帧发送至gpu,gpu对该图像数据帧进行渲染处理,例如可以进行图像的放大与缩小,gpu对图像数据帧渲染完成后可以生成bitmap像素数据帧,视频控制器获取到该bitmap像素数据帧,将gpu发送来的bitmap像素数据帧绘制到显示屏上,从而人可以完成一次绘制图像的过程。

本发明实施例中,移动终端可以针对cpu和gpu分别进行监控,首先获取cpu绘制图像数据帧所耗用的时长,为便于描述,将cpu绘制图像数据帧的时长定义为“第一时长”。为了实现对gpu的监控,本发明实施例中需要cpu在绘制完成图像数据帧之后通过总线向gpu发送同步绘制指令,从而gpu在接收到同步绘制指令之后将图像数据帧渲染后生成bitmap像素数据帧,获取到gpu渲染图像数据帧生成bitmap像素数据帧所耗用的时长,为便于描述,将gpu渲染图像数据帧生成bitmap像素数据帧的时长定义为“第二时长”。由于本发明实施例中cpu可以向gpu发送同步绘制指令,从而gpu可根据该同步绘制指令执行渲染的处理流程,因此使得gpu的渲染耗时也变得可监控。因此通过cpu触发的同步绘制指令,便可以间接监测gpu的渲染耗时。

举例说明,在本发明实施例提供的移动终端内,当用户操作移动终端内的应用程序时,在时间顺序上,cpu先绘制一幅画面,这些画面不是一个完整的bitmap,cpu同时向gpu发送同步绘制指令,然后gpu根据这些指令在一定时间之内,渲染成bitmap数据,输入到视频控制器中。本发明实施例对上述过程中的cpu的绘制耗时和gpu的渲染耗时分别进行实时监控,从而可以获取到第一时长和第二时长。

在本发明的一些实施例中,步骤201中的获取cpu绘制图像数据帧所耗用的第一时长,包括:

a1、获取cpu使用主线程绘制n1个图像数据帧时触发定时器的触发次数n1,以及获取定时器从第1次触发至第n1次触发产生的耗时t1,其中,cpu每绘制一个图像数据帧需要触发一次定时器;

a2、根据n1和t1,通过如下方式计算第一时长l1:

l1=t1/n1。

其中,移动终端的操作系统中可以使用主线程进行图像绘制,假设需要绘制n1个图像数据帧,则需要触发操作系统中的定时器n1次,对于每次触发定时器都可以记录一个时间戳,获取定时器第1次触发的时间戳,以及第n1次触发的时间戳,通过这两个时间戳的时差可以计算出耗时t1。接下来通过t1和n1相除可以计算出cpu的第一时长l1。

上述实施例中可以采用平均耗时计算的方式得到第一时长,在本发明的另一些实施例中,可以对单次绘制的耗时进行计算,具体的步骤201中的获取cpu绘制图像数据帧所耗用的第一时长,包括:

b1、获取cpu使用主线程绘制上一个图像数据帧时所记录下的第一时间戳,以及获取cpu使用主线程绘制当前图像数据帧时所记录的第二时间戳;

b2、根据相邻两次绘制图像数据帧时分别记录的第一时间戳和第二时间戳计算出第一时长。

其中,移动终端的操作系统中可以使用主线程进行图像绘制,主线程中的循环执行指令会周期触发定时器,对于每次绘制一个图像数据帧都可以记录一个时间戳,根据相邻两次绘制图像数据帧时分别记录的第一时间戳和第二时间戳之间的时间差就可以得到第一时长。

在本发明的一些实施例中,步骤201中的获取gpu在接收到同步绘制指令之后将图像数据帧渲染后生成位图像素数据帧所耗用的第二时长,包括:

c1、获取gpu通过总线接收到的同步绘制指令的个数n1,以及获取gpu在每次接收到同步绘制指令之后渲染图像数据帧生成位图像素数据帧产生的总耗时t2,其中,cpu每绘制完成一个图像数据帧发送一次同步绘制指令;

c2、根据n1和t2,通过如下方式计算第二时长l2:

l2=t2/n1。

其中,移动终端的操作系统中可以使用主线程进行图像绘制,假设需要绘制n1个图像数据帧,则需要触发操作系统中的定时器n1次,cpu每绘制完成一个图像数据帧发送一次同步绘制指令,则cpu可以发送n1个的同步绘制指令,对于每次接收到同步绘制指令都可以记录一个时间戳,获取第1次接收到同步绘制指令触发的时间戳,以及第n1次接收到同步绘制指令触发的时间戳,通过这两个时间戳的时差可以计算出总耗时t2。接下来通过t2和n1相除可以计算出gpu的第二时长l1。

在本发明的另一些实施例中,步骤201中的获取gpu在接收到同步绘制指令之后将图像数据帧渲染后生成位图像素数据帧所耗用的第二时长,包括:

d1、获取gpu从cpu接收到同步绘制指令时记录下的第三时间戳,以及获取gpu将生成的位图像素数据帧存储到帧缓存区时记录下的第四时间戳;

d2、根据第三时间戳和第四时间戳计算出第二时长。

其中,移动终端的操作系统中可以使用主线程进行图像绘制,主线程中的循环执行指令会周期触发定时器,cpu每完成一个图像数据帧的绘制,cpu都会发送一个同步绘制指令给gpu,gpu接收到同步绘制指令时记录下第三时间戳,gpu将生成的位图像素数据帧存储到帧缓存区时记录下第四时间戳,通过第三时间戳和第四时间戳之间的时间差就可以得到第二时长。

202、根据第一时长计算cpu的第一每秒传输帧数(framepersecond,fps),以及根据第二时长计算gpu的第二fps。

在本发明实施例中,通过前述步骤201分别获取到cpu的第一时长和gpu的第二时长,通过该第一时长可以确定cpu绘制一张图像数据帧的刷新时间,通过该第二时长可以确定gpu渲染一张图像数据帧的刷新时间,通过cpu的第一时长可以计算出cpu的fps,为便于描述,定义为“第一fps”,通过gpu的第二时长可以计算出gpu的fps,为便于描述,定义为“第二fps”。fps是图像领域中的定义,是指画面每秒传输帧数,就是指动画或视频的画面数。fps是测量用于保存、显示动态视频的信息数量。每秒钟帧数愈多,所显示的动作就会愈流畅。本发明实施例中计算出的fps是指cpu绘制的fps,以及gpu中渲染的fps。cpu的绘制频率和gpu的渲染频率可以决定显示屏幕上的显示内容在单位时间内的刷新次数,在本实施例中,例如,电脑显示屏的默认屏幕刷新率为60hz,即每秒在电脑的显示屏上显示的画面的刷新率为60帧每秒。

在本发明的一些实施例中,步骤202根据第一时长计算cpu的第一每秒传输帧数fps,以及根据第二时长计算gpu的第二fps,包括:

e1、获取移动终端的视频控制器读取帧缓存区的读取频率;

e2、将第一时长和读取频率进行相乘计算从而得到第一fps,以及将第二时长和读取频率进行相乘计算从而得到第二fps。

其中,视频控制器从帧缓存区读取到数据后可以通过显示设备显示出应用程序的图像界面。通常显示设备的刷新频率会大于60hz,原因在于可以保证帧缓存区中的数据以用户感知不到卡顿的频率展示出来。假如存在一个连续的运动画面,需要保证视频控制器的读取频率刷新达到60hz。在获取到视频控制器的读取频率之后,将第一时长和读取频率进行相乘计算从而得到第一fps,以及将第二时长和读取频率进行相乘计算从而得到第二fps。

203、判断第一fps和第二fps是否分别满足预定的帧数门限条件,并根据判断结果确定移动终端的流畅度。

在本发明实施例中,针对cpu和gpu可以分别计算出各自的fps,则通过预定的帧数门限条件的判断,就可以确定出移动终端的流畅度,对于cpu和gpu,哪个处理器的fps不满足预定的帧数门限条件,就可以该处理器造成的移动终端的卡顿,通过fps与帧数门限条件的判断便可确定用户此时是否发生卡顿,以及卡顿的大致原因,根据用户此时的场景,便可确定用户执行的操作,哪里值得优化,在实际应用中,预定的帧数门限条件可以有多种,例如该帧数门限条件可以包括终端流畅时的帧数最小值,或者终端卡顿时的帧数最大值,详见后续的举例说明。

在本发明的一些实施例中,步骤203判断第一fps和第二fps是否分别满足预定的帧数门限条件,并根据判断结果确定移动终端的流畅度,包括:

f1、判断第一fps是否满足帧数门限条件,若第一fps满足帧数门限条件,确定cpu发生卡顿;

f2、判断第二fps是否满足帧数门限条件,若第二fps满足帧数门限条件,确定gpu发生卡顿。

其中,判断移动终端是否卡顿可以为:将获取到的cpu的第一fps和gpu的第二fps与各自对应的帧数门限条件进行比较,根据比较结果判断移动终端是否卡顿。例如,判断fps值是否大于帧数门限值,当fps值大于或等于帧数门限值时,判断移动终端不卡顿,当fps值小于帧数门限值时,判断移动终端卡顿,此时还可以对满足帧数门限条件的fps所对应的处理器进行标记,并记录fps值以及出现卡顿的帧的绘制时间,以便反馈给用户,使得用户可以确定是cpu发生卡顿还是gpu发生卡顿。

在本发明的一些实施例中,帧数门限条件,包括:第一门限、第二门限和第三门限,第三门限小于第一门限,第一门限小于第二门限。在这种情况下,步骤203判断第一fps和第二fps是否分别满足预定的帧数门限条件,并根据判断结果确定移动终端的流畅度,包括:

g1、判断第一fps和第二fps是否分别大于第一门限,以及判断第一fps和第二fps是否分别大于第二门限,以及判断第一fps和第二fps是否分别小于第三门限;

g2、若第一fps和第二fps都大于第一门限,确定移动终端的流畅度为相对流畅;若第一fps和第二fps都大于第二门限,确定移动终端的流畅度为非常流畅;若第一fps和第二fps都小于第三门限,确定移动终端的流畅度为明显卡顿。

其中,帧数门限条件,包括:第一门限、第二门限和第三门限,三个门限值之间满足如下关系:第三门限小于第一门限,第一门限小于第二门限。举例说明,第一门限可以为50fps,第二门限可以为55fps,第三门限可以为30fps,如果fps为50以上,确定移动终端的流畅度为相对流畅,如果fps为55以上,确定移动终端的流畅度为非常流畅,如果fps为30以下,确定移动终端的流畅度为明显卡顿。不限定的是,本发明实施例中预设的帧数门限条件还可以根据场景灵活设置,此处不做限定。

通过以上实施例对本发明实施例的描述可知,获取cpu绘制图像数据帧所耗用的第一时长,以及获取gpu在接收到同步绘制指令之后将图像数据帧渲染后生成bitmap像素数据帧所耗用的第二时长,同步绘制指令由cpu绘制完成图像数据帧之后通过总线向gpu发送,根据第一时长计算cpu的第一每秒传输帧数fps,以及根据第二时长计算gpu的第二fps,判断第一fps和第二fps是否分别满足预定的帧数门限条件,并根据判断结果确定移动终端的流畅度。本发明实施例中在cpu绘制图像数据帧时通过第一时长计算出了cpu的第一fps,在gpu渲染该图像数据帧时通过第二时长计算出了gpu的第二fps,即在cpu和gpu的运行时测量了fps,从而获取到用户在真实使用移动终端的环境下的第一fps和第二fps,通过对第一fps和第二fps的评估可以确定出移动终端的流畅度,本发明实施例中不需要由测试人员使用开发工具就可以判断出移动终端的流畅度,也不需要局限于开发环境,同样适用于用户使用移动终端的使用环境。

为便于更好的理解和实施本发明实施例的上述方案,下面举例相应的应用场景来进行具体说明。

在移动终端中,用户界面(userinterface,ui)是用户最为关切的地方,而ui的流畅度是重中之重,ui卡顿会给用户带来粗糙的体验,直接影响用户对应用程序(app)的印象。本发明实施例旨在对移动终端中的卡顿原因进行监控,同时根据监测结果判断卡顿的原因,对app下一步性能优化进行指导。现有技术中,通常是在开发app的环境下通过开发工具进行卡顿的监控,这需要在开发环境中利用专业工具,无法感知用户在使用app的环境中fps情况。

本发明实施例可以实现一种在开发环境和使用环境中监测ui的fps,这种方案性能消耗较小,并能够区分app的卡顿是cpu还是gpu的计算能力不足。为了描述清楚该方案,首先对appfps的原理进行阐述。

移动终端的显示原理如图1所示,视频控制器按照一定的频率读取帧缓存器(framebuffer)中的位图bitmap像素数据帧,根据读取到的数据控制显示设备进行显示。视频控制器本身刷新的fps会影响用户的视觉体验,比如阴极射线显像管(cathoderaytube,crt)彩电刷新的频率可根据电源的频率60hz确定,液晶显示设备的刷新频率可以达到120hz,所以液晶显示设备给用户感觉更加清晰。通常显示设备的刷新频率会小于60hz,原因在于可以保证framebuffer中的数据以用户感知不到卡顿的频率展示出来。假如存在一个连续的运动画面,不仅要保证显示设备的频率刷新达到60hz,同时保证数据的“采样”频率达到60hz,才不会使用户感知到卡顿。

这里所说的“采样”频率就是指的cpu绘制画面的频率,以及gpu渲染画面的频率。如图3所示,在时间顺序上,cpu先绘制一幅画面,这些画面不是一个完整的bitmap,cpu绘制完成一个图像数据帧之后发送同步绘制指令给gpu,然后gpu根据这些指令在一定时间之内,渲染成bitmap数据帧,输入到视频控制器中。

如图3所示,在垂直同步(verticalsynchronization,vsync)机制中,在显示过程中,cpu先进行图像绘制,然后gpu在cpu的同步绘制指令的触发下进行图像渲染,流畅度可以为1秒(s)内循环(loop)运行的次数。在丢帧的情况下,1s内60个loop因为某几次工作时间超过了16.7ms就会发生丢帧,这样loop就无法运行60次,60次为理论最大值。由此可知,流畅度越小,表明当前应用程序越卡顿。举例说明,在显示过程的第1个帧显示中,cpu先进行图像绘制,然后gpu在cpu的同步绘制指令的触发下进行图像渲染,cpu和gpu在下一个vsync到达之前都完成图像处理,此时显示设备可以正常显示。在显示过程的第2个帧显示中,cpu先进行图像绘制,然后gpu在cpu的同步绘制指令的触发下进行图像渲染,cpu绘制图像占用的时间长度大于前一帧中的cpu绘制图像占用的时间长度,gpu在下一个vsync到达之前没完成图像处理,此时显示设备显示掉帧。

对于移动终端内的两个处理器:cpu和gpu,它们之间通过系统总线交换数据。cpu和gpu之间的交互流程主要包括:首先cpu从文件系统里读出原始数据,分离出图形数据,然后放在系统内存中,这个时候gpu处于空闲。cpu准备把图形数据交给gpu,这时系统总线将数据从系统内存拷贝到gpu的显存里。cpu可以控制gpu开始数据处理,此时cpu空闲,而gpu开始渲染处理。gpu通过gpu核心电路进行图像的渲染处理,处理后的数据还是放在显存里面,cpu此时仍空闲。图形数据处理完成后,gpu通知cpu准备输出或者已经输出位图数据到显示设备。于是cpu开始读出下一段的图像数据帧。

通过图3可知,如果cpu绘制一张图片所需要的时间超过一定的时间长度,必然会导致下一张图片延迟处理。同理,gpu也是如此,若gpu渲染一张图片所需要的时间超过一定的时间长度,也会导致下一张图片的延迟处理。为了保证app的ui界面的流畅性,必须使得cpu的绘制帧率、gpu的绘制帧率都达到60fps才能保证显示效果的流畅,即cpu的绘制帧率达到60fps,gpu的绘制帧率也达到60fps,例如一定时间长度可以是1/60s,即16.7ms。在本发明实施例中可以测算出cpu绘制一张图片的刷新时间以及gpu渲染一张图片的刷新时间,分别测算出cpu的fps和gpu的fps,如果哪个处理器的fps小于60,那么就可以确定哪个处理器的计算能力不足所带来的卡顿。

接下来对cpu的fps测算进行举例说明,如图4所示,以移动终端的操作系统为ios(iphoneoperatingsystem)为例,在移动终端的操作系统中包括有:图像服务进程、runloop、观察者对象(即source类和observer类)、cadisplaylink。ios的cpu图像绘制是在主线程中完成的,主线程的runloop完成了这个任务,这个runloop以每秒60次的循环进行不停的绘制工作,在ios中,runloop用于运行循环。在runloop的运行逻辑中,runloop通知观察者observer即将进入runloop,此时通知观察者observer处理定时器(timer),通知观察者observer处理source类(即触摸,滚动)。cadisplaylink是一个能让用户以和屏幕刷新率同步的频率将特定的内容画到屏幕上的定时器类。cadisplaylink以特定模式注册到runloop后,每当屏幕显示内容刷新结束的时候,runloop就会向cadisplaylink指定的目标(target)发送一次指定的选择(selector)消息,cadisplaylink类对应的selector就会被调用一次。ios中的cadisplaylink定时器的执行周期跟cpu的画面绘制帧率保持一致,通过在定时器中每次触发记录下的时间戳,累计多次便可以计算出cpu这边时间的平均fps。比如定时器总共触发了n次,总共耗时t秒(s),那么这段时间的fps为:((16.7)/(t/n))*60。例如,若计算出的fps为50以上,则相对流畅,若计算出的fps为55以上,则非常流畅,如果计算出的fps为30以下会带来明显卡顿。

接下来介绍本发明实施例提供的gpu的测算方法,现有技术中还不存在对gpu的测算方式。在cpu的fps测算过程中描述了一种定时器,这个定时器会在1/60s时触发,假如在触发的方法中执行gpu的一种同步绘制指令,那么便可以间接监测gpu的卡顿情况,计算方法与cpu的fps测算方法相类似。gpu发生卡顿的时候,那么其绘制指令必然发生等待,那么此时等待必然造成计算数据fps值的降低,说明gpu此时忙,性能成为平瓶颈。

在上述实施例中分别计算出cpu的fps和gpu的fps之后,便可确定用户此时是否发生卡顿,以及卡顿的大致原因,即cpu卡顿或者gpu卡顿,根据用户此时的场景,便可确定用户执行的操作,哪里值得优化。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

为便于更好的实施本发明实施例的上述方案,下面还提供用于实施上述方案的相关装置。

请参阅图6-a所示,本发明实施例提供的一种移动终端600,所述移动终端设置有cpu和gpu,所述cpu和所述gpu通过总线进行通信,所述移动终端600包括:耗时获取模块601、帧数计算模块602、流畅度判断模块603,其中,

耗时获取模块601,用于获取所述cpu绘制图像数据帧所耗用的第一时长,以及获取所述gpu在接收到同步绘制指令之后将所述图像数据帧渲染后生成位图bitmap像素数据帧所耗用的第二时长,所述同步绘制指令由所述cpu绘制完成所述图像数据帧之后通过所述总线向所述gpu发送;

帧数计算模块602,用于根据所述第一时长计算所述cpu的第一每秒传输帧数fps,以及根据所述第二时长计算所述gpu的第二fps;

流畅度判断模块603,用于判断所述第一fps和所述第二fps是否分别满足预定的帧数门限条件,并根据判断结果确定所述移动终端的流畅度。

在本发明的一些实施例中,请参阅图6-b所示,所述耗时获取模块601,包括:

第一获取模块6011,用于获取所述cpu使用主线程绘制n1个图像数据帧时触发定时器的触发次数n1,以及获取所述定时器从第1次触发至第n1次触发产生的耗时t1,其中,所述cpu每绘制一个图像数据帧需要触发一次所述定时器;

第一计算模块6012,用于根据所述n1和所述t1,通过如下方式计算所述第一时长l1:

l1=t1/n1。

在本发明的一些实施例中,请参阅图6-c所示,所述耗时获取模块601,包括:

第二获取模块6013,用于获取所述cpu使用主线程绘制上一个图像数据帧时所记录下的第一时间戳,以及获取所述cpu使用所述主线程绘制当前图像数据帧时所记录的第二时间戳;

第二计算模块6014,用于根据相邻两次绘制图像数据帧时分别记录的第一时间戳和第二时间戳计算出所述第一时长。

在本发明的一些实施例中,请参阅图6-d所示,所述耗时获取模块601,包括:

第三获取模块6015,用于获取所述gpu通过所述总线接收到的同步绘制指令的个数n1,以及获取所述gpu在每次接收到所述同步绘制指令之后渲染所述图像数据帧生成位图像素数据帧产生的总耗时t2,其中,所述cpu每绘制完成一个图像数据帧发送一次同步绘制指令;

第三计算模块6016,用于根据所述n1和所述t2,通过如下方式计算所述第二时长l2:

l2=t2/n1。

在本发明的一些实施例中,请参阅图6-e所示,所述耗时获取模块601,包括:

第四获取模块6017,用于获取所述gpu从所述cpu接收到所述同步绘制指令时记录下的第三时间戳,以及获取所述gpu将生成的位图像素数据帧存储到帧缓存区时记录下的第四时间戳;

第四计算模块6018,用于根据所述第三时间戳和所述第四时间戳计算出所述第二时长。

在本发明的一些实施例中,请参阅图6-f所示,所述帧数计算模块602,包括:

第五获取模块6021,用于获取所述移动终端的视频控制器读取帧缓存区的读取频率;

第五计算模块6022,用于将所述第一时长和所述读取频率进行相乘计算从而得到所述第一fps,以及将所述第二时长和所述读取频率进行相乘计算从而得到所述第二fps。

在本发明的一些实施例中,所述流畅度判断模块603,具体用于判断所述第一fps是否满足所述帧数门限条件,若所述第一fps满足所述帧数门限条件,确定所述cpu发生卡顿;判断所述第二fps是否满足所述帧数门限条件,若所述第二fps满足所述帧数门限条件,确定所述gpu发生卡顿。

在本发明的一些实施例中,所述帧数门限条件,包括:第一门限、第二门限和第三门限,所述第三门限小于所述第一门限,所述第一门限小于所述第二门限;

所述流畅度判断模块603,具体用于判断所述第一fps和所述第二fps是否分别大于所述第一门限,以及判断第一fps和所述第二fps是否分别大于所述第二门限,以及判断第一fps和所述第二fps是否分别小于所述第三门限;

若所述第一fps和所述第二fps都大于所述第一门限,确定所述移动终端的流畅度为相对流畅;若所述第一fps和所述第二fps都大于所述第二门限,确定所述移动终端的流畅度为非常流畅;若所述第一fps和所述第二fps都小于所述第三门限,确定所述移动终端的流畅度为明显卡顿。

通过以上对本发明实施例的描述可知,获取cpu绘制图像数据帧所耗用的第一时长,以及获取gpu在接收到同步绘制指令之后将图像数据帧渲染后生成bitmap像素数据帧所耗用的第二时长,同步绘制指令由cpu绘制完成图像数据帧之后通过总线向gpu发送,根据第一时长计算cpu的第一每秒传输帧数fps,以及根据第二时长计算gpu的第二fps,判断第一fps和第二fps是否分别满足预定的帧数门限条件,并根据判断结果确定移动终端的流畅度。本发明实施例中在cpu绘制图像数据帧时通过第一时长计算出了cpu的第一fps,在gpu渲染该图像数据帧时通过第二时长计算出了gpu的第二fps,即在cpu和gpu的运行时测量了fps,从而获取到用户在真实使用移动终端的环境下的第一fps和第二fps,通过对第一fps和第二fps的评估可以确定出移动终端的流畅度,本发明实施例中不需要由测试人员使用开发工具就可以判断出移动终端的流畅度,也不需要局限于开发环境,同样适用于用户使用移动终端的使用环境。

本发明实施例还提供了另一种终端,如图7所示,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该终端可以为包括手机、平板电脑、pda(personaldigitalassistant,个人数字助理)、pos(pointofsales,销售终端)、车载电脑等任意终端设备,以终端为手机为例:

图7示出的是与本发明实施例提供的终端相关的手机的部分结构的框图。参考图7,手机包括:射频(radiofrequency,rf)电路1010、存储器1020、输入单元1030、显示单元1040、传感器1050、音频电路1060、无线保真(wirelessfidelity,wifi)模块1070、处理器1080、以及电源1090等部件。本领域技术人员可以理解,图7中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

下面结合图7对手机的各个构成部件进行具体的介绍:

rf电路1010可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器1080处理;另外,将设计上行的数据发送给基站。通常,rf电路1010包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(lownoiseamplifier,lna)、双工器等。此外,rf电路1010还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(globalsystemofmobilecommunication,gsm)、通用分组无线服务(generalpacketradioservice,gprs)、码分多址(codedivisionmultipleaccess,cdma)、宽带码分多址(widebandcodedivisionmultipleaccess,wcdma)、长期演进(longtermevolution,lte)、电子邮件、短消息服务(shortmessagingservice,sms)等。

存储器1020可用于存储软件程序以及模块,处理器1080通过运行存储在存储器1020的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器1020可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器1020可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

输入单元1030可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元1030可包括触控面板1031以及其他输入设备1032。触控面板1031,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板1031上或在触控面板1031附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板1031可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器1080,并能接收处理器1080发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板1031。除了触控面板1031,输入单元1030还可以包括其他输入设备1032。具体地,其他输入设备1032可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。

显示单元1040可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元1040可包括显示面板1041,可选的,可以采用液晶显示器(liquidcrystaldisplay,lcd)、有机发光二极管(organiclight-emittingdiode,oled)等形式来配置显示面板1041。进一步的,触控面板1031可覆盖显示面板1041,当触控面板1031检测到在其上或附近的触摸操作后,传送给处理器1080以确定触摸事件的类型,随后处理器1080根据触摸事件的类型在显示面板1041上提供相应的视觉输出。虽然在图7中,触控面板1031与显示面板1041是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板1031与显示面板1041集成而实现手机的输入和输出功能。

手机还可包括至少一种传感器1050,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板1041的亮度,接近传感器可在手机移动到耳边时,关闭显示面板1041和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。

音频电路1060、扬声器1061,传声器1062可提供用户与手机之间的音频接口。音频电路1060可将接收到的音频数据转换后的电信号,传输到扬声器1061,由扬声器1061转换为声音信号输出;另一方面,传声器1062将收集的声音信号转换为电信号,由音频电路1060接收后转换为音频数据,再将音频数据输出处理器1080处理后,经rf电路1010以发送给比如另一手机,或者将音频数据输出至存储器1020以便进一步处理。

wifi属于短距离无线传输技术,手机通过wifi模块1070可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图7示出了wifi模块1070,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。

处理器1080是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器1020内的软件程序和/或模块,以及调用存储在存储器1020内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器1080可包括一个或多个处理单元;优选的,处理器1080可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1080中。

手机还包括给各个部件供电的电源1090(比如电池),优选的,电源可以通过电源管理系统与处理器1080逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。

尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。

在本发明实施例中,该终端所包括的处理器1080还具有控制执行以上由终端执行的流畅度的评估方法流程。

另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用cpu、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本发明而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

综上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照上述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对上述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1