《iOS和macOS性能优化 Cocoa、Cocoa Touch、Objective-C和Swift》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:(德)Marcel Weiher(马塞尔·韦伊尔)
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2018
  • ISBN:9787121338144
  • 页数:351 页
图书介绍:了解优化原则、测量工具、陷阱和技术;认识什么时候仔细优化,如果它不值得你浪费时间;平衡性能和封装创建高效的对象表示、存取与计算;避免错误,延缓和阻碍后优化Objective-C程序;修复内存和资源管理的漏洞和其他问题;解决与驱动器,网络,序列化和SQ相关的I / O问题;编码图形用户界面,不要让你的iOS设备的资源有限;了解所有开发者需要了解的快速性能。

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