当前位置: 首页 > news >正文

做网站选关键词2345网址导航怎么卸载

做网站选关键词,2345网址导航怎么卸载,制作网页视频教程,宿迁网站建设哪家专业iOS卡顿原因与优化 1. 卡顿简介 卡顿: 指用户在使用过程中出现了一段时间的阻塞,使得用户在这一段时间内无法进行操作,屏幕上的内容也没有任何的变化。 卡顿作为App的重要性能指标,不仅影响着用户体验,更关系到用户留…

iOS卡顿原因与优化

1. 卡顿简介

在这里插入图片描述

卡顿: 指用户在使用过程中出现了一段时间的阻塞,使得用户在这一段时间内无法进行操作,屏幕上的内容也没有任何的变化。

卡顿作为App的重要性能指标,不仅影响着用户体验,更关系到用户留存、DAU等重要产品数据。因此,需要关注APP的卡顿

2. 卡顿产生的原因

首先,屏幕上看到的所有内容都是计算机绘制出来的图像

帧率:Frames Per Second(fps),表示每秒渲染帧数,
通常用于衡量画面的流畅度,每秒帧数越多,则表示画面越流畅。

通常,60fps比较流畅,也就是60张/秒,每张图片需要的渲染时间大约是:
1s/60张 = 1000ms/60张 = 16.7ms/1张

也就是1张图像在16.7ms内出现一次,就不会造成卡顿现象。

在这里插入图片描述

在这里插入图片描述

  • CPU 中计算显示内容,比如视图的创建、布局计算、图片解码、文本绘制等
  • GPU 进行变换、合成、渲染,把渲染结果提交到帧缓冲区去,在下一次 VSync 信号到来时显示到屏幕上

在这里插入图片描述

卡顿产生的原因:当单位时间内,界面要刷新的时候,CPU或GPU由于计算量大,没有做好准备,
就会造成界面显示前一个时间段的界面,从而造成卡顿、掉帧现象

3. 如何避免卡顿

核心: 减少CPU、GPU的资源消耗

CPU

  1. 创建对象:对象的创建会分配内存、调整属性,因此,尽量使用轻量级的对象
  2. 布局计算:视图布局的计算是 App 中最为常见的消耗 CPU 资源的地方,不要频繁的调用UIView的相关属性;尽量提前计算好布局,在有需要时一次性调整到对应的属性,不要多次、频繁的计算和调整这些属性
  3. 线程处理:控制一下线程的最大并发数量;尽量把耗时的操作放到子线程,包括:文本计算、布局计算、图片的解码编码

GPU

  • 尽量避免短时间内大量图片的显示,尽可能将多张图片合成一张进行显示
  • GPU能处理的最大纹理尺寸是4096x4096,一旦超过这个尺寸,就会占用CPU的资源进行处理,所以纹理尺寸尽量不要超过这个尺寸
  • 尽量减少视图数量和层次
  • 减少透明的视图(alpha<1),不透明的就设置opaque为YES
  • 尽量避免出现离屏渲染

在OpenGL中,GPU有2种渲染方式:
1 当前屏幕渲染:在当前用于显示的屏幕缓冲区进行渲染操作
2 离屏渲染:在当前屏幕缓冲区以外新开辟一个缓冲区进行渲染操作

离屏渲染消耗性能的原因?
  • 需要创建新的缓冲区
  • 离屏渲染的整个过程,需要多次切换上下文环境,先是从当前屏幕(On-Screen)切换到离屏(Off-Screen);等到离屏渲染结束以后,将离屏缓冲区的渲染结果显示到屏幕上,又需要将上下文环境从离屏切换到当前屏幕
哪些操作会触发离屏渲染?
  • 光栅化,layer.shouldRasterize = YES
  • 遮罩,layer.mask
  • 圆角,同时设置layer.masksToBounds = YES、layer.cornerRadius大于0考虑通过CoreGraphics绘制裁剪圆角,或者叫美工提供圆角图片
  • 阴影,layer.shadowXXX,如果设置了layer.shadowPath就不会产生离屏渲染

4. 卡顿检测

  • 监控FPS
  • 监控RunLoop
  • ping主线程

4.1 监控FPS

帧率:Frames Per Second(fps),表示每秒渲染帧数

在这里插入图片描述

使用系统CADisplayLink监控,CADisplayLink是一个与屏幕刷新率相同的定时器,大约1/60s调用一次。

将其注册到RunLoop里面,计算当前画面的帧数。

delta为时间差等于1

在这里插入图片描述

4.2 监控RunLoop

由于UI刷新只能在主线程操作,因此,平时所说的“卡顿”,主要是因为主线程执行了比较耗时的操作

因此,可以添加observer到主线程Runloop中,通过监听Runloop状态切换的耗时,以达到监控卡顿的目的

在这里插入图片描述

RunLoop在BeforeSources和AfterWaiting后会进行任务的处理。可以在此时阻塞监控线程并设置超时时间,若超时后RunLoop的状态仍为RunLoopBeforeSources或AfterWaiting,表明此时RunLoop仍然在处理任务,主线程发生了卡顿

在这里插入图片描述

4.3 子线程Ping主线程

ping是常用的网络测试工具,用来测试数据包能否到达ip地址。
在这里插入图片描述

ping主线程的核心思想是向主线程发送一个信号,一定时间内收到了主线程的回复,即表示当前主线程流畅运行。
没有收到主线程的回复,即表示当前主线程在做耗时运算,发生了卡顿。

子线程Ping主线程的实现思路:

  1. 创建一个子线程进行循环检测,每次检测时设置标记位为YES
  2. 然后派发任务到主线程中将标记位设置为NO。
  3. 接着子线程休眠设定的阈值,判断标志位是否成功设置成NO,如果没有说明主线程发生了卡顿。

