pertDog 性能狗使用
移动全平台iOS/Android性能测试、分析工具平台。快速定位分析性能问题,提升APP应用及游戏性能和品质。
详细使用支持文档里面已经写得很清楚了:https://perfdog.qq.com/support
iOS平台 (与苹果官方Xcode工具参数对齐一致)
- Screenshot
- FPS(1秒内游戏画面或者应用界面真实平均刷新次数,俗称帧率/FPS)
1) Avg(FPS):平均帧率(一段时间内平均FPS)
2) Var(FPS):帧率方差(一段时间内FPS方差)
3) Drop(FPS):降帧次数(平均每小时相邻两个FPS点下降大于8帧的次数) - Jank(1s内卡顿次数。iOS9.1以下系统暂时不支持。类似Android的Jank卡顿和iOS的FramePacing平滑度统计原理。帧率FPS高并不能反映流畅或不卡顿。比如:FPS为50帧,前200ms渲染一帧,后800ms渲染49帧,虽然帧率50,但依然觉得非常卡顿。同时帧率FPS低,并不代表卡顿,比如无卡顿时均匀FPS为15帧。所以,平均帧率FPS与卡顿无任何直接关系)
PerfDog计算方法:同时满足两条件,则认为是一次卡顿Jank.
1、 当前帧耗时>前三帧平均耗时2倍。
2、 当前帧耗时>两帧电影帧耗时(1000ms/24*2=84ms)。
同时满足两条件,则认为是一次严重卡顿BigJank.
1、 当前帧耗时>前三帧平均耗时2倍。
2、 当前帧耗时>三帧电影帧耗时(1000ms/24*3=125ms)。
计算思路:考虑视觉惯性,假设以前三帧的平均帧耗时为参考,作为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。
1) BigJank:1s内顿严重卡次数
2) Jank(/10min):平均每10分钟卡顿次数。
3) BigJank(/10min):平均每10分钟严重卡顿次数 - FTime(上下帧画面显示时间间隔,即认为帧耗时,iOS9.1以下系统暂时不支持。)
1) Avg(FTime):平均帧耗时
2) Delta(FTime):增量耗时(平均每小时两帧之间时间差>100ms的次数) - CPU Usage(Total整机/App进程,统计结果合Xcode一致)
- Memory (是统计FootPrint,注:OOM与FootPrint有关,与系统、机型无关。只与RAM有关,如1G内存机器。FootPrint超过650MB,引发OOM)。受iOS平台限制,暂时无法获取ios10及以下系统的memory。后续版本增加。如做性能测试,建议升级iOS系统版本
- Xcode Memory (XCode Debug Gauges统计方式即XCode Memory)。受iOS平台限制,暂时无法获取ios10及以下系统的Xcode Memory。后续版本增加。如做性能测试,建议升级iOS系统版本
- Real Memory(Xcode Instrument统计方式即Real Memory,实际占用物理内存。注:物理内存与系统策略有关,关注意义不大)
- Virtual Memory(虚拟内存)
- Wakeups(线程唤醒次数)。注:超过150进程很大可能会被系统kill
- CSwitch(上下文切换测试)。注:单核超过14000进程会被系统Kill
- GPU Utilization(Render/Tilter/Device)
1) Render:渲染器利用率(像素着色处理阶段,若占比高,说明是PS阶段出现瓶颈,shader过于复杂或纹理大小、采样复杂等)
2) Tilter:Tilter利用率(顶点着色处理阶段,若占比高,说明是VS阶段出现瓶颈,顶点数太多等原因)
3) Device:设备利用率(整体GPU利用率) - Network(Recv/Send,测试目标进程流量,和Xcode结果一致)
- Battery Power(整机实时Current电流、Voltage电压、Power功率)(注:和Xcode Instrument结果一致)
- Log(系统调试日志信息)
Android平台
- Screenshot
- FPS(1秒内游戏画面或者应用界面真实平均刷新次数,俗称帧率/FPS)
1) Avg(FPS):平均帧率(一段时间内平均FPS)
2) Var(FPS):帧率方差(一段时间内FPS方差)
3) Drop(FPS):降帧次数(平均每小时相邻两个FPS点下降大于8帧的次数) - Jank(1s内卡顿次数。解释说明如iOS平台说明)
1) BigJank:1s内严重卡顿次数
2) Jank(/10分钟):平均每10分钟卡顿次数
3) BigJank(/10分钟):平均每10分钟严重卡顿次数 - FTime(上下帧画面显示时间间隔,即认为帧耗时)
1) Avg(FTime):平均帧耗时
2) Delta(FTime):增量耗时(平均每小时两帧之间时间差>100ms的次数) - CPU Usage(Total整机/App目标进程,统计结果和Android Studio Profiler一致)
- CPU Clock(各个CPU核心的频率和使用率)
- Memory (PSS Memory,统计结果和Android Java API标准结果一致,与Meminfo也一致。注:部分三星机器系统修改了Meminfo底层统计方式,导致Meminfo与Java AP统计结果不一致,新出三星机器已修复)
- Swap Memory (Swap Memory)
- Virtual Memory
- Memory Detail(NativePSS、GFX、GL、Unknown)
- GPU Usage(目前仅支持高通芯片手机)
- GPU Frequency(目前仅支持高通芯片手机)
- Network(Recv/Send)
- CTemp(CPU温度)
- Battery Power(Current电流、Voltage电压、Power功率)(注:与仪器测试误差<3%左右)
- Log(系统调试日志信息)
竹杖芒鞋轻胜马,一蓑烟雨任平生。
回首向来萧瑟处,也无风雨也无晴。