PerfDog(性能狗)测试须知

Android平台

ScreenShot(只支持USB模式)

FPS(1秒内游戏画面或者应用界面真实平均刷新次数,俗称帖率/FPS)

1)Avg(FPS):平均帖率 2)Var(FPS):帖率方差 3)Drop(FPS):降帖次数(平均每小时相邻两个FPS点下降大于8贴的次数)

jank(1秒内卡顿次数)

1)BigJank:1秒内严重卡顿次数

2)jank(10分钟):平均每10分走过来卡顿次数

3)BigJank(/10分钟):平均每10分走过来严重卡顿次数

FTime(上下贴画面显示时间间隔,即认为贴耗时)

1)Avg(Ftime)平均贴耗时

2)Delta(FTime):增量耗时(平均每小时两贴之间时间差>100ms的次数)

CPU Usage(Total整机/App目标进程,统计结果和Andrid Studio Profilter一致)

CPU Clock(各个CPU核心的帖率的频率)

Memory (PSS Memory,统计结果和Android java API标准结果一致,也Meminfo也一致)

Swap Memory (Swap Memory,部分设备支持Swap功能,在启用Swap功能后,系统会对PSS内存进行压缩,Swap增加,PSS会相应减少,由于压缩会占用CPU资源,同时相应会导致FPS降低)

根据perfdog关键字

FPS

FPS

1s内应用程序的刷新次数,又叫做帧率

AvgFPS

平均帧率(一段时间内的FPS)--方差越小越稳定

VarFPS

Var(FPS):帧率方差(一段时间内FPS方差)

Drop(FPS)

平均每个小时相邻两个FPS点下降大于8帧的次数

Jank

jank&Bigjank

1秒内的卡顿次数

PerfDog Jank计算方法:

同时满足两条件,则认为是一次卡顿Jank.

    ①Display FrameTime>前三帧平均耗时2倍。

    ②Display FrameTime>两帧电影帧耗时 (1000ms/24*2=84ms)。

同时满足两条件,则认为是一次严重卡顿BigJank.

    ①Display FrameTime >前三帧平均耗时2倍。

    ②Display FrameTime >三帧电影帧耗时(1000ms/24*3=125ms)。

Jank(/10min)

10分钟内的卡顿次数

CPU

AvgTotal(%)

CPU的平均使用率

AvgAPP(%)

被测试应用程序的cpu使用率

CPU Temperature

CPU的温度

others

AvgAPP%

该app手机占用

PeakMemory(MB)

app运行的时候,最高内存占用

AvgSend(KB/s)

平均上传数据速度(KB/S)

AvgRecv

平均接收数据速度()

AvgPower(mW)

平均耗电量(连接数据时检测不到,因为没有意义)

AvgCTemp

平均CPU温度

FTime

上下帧画面显示时间间隔,即认为是帧耗时

AvgFTime(ms)

平均帧耗时

DetailFTime(/h)

增量耗时(平均每小时两帧之间的时间差>100ms的次数)

FrameTime、FPS、流畅度、Jank、影响剖析

第一部分:FrameTime

Frame Time:两帧画面间隔耗时(也可以简单认为是单帖渲染耗时)
大家可以直接通过Frametime来判断测试过程中是否出现卡顿。

第二部分:FPS

FPS的定义:帖率(1s内平均画面刷新次数)
平均帖率:传统说的FPS,1s内平均画面刷新次数
瞬时帖率:单帧耗时FrameTime算出来实时FPS,每一帧画面刷新耗时换算出的实时帧率。 FPS帧率与卡顿是否有关系?
总结:帧率高,未必流畅。 流畅度机制-黄油计划(Jank)
Google Jank 计算思路:考虑视觉惯性,以硬件vsync时间间隔,连续1次vsync没有新画面刷新,
则认为是一次卡顿, 也就是说下一次vsync时间点没有新画面刷新,则认为是一次Jank。

第三部分:流畅度

流畅度和卡顿的关系

流畅度影响卡顿。这个可以简单的理解为视觉惯性和电影帧这两个方面:

1 视觉惯性