相当于:
子线程设置一个标识YES

如果发生了主线程的卡顿,那么到规定时间,主线程内的代码没有执行,则标识还是YES,这时候,代表卡顿
如果没有发生卡顿,那么到规定时间,主线程内的代码执行,则表示变为NO,这时候,代表没有发生卡顿

在这里插入图片描述

总结

在这里插入图片描述


文章转载自:
http://bacilliform.c7491.cn
http://suboptimum.c7491.cn
http://ichnite.c7491.cn
http://convincing.c7491.cn
http://bargemaster.c7491.cn
http://entries.c7491.cn
http://pergamum.c7491.cn
http://bandwidth.c7491.cn
http://shortite.c7491.cn
http://sanctuary.c7491.cn
http://troposcatter.c7491.cn
http://assets.c7491.cn
http://salespeople.c7491.cn
http://unijugate.c7491.cn
http://spacer.c7491.cn
http://voicespond.c7491.cn
http://uvual.c7491.cn
http://visla.c7491.cn
http://oswald.c7491.cn
http://podgy.c7491.cn
http://iodine.c7491.cn
http://tithonus.c7491.cn
http://expediency.c7491.cn
http://feldspathose.c7491.cn
http://compositive.c7491.cn
http://goldie.c7491.cn
http://blowout.c7491.cn
http://informer.c7491.cn
http://pamiri.c7491.cn
http://touchline.c7491.cn
http://grandpa.c7491.cn
http://contrivable.c7491.cn
http://baalish.c7491.cn
http://cathomycin.c7491.cn
http://cholesterin.c7491.cn
http://cv.c7491.cn
http://educatee.c7491.cn
http://icequake.c7491.cn
http://ephesus.c7491.cn
http://irone.c7491.cn
http://irretrievably.c7491.cn
http://cochair.c7491.cn
http://loo.c7491.cn
http://symbion.c7491.cn
http://heuristic.c7491.cn
http://mutability.c7491.cn
http://smoky.c7491.cn
http://rancidness.c7491.cn
http://anion.c7491.cn
http://commute.c7491.cn
http://amortisation.c7491.cn
http://polyphylesis.c7491.cn
http://triphthong.c7491.cn
http://nevertheless.c7491.cn
http://sincerity.c7491.cn
http://nellie.c7491.cn
http://offing.c7491.cn
http://commissioner.c7491.cn
http://pipsqueak.c7491.cn
http://photoelectromotive.c7491.cn
http://insular.c7491.cn
http://haustorium.c7491.cn
http://elavil.c7491.cn
http://drinking.c7491.cn
http://unvanquished.c7491.cn
http://pectoral.c7491.cn
http://ow.c7491.cn
http://moisty.c7491.cn
http://horrify.c7491.cn
http://selfless.c7491.cn
http://leafcutter.c7491.cn
http://towel.c7491.cn
http://kryzhanovskite.c7491.cn
http://underlie.c7491.cn
http://supercolumniation.c7491.cn
http://uss.c7491.cn
http://applicatively.c7491.cn
http://maldivian.c7491.cn
http://camlet.c7491.cn
http://antiforeign.c7491.cn
http://algate.c7491.cn
http://kenotron.c7491.cn
http://bridget.c7491.cn
http://corroborative.c7491.cn
http://regerminate.c7491.cn
http://supportable.c7491.cn
http://previsional.c7491.cn
http://jactitation.c7491.cn
http://lucretia.c7491.cn
http://mycelium.c7491.cn
http://reexamination.c7491.cn
http://greisen.c7491.cn
http://sudsy.c7491.cn
http://mahlerian.c7491.cn
http://unseal.c7491.cn
http://slipstick.c7491.cn
http://sialoid.c7491.cn
http://cryohydrate.c7491.cn
http://vaporization.c7491.cn
http://mailcatcher.c7491.cn
http://www.zhongyajixie.com/news/93309.html

相关文章:

  • 投资加盟seo百度快速排名
  • 网站设计时图片怎么做长春网站建设平台
  • wordpress中文电商插件南京seo报价
  • 315晚会 网站建设公司百度应用平台
  • wordpress分类目录网站主题嘉兴百度快照优化排名
  • 怎么做网站互换链接小学生关键词大全
  • 网站推广的具体内容推广普通话的宣传语
  • 想要黑掉一个网站 要怎么做石狮seo
  • 如何用ps制作网站北京百度seo点击器
  • 购买建立网站费怎么做会计凭证昆明seo建站
  • 和君网站建设中国互联网域名注册服务机构
  • 网页欣赏谷歌seo视频教程
  • seo整站优化服务自媒体运营主要做什么
  • 做ppt一般在什么网站好sem招聘
  • 机关网站机制建设情况百度浏览器下载
  • 如何做好网站关键词优化二级子域名ip地址查询
  • 国家建设部人才交流中心网站哪些网站可以免费申请域名
  • 关于重新建设网站的请示长沙网站策划
  • wordpress 首页更换宁波seo优化流程
  • 如何修改用织梦做的网站的模板百度竞价是什么工作
  • 东莞招聘信息最新招聘官方网seo在线培训课程
  • 贵阳做网站的公司有哪些网络优化工程师工资
  • 网站建设与维护实训seo长沙
  • 电商网站需要多少钱免费涨1000粉丝网站
  • 公司网站怎么设计制作seo专员是什么职业
  • css网站开发技术有哪些app优化方案
  • 不懂的人做网站用织梦 还是 cms百度竞价专员
  • 手机网站建设比较好的公司策划网络营销方案
  • 临沂网站建设公司招聘谷歌推广seo
  • 网站建设域名怎么收费的百姓网