CN115495036A - 应用流畅性数据采集方法、电子设备和存储介质 - Google Patents

应用流畅性数据采集方法、电子设备和存储介质 Download PDF

Info

Publication number
CN115495036A
CN115495036A CN202211429709.4A CN202211429709A CN115495036A CN 115495036 A CN115495036 A CN 115495036A CN 202211429709 A CN202211429709 A CN 202211429709A CN 115495036 A CN115495036 A CN 115495036A
Authority
CN
China
Prior art keywords
frame loss
frame
interval
application
rendering
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211429709.4A
Other languages
English (en)
Inventor
侯志伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Klook Network Technology Co ltd
Original Assignee
Shenzhen Klook Network Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Klook Network Technology Co ltd filed Critical Shenzhen Klook Network Technology Co ltd
Priority to CN202211429709.4A priority Critical patent/CN115495036A/zh
Publication of CN115495036A publication Critical patent/CN115495036A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1407General aspects irrespective of display type, e.g. determination of decimal point position, display with fixed or driving decimal point, suppression of non-significant zeros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请实施例提供一种应用流畅性数据采集方法、电子设备和存储介质,方法包括:在所述待检测应用运行阶段,获取本次渲染过程中的丢帧信息;基于本次渲染过程中的丢帧信息更新对应丢帧区间的丢帧发生次数;以及在所述待检测应用的有效生命周期结束后,根据每个丢帧区间的所述丢帧发生次数生成图表。通过该方法可以在应用的非开发阶段(如运行阶段)通过获取渲染过程中的丢帧数更新对应丢帧区间的丢帧发生次数,进而在待检测应用的有效生命周期结束后,根据每个丢帧区间的丢帧发生次数生成相应的图表展示给用户,进而用户查看柱形图可以直观的了解应用在有效生命周期内的多次渲染过程后各个丢帧区间的丢帧发生次数,并应用性能流程性。

Description

