2018-11-02 处理 iOS 的性能优化  验证 google, 感谢 知乎。

基本工具、

业务优化、

内存优化、

卡顿优化、

布局优化、

电量优化、

安装包瘦身、

启动优化、

网络优化


iOS 性能优化常用套路、技术分析及其面试提示

1 iOS 性能优化介绍
1.1 智能机的新纪元
1.2 为什么性能优化很重要,及其处理思路
1.3 怎么读这本书
1.4 技术栈
1.5 准备啥
1.6 怎么看
1.7 概览
1.8 常见性能问题:
1.8.1 安装包瘦身
1.8.2 解决界面卡顿

2 Instruments 大法,运行时间分析,电量分析,UI 性能 (Swift 语言)
2.1 模拟器和真机:用真机做衡量
2.2 内存与性能
2.3 工具
2.3.1 基础工具: Instruments 介绍
2.3.2 内存分配
2.3.3 性能工具
2.4 常用套路
2.4.1 运行时间分析介绍
2.4.2 解决运行时间异常
2.4.3 解决 App 启动时间分析异常
2.4.4 解决内存问题
2.4.5 解决 UI 绘制问题, Core Animation 层次上
2.4.6 解决耗电问题
2.5 小结

3 优化表视图的性能: UITableView
3.1 一个例子
3.1.1 介绍 Instruments
3.1.2 例子一
3.1.3 例子二
3.2 常用优化
3.2.1 缓存高度
3.2.2 透明度
3.2.3 避免图形效果
3.3 小结

4 使用缓存技术,提高性能: 缓存图片
4.1 使用磁盘文件、内存和网络, 在性能上的不同
4.2 介绍缓存
4.2.1 缓存什么
4.2.2 对的缓存
4.2.3 错的缓存
4.2.4 查询消耗
4.2.5 存储消耗
4.2.6 缓存有效性
4.2.7 缓存算法
4.2.8 计算缓存
4.3 怎样使用缓存
4.3.1 图片放在哪里
4.3.2 缓存数据 ( 使用 Memory Sanitizer 优化)
4.4 小结

5 数据和数据结构层次上的优化
5.1 来一个例子
5.2 测量算法性能的理论问题
5.2.1 大 O 标记
5.2.2 具体实现
5.2.3 著名算法的大 O 标记
5.3 实际测量
5.4 数据结构与算法
5.4.1 苹果的数据结构
5.4.2 其他数据结构
5.4.3 二叉树
5.4.4 图
5.5 其他算法的解决姿势
5.5.1 递归
5.5.2 XML 解析
5.6 小节

6 使用多线程,并发使用数据
6.1 介绍线程和多线程
6.2 线程名词
6.3 第一个例子
6.4 多线程的优势
6.5 怎么写多线程的应用
6.5.1 创建一个线程
6.5.2 设置线程
6.5.3 线程的输入
6.5.4 使用线程的风险
6.5.5 解决线程同步
6.5.6 其他选择: 计时器等
6.6 使用 Instruments 优化线程 ( 使用 Thread Sanitizer 优化)
6.7 小节

7 内存使用上,优化性能
7.1 回顾一下
7.1.1 手工管理内存( 面试的时候,可能会问到 )
7.1.2 自动释放
7.1.3 自动释放池
7.2 自动引用计数
7.2.1 ARC 策略
7.2.2 ARC 的新标准
7.2.3 其他属性
7.3 现在的内存管理
7.3.1 循环引用问题
7.3.2 使用弱引用
7.3 视图控制器
7.3.1 视图控制器的加载
7.3.2 视图控制器的释放
7.3.3 界面上,显示与隐藏视图
7.4 对象拷贝
7.4.1 浅拷贝与深拷贝
7.4.2 实现深拷贝
7.4.3 对象的拷贝
7.5 现在使用的自动释放池
7.6 使用 Instruments
7.6.1 静态分析
7.6.2 内存泄漏
7.6.3 僵尸对象
7.6.4 内存分配
7.6.5 内存警告层次上

8 应用的多任务处理中,多线程有效管理内存
8.1 手机的多任务处理
8.1.1 多任务的使用姿势
8.1.2 多任务的优缺点
8.2 后台任务
8.2.1 音频任务
8.2.2 展示启动界面
8.2.3 定位服务
8.2.4 本地通知
8.2.5 网络电话
8.2.6 后台处理
8.2.7 处理后台运行的触发
8.2.8 系统状态改变的通知
8.3 处理 iOS 多版本
8.4 小结

