FPS是测量用于保存、显示动态视频的信息数量。通俗来讲就是指动画或视频的画面数。例如在电影视频及数字视频上,每一帧都是静止的图象;快速连续地显示帧便形成了运动的假象。每秒钟帧数 (FPS) 愈多,所显示的动作就会愈流畅。通常,要避免动作不流畅的最低FPS是30。某些计算机视频格式,例如 AVI,每秒只能提供15帧。而当刷新率太低时我们肉眼都能感觉到屏幕的闪烁,不连贯,对图像显示效果和视觉感观产生不好的影响。

FPS的获取通常是基于CADisplayLink这个类做FPS计算的,CADisplayLink是CoreAnimation提供的另一个类似于NSTimer的类,它会在屏幕每次刷新回调一次。既然CADisplayLink可以以屏幕刷新的频率调用指定selector,而且iOS系统中正常的屏幕刷新率为60Hz(60次每秒),那只要在这个方法里面统计每秒这个方法执行的次数,通过次数/时间就可以得出当前屏幕的刷新率了。

- (void)startMonitoring {if (_link) {[_link removeFromRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes];[_link invalidate];_link = nil;}_link = [CADisplayLink displayLinkWithTarget:self selector:@selector(fpsDisplayLinkAction:)];[_link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes];
}#pragma mark - FPS
- (void)fpsDisplayLinkAction:(CADisplayLink *)link {if (_lastTime == 0) {_lastTime = link.timestamp;return;}_count++;NSTimeInterval delta = link.timestamp - _lastTime;if (delta < 1) return;_lastTime = link.timestamp;_fps = _count / delta;_count = 0;
}

值得注意的是基于CADisplayLink实现的 FPS 在生产场景中只有指导意义,不能代表真实的 FPS,因为基于CADisplayLink实现的 FPS 无法完全检测出当前 Core Animation 的性能情况,它只能检测出当前 RunLoop 的帧率。但要真正定位到准确的性能问题所在,最好还是通过Instrument的Core Animation来确认

参考文章

1、 https://www.jianshu.com/p/4091870ca3f0

软件测试之性能测试(ios)——获取fps(流畅度)相关推荐

  1. 软件测试之性能测试面试题合集

    软件测试之性能测试面试题合集 1.描述一下你们公司的性能测试流程? 1)分析性能需求(用户使用最频繁的场景进行测试),确定性能指标(例如:事务通过率100%,top99%是5秒,最大并发是2000,C ...

  2. 鸿蒙os1.0.1更新,鸿蒙OS 1.0.1更新,微内核代源码相当于iOS,4GB流畅度媲美12GB

    原标题:鸿蒙OS 1.0.1更新,微内核代源码相当于iOS,4GB流畅度媲美12GB 众所周知在谷歌不再给华为手机授权GMS服务之后,华为发布了自研系统鸿蒙系统(HarmonyOS),同时带来基于该系 ...

  3. 谈性能测试-FPS流畅度

    FPS:frames per second,每秒的帧数,一般在Android app里,1秒钟60帧是比较流畅的. 过渡渲染:描述的是屏幕上的某个像素,在同一帧的时间内被绘制了多次. 分析页面卡慢的方 ...

  4. 华为鸿蒙运行是苹果几倍,鸿蒙2.0大战iOS,论流畅度苹果不是华为对手

    智能手机十多年的历史留下一个非常有意思的固有印象,很多人都以为安卓不如iOS流畅,特别是在机型的表现之上.一款新安卓手机用久了肯定会出现卡的问题,一般的iPhone机型是不会出现这样的问题的,所以我们 ...

  5. iOS 12测评:一改iOS 11华而不实 流畅度大幅提升限制屏幕时间防沉迷

    iOS 12于今年6月在WWDC上宣布后,已经为开发人员和普通大众经过数月的测试后正式推出.苹果的iOS更新,它将适配各种iPhone和iPad设备,从今年最新的iPhone XS一直追溯到2013年 ...

  6. 软件测试之——性能测试

    性能测试的定义 性能测试的定义:通过自动化测试工具或者代码手段,来模拟正常.峰值负载访问被测系统,来观测系统各项性能指标是否合格的过程. 性能测试的分类 基于代码的性能测试(关注点是函数或方法执行的效 ...

  7. 软件测试之——性能测试(超级详细)这些你都知道吗?

    目录:导读 前言 一.基本概念 二.负载测试 三.压力测试 四.基准测试 五.配单测试 六.容量测试 七.稳定性测试 八.扩展性测试 九.负载测试VS压力测试 十.业务场景 十一.总结 前言 刚开始, ...

  8. 软件测试之性能测试流程

    与功能测试相比,性能测试在技术层面具有更大的复杂性.在以往的测试流程中,性能测试只是测试流程的一部分,是系统或验收测试的一个可选项.但随着测试技术的发展.许多公司也单独把性能测试独立出来,建立专门的性 ...

  9. 软件测试之——性能测试,Web性能测试用例(详全)

    目录:导读 前言 一.预期指标的性能测试 二.独立业务性能测试 三.组合业务性能测试 四.疲劳强度性能测试 五.大数据量性能测试 六.网络性能测试 七.服务器性能测试 八.总结 前言 性能测试 简而言 ...

最新文章

  1. 【刷算法】判断链表是否有环以及返回入环节点
  2. SQL Server2008(一)简介
  3. 微软如何在3年内将数据中心的用水量削减95%
  4. AV1为何有信心打败H.265?
  5. redis版本_全球首发|阿里云正式推出云数据库Redis6.0版本
  6. 獲取mysql字段的注释或描述
  7. 1.android体系结构介绍
  8. H计算机语言吗,计算机考研面试------编程语言
  9. 全栈性能测试修炼宝典jmeter实战电子版_推荐一款技术人必备的接口测试神器:Apifox...
  10. 使用JsonCpp实现JSON文件读写操作的方法
  11. SpringMVC系列(四)使用 POJO 对象绑定请求参数值
  12. 微分方程数值计算matlab实现,微分方程数值解及Matlab实现
  13. Swift开发:使用SwiftyJSON解析JSON数据
  14. 盛金公式解一元三次方程_一元三次方程的解法
  15. CleanMyMac X4.12.2免费版MAC电脑系统磁盘优化工具
  16. CONTRASTIVE REPRESENTATION DISTILLATION
  17. 肖特基二极管焊接注意事项和判断正负极的方法
  18. html班级管理,谈小学班级管理
  19. SAP那些事-理论篇-1- SAP初次亲密接触
  20. mybatis拦截器添加额外参数

热门文章

  1. AI全栈设计师的能力公式,及如何用AI来增强设计能力
  2. c盘文件被木马删怎么恢复?教你四步轻松找回文件!
  3. 李航《统计学习方法》AdaBoost算法(课后习题)
  4. 数值分析:复化公式求解定积分
  5. 在计算机系统中 屏幕的显示分辨率为,屏幕分辨率调不了怎么办 电脑分辨率显示不正确时应该怎么做...
  6. 为什么点击验证码不刷新
  7. 【LiteOS】LiteOS移植常见问题分析
  8. 软件工程毕业设计 SSM汽车租赁管理系统(源码+论文)
  9. 数据库还原-bak文件
  10. android实现大文件断点上传