视觉预期帧率,用户潜意识里认为下帧也应该是当前帧率刷新比如一直60帧,用户潜意识里认为下帧也应该是60帧率。
刷新一直是25帧,用户潜意识里认为下帧也应该是25帧率。但是刷新如果是60帧一下跳变为25帧,扰乱用户视觉惯性。
这个时候就会出现用户体验的卡顿感。

2 电影帧

电影帧率(18-24),一般是24帧。电影帧单帧耗时:1000ms/24=40ms。电影帧率是一个临界点。低于这个帧率,
人眼基本能感觉画面不连续性,也就是感觉到了卡顿。
一电影帧是42ms

第四部分:PerfDog-Jank

PerfDog Jank 计算思路

考虑视觉惯性,假设以前三帧的平均帧耗时为参考,作为vsync时间间隔,连续两次vsync没有新渲染画面刷新,
则认为是一次潜在卡顿,也就是说下一帧耗时大于前三帧平均帧耗时2倍,则认为一次潜在卡顿。
同时单帧耗时满足大于两倍电影帧耗时1000ms/24*2 (由于人眼低于24帧才能辨别画面不连续性),
则认为是一次真正卡顿。同时若单帧耗时大于3倍电影帧耗时,则认为是一次严重卡顿。 注解:为什么是两次vsync?GPU一般是3重缓冲buffer,当前帧已占用一个buffer,
即剩余2缓冲buffer,人眼一般可容忍2帧延迟。 为什么是两帧电影帧耗时?低于24帧画面,人眼就能感知到画面不连续性,电影一般都是24帧。
即电影帧耗时1000ms/24=41.67ms,
两帧电影帧耗时也就是41.67ms*2,
三帧电影帧耗时是41.67ms*3。

PerfDog Jank计算方法

同时满足两条件,则认为是一次卡顿Jank.
①Display FrameTime>前三帧平均耗时2倍。
②Display FrameTime>两帧电影帧耗时 (1000ms/24*2=84ms)。 同时满足两条件,则认为是一次严重卡顿BigJank.
①Display FrameTime >前三帧平均耗时2倍。
②Display FrameTime >三帧电影帧耗时(1000ms/24*3=125ms)。

备注:帧率低,并不是顿卡,如帧率都是只有几帧了,还有什么顿卡而言?

app为什么关注Jank卡顿

APP也需要关注FPS及Jank。只是需要区分使用场景,如:

1)     静态页面窗口

只需关注FPS,理论FPS应该为0,否则,说明有冗余刷新,容易引起手机发热及耗电。

2)     有滚动动画页面窗口

只需关注FPS,FPS处于合适值即可,无需高频刷新。

3)     快速滑动页面窗口。

需要关注FPS和Jank。手机交互灵敏度就是来源于此,Android系统才出黄油计划Jank。一般滑动状态下,帧率越高越好,Jank越小越好。

4)     播放视频页面窗口。

需要关注FPS和Jank,视频卡顿直接影响用户。视频一般帧率18-24帧,Jank=0。比如微信播放视频、视频播放器等。

