iOS ~ 性能优化须知道

参考文档:
Instruments 官方文档
Instruments 使用教学.Video
Optimizing App Startup Time 官方.Video

总结图

1、性能检测的工具Instruments介绍

Instruments 之 Time Profiler

主要用来查看那些耗CPU的代码是是不是在卡顿主线程

屏幕快照 2019-02-18 下午12.16.15.png

Instruments 之 Leaks 和 Allocations

发现和定位内存泄漏

屏幕快照 2019-02-18 下午12.17.19.png
屏幕快照 2019-02-18 下午12.17.43.png

Instruments 之 CoreAnimation

快速的发现 alpha blending 和 offscreen render 问题

屏幕快照 2019-02-18 下午2.42.12.png

❤️提示:symble信息缺失请看这:


屏幕快照 2019-02-18 下午1.57.49.png

❤️提示:查看内存泄漏的小工具


屏幕快照 2019-02-18 下午12.06.46.png

大神(要上班的斌哥)的相关文档:


2、Simulator 检查alpha blending 和 offscreen render 问题

屏幕快照 2019-02-18 下午4.32.06.png

3、Color Blended Layers 和 Offscreen Render

  • Color Blended Layers: 图层颜色混合(alpha blending)

举个例子:上层是蓝色(RGB=0,0,1),透明度为50%,下层是红色(RGB=1,0,0)。那么最终的显示效果是紫色(RGB=0.5,0,0.5)。这种颜色的混合(blended)需要消耗一定的GPU资源,在实际开发中可能不止只有两层。如果只想显示最上层的颜色,可以把它的透明度设置为100%,这样GPU会忽略下面所有的layer,从而节约了很多不必要的运算。

  • Offscreen Render: 离屏渲染

一、离屏渲染的触发方式

⭐️shadows(阴影)
⭐️shouldRasterize(光栅化)
⭐️masks(遮罩)
⭐️edge antialiasing(抗锯齿)
⭐️group opacity(不透明)
⭐️复杂形状设置圆角等…
⭐️渐变
⭐️UILabel, CATextLayer, Core Text……

二、GPU屏幕渲染有两种方式

1、On-Screen Rendering:意为当前屏幕渲染

指GPU的渲染操作是在当前用于显示的屏幕缓冲区中进行

2、Off-Screen Rendering:离屏渲染

指GPU在当前屏幕缓冲区以外新开辟一个缓冲区进行渲染操作

❓两种渲染方式比较

相比于当前屏幕渲染,离屏渲染的代价是很高的,主要体现在两个方面:

1、创建新缓冲区
要想进行离屏渲染,首先要创建一个新的缓冲区。

2、上下文切换
离屏渲染的整个过程,需要多次切换上下文环境:先是从当前屏幕(On-Screen)切换到离屏(Off-Screen);等到离屏渲染结束以后,将离屏缓冲区的渲染结果显示到屏幕上有需要将上下文环境从离屏切换到当前屏幕。而上下文环境的切换是要付出很大代价的。

三、渲染机制

CPU 计算好显示内容提交到 GPU,GPU 渲染完成后将渲染结果放入帧缓冲区,随后视频控制器会按照 VSync 信号逐行读取帧缓冲区的数据,经过可能的数模转换传递给显示器显示。


❤️ 了解离屏渲染请阅读:


iOS性能测试需关注:

  • 资源消耗
  • 内存泄漏
  • 流量消耗
  • 耗电功率
  • 渲染效果
  • 加载时间

iOS性能差的主要表现:

  • APP启动速度慢
  • 大数据量列表滑动卡顿
  • 列表图片加载过程卡顿
  • 交互事件响应慢

4、从Coding开始提高性能的技巧

  • Swift须知道:
    1、只是用Swift类型而不转为Cocoa类型
    2、尽量降低出现Optional的情况

  • 通用技巧:
    1、用ARC去管理内存(Use ARC to Manage Memory)
    2、适当的地方使用reuseIdentifier(Use a reuseIdentifier Where Appropriate)
    3、尽可能设置视图为不透明(Set View as Opaque When Possible)
    4、避免臃肿的XIBs文件(Avoid Fat XiBs)
    5、不要阻塞主进程(Don't Block the Main Thread)
    6、调整图像视图中的图像尺寸(Size Images to Image Views)
    7、选择正确集合(Choose the Correct Collection)
    8、启用Gzip压缩(Enable GZIP Compression)
    9、重用和延迟加载视图(Reuse and Lazy Load Views)
    10、缓存,缓存,缓存(Cache,Cache,Cache)
    11、考虑绘图(Consider Drawing)
    12、处理内存警告(Handle Memory Warnings)
    13、重用大开销对象(Reuse Expensive Objects)
    14、使用精灵表(Use Sprite Sheets )
    15、避免重复处理数据(Avoid Re-Processing Data)
    16、选择正确的数据格式(Choose the Right Data Format)
    17、适当的设置背景图片(Set Background Images Appropriately)
    18、减少你的网络占用(Reduce Your Web Footprint)
    19、设置阴影路径(Set the Shadow Path )
    20、优化你的表格视图(Optimize Your Table Views)
    21、选择正确的数据存储方式(Choose Correct Data Storage Option)
    22、加速启动时间(Speed up Launch Time )
    23、使用自动释放池(Use AutoRelease Pool)
    24、缓存图像(Cache Images-Or not )
    25、尽可能避免日期格式化器(Avoid Date Formatters Where Possible)


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,558评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,002评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,024评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,144评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,255评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,295评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,068评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,478评论 1 305
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,789评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,965评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,649评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,267评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,982评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,800评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,847评论 2 351

推荐阅读更多精彩内容