iOS开发之常用技术点很好的文章iOS基本功

iOS ~ 性能优化须知道

2019-02-18  本文已影响176人  派大星的博客

参考文档:
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

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

一、离屏渲染的触发方式

⭐️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性能差的主要表现:


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


上一篇 下一篇

猜你喜欢

热点阅读