書籍信息,內容簡介,目錄,
書籍信息
著 者:(德)Marcel Weiher(馬塞爾·韋伊爾)
作 譯 者:李俊陽等
出版時間:2018-06 千 字 數:442
版 次:01-01 頁 數:368
開 本:16開
裝 幀:
I S B N :9787121338144
換 版:
所屬分類:科技 >> 計算機 >> 作業系統
內容簡介
隨著套用功能的日益增加,性能問題也逐漸浮出水面,進入我們的視野之中。本書作者Marcel Weiher在性能調優領域有著豐富的經驗,在他的帶領下,你將會了解如何提升CPU、記憶體、I/O、圖像、Swift等方面的性能,如何在開發過程中定位到性能的瓶頸和問題,他同時還介紹了性能最佳化的編程技巧和最佳實踐,從而幫助你寫出更高效、更快速的代碼。此外,你還將學習到定位性能問題的工具使用方法以及最佳實踐,並跟隨示例來學習性能最佳化。本書適合尋求進階及所有對性能最佳化感興趣的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
數據挖掘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