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
数据挖掘Ⅰ: Focus 31
数据挖掘Ⅱ: Pruning 34
内部测量 35
测试 36
dtrace (dynamic tracing,动态跟踪) 37
职责之外的优化 38
总结 39
3 CPU:陷阱和优化技巧 40
数据表示 40
基本类型 41
字符串 44
对象 46
存取器 47
公共访问(Public Access) 50
对象创建和缓存 51
可变性和缓存 52
惰性求值 54
缓存注意事项 54
陷阱:通用(中级)表示 56
数组和批处理 57
字典 59
消息传递 62
IMP缓存 64
转发 66
均匀性和优化 68
方法 69
陷阱:CoreFoundation 69
多核 70
线程(Thread) 71
工作队列 72
有节制地优化 73
4 CPU实战:XML解析 75
HTML扫描器 76
将回调映射为消息 79
对象 81
对象的高效性能 83
性能评估 86
调整 89
优化整个组件:MAX 90
MAX实现 92
总结 93
5内存:原理 94
内存层次结构 94
Mach虚拟内存 100
堆和栈 101
栈分配 103
使用malloc()进行堆分配 105
资源管理 108
垃圾回收 108
Foundation对象所有权 109
跟踪垃圾回收 110
自动引用计数(Automatic Reference Counting) 111
过程式资源回收 112
总结 112
6内存:测量与工具 113
Xcode计量表 113
命令行工具 114
top 114
heap 116
leaks及malloc debug 118
代码内进行内存测量 119
内存监测工具 120
Leaks 120
Allocations 121
VM Tracker 128
计数器与性能监测事件 129
总结 130
7内存:陷阱和优化技巧 132
引用计数 132
避免内存泄漏 134
Foundation对象和基本类型对比 136
更小的结构 138
千禧危机 140
压缩 140
可清除内存 141
内存与并发 141
架构注意事项 142
临时分配与对象缓存 147
NSCache与libcache 148
内存映射文件 149
madvise 152
iOS注意事项 153
ARC优化 153
总结 156
8内存管理实战:FilterStream架构 157
UNIX管道及过滤器 157
面向对象的过滤器 159
DescriptionStream 160
消除description中的无限递归 164
数据流层次结构 166
总结 167
9 Swift 168
Apple所声称的Swift性能 168
语言特性 170
基准代码 172
Swift性能评估 173
基本性能特征 173
集合 174
更进一步 183
Nginx HTTP解析器 183
Freddy JSON解析器 184
图片处理 184
观察 185
编译时间 186
类型推断 186
泛型特化 188
全模块优化 190
控制编译时间 190
面向优化器编程 191
一个足够智能的编译器 192
优化编译器之死 194
实用建议 196
备用方案 197
总结 200
10 I/O:原理 201
硬件 201
硬盘驱动器 201
固态硬盘 203
网络 204
操作系统 204
抽象概念:字节流 204
文件I/O 206
网络栈 210
总结 210
11 I/O:测量与工具 212
负形空间:top与time 213
信息概览:iostat和netstat 214
Instruments 215
详细追踪:fs usage 219
总结 222
12 I/O:陷阱和优化技巧 223
将字节封装为NSData 223
内存映射异常 225
如何分块 227
UNIXy I/O 228
网络I/O 230
堆叠传输 231
限制请求 233
数据处理 234
异步I/O 235
HTTP服务 236
序列化 240
内存转储 241
一个简单的XML格式 242
属性列表 244
归档 246
序列化总结 248
CoreData 250
批量创建和更新 251
Fetch和Fault技术 253
对象交互 256
子集 256
分析 257
SQLite 257
关系型和其他非数据库 259
事件发布 260
混合形式 261
隔离存储 262
总结 262
13 I/O:实战 263
iPhone游戏字典 263
有趣的属性列表 267
二进制属性列表读取器 268
懒加载 272
避免中间代码 274
逗号分隔值 277
公共交通调度数据 279
站点信息 280
站点停靠时间检索 281
站点停靠时间导入 282
更快的CSV解析 284
对象分配 284
Push与Pull的比较 286
感兴趣的键 286
并行 286
总结 289
14图像和UI:原理 291
响应能力 291
软件和API 292
Quartz和PostScript图像模型 295
OpenGL 297
Metal 297
图形硬件加速 297
从Quartz到Core Animation 301
总结 304
15图像和UI:测量和工具 305
CPU分析仪 305
Quartz调试 307
Core Animation工具 308
当CPU不再是问题 309
我在测量什么 317
总结 319
16图像和UI:陷阱和优化技巧 320
陷阱 320
优化技巧 321
过多通信导致安装缓慢 322
节流显示 322
使用节流显示 324
今日安装程序和进度报告 324
iPhone无法承受之重 325
一切都是假象 327
图像的缩放和剪切 327
缩略图绘制 329
如何确定没有绘制缩略图 330
如何真的不绘制缩略图 330
如何绘制非缩略图 331
在iPhone上绘制直线 333
总结 335
17图像和UI:实战 336
优美的天气应用 336
更新 337
探索PNG 337
头脑风暴 339
JPEG数据点 339
测量时的小错误 340
JPNG与JPJP 342
优美的启动 342
Wunderlist 3 343
Wunderlist 2 343
整体架构 344
URI与进程中REST 345
最终一致的异步数据存储 346
RESTOperation队列 347
流畅、反应灵敏的UI 348
简评Wunderlist 350
总结 350