logo
分类于: 职场办公 其它

简介

iOS和macOS性能优化: Cocoa、Cocoa Touch、Objective-C和Swift

iOS和macOS性能优化: Cocoa、Cocoa Touch、Objective-C和Swift 7.9分

资源最后更新于 2020-11-17 04:25:44

作者:【德】Marcel Weiher

译者:李俊阳 等

出版社:

出版日期:2018-01

ISBN:9787121338144

文件格式: pdf

标签: iOS 性能优化 macOS 计算机 编程 iOS进阶 好书,值得一读 Objective-C

简介· · · · · ·

随着应用功能的日益增加,性能问题也逐渐浮出水面,进入我们的视野之中。《iOS和macOS性能优化:Cocoa、Cocoa Touch、Objective-C和Swift》作者Marcel Weiher在性能调优领域有着丰富的经验,在他的带领下,你将会了解如何提升CPU、内存、I/O、图像、Swift等方面的性能,如何在开发过程中定位到性能的瓶颈和问题,他同时还介绍了性能优化的编程技巧和最佳实践,从而帮助你写出更高效、更快速的代码。此外,你还将学习到定位性能问题的工具使用方法以及最佳实践,并跟随示例来学习性能优化。

《iOS和macOS性能优化:Cocoa、Cocoa Touch、Objective-C和Swift》适合寻求进阶及所有对性能优化感兴趣的iOS 开发人员阅读。

想要: 点击会收藏到你的 我的收藏,可以在这里查看

已收: 表示已经收藏

Tips: 注册一个用户 可以通过用户中心得到电子书更新的通知哦

目录

1 CPU:原理 1
一个简单的例子 2
(微)基准的危险 3
更多整数求和的方式 4
Swift 5
其他语言 7
混编的力量 9
趋势 10
操作成本 12
复杂度计算 14
总结 16
2 CPU:测量和工具 17
命令行工具 18
top 18
time 19
sample 19
Xcode 测量工具 22
Instruments 23
设置和数据收集 24
性能分析选项 25
基本分析 27
源代码 29
数据挖掘I:Focus 31
数据挖掘II:Pruning 34
内部测量 35
测试 36
dtrace(dynamic tracing,动态跟踪) 37
职责之外的优化 38
总结 39
3 CPU:陷阱和优化技巧 41
数据表示 41
基本类型 42
字符串 45
对象 47
存取器 48
公共访问(Public Access) 51
对象创建和缓存 52
可变性和缓存 53
惰性求值 55
缓存注意事项 55
陷阱:通用(中级)表示 57
数组和批处理 58
字典 60
消息传递 63
IMP 缓存 65
转发 67
均匀性和优化 69
方法 70
陷阱:CoreFoundation 70
多核 71
线程(Thread) 72
工作队列 73
有节制地优化 74
4 CPU 实战:XML 解析 77
HTML 扫描器 78
将回调映射为消息 81
对象 83
对象的高效性能 85
性能评估 88
调整 91
优化整个组件:MAX 92
MAX 实现 94
总结 95
5 内存:原理 97
内存层次结构 97
Mach 虚拟内存 103
堆和栈 104
栈分配 106
使用malloc()进行堆分配 108
资源管理 111
垃圾回收 111
Foundation 对象所有权 112
跟踪垃圾回收 113
自动引用计数(Automatic Reference Counting) 114
过程式资源回收 115
总结 115
6 内存:测量与工具 117
Xcode 计量表 117
命令行工具 118
top 118
heap 120
leaks 及malloc_debug 122
代码内进行内存测量 123
内存监测工具 124
Leaks 124
Allocations 125
VM Tracker 132
计数器与性能监测事件 133
总结 134
7 内存:陷阱和优化技巧 137
引用计数 137
避免内存泄漏 139
Foundation 对象和基本类型对比 141
更小的结构 143
千禧危机 145
压缩 145
可清除内存 146
内存与并发 146
架构注意事项 147
临时分配与对象缓存 152
NSCache 与libcache 153
内存映射文件 154
madvise 157
iOS 注意事项 158
ARC 优化 158
总结 161
8 内存管理实战:FilterStream 架构 163
UNIX 管道及过滤器 163
面向对象的过滤器 165
DescriptionStream 166
消除description 中的无限递归 170
数据流层次结构 172
总结 173
9 Swift 175
Apple 所声称的Swift 性能 175
语言特性 177
基准代码 179
Swift 性能评估 180
基本性能特征 180
集合 181
更进一步 190
Nginx HTTP 解析器 190
Freddy JSON 解析器 191
图片处理 191
观察 192
编译时间 193
类型推断 193
泛型特化 195
全模块优化 197
控制编译时间 197
面向优化器编程 198
一个足够智能的编译器 199
优化编译器之死 201
实用建议 203
备用方案 204
总结 207
10 I/O:原理 209
硬件 209
硬盘驱动器 209
固态硬盘 211
网络 212
操作系统 212
抽象概念:字节流 212
文件I/O 214
网络栈 218
总结 218
11 I/O:测量与工具 221
负形空间:top 与time 222
信息概览:iostat 和netstat 223
Instruments 224
详细追踪:fs_usage 228
总结 231
12 I/O:陷阱和优化技巧 233
将字节封装为NSData 233
内存映射异常 235
如何分块 237
UNIXy I/O 238
网络I/O 240
堆叠传输 241
限制请求 243
数据处理 244
异步I/O 245
HTTP 服务 246
序列化 250
内存转储 251
一个简单的XML 格式 252
属性列表 254
归档 256
序列化总结 258
CoreData 260
批量创建和更新 261
Fetch 和Fault 技术 263
对象交互 266
子集 266
分析 267
SQLite 267
关系型和其他非数据库 269
事件发布 270
混合形式 271
隔离存储 272
总结 272
13 I/O:实战 273
iPhone 游戏字典 273
有趣的属性列表 277
二进制属性列表读取器 278
懒加载 282
避免中间代码 284
逗号分隔值 287
公共交通调度数据 289
站点信息 290
站点停靠时间检索 291
站点停靠时间导入 292
更快的CSV 解析 294
对象分配 294
Push 与Pull 的比较 296
感兴趣的键 296
并行 296
总结 299
14 图像和UI:原理 301
响应能力 301
软件和API 302
Quartz 和PostScript 图像模型 305
OpenGL 307
Metal 307
图形硬件加速 307
从Quartz 到Core Animation 311
总结 314
15 图像和UI:测量和工具 315
CPU 分析仪 315
Quartz 调试 317
Core Animation 工具 318
当CPU 不再是问题 319
我在测量什么 327
总结 329
16 图像和UI:陷阱和优化技巧 331
陷阱 331
优化技巧 332
过多通信导致安装缓慢 333
节流显示 333
使用节流显示 335
今日安装程序和进度报告 335
iPhone 无法承受之重 336
一切都是假象 338
图像的缩放和剪切 338
缩略图绘制 340
如何确定没有绘制缩略图 341
如何真的不绘制缩略图 341
如何绘制非缩略图 342
在iPhone 上绘制直线 344
总结 346
17 图像和UI:实战 347
优美的天气应用 347
更新 348
探索PNG 348
头脑风暴 350
JPEG 数据点 350
测量时的小错误 351
JPNG 与JPJP 353
优美的启动 353
Wunderlist 3 354
Wunderlist 2 354
整体架构 355
URI 与进程中REST 356
最终一致的异步数据存储 357
RESTOperation 队列 358
流畅、反应灵敏的UI 359
简评Wunderlist 361
总结 361