perfdog使用手册的更多相关文章

  1. WeTest明星工具-移动端性能测试PerfDog初探

    在十一月初,腾讯就官宣了一则消息,腾讯WeTest明星工具-PerfDog面向全球发布.官宣介绍如下:https://wetest.qq.com/lab/view/475.html.我在看到该新闻时, ...

  2. FREERTOS 手册阅读笔记

    郑重声明,版权所有! 转载需说明. FREERTOS堆栈大小的单位是word,不是byte. 根据处理器架构优化系统的任务优先级不能超过32,If the architecture optimized ...

  3. JS魔法堂:不完全国际化&本地化手册 之 理論篇

    前言  最近加入到新项目组负责前端技术预研和选型,其中涉及到一个熟悉又陌生的需求--国际化&本地化.熟悉的是之前的项目也玩过,陌生的是之前的实现仅仅停留在"有"的阶段而已. ...

  4. 转职成为TypeScript程序员的参考手册

    写在前面 作者并没有任何可以作为背书的履历来证明自己写作这份手册的分量. 其内容大都来自于TypeScript官方资料或者搜索引擎获得,期间掺杂少量作者的私见,并会标明. 大部分内容来自于http:/ ...

  5. Redis学习手册(目录)

    为什么自己当初要选择Redis作为数据存储解决方案中的一员呢?现在能想到的原因主要有三.其一,Redis不仅性能高效,而且完全免费.其二,是基于C/C++开发的服务器,这里应该有一定的感情因素吧.最后 ...

  6. JS魔法堂:不完全国际化&本地化手册 之 实战篇

    前言  最近加入到新项目组负责前端技术预研和选型,其中涉及到一个熟悉又陌生的需求--国际化&本地化.熟悉的是之前的项目也玩过,陌生的是之前的实现仅仅停留在"有"的阶段而已. ...

  7. Windows API 函数列表 附帮助手册

    所有Windows API函数列表,为了方便查询,也为了大家查找,所以整理一下贡献出来了. 帮助手册:700多个Windows API的函数手册 免费下载 API之网络函数 API之消息函数 API之 ...

  8. linux命令在线手册

    下面几个网址有一些 Linux命令的在线手册,而且还是中文的,还可以搜索.非常方便 Linux命令手册 Linux命令大全 Linux中文man在线手册 每日一linux命令

  9. Mysql完全手册(笔记二,使用数据与性能优化)

    一.使用数据 1.使用变量 MySQL也可以让我们以用户自定义的变量来存储select查询的结果,以便在将来select查询中使用.它们只会在客户会话期间存在,但是它们提供一个方便有效的方法来连接查询 ...

随机推荐

  1. vue初始化、数据处理、组件传参、路由传参、全局定义CSS与JS、组件生命周期

    目录 项目初始化 组件数据局部化处理 子组件 父组件 路由逻辑跳转 案例 组件传参 父传子 子组件 父组件 子传父 子组件 父组件 组件的生命周期钩子 路由传参 第一种 配置:router/index ...

  2. pycham设置头文件内容

    pycharm软件 设置头文件方法 File->settings->Editor->File and Code Templates->Python Script  #!/usr ...

  3. HDU_1222_GCD

    http://acm.hdu.edu.cn/showproblem.php?pid=1222 直接用GCD就可以了,gcd大于1表明每次一周后偏移量为0. #include<iostream&g ...

  4. 对权值线段树剪枝的误解--以HDU6703为例

    引子 对hdu6703,首先将问题转化为"询问一个排列中大于等于k的值里,下标超过r的最小权值是多少" 我们采用官方题解中的做法:权值线段树+剪枝 对(a[i],i)建线段树,查询 ...

  5. 图像数组运算相关问题(nan/inf)

    新年第一更!祝愿新的一年技术长足进步哈! 最近在用sklearn的回归分析模型拟合预测遥感图像,遇到了一些问题,好在一一解决,现在总结一下. 1.首先输入sklearn的数据必须reshape(-1, ...

  6. 3D点云配准算法简述

    ​蝶恋花·槛菊愁烟兰泣露 槛菊愁烟兰泣露,罗幕轻寒,燕子双飞去. 明月不谙离恨苦,斜光到晓穿朱户. 昨夜西风凋碧树,独上高楼,望尽天涯路. 欲寄彩笺兼尺素.山长水阔知何处? --晏殊 导读: 3D点云 ...

  7. 如何查看SparkSQL 生成的抽象语法树?

    前言 在<Spark SQL内核剖析>书中4.3章节,谈到Catalyst体系中生成的抽象语法树的节点都是以Context来结尾,在ANLTR4以及生成的SqlBaseParser解析SQ ...

  8. 网络设备 密码、用户级别 AAA授权 的管理

    一.进入 特权模式 密码 设置访问网络设备特权模式口令 cisco>enable cisco#config terminal cisco(config)#enable password 密码 e ...

  9. [Python]获取字典所有值

    方法一:Key Value 直接获取 databases = {1: 'Student', 2: 'School'} for k,v in databases.items(): print(k,v) ...

  10. (四)开源C# WPF控件库《AduSkin – UI》

    微信公众号:[Dotnet9的博客],网站:[Dotnet9],问题或建议:[请网站留言], 如果对您有所帮助:[欢迎赞赏]. 开源C# WPF控件库系列: (一)开源C# WPF控件库<Mat ...