帧速率的检测方法和装置制造方法及图纸

技术编号:25479087 阅读:21 留言:0更新日期:2020-09-01 23:00
本公开关于一种帧速率的检测方法、装置、电子设备以及存储介质。该方法包括:将帧速率FPS检测触发定时器绑定在应用程序的线程上;启动FPS检测触发定时器,以使得FPS检测触发定时器按设定的定时周期,触发线程调用指定接口获取在所述定时周期内刷新显示的所有帧的标识;指定接口包括:操作系统提供的屏幕刷新帧的标识获取接口;根据单位时间长度内获取的所述刷新显示的所有帧的标识的数量,确定FPS。采用该方法可以实现解决现有技术中进行FPS检测存在的检测结果不准确的问题。

【技术实现步骤摘要】
帧速率的检测方法和装置
本公开涉及终端
,尤其涉及一种帧速率的检测方法、装置、电子设备以及存储介质。
技术介绍
移动端的应用性能管理(ApplicationPerformanceManagement,APM)需求中,通常需要使用一些指标来衡量用户对应用(Application)进行操作过程中的界面流畅度。目前,比较被认可的指标为应用程序界面的帧速率(此处指每秒显示的帧数,FramesPerSecond,FPS),通过检测FPS来衡量界面流畅度。可以理解的是,每秒显示的帧数越多,界面越流畅,反之,界面可能出现卡顿。现有技术中,以iOS移动端(即安装的操作系统包括iOS的移动端)为例,检测FPS主要通过以下两种方式:方式一:通过计算主线程上绑定的CADisplayLink的调用频率拟合FPS。CADisplayLink是一个可以允许应用程序以和屏幕刷新频率相同的频率,将应用程序的界面显示在屏幕上的定时器对象。方式二:通过检测主线程的RunLoop的轮询频率近似得到FPS。RunLoop是一个让程序保持持续运行状态的循环,在iOS中主要起到的作用包括:保持应用程序持续运行,以及在每次循环中处理应用程序中的各种事件(比如:触摸事件、定时器事件、UI刷新事件等)。iOS系统中,屏幕刷新依赖CoreAnimation,这个框架通过调度主线程的Runloop提交内容(比如需要绘制的内存对象或者位图等)给操作系统,操作系统将提交的内容转化为纹理后由硬件实现屏幕内容的刷新。通过给主线程的RunLoop添加监听,可以监听到RunLoop的轮询频率,进而将该轮询频率作为计算出的FPS。两种方式是分别计算主线程上绑定的CADisplayLink的调用频率或者主线程的RunLoop的轮询频率来作为FPS,计算结果其实不准确等于实际FPS,而只能是近似等于FPS。尤其在某些场景下,上述两种方式得到的FPS与实际的FPS相差更大。其中,实际的FPS应等于用户真实看到的应用程序界面的FPS。例如,针对第一种方式而言,主线程上绑定的CADisplayLink的调用频率受中央处理器(CentralProcessingUnit,CPU)和图像处理器(GraphicsProcessingUnit,GPU)的负载影响较大,在CPU或GPU负载过高的场景下,实际的FPS会降低,这样导致主线程上CADisplayLink的调用频率会远高于实际的FPS,因此以CADisplayLink的调用频率作为FPS会导致检测出的FPS不准确。针对第二种方式而言,主线程的RunLoop轮询频率仅依赖CPU对主线程的RunLoop的调度情况,与GPU无关。而事实上,实际的FPS大小却是会受到GPU负载影响的。这样,在GPU负载过高时,直接以RunLoop轮询频率近似作为实际的FPS,而忽略了GPU负载对FPS的影响,也会导致检测出的FPS不准确。
技术实现思路
本公开提供一种FPS检测方法、装置、电子设备以及存储介质,以至少解决采用现有技术进行FPS检测存在的检测结果不准确的问题。本公开的技术方案如下:根据本公开实施例的第一方面,提供一种帧速率的检测方法,包括:将帧速率FPS检测触发定时器绑定在应用程序的线程上;启动所述FPS检测触发定时器,以使得所述FPS检测触发定时器按设定的定时周期,触发所述线程调用指定接口获取在所述定时周期内刷新显示的所有帧的标识;所述指定接口包括:操作系统提供的屏幕刷新帧的标识获取接口;根据单位时间长度内获取的所述刷新显示的所有帧的标识的数量,确定FPS。在一种可选的实施方式中,启动所述FPS检测触发定时器,以使得所述FPS检测触发定时器按设定的定时周期,触发所述线程调用指定接口获取在所述定时周期内刷新显示的所有帧的标识,包括:按照屏幕常规刷新周期,周期性修改屏幕显示的界面中设置的至少一个像素点的指定显示属性的属性值;其中,所述指定显示属性包括与所述像素点在界面中显示方式相关的属性;启动所述FPS检测触发定时器,以使得所述FPS检测触发定时器按所述定时周期触发所述线程调用指定接口获取:通过所述周期性修改屏幕显示的界面中设置的至少一个像素点的指定显示属性的属性值的方式,在所述定时周期内触发刷新显示的所有帧的标识。在一种可选的实施方式中,所述方法还包括:在所述屏幕显示的界面中,设置具备所述指定显示属性的所述至少一个像素点。在一种可选的实施方式中,所述像素点的指定显示属性,包括:透明度和色值中的至少一种。在一种可选的实施方式中,所述线程包括:异步线程。在一种可选的实施方式中,根据单位时间长度内获取的所述刷新显示的所有帧的标识的数量,确定FPS后,所述方法还包括:存储在预设时间长度内确定的各FPS;基于确定的各FPS,确定所述应用程序的界面显示流畅度。在一种可选的实施方式中,基于确定的各FPS,确定所述应用程序的界面显示流畅度,包括:将存储的在预设时间长度内确定的各FPS上报于服务端,以使得服务端基于所述在预设时间长度内确定的各FPS,确定所述应用程序的界面流畅度。在一种可选的实施方式中,所述操作系统包括iOS。根据本公开实施例的第二方面,提供一种帧速率的检测装置,包括:绑定模块,被配置为执行将帧速率FPS检测触发定时器绑定在应用程序的线程上;获取模块,被配置为执行启动所述FPS检测触发定时器,以使得所述FPS检测触发定时器按设定的定时周期,触发所述线程调用指定接口获取在所述定时周期内刷新显示的所有帧的标识;所述指定接口包括:操作系统提供的屏幕刷新帧的标识获取接口;确定模块,被配置为执行根据单位时间长度内获取的所述刷新显示的所有帧的标识的数量,确定FPS。在一种可选的实施方式中,所述获取模块,包括:修改单元,被配置为执行按照所述屏幕常规刷新周期,周期性修改屏幕显示的界面中设置的至少一个像素点的指定显示属性的属性值;其中,所述指定显示属性包括与所述像素点在界面中显示方式相关的属性;获取单元,被配置为执行启动所述FPS检测触发定时器,以使得所述FPS检测触发定时器按所述定时周期触发所述线程调用指定接口获取:通过所述周期性修改屏幕显示的界面中设置的至少一个像素点的指定显示属性的属性值的方式,在所述定时周期内触发刷新显示的所有帧的标识。在一种可选的实施方式中,所述装置还包括:设置模块,被配置为执行在所述屏幕显示的界面中,设置具备所述指定显示属性的所述至少一个像素点。在一种可选的实施方式中,所述像素点的指定显示属性,包括:透明度和色值中的至少一种。在一种可选的实施方式中,所述线程包括:异步线程。在一种可选的实施方式中,所述装置还包括:存储模块,被配置为执行存储在预设时间长度内确定的各FPS;确定模块,被配置为执行基于确定的各FPS,确定所述应用程序的界面显示流畅度。在一本文档来自技高网
...