9 使用 C / C++ , 提高性能
9.1 优缺点
9.2 C 与 C++ 介绍
9.2.1 使用 C
9.2.2 使用 C++
9.3 例子
9.3.1 SQLite
9.3.2 C++ 的例子
9.4 小结

11 CPU 使用原则
11.1 来个例子
11.1.1 微处理器基线的风险
11.1.2 更多的整型计算
11.1.3 Swift
11.1.4 其他语言
11.2 混合应用的威力
11.3 趋势
11.4 操作的成本
11.5 计算的复杂性
11.6 小结

12 CPU 的测量及其工具
12.1 命令行工具
12.1.1 top 命令
12.1.2 time 命令
12.1.3 sample 命令 (采样)
12.2 Xcode 评估
12.3 Instruments
12.3.1 启动与数据采集
12.3.2 分析选项
12.3.3 基本分析
12.3.4 源代码
12.3.5 数据挖掘: 聚焦
12.3.6 数据挖掘: 修建
12.4 内部测量
12.4.5 单元测试
12.5 Dtrace 动态跟踪
12.6 调用背后的优化 ( 超出意料的优化 )
12.7 小结

13 CPU 错误及其解决
13.1 表示
13.1.1 基础类型
13.1.2 字符串
13.2 对象
13.2.1 访问
13.2.2 公共的访问
13.2.3 创建对象与缓存
13.2.4 可变性与缓存
13.2.5 惰性求值
13.2.6 缓存警告
13.2.7 泛型表示的缺点(直接表示的缺点)
13.2.8 数组和批量处理
13.2.9 字典
13.3 发消息
13.3.1 缓存 IMP
13.3.2 消息转发
13.3.3 均匀性和优化
13.4 方法
13.4.1 使用 CoreFoundation 的常见错误
13.5 多核的 CPU
13.5.1 线程
13.5.2 工作队列
13.6 测量优化

14 CPU 例子,XML 解析
14.1 一个 HTML 扫描器
14.2 回调到消息的映射
14.3 对象
14.4 廉价的对象
14.5 赋值
14.6 调优
14.7 优化整个部件: MAX
14.8 MAX 的实现
14.9 小结

15 内存使用原则
15.1 内存的层级
15.2 Mach 虚拟内存
15.3 堆与栈
15.3.1 栈分配
15.3.2 使用 malloc() 方法,分配堆的内存
15.4 资源管理
15.4.1 垃圾回收
15.4.2 Foundation 框架下的对象拥有
15.4.3 追踪垃圾回收
15.4.4 自动引用计数
15.4.5 进程级别的资源回收
15.5 小结

16 内存的测量及其工具
16.1 Xcode 计量
16.2 命令行工具
16.2.1 top 命令
16.2.2 heap 命令(堆)
16.2.3 leaks 和 malloc debug
16.3 内部测量
16.4 用 Instruments 调试内存
16.4.1 使用 Instruments 的 Leaks 功能
16.4.2 使用 Instruments 的 Allocations功能
16.4.3 使用 Instruments 的 VM Tracker 功能(虚拟内存追踪者)
16.4.4 使用 Instruments 的 Counters/ PM Events 功能(计数 / PM 事件 )
16.5 小结

17 内存的错误及其解决

18 内存例子,过滤流

19 Swift

20 I/O 使用原则

21 I/O 的测量及其工具

22 I/O 的错误及其解决

23 I/O例子

24 图形化与界面的使用原则

25 图形化与界面的测量及其工具

26 图形化与界面的错误及其解决

27 图形化与界面例子


1.0

https://github.com/skyming/iOS-Performance-Optimization


FPS


内存


App 启动,
冷启动和热启动

主要是热启动。
Before main() ,
mian 函数前面
Dylib Loading, load dynamic libraries.
Rebase / Binding, Rebase and Binding time. Objective-C 类的数量,有着直接的影响。
Obj-C Setup, 通常这不是瓶颈, 通过改进 Rebase / Binding,提高这一块。
Initializers。 Objective-C 类里面的 + load 方法有影响。


加载时间,

搞 Timer

Code, CADisplayLink

Xcode Debug

Instrument.

页面卡顿怎么解决

电池














https://www.zhihu.com/question/34834773
原文链接

这个问题我们也是试了很久才解决的。

一开始,无论填什么号码都不行,换了好多手机号码,固定电话号码,都不行。

后来终于找到了窍门:关键在于你注册的第一步,选国家的时候一定要根据你的VPN的国家来选,不是选中国的。到了第二步,用中国的手机号就能注册了。

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

推荐阅读更多精彩内容