Android性能专项FPS测试实践

Android获取当前应用FPS(帧数) Android获取本软件(Application)的帧率 阅读详情

前言


最近手上有个项目,需要进行流畅度的专项测试,目前已经进行了一段时间,因此想总结一些经验和教训跟大家分享。

测试需求


  • 通过技术手段量化程序卡顿程度,过程数据可视化
  • 多平台机型适配,方案不能依赖root
  • 不能有Android的API版本限制(因为需要兼容多个系统版本)
  • 监控流程可自动化执行
  • 过程需要连续可靠

测试准备


理解FPS的概念

FPS即Frames per second,>>点击这篇文章 解释的非常清楚。当我们准备测试流畅度的时候,必须先理解两个关键指标60帧每秒以及16.67毫秒,这两个值代表什么意思?怎么得来的?
用过flash的人应该知道动画片其实是由一张张画出来的图片连贯执行产生的效果,当一张张独立的图片切换速度足够快的时候,会欺骗我们的眼睛,以为这是连续的动作。反之类推,当你的图片切换不够快的时候,就会被人眼看穿,反馈给用户的就是所谓的卡顿现象。
想要让大脑觉得动作是连续的,至少是每秒10-12帧的速度,而想达到流畅的效果,至少需要每秒24帧。这也是为什么电影片源通常都是24帧的原因,好奇的同学点击>>知乎高知看看大神的解答。不过60帧每秒的流畅度是最佳的,我们的目标就是让程序的流畅度能接近60帧每秒,当然超过60帧速的话大部分人还是会受不了的。

综上所述,APP需要尽可能的超过24帧/秒,接近60帧/秒的速度,并且在使用的过程中保持这个速率,试想一下你吃着火锅看着电影,突然图像发生了跳跃或者画面撕裂,那种感觉就像米饭里吃到了沙子一样极度不爽,因此这意味着我们的程序需要在16.67ms内处理一幅画面内的所有事,并保持住这个状态。

计算公式:1000ms / 60 frames ≈ 16.67 ms/frames

获取FPS的可行性方案

在查阅了很多的资料,也学习了同行前辈们的各种记录后,我根据自己需要将可行性方案的范围缩小到三种。

  • 方案一
    通过 [设置]->[开发者选项]->[GPU呈现模式分析] ->[在屏幕上显示为条形图] 进行直观的取样,截图如下:
    这里写图片描述

设置完成后的效果是这样的:

从专项到性能:SoloPi实战指南构建APP质量保障体系 在移动应用开发领域,质量保障已从单一的功能验证,演进为涵盖性能、体验与稳定性的系统工程。性能测试作为其核心,通过量化启动速度、界面流畅度、内存占用等关键指标,将主观体验转化为客观数据,为技术决策提供依据。其原理在于对应用运行时资源的无侵入监控与深度分析,旨在提前发现卡顿、耗电等潜在问题,保障用户体验的流畅与稳定。这一实践对于提升用户留存、增强产品市场竞争力具有重要价值。本文以广泛使用的SoloPi工具为例,深入解析其如何通过无线化、非侵入式架构,高效完成性能基准测试、问题定位与自动化集成,为构建从开发到上线 阅读详情

相关推荐

智能座舱测试实战:从入门到精通的测试策略与案例分析

本文深入探讨了智能座舱测试从功能验证到体验保障的思维转变,并系统阐述了集成测试、专项测试与安卓系统测试三大核心策略。通过导航与多媒体音频冲突等实战案例,详细解析了接口、性能、稳定性及OTA升级等关键测试场景,为测试人员提供了从入门到精通的实战指南与进阶路径。

white的博客 362

APP性能测试(启动速度、内存、CPU、FPS、GPU、耗电量)

文章目录启动速度内存CPUFPS(应用的使用流畅度)GPU渲染耗电量 启动速度 测试内容 冷启动速度 热启动速度 完全启动速度 有网启动速度 无网启动速度 主要测试冷启动和热启动 测试标准 测试标准:冷启动时间不超过1.5s, 热启动不超过1s 测试方法 方法1:通过FFmpeg录屏拆帧 https://ffmpeg.zeranoe.com/builds/官网 https://w...

xiadanying的博客 2万+

性能测试-性能狗(Perfdog)测试与数据分析

PerfDog是谁? PerfDog性能狗是移动全平台iOS\Android性能测试工具平台,快速定位分析性能问题,提升APP应用及游戏性能和品质,收集无需ROOT/越狱,手机硬件、游戏及应用无需做任何更改,极简化即插即用。 PerfDog提供什么服务? 腾讯WeTest客户端性能测试工具:PerfDog性能狗为您提供专业的性能测试工具服务:#性能数据采集:安卓平台、iOS平台、H5、小程序、小游戏等性能数据#性能数据管理:账户信息管理、性能数据管理、图表展示、编辑、版本对比、性能测试任务管理#团队协

qq_40676418的博客 4万+

【APP专项】monkey专项性能测试实践-分析-监控

【APP专项】monkey专项性能测试实践-分析-监控

橘子偏爱橙子随笔 688

python实时获取Android FPS

python---实现实时获取Android FPS1:如何计算FPS信息?2:如何获取FPS信息?3:python实现 fps实时获取和计算使用adb shell dumpsys gfxinfo 获取fps信息1:在开始获取fps信息之前,我们先进行获取当前活动窗口,get_focus_window2:在开始获取fps信息之前,我们先进行清除当前窗口fps数据3:使用shell dumpsys gfxinfo +包名 + framestats 获取的这个进程的最近128帧的的详细信息,可能包含多个窗口(也

weixin_42233460的博客 6134

FPS性能测试工具_AS

FPS性能测试工具_AS,FPS性能测试工具_AS,FPS性能测试工具_AS

Windows下CMake编译VTK

选择项目INSTALL,生成该项目,得到vtk在Debug模式下的lib和dll文件,在文件夹中可看见,已得到debug模式下lib库与dll库。,把Value值设置为最后在vtk_sln中生成include、dll、lib的位置。在上面点击Configure后,红色区域没有了。选择自己vs编译平台的版本信息,我这边已经设置好了没有这个设置了,借用参考博客的图片。设置完后,点击左下角"Configure",然后等待Configure。,把搜索结果的Value勾选上。在search中搜索。

weixin_74239923的博客 841

Ubuntu系统 nano 编辑器使用教程

• 原因:文件编码不兼容(如 Windows 的 CRLF 换行符)。• 若使用 SSH 工具(如 PuTTY),确保终端设置中未占用。掌握这些操作后,你可以高效使用 nano 完成大部分文本编辑任务!• 底部快捷键栏:显示常用操作的快捷键(• 如果文件已修改,会提示是否保存:按。• 顶部状态栏:显示文件名和编辑状态。表示 Ctrl + G(查看帮助)。保存时自动生成备份文件(原文件名后加。• 强制保存只读文件:用。启动 nano 时添加。启动 nano 时添加。(重做)触发自动缩进。

qq_44534541的博客 2083

光学设计必看:如何用泽尼克系数优化镜头像差?从Zemax到实际案例解析

本文深入解析了如何利用泽尼克系数优化镜头像差,从理解其工程价值、解码软件报告,到在Zemax中主动设置优化目标。通过高倍显微物镜等实际案例,详细展示了如何通过分析泽尼克系数诊断问题,并实施针对性优化策略,从而实现对球差、彗差等像差的精准控制,提升光学设计的精细度和系统稳健性。

gg901的博客 1025

小白学电路之cadance搭建buffer电路

Buffer(缓冲器)是一种放大器或驱动电路,主要用于隔离输入和输出,以防止负载对前级电路造成干扰或影响。本文作者在电路方面是小白水平,目前正在学习,有不足之处欢迎指正。3.创建新的cellview,对此buffer进行仿真验证。2.创建buffer的symbol。电路中的V2的详细参数。

weixin_58051657的博客 1984

基于 YOLO + SAM 的自动图像标注实战

摘要: 本文提出一种基于YOLO检测和SAM分割的自动化数据标注流水线方案,通过YOLO定位目标并生成检测框,再以检测框为提示驱动SAM完成精细分割,最终输出YOLO格式的标注文件。该方案将人工标注升级为半自动流程,显著提升标注效率,尤其适用于多类别、大规模图像的实例级标注需求。代码模块化设计支持模型灵活替换,并集成异常处理与进度可视化功能。虽依赖YOLO检测质量且对小目标存在局限,但作为工程落地方案,可有效降低私有数据集构建成本,适用于工业检测、遥感等场景的冷启动标注。

qq_64366203的博客 1144

Camunda 7.x 系列【22】全局监听器

Camunda支持义一个全局ExecutionListener和一个全局TaskListener,会捕获流程中发生的所有事件的通知,这样可以定义一个全局的审批人检查监听器,作用于所有用户任务。

记录知识、锤炼自我 2942

OCR文字识别基础

ocr文字识别

m0_47405013的博客 1755

Open3D 使用RANSAC分割平面【2026最新版】

使用RANSAC从点云中分割平面,用segement_plane函数。博客长期更新,本文最新更新时间为:2026年2月28日。

点云侠的博客 37万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

上一篇: Jenkins中使用火线进行Android静态代码扫描
下一篇: Android性能指标FPS获取的JAVA实现
wpyily
博客等级 码龄19年 37粉丝 31原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值