【技术保护点】
1.一种帧速率的检测方法,其特征在于,包括:/n将帧速率FPS检测触发定时器绑定在应用程序的线程上;/n启动所述FPS检测触发定时器,以使得所述FPS检测触发定时器按设定的定时周期,触发所述线程调用指定接口获取在所述定时周期内刷新显示的所有帧的标识;所述指定接口包括:操作系统提供的屏幕刷新帧的标识获取接口;/n根据单位时间长度内获取的所述刷新显示的所有帧的标识的数量,确定FPS。/n

【技术特征摘要】
1.一种帧速率的检测方法,其特征在于,包括:
将帧速率FPS检测触发定时器绑定在应用程序的线程上;
启动所述FPS检测触发定时器,以使得所述FPS检测触发定时器按设定的定时周期,触发所述线程调用指定接口获取在所述定时周期内刷新显示的所有帧的标识;所述指定接口包括:操作系统提供的屏幕刷新帧的标识获取接口;
根据单位时间长度内获取的所述刷新显示的所有帧的标识的数量,确定FPS。


2.根据权利要求1所述的方法,其特征在于,启动所述FPS检测触发定时器,以使得所述FPS检测触发定时器按设定的定时周期,触发所述线程调用指定接口获取在所述定时周期内刷新显示的所有帧的标识,包括:
按照屏幕常规刷新周期,周期性修改屏幕显示的界面中设置的至少一个像素点的指定显示属性的属性值;其中,所述指定显示属性包括与所述像素点在界面中显示方式相关的属性;
启动所述FPS检测触发定时器,以使得所述FPS检测触发定时器按所述定时周期触发所述线程调用指定接口获取:通过所述周期性修改屏幕显示的界面中设置的至少一个像素点的指定显示属性的属性值的方式,在所述定时周期内触发刷新显示的所有帧的标识。


3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在所述屏幕显示的界面中,设置具备所述指定显示属性的所述至少一个像素点。


4.根据权利要求2所述的方法,其特征在于,所述像素点的指定显示属性,包括:透明度和色值中的至少一种。


5.根据权利要求1所述的方法,其特征在...

【专利技术属性】
技术研发人员:於林涛
申请(专利权)人:北京达佳互联信息技术有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1