《iOS和macOS性能最佳化:Cocoa,Cocoa Touch,Objective-C和Swift》是2018年6月電子工業出版社出版的圖書,作者是(德)Marcel Weiher(馬塞爾·韋伊爾)。
基本介紹
- 中文名:iOS和macOS性能最佳化:Cocoa,Cocoa Touch,Objective-C和Swift
- 作者:(德)Marcel Weiher(馬塞爾·韋伊爾)
- 譯者:李俊陽
- 出版社:電子工業出版社
- 出版時間:2018年6月
- 頁數:368 頁
- 定價:99 元
- 開本:16 開
- 裝幀:平裝
- ISBN: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