zoukankan      html  css  js  c++  java
  • adb shell 命令计算APP应用的 FPS 和评价流畅度。

    设计初衷:

      1、面临用户和公司内领导试用中反馈的卡顿问题,思考如何能有效量化评估?
      2、如何在尝试复现卡顿的过程中持续监控FPS和丢帧情况?

    操作说明如下:

    (1)脚本源码的下载:(https://pan.baidu.com/s/1qYjzIZ6)

    (2)具体实现如下:

           1、将下载的源码进行解压,就可看到在如下操作命令中用到的文件,根据如下的说明进行操作。

           2、Push文件:

        adb push busybox /data/local/tmp
        adb shell chmod 755 /data/local/tmp/busybox
        adb push /Users/lucky/Desktop/FPS_Test/fps.sh /data/local/tmp


    使用方式实例

      1、查看当前显示的窗口名使用:
      adb shell dumpsys SurfaceFlinger | grep "|....|"
      获取到的参数说明:
        name = 窗口名称
        StatusBar=状态栏窗口名
        HWC_FRAMEBUFFER_TARGET=硬件合成层名(

      2、按照60帧标准监控桌面,实时显示数据在窗口上(运行此命令后,直接在手机上进行操作即可看到窗口数据的更新,测试结果具体的示例如下)
      adb shell sh /data/local/tmp/fps.sh -t 25 -w com.iBer.iBerAppV2/com.iBer.iBerAppV2.MainActivity

      3、为了确认方法的可行性,如下是采用的其他APP进行的对比测试:
      #短信
      adb shell sh /data/local/tmp/fps.sh -t 25 -w com.android.mms/com.qiku.android.mms.ui.MmsConversationListActivity

      #今日头条
      adb shell sh /data/local/tmp/fps.sh -t 25 -w com.ss.android.article.lite/com.ss.android.article.lite.activity.MainActivity

      测试结果的示例截图与说明:

          说明:如下截图中的红色标出部分,是测试APP的某个功能时的数据记录

      

      

      参数说明:

        Show: FU(s) LU(s) Date FPS Frames jank MFS(ms) OKT SS(%)
        FU(s): 第一帧正常运行时间

        LU(s): 最后一帧的正常运行时间
        Date: 日期和时间
        FPS: 每秒帧数
        Frames: 循环的所有帧
        jank: 当帧超过刷新周期时,将添加一个jank
        MFS(ms):最大帧间距
        OKT: 超过 KPI的时间. KPI 是一帧的使用时间
        SS(%): 平滑度分数.计算公式 SS=(FPS/target FPS)*60+(KPI/MFS)*20+(1-OKPIT/Frames)*20
        IF FPS > target FPS: FPS/The target FPS=1
        IF KPI > MFS: KPI/MFS=1
        WN: 同名窗口的窗口好. 如. SurfaceView

     

    原链接:https://testerhome.com/topics/4775

  • 相关阅读:
    qt程序编译错误:could not exec ‘/usr/lib/x86_64-linux-gnu/qt4/bin/qmake’
    安装 yaml-cpp,MP4V2
    安装cmake 和 opencv 4.0.0
    windows系统,boost编译安装
    messageQ 消息队列
    fflush 和 fsync 的区别
    开源一个 PDF 小工具集软件【使用 PDFium 库实现】
    封装 libjpeg 库
    纯 C++ 代码实现的 INI 文件读写类
    C++11 —— 使用 thread 实现线程池
  • 原文地址:https://www.cnblogs.com/syw20170419/p/10770734.html
Copyright © 2011-2022 走看看