应用流畅性数据采集方法、电子设备和存储介质
技术领域
本申请涉及应用性能监控技术领域,尤其涉及一种应用流畅性数据采集方法。
背景技术
Flutter是Google推出的开源跨平台开发框架,可以快速在终端操作系统(iOS和Android)上构建高质量的原生用户界面。Flutter帮助开发者使用一套代码开发高性能、高稳定性、高帧率、低延迟的Android和iOS应用。
Flutter还提供了性能监测工具(如Performance Overlay),可以使用该Performance Overlay工具对开发的应用进行性能监测。然而该Performance Overlay工具只能在应用开发阶段使用,并且只能观测原始数据(如系统层面的每一帧的绘制时间),无法基于这些数据直观的看出应用的流畅性表现。
发明内容
本申请实施例提供一种应用流畅性数据采集方法、电子设备和存储介质,通过该方法可以通过观测显示屏的显示数据来确定应用的流畅性。
第一方面,本申请实施例提供一种应用流畅性数据采集方法,电子设备上安装有待检测应用,所述方法包括:在所述待检测应用运行阶段,获取本次渲染过程中的丢帧信息;基于本次渲染过程中的丢帧信息更新对应丢帧区间的丢帧发生次数;以及在所述待检测应用的有效生命周期结束后,根据每个丢帧区间的所述丢帧发生次数生成图表。通过该应用流畅性数据采集方法可以在应用的非开发阶段(如运行阶段)通过获取渲染过程中的丢帧数更新对应丢帧区间的丢帧发生次数,进而在待检测应用的有效生命周期结束后,根据每个丢帧区间的丢帧发生次数生成相应的图表展示给用户,进而用户查看柱形图可以直观的了解应用在有效生命周期内的多次渲染过程后各个丢帧区间的丢帧发生次数,并应用性能流程性。
进一步地,所述丢帧信息包括丢帧数;所述获取本次渲染过程中的丢帧信息包括:
获取所述电子设备的显示屏的第一渲染时间;基于第一渲染时间和第二渲染时间计算本次渲染过程中的丢帧数。
进一步地,所述取所述电子设备的显示屏的第一渲染时间包括:根据所述电子设备的显示屏的刷新率确定所述第一渲染时间。
在一种实施方式中,可以基于以下公式一计算得到该第一渲染时间(T1):
Figure 285112DEST_PATH_IMAGE001
公式一
其中,T1表示第一渲染时间,R1表示电子设备的显示屏的实际刷新率,1000表示1000毫秒(ms)。举例来说,若R1为60Hz,则可以计算得到T1为16.67ms。
进一步地,所述基于第一渲染时间和第二渲染时间计算本次渲染过程中的丢帧数包括通过以下公式计算:
Figure 740364DEST_PATH_IMAGE002
公式二
其中,LF表示一次渲染过程中的丢帧数,T2表示本次渲染过程中其中一帧的实际渲染时间,T1表示本次渲染过程中每一帧的理论渲染时间。
进一步地,所述丢帧区间包括第一区间、第二区间、第三区间、第四区间以及第五区间;其中,所述第一区间的丢帧数取值范围为[0,5)、所述第二区间的丢帧数取值范围为[5,10)、所述第三区间的丢帧数取值范围为[10,20)、所述第四区间的丢帧数取值范围为[20,40)、所述第五区间的丢帧数取值范围为[40,∞)。
进一步地,所述基于本次渲染过程中的丢帧信息更新对应丢帧区间的丢帧发生次数包括:根据所述本次渲染过程中的丢帧数确定对应的丢帧区间,并为所述对应的丢帧区间的丢帧发生次数累计加一。
进一步地,所述根据每个丢帧区间的所述丢帧发生次数生成图表包括:根据每个丢帧区间的所述丢帧发生次数生成柱状图;其中,所述柱状图的横轴表示丢帧区间,所述柱状图的竖轴表示发生丢帧的次数。
进一步地,在所述待检测应用的有效生命周期结束后,根据每个丢帧区间的所述丢帧发生次数生成图表之后,还包括:获取总帧时间以及实际帧数;基于所述总帧时间以及实际帧数计算平均帧率。
进一步地,所述基于所述总帧时间以及实际帧数计算平均帧率包括通过以下公式计算:
Figure 499241DEST_PATH_IMAGE003
其中,∆FR表示平均帧率,∆t表示平均帧时间,t0表示总帧时间,F表示实际帧数,1000表示1000毫秒(ms)。
进一步地,通过以下公式计算所述总帧时间:
Figure 3035DEST_PATH_IMAGE004
其中,t0表示总帧时间,LF表示丢帧数,F表示实际帧数,T1表示本次渲染过程中每一帧的理论渲染时间。
第二方面,本申请实施例还提供一种电子设备,该电子设备包括:处理器和存储器,所述存储器用于存储至少一条指令,所述指令由所述处理器加载并执行时以实现第一方面提供的应用流畅性数据采集方法。
第三方面,本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现第一方面提供的应用流畅性数据采集方法。
第四方面,本申请实施例还提供一种计算机程序产品,包括计算机程序或指令计算机程序或指令被处理器执行时实现第一方面提供的应用流畅性数据采集方法。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为Flutter的结构示意图;
图2为不同刷新率的刷新间隔对比示意图;
图3为本申请一个实施例提供的应用流畅性数据采集方法的流程图;
图4为本申请一个实施例提供的丢帧数计算流程示意图;
图5为本申请一个实施例提供的应用在有效生命周期内的丢帧信息的示意图;
图6a为本申请一个实施例提供的第一丢帧状态的柱状图;
图6b为本申请一个实施例提供的第二丢帧状态的柱状图;
图6c为本申请一个实施例提供的第三丢帧状态的柱状图;
图7为本申请一个实施例提供的电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为便于理解本申请方案,以下对本申请实施例涉及的概念进行相应说明。
1、关于Flutter
图1为Flutter的结构示意图,参照图1所示,框架Flutter主要包括框架(Framework)层11、引擎(Engine)层12以及嵌入(Embedder)层13。其中,Framework层11使用纯Dart编写,提供了包括:控件(Widget)、动画、绘制和手势等功能,支持UI界面,可构建Widget控件以及实现UI布局;Engine层12使用计算机程序设计语言C++编写,实现了框架Flutter的核心库,包括Dart虚拟机(Virtual Machine,VM)、动画和图形、文字渲染、通信通道、事件通知和插件架构等,在具体实现中,引擎采用的是2D图形渲染库Skia,虚拟机采用的是Dart VM;Embedder层13实现了各平台的壳(Shell),即实现各平台中为使用者提供操作页面的软件,主要工作包括渲染Surface的启动,线程启动和系统应用生命周期事件的交互等。
框架Flutter引擎启动时,会创建UI线程、GPU线程和IO线程。其中,UI线程主要用于引擎执行主隔离区(Root Isola te)中的所有Dart代码,将Widget转换生成图层树(LayerTree);GPU线程主要用于将LayerTree转换为具体的GPU指令,将跟设备GPU相关的Skia调用,转换为相应平台的绘制方式;IO线程主要用于处理一些比较耗时的输入/输出(Input/Output,IO)操作任务,如将图片从磁盘中读取,文件操作等。
2、关于帧率
帧率(Frame Rate),单位为每秒传输帧数(Frames Per Second,FPS),是指相应处理单元生成帧的速率,例如,图形处理器(Graphics Processing Unit,GPU)生成帧的速率,如30FPS、60FPS,其中,30FPS即为每秒传输30帧,60FPS则为每秒传输60帧。即,帧率越高GPU每秒输出的帧数越多。
3、关于刷新率
刷新率(Refresh Rate),单位为赫兹(Hz),是指设备刷新屏幕的频率,该值对于特定的设备来说是个常量,如60hz。若刷新率为60Hz,相当于显示屏每秒可以刷新60次,换言之,该显示屏每秒可以刷新60帧画面。若电子设备显示屏的刷新率为120Hz,则该显示屏每秒可以刷新120次,换言之,该显示屏每秒可以刷新120帧画面。即显示屏的刷新率越高,支持每秒刷新帧数越高,所显示画面稳定性越好。
图2为不同刷新率的刷新间隔对比示意图。
参照图2所示,示出了刷新率分别为30Hz、60Hz以及120Hz时的刷新间隔。显示画面为顺时针旋转的笑脸,其中,30Hz刷新率的相邻帧画面的刷新间隔为33.33ms,60Hz刷新率的相邻帧画面的刷新间隔为16.67ms,120Hz刷新率的相邻帧画面的刷新间隔为8.33ms,相比而言,刷新率越高,显示屏则可以更加显著的显示高速移动的物体,使用户观看体验更佳。
4、关于垂直同步
垂直同步(vsync)指GPU输出帧数和显示屏的垂直刷新率相同。
其中,电子设备的显示机制为GPU获取图形数据进行渲染,进而电子设备通过显示屏显示经过GPU渲染的内容,即通过二者(GPU和显示器)协同作业实现电子设备的画面显示。
垂直同步则可以协调显示屏刷新率和GPU输出帧数相匹配,以解决传输帧数与刷新率不同步的问题。垂直同步能够将显示屏刷新率调整到随着画面帧数即时变化,将画面每一帧同步到每一次刷新上,这样显示屏显示的画面能够更加稳定。
以上为针对本申请实施例涉及的概念的相应说明。
以下结合附图对本申请实施例提供的应用流畅性数据采集方法进行详细说明。
本申请实施例提供的该应用流畅性数据采集方法可以应用于电子设备,该电子设备可以包括手机、笔记本电脑、个人数字助理(Personal Digital Assistant,PDA)、平板电脑、智能穿戴设备等具有显示功能的设备。
本申请实施例提供的应用流畅性数据采集方法可以通过观测显示屏显示画面的相关情况来衡量应用的性能流畅性,进而可以实现在应用的非开发阶段(如开发完成的应用的运行阶段)观测应用的流畅性。
在一种实施方式中,该应用可以为页面应用(如小程序)。在其他实施方式中该应用还可以为其他类型应用,本申请对应用的类型不做限制。
为便于说明,以下以页面应用(以下也简称页面)为例,对本申请实施例提供的应用流畅性数据采集方法进行详细说明。
图3为本申请一个实施例提供的应用流畅性数据采集方法的流程图。
参照图3所示,该方法可以包括以下步骤:
步骤301:在应用运行阶段,获取本次渲染过程中的丢帧信息。
其中,在应用(如页面应用)运行阶段(如开始运行后),可以在每次渲染过程后获取本次渲染过程的丢帧数(LF)。
图4为本申请一个实施例提供的丢帧数计算流程示意图。
参照图4所示,在每一次渲染过程后,可以通过以下步骤获取丢帧数,即步骤301具体通过执行步骤401和步骤402实现:
步骤401:获取电子设备的显示屏的第一渲染时间。
其中,该第一渲染时间(T1)为本次渲染过程中每一帧的理论渲染时间。
在一种实施方式中,该第一渲染时间(T1)可以基于电子设备显示屏的刷新率计算得到。
其中,flutter的渲染和原生不同,对于配置高刷新率屏幕的电子设备,该电子设备显示屏的VSync频率可以不是最高的屏幕刷新率,也不一定是固定值(如60HZ)。
在一种实施方式中,可以在每次渲染过程结束后,获取本次渲染过程中的实际刷新率。
在一种实施方式中,电子设备显示屏的实际刷新率可以从原生侧获取,具体地,可以基于相应插件(plugin)获取到该实际刷新率(R1)。
在一种实施方式中,可以基于以下公式一计算得到该第一渲染时间(T1):
Figure 570283DEST_PATH_IMAGE001
公式一
其中,T1表示第一渲染时间,R1表示电子设备的显示屏的实际刷新率,1000表示1000毫秒(ms)。举例来说,若R1为60Hz,则可以计算得到T1为16.67ms。
步骤402:基于第一渲染时间和第二渲染时间计算本次渲染过程中的丢帧数(LF)。
其中,第二渲染时间(T2)为本次渲染过程中各帧的实际渲染时间。可以在获取第二渲染时间(T2)后,基于第一渲染时间(T1)和第二渲染时间(T2)确定一次渲染过程中的丢帧数(LF)。
在一种实施方式中,可以基于以下公式二计算得到该一次渲染过程中的丢帧数(LF):
Figure 884852DEST_PATH_IMAGE002
公式二
其中,LF表示一次渲染过程中的丢帧数,T2表示本次渲染过程中其中一帧的实际渲染时间,T1表示本次渲染过程中每一帧的理论渲染时间。其中,需要说明的是,在通过上述公式二计算得到的值为非整数时,可以对计算值进行取整数处理,以使得到的丢帧数为整数。在一种实施方式中,该取整数处理方式可以为进1处理,示例性的,计算得到的计算值为2.6,进行进1处理后得到的丢帧数为3。
通过步骤401和步骤402可以计算得到本次渲染过程的丢帧数(LF)。
步骤302:基于本次渲染过程中的丢帧数更新对应丢帧区间的丢帧发生次数。
在一种实施方式中,可以预先将丢帧数划分为以下五个丢帧区间:
第一区间[0,5)、第二区间[5,10)、第三区间[10,20)、第四区间[20,40),第五区间[40,∞)。
其中,一次渲染过程中,若0≤LF<5,则本次渲染过程的丢帧数LF落入第一区间[0,5);
一次渲染过程中,若5≤LF<10,则本次渲染过程的丢帧数LF落入第二区间[5,10);
一次渲染过程中,若10≤LF<20,则本次渲染过程的丢帧数LF落入第三区间[10,20);
一次渲染过程中,若20≤LF<40,则本次渲染过程的丢帧数LF落入第四区间[20,40);
一次渲染过程中,若40≤LF,则本次渲染过程的丢帧数LF落入第五区间[40,∞)。
在其他实施例中,还可以预先将丢帧数划分为多个区间(如划分为六个区间),且每个区间的取值范围可以依据用户需求进行自定义设置,本申请实施例对丢帧数划分的区间个数以及每个区间的取址范围不做限制。
在每次渲染过程中,在本次渲染过程的丢帧数LF之后,还可以基于上述划分标准确定本次渲染过程的丢帧数LF落入的丢帧区间,并更新相应丢帧区间范围的统计值。
在一种实施方式中,更新区间范围统计值的方式可以为给该区间范围的统计值加一。举例来说,当前渲染过程中的丢帧数LF为“6”,则可以确定当前丢帧数落入第二区间[5,10),进一步地,可以更新第二区间的统计值,即可以在第二区间当前统计值的基础上加一,若第二区间当前统计值为“39”,则经过本次更新后,第二区间的统计值为40(即39+1),表示在页面应用的有效生命周期内截止到现在,丢帧数落入第二区间的次数为40次。
步骤303:在应用的有效生命周期结束后,根据每个丢帧区间的丢帧发生次数生成相应图表。
其中,在页面应用的有效生命周期结束后,可以通过步骤301和步骤302确定应用的有效生命周期内所有渲染过程的丢帧数以及每个丢帧区间更新后的丢帧发生次数(即统计值),具体地,第一区间更新后的丢帧发生次数为C1、第二区间更新后的丢帧发生次数为C2、第三区间更新后的丢帧发生次数为C3、第四区间更新后的丢帧发生次数为C4,第五区间更新后的丢帧发生次数为C5。
在一种实施方式中,该图表可以为柱状图。
在其他实施方式中,还图表还可以为其他类型的图表,例如折线图、饼图等。
以下以柱状图为例进行说明。
图5为本申请一个实施例提供的应用在有效生命周期内的丢帧信息的示意图。
参照图5所示,该条形统计图为基于每个丢帧区间的丢帧发生次数生成的应用在有效生命周期内的丢帧信息的柱状图。其中,该柱状图的横轴表示丢帧区间,该丢帧区间划分为第一区间[0,5)、第二区间[5,10)、第三区间[10,20)、第四区间[20,40)以及第五区间[40,∞);该竖轴表示发生丢帧的次数,具体地,应用在有效生命周期内的,对每个渲染过程中的丢帧数进行检测并划分至相应丢帧区间,并且统计落入丢帧数区间的次数。其中,可以根据相应高度的柱形表示各个丢帧区间的丢帧发生次数,该柱形的高度与竖轴的刻度相关,即各个柱形的高度与相应丢帧区间的丢帧发生次数相匹配。
参照图5所示,用户可以通过图5所示的柱形图直观的了解应用在有效生命周期内的多次渲染过程后各个丢帧区间的丢帧发生次数,具体为第一区间的丢帧发生次数为C1、第二区间的丢帧发生次数为C2、第三区间的丢帧发生次数为C3、第四区间的丢帧发生次数为C4以及第五区间的丢帧发生次数为C5。进而用户可以通过查看本申请实施例提供的图表直观的了解应用性能流程性。
以下通过具有实际数据的柱状图为例进行说明。
图6a为本申请一个实施例提供的第一丢帧状态的柱状图。
参照图6a所示,将该柱状图呈现给用户时,用户可以基于看到的柱状图直观的了解到:在页面应用的有效生命周期内,共发生522次丢帧,其中450次落入第一区间,40次落入第二区间,20次落入第三区间,8次落入第四区间,4次落入第五区间。并且用户可以确定落入第一区间的丢帧发生次数具有较大占比,该占比为450/522。用户可以根据该柱状图呈现的数据判断页面应用在有效生命周期内丢帧情况较少,应用性能流畅性较好。
图6b为本申请一个实施例提供的第二丢帧状态的柱状图。
参照图6b所示,将该柱状图呈现给用户时,用户可以基于看到的柱状图直观的了解到:在页面应用的有效生命周期内,共发生554次丢帧,其中100次落入第一区间,400次落入第二区间,40次落入第三区间,10次落入第四区间,4次落入第五区间。并且用户可以确定落入第二区间的丢帧发生次数具有较大占比,该占比为400/554。用户可以根据该柱状图呈现的数据判断页面应用在有效生命周期内丢帧较多,而且是多频次少量的丢帧。
图6c为本申请一个实施例提供的第三丢帧状态的柱状图。
参照图6c所示,将该柱状图呈现给用户时,用户可以基于看到的柱状图直观的了解到:在页面应用的有效生命周期内,共发生165次丢帧,其中5次落入第一区间,10次落入第二区间,20次落入第三区间,100次落入第四区间,30次落入第五区间。并且用户可以确定落入第四区间的丢帧发生次数具有较大占比,该占比为100/165。用户可以根据该柱状图呈现的数据判断页面应用在有效生命周期内丢帧较多,而且是集中式的大量的丢帧。
在其他实施例中,为了整体评估应用的流畅性,还可以在提供图4所示实施例的图表的基础上,继续提供平均帧率,进而用户可以结合图表和平均帧率判定页面应用的流畅性,即是否卡顿,进一步地,若出现卡顿,用户还可以结合图表和平均帧率确定当前卡顿是什么类型的卡顿,具体地,确定当前卡顿为整体性能较差导致的频繁卡顿,还是极端性能较差导致的集中卡顿。
在一种实施方式中,平均帧率可以通过以下公式三计算得到:
Figure 209654DEST_PATH_IMAGE003
公式三
其中,∆FR表示平均帧率,∆t表示平均帧时间,t0表示总帧时间,F表示实际帧数,1000表示1000毫秒(ms)。
在一种实施方式中,总帧时间可以通过以下公式四计算得到:
Figure 766406DEST_PATH_IMAGE004
公式四
其中,t0表示总帧时间,LF表示丢帧数,F表示实际帧数,T1表示本次渲染过程中每一帧的理论渲染时间。
在一种实施方式中,本申请实施例中记载页面应用的有效生命周期指的是一个页面从页面打开至页面关闭的时间周期。进而可以根据上述公式三计算出页面应用的有效生命周期内的平均帧率。
在一种实施方式中,可以监控页面应用的当前页面的有效生命周期。其中一个页面是指多个相同的图像帧连续显示时所呈现的画面。换言之,页面即用户角度所呈现的不同UI元素展示的载体。不同的页面承载不同的功能,而每一个页面基本都有一个名字(页面路由)。为了计算一个页面的显示周期内的平均帧率,需要确定一个页面的名字,页面显示的起点,页面显示的终点。
追踪页面的具体实现方式如下:
通过为MaterialApp注册navigatorObservers实现对页面路由跳转的追踪。
只处理ModalRoute。ModalRoute是Route(路由)的实现的主要基类,是flutter中常规页面路由的实现。
只有指定了route name的页面才会追踪(如通过Navigator.of(context).pushNamed()启动的页面),Dialog等没有routename的页面不会处理。如果没有名字,我们无法区分页面。
基于上述方式确定页面的起点:
a. 当打开了一个有路由名字的页面,即通过获取到的指定的route name开始追踪该页面。
b. 当页面返回,根据返回到的页面的名字开始追踪该页面。
基于上述方式确定页面的终点:
a. 当页面关闭确定页面终点。
b. 当页面发生跳转,并且打开的页面有route name(会被追踪),或者是PageRoute(会覆盖当前页面)。因为会开启新的追踪,进入新页面的起点,所以需要结束当前的页面追踪。
进而通过确定页面起点和页面终点可以完成一次页面追踪,进一步确定该页面的有效生命周期。
图7为本申请一个实施例提供的电子设备的结构示意图。
参照图7所示,电子设备包括:处理器701和存储器702,存储器702用于存储至少一条指令,所述指令由处理器701加载并执行时以实现本申请任一实施例提供的应用流畅性数据采集方法。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现本申请任一实施例提供的应用流畅性数据采集方法。
本申请实施例还提供一种一种计算机程序产品,包括计算机程序或指令计算机程序或指令被处理器执行时实现本申请任一实施例提供的应用流畅性数据采集方法。
需要说明的是,本申请实施例中所涉及的终端可以包括但不限于个人计算机(Personal Computer,PC)、个人数字助理(Personal Digital Assistant,PDA)、无线手持设备、平板电脑(Tablet Computer)、手机、MP3播放器、MP4播放器等。
可以理解的是,所述应用可以是安装在终端上的应用程序(nativeApp),或者还可以是终端上的浏览器的一个网页程序(webApp),本申请实施例对此不进行限定。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)或处理器(Processor)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (13)

1.一种应用流畅性数据采集方法,其特征在于,电子设备上安装有待检测应用,所述方法包括:
在所述待检测应用运行阶段,获取本次渲染过程中的丢帧信息;
基于本次渲染过程中的丢帧信息更新对应丢帧区间的丢帧发生次数;以及
在所述待检测应用的有效生命周期结束后,根据每个丢帧区间的所述丢帧发生次数生成图表。
2.根据权利要求1所述的方法,其特征在于,所述丢帧信息包括丢帧数;
所述获取本次渲染过程中的丢帧信息包括:
获取所述电子设备的显示屏的第一渲染时间;
基于第一渲染时间和第二渲染时间计算本次渲染过程中的丢帧数。
3.根据权利要求2所述的方法,其特征在于,所述取所述电子设备的显示屏的第一渲染时间包括:
根据所述电子设备的显示屏的刷新率确定所述第一渲染时间。
4.根据权利要求2或3所述的方法,其特征在于,所述基于第一渲染时间和第二渲染时间计算本次渲染过程中的丢帧数包括通过以下公式计算:
Figure 630926DEST_PATH_IMAGE001
其中,LF表示一次渲染过程中的丢帧数,T2表示本次渲染过程中其中一帧的实际渲染时间,T1表示本次渲染过程中每一帧的理论渲染时间。
5.根据权利要求1所述的方法,其特征在于,所述丢帧区间包括第一区间、第二区间、第三区间、第四区间以及第五区间;
其中,所述第一区间的丢帧数取值范围为[0,5)、所述第二区间的丢帧数取值范围为[5,10)、所述第三区间的丢帧数取值范围为[10,20)、所述第四区间的丢帧数取值范围为[20,40)、所述第五区间的丢帧数取值范围为[40,∞)。
6.根据权利要求1所述的方法,其特征在于,所述基于本次渲染过程中的丢帧信息更新对应丢帧区间的丢帧发生次数包括:
根据所述本次渲染过程中的丢帧数确定对应的丢帧区间,并为所述对应的丢帧区间的丢帧发生次数累计加一。
7.根据权利要求1所述的方法,其特征在于,所述根据每个丢帧区间的所述丢帧发生次数生成图表包括:
根据每个丢帧区间的所述丢帧发生次数生成柱状图;
其中,所述柱状图的横轴表示丢帧区间,所述柱状图的竖轴表示发生丢帧的次数。
8.根据权利要求1所述的方法,其特征在于,在所述待检测应用的有效生命周期结束后,根据每个丢帧区间的所述丢帧发生次数生成图表之后,还包括:
获取总帧时间以及实际帧数;
基于所述总帧时间以及实际帧数计算平均帧率。
9.根据权利要求8所述的方法,其特征在于,所述基于所述总帧时间以及实际帧数计算平均帧率包括通过以下公式计算:
Figure 852960DEST_PATH_IMAGE002
其中,∆FR表示平均帧率,∆t表示平均帧时间,t0表示总帧时间,
Figure 626006DEST_PATH_IMAGE003
表示实际帧数,1000 表示1000毫秒。
10.根据权利要求9所述的方法,其特征在于,通过以下公式计算所述总帧时间:
Figure 575377DEST_PATH_IMAGE004
其中,t0表示总帧时间,LF表示丢帧数,F表示实际帧数,T1表示本次渲染过程中每一帧的理论渲染时间。
11.一种电子设备,其特征在于,所述电子设备包括:
处理器和存储器,所述存储器用于存储至少一条指令,所述指令由所述处理器加载并执行时以实现如权利要求1-10中任意一项所述的应用流畅性数据采集方法。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-10中任意一项所述的应用流畅性数据采集方法。
13.一种计算机程序产品,包括计算机程序或指令,其特征在于,所述计算机程序或指令被处理器执行时实现如权利要求1-10中任意一项所述的应用流畅性数据采集方法。
CN202211429709.4A 2022-11-16 2022-11-16 应用流畅性数据采集方法、电子设备和存储介质 Pending CN115495036A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211429709.4A CN115495036A (zh) 2022-11-16 2022-11-16 应用流畅性数据采集方法、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211429709.4A CN115495036A (zh) 2022-11-16 2022-11-16 应用流畅性数据采集方法、电子设备和存储介质

Publications (1)

Publication Number Publication Date
CN115495036A true CN115495036A (zh) 2022-12-20

Family

ID=85115736

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211429709.4A Pending CN115495036A (zh) 2022-11-16 2022-11-16 应用流畅性数据采集方法、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN115495036A (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109144858A (zh) * 2018-08-02 2019-01-04 腾讯科技(北京)有限公司 流畅度检测方法、装置、计算设备及存储介质
CN109165154A (zh) * 2018-09-10 2019-01-08 广东小天才科技有限公司 一种显示界面流畅度统计方法及系统、移动终端及服务器
CN110764986A (zh) * 2019-10-12 2020-02-07 北京奇艺世纪科技有限公司 页面流畅度检测方法及装置
CN113176909A (zh) * 2021-04-29 2021-07-27 北京达佳互联信息技术有限公司 一种终端流畅度的确定方法、装置、电子设备和存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109144858A (zh) * 2018-08-02 2019-01-04 腾讯科技(北京)有限公司 流畅度检测方法、装置、计算设备及存储介质
CN109165154A (zh) * 2018-09-10 2019-01-08 广东小天才科技有限公司 一种显示界面流畅度统计方法及系统、移动终端及服务器
CN110764986A (zh) * 2019-10-12 2020-02-07 北京奇艺世纪科技有限公司 页面流畅度检测方法及装置
CN113176909A (zh) * 2021-04-29 2021-07-27 北京达佳互联信息技术有限公司 一种终端流畅度的确定方法、装置、电子设备和存储介质

Similar Documents

Publication Publication Date Title
CN108010112B (zh) 动画处理方法、装置及存储介质
CN109460276A (zh) 页面和页面配置文件生成方法、装置、终端设备及介质
CN109389661B (zh) 一种动画文件转化方法及装置
CN107924667A (zh) 与预测性时移补偿相匹配的刷新率
US20110289207A1 (en) Method and apparatus for processing network visualization
US20140366006A1 (en) Visualizing recorded executions of multi-threaded software programs for performance and correctness
WO2020192451A1 (en) Real-time picture projection method and apparatus of ar glasses screen, controller and medium
WO2014026070A1 (en) Displaying temporal information in a spreadsheet application
US10496658B2 (en) Method and system of visually depicting hierarchical data through selective colorization
CN111225232B (zh) 基于视频的贴纸动画引擎、实现方法、服务器和介质
US20110285727A1 (en) Animation transition engine
CN114071223A (zh) 基于光流的视频插帧的生成方法、存储介质及终端设备
CN112199007A (zh) 菜单显示方法、装置、电子设备和存储介质
JP2015531097A (ja) アニメーション再生方法、装置、機器、プログラム、及び記録媒体
CN112631691A (zh) 游戏界面动效编辑方法、装置、处理设备及介质
CN111124668A (zh) 内存释放方法、装置、存储介质及终端
US8884971B2 (en) Animation engine decoupled from animation catalog
US10289388B2 (en) Process visualization toolkit
CN114186527A (zh) 一种不依赖于网格点实现集成电路自动布线的方法及装置
CN115495036A (zh) 应用流畅性数据采集方法、电子设备和存储介质
CN116775174A (zh) 一种基于用户界面框架的处理方法、装置、设备及介质
CN111589111B (zh) 图像处理方法、装置、设备和存储介质
CN115170700A (zh) 基于Flutter框架实现CSS动画的方法、计算机设备及存储介质
KR20180047200A (ko) 스프라이트 그래픽 제작 장치 및 방법
CN112639690A (zh) 用于在动态键盘接口内定位动画图像的方法和系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20221220

WD01 Invention patent application deemed withdrawn after publication