很多iOS 开发,开发过程中都会面临到解决App卡顿问题,从而也衍生出很多的方法去解决卡顿,这篇文章来描述下iOS卡顿产生的原因,以及如何进行iOS卡顿检测分析。

了解iOS卡顿原理

像素是如何显示到屏幕上?

从最初的电子枪显示器说起,电子枪逐行读取像素点,逐行发射到屏幕上,每当一行扫描完成,显示器会发出水平同步信号HSync;然后继续下一行,直到最后一行完成一帧的绘制,电子枪恢复到起点继续下一帧的绘制,显示器会发出一个垂直同步信号VSync。对于iOS设备,VSync信号的间隔是16.7ms,也就是1秒60帧。

实际绘制过程中:

1.由CPU 计算好显示的内容:如视图的创建,布局的计算,图片的解码,文本的绘制,

2.然后GPU完成渲染,得到最终的像素,像素会输出到帧缓存(Frame Buffer)中

3.Video Controller (视频控制器)发出垂直信号(每16.67ms读取一次)进行读取Frame Buffer

4.最终输出到Monitor(显示器)上面。

假设只有一个Frame Buffer,意味着GPU和CPU必须在VSync发出的瞬间完成前面所有的工作,否则在视频控制器显示的过程中修改Frame Buffer,那么显示器就会在这一帧的前半部分显示上一帧的内容,下半部分显示当前帧的内容,造成画面断层的怪异现象。为了解决这个问题,大多数平台都引入了多缓存机制,比如iOS平台的双缓存, Android平台的三缓存机制;

因为苹果使用双缓冲区,根据上图,当垂直信号过来之后,但是GPU还没有渲染完成,就会出现掉帧(卡顿)显现。

iOS卡顿检测分析

市面上的iOS卡顿分析方案有三种:监控FPS、监控RunLoop、ping主线程。这里就不在赘述了,下图总结方便大家了解一下。

上文我们从理论层面上了解了检测iOS卡顿的方法,但在实际操作中对开发人员来说可是个不小的工程,在此,我推荐使用第三方性能检测工具友盟+U-APM检测卡顿原因,只需要简单的集成方式,就可以对App进行全方位检测,友盟+U-APM中的卡顿分析是通过U-APM提供的监控SDK 捕获所监控App主线程消息执行超时的情况,可以帮助您优化用户使用体验、用户反馈问题是否与卡顿现象间接引发有关。

您可以在此页面查看不同时间段、筛选维度下的卡顿数据趋势,默认展示全部维度、今天的数据,您可以根据自己的查询条件进行筛选;其中的卡顿次数、卡顿率、卡顿用户数、卡顿用户占比都可一目了然。

可以在此列表中查看筛选维度+时间范围内,所有卡顿问题根据日志根据算法聚合后的错误列表,默认按照卡顿次数降序展示,帮助您快速的找到卡顿次数最多、影响最严重的卡顿问题。当然您也可以选择按照影响人数排行,找到影响面积最大的卡顿问题。

点击问题列表可查看日志详情,在这里便可以看到问题发生的位置了。

最后,友盟+U-APM的卡顿分析工具,大家可以放心使用,如果有不明白的小伙伴可以登录友盟官网体验。

关于ios 卡顿检测分析相关推荐

  1. ios实时卡顿检测和优化方案

    在移动设备上开发软件,性能一直是我们最为关心的话题之一,我们作为程序员除了需要努力提高代码质量之外,及时发现和监控软件中那些造成性能低下的"罪魁祸首"也是我们神圣的职责.友盟+U- ...

  2. iOS中的3种卡顿检测

    市面上的iOS卡顿分析方案有三种:监控FPS.监控RunLoop.ping主线程. 前面2个都比较熟悉,第三个是最近才了解到的. 方案一:监控FPS 一般来说,我们约定60FPS即为流畅.那么反过来, ...

  3. iOS性能优化-UI卡顿检测

    前言 在实现需求的同时,能写出既优雅性能又高效的代码是每个开发者都在追求的目标,但是在实际开发中,随着每个版本需求的迭代,功能变得越来越复杂,加上开发者的意识不够或者一时疏忽,日渐复杂的工程很容易产生 ...

  4. iOS界面优化 ——卡顿检测和优化方案

    iOS界面优化 --卡顿检测和优化方案 1. 卡顿原理 2. 卡顿检测 3. 界面优化 1. 卡顿原理 卡顿,也就是掉帧.当UIView被绘制时,cpu执行drawrect,通过context将数据写 ...

  5. 友盟+全面解析ios 卡顿问题

    iOS应用除了闪退问题会造成用户流失外,还有一个卡顿问题也会惹来许多差评.应用卡顿不像闪退一样直观明了,可以直接通过异常信号或调用栈分析得到,常常让人无处下手.好的用户体验需要我们把细节做到位,画面掉 ...

  6. iOS 卡顿原因及优化思路

    很多iOS 开发,都会面临到解决开发过程中的卡顿问题.卡顿就是在应用使用过程中出现界面不响应或者界面渲染粘滞的情况,用户在操作App时,会出现的页面掉帧现象,给用户直接观感受就是页面卡卡的,严重影响用 ...

  7. 微信iOS卡顿监控系统

    原创 2015-09-10 guoling WeMobileDev 引子 微信 iOS 团队在值班的时候,时不时会收到这样的卡顿反馈:"用户A 刚才碰到从后台切换前台卡了一下,最近偶尔会遇到 ...

  8. Android中app卡顿原因分析示例

    http://www.cnblogs.com/zhucai/p/weibo-graphics-performance-analyse.html 朱才 专注于Android图形动画 MIUI工程师 博客 ...

  9. Android卡顿检测及优化

    前言 之前在项目中做过一些Android卡顿以及性能优化的工作,但是一直没时间总结,趁着这段时间把这部分总结一下. 卡顿 在应用开发中如果留意到log的话有时候可能会发下下面的log信息: I/Cho ...

最新文章

  1. 傅里叶帮我看看,谁在照射我?
  2. python无师自通配套资源_Python编程 无师自通 专业程序员的养成
  3. 计数排序(Counting sort)
  4. jdbc代码_Mysql Java 驱动代码阅读笔记及 JDBC 规范笔记
  5. 关于STM32 __IO 的变量定义
  6. MATLAB代码:基于分布式ADMM算法的考虑碳排放交易的电力系统优化调度研究
  7. 如何调用CAD命令行命令?
  8. Node.js抓取网页图片
  9. [转发]猎人与鸟---- 对人生很重要的一个寓言故事
  10. 计算机网络复习笔记 之协议相关
  11. 关于ASCII码和ANSI码,以下说法不正确的是()?
  12. 美国宾州计算机学校,美国宾州有什么好大学
  13. 1.04 docker的网络
  14. 国际出版商Lulu 和Aspose 的渊源
  15. 种植人参,土壤不好,怎么办?
  16. C语言例题——输入两个正整数m和n,求其最大公约数和最小公倍数。
  17. MATLAB中逻辑类型详解
  18. Windows系统编译制作SpiderMonkey最新版mozjs-31.2.0版本
  19. 一、程序设计和C语言
  20. 一个免费的私有代码托管

热门文章

  1. C语言实现BC28NB模组上报数据到电信云
  2. 学python入门基础教程[推荐]
  3. 亲测好用的屏幕录制软件:camtasia2021 mac中文版
  4. 自动写故事、写字成图?5款有趣实用的AIGC工具分享
  5. win7开机卡在正在启动_手把手教你大白菜PE启动盘安装win7最详细的图解教程
  6. 机器学习中的方差与偏差
  7. 表单验证工具类ValidationUtils
  8. DOS的建文件夹,移动图片,多级文件夹建立
  9. 微信公众号新手注册,创建菜单栏,发布文章详细操作教程
  10. 简单排序算法时间空间复杂度分析及应用(7)-希尔排序