-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

編寫高性能的.NET代碼

( 簡體 字)
作者:[美]Ben Watson 沃森類別:1. -> 程式設計 -> .NET
譯者:
出版社:人民郵電出版社編寫高性能的.NET代碼 3dWoo書號: 47412
詢問書籍請說出此書號!

缺書
NT售價: 295

出版日:7/1/2017
頁數:212
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787115461919
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

內容簡介:

本書詳細介紹了如何編寫高性能的.NET程式,在zui大化託管代碼性能的同時,還能保證.NET的特性優勢。 本書循序漸進地深入.NET的各個部分,特別是底層的公共語言運行時(Common Language Runtime,CLR),瞭解CLR是如何完成記憶體管理、代碼編譯、併發處理等工作的。本書還詳細介紹了.NET的架構,探討了程式設計方式如何影響程式的整體性能,在全書中,還分享了發生在微軟的一些趣聞軼事。本書的內容偏重於伺服器程式,但幾乎所有內容也同樣適用於桌面端和移動端應用程式。 本書條理清楚,言簡意賅,適合有一定.NET基礎的讀者和想要提高代碼性能的C#程式師學習參考。
目錄:

第1章 性能評估及工具 1

1.1 選擇評估內容 1

1.2 平均值還是百分位值 3

1.3 評估工具 4

1.3.1 Visual Studio 5

1.3.2 效能計數器 7

1.3.3 ETW事件 13

1.3.4 PerfView 15

1.3.5 CLR Profiler 18

1.3.6 Windbg 20

1.3.7 .NET IL分析器 24

1.3.8 MeasureIt 25

1.3.9 代碼中的工具 25

1.3.10 SysInternals工具 26

1.3.11 資料庫 26

1.3.12 其他工具 27

1.3.13 評估本身的開銷 27

1.4 小結 27



第2章 垃圾回收 28

2.1 基本運作方式 30

2.2 配置參數 33

2.2.1 工作站模式還是伺服器模式 33

2.2.2 後臺垃圾回收 34

2.2.3 低延遲模式

(Low Latency Mode) 35

2.3 減少記憶體分配量 36

2.4 首要規則 37

2.5 縮短物件的生存期 37

2.6 減少對象樹的深度 38

2.7 減少對象間的引用 38

2.8 避免物件固定 38

2.9 避免使用終結方法 39

2.10 避免分配大物件 40

2.11 避免緩衝區複製 41

2.12 對長期存活物件和大型物件進行

池化 41

2.13 減少LOH的磁碟重組 45

2.14 某些場合可以強制執行完全

回收 46

2.15 必要時對LOH進行碎片

整理 47

2.16 在垃圾回收之前獲得通知 47

2.17 用弱引用作為緩存 50

2.18 評估和研究垃圾回收性能 51

2.18.1 效能計數器 51

2.18.2 ETW事件 52

2.18.3 垃圾回收的耗時 53

2.18.4 記憶體分配的發生時機 54

2.18.5 查看已在LOH中分配記憶體的

對象 55

2.18.6 查看記憶體堆中的全部物件 57

2.18.7 為什麼物件沒有被回收 60

2.18.8 哪些物件被固定著 61

2.18.9 記憶體碎片的產生時機 63

2.18.10 物件位於第幾代記憶體堆中 67

2.18.11 第0代記憶體堆中存活著哪些

對象 68

2.18.12 誰在顯式調用GC.Collect

方法 70

2.18.13 進程中存在哪些弱引用 70

2.19 小結 71



第3章 JIT編譯 72

3.1 JIT編譯的好處 73

3.2 JIT編譯的開銷 73

3.3 JIT編譯器優化 75

3.4 減少JIT編譯時間和程式啟動

時間 76

3.5 利用Profile優化JIT編譯 78

3.6 使用NGEN的時機 78

3.6.1 NGEN本機映射的優化 79

3.6.2 本機代碼生成 80

3.7 JIT無法勝任的場合 80

3.8 評估 81

3.8.1 效能計數器 81

3.8.2 ETW事件 82

3.8.3 找出JIT耗時最長的方法和

模組 82

3.9 小結 83



第4章 非同步程式設計 84

4.1 使用Task 86

4.2 並行迴圈 89

4.3 避免阻塞 92

4.4 在非阻塞式I/O中使用Task 92

4.4.1 適應Task的非同步程式設計模式 94

4.4.2 使用高效I/O 96

4.5 async和await 97

4.6 程式設計結構上的注意事項 99

4.7 正確使用Timer物件 100

4.8 合理設置執行緒池的初始大小 101

4.9 不要中止執行緒 102

4.10 不要改變執行緒的優先順序 102

4.11 執行緒同步和鎖 103

4.11.1 真的需要操心性能嗎 103

4.11.2 我真的需要用到同步鎖嗎 104

4.11.3 多種同步機制的選擇 105

4.11.4 記憶體模型 106

4.11.5 必要時使用volatile 106

4.11.6 使用Interlocked方法 108

4.11.7 使用Monitor(鎖) 110

4.11.8 該在什麼物件上加鎖 112

4.11.9 非同步鎖 112

4.11.10 其他加鎖機制 115

4.11.11 可併發訪問的集合類 116

4.11.12 使用更大範圍的鎖 116

4.11.13 替換整個集合 117

4.11.14 將資源複製給每個執行緒 118

4.12 評估 118

4.12.1 效能計數器 118

4.12.2 ETW事件 119

4.12.3 查找爭用情況最嚴重的鎖 120

4.12.4 查找執行緒在I/O的阻塞位置 120

4.12.5 利用Visual Studio視覺化展示

Task和執行緒 121

4.13 小結 122



第5章 編碼和類設計的一般規則 123

5.1 類和“結構”的對比 123

5.2 重寫“結構”的Equals和

GetHashCode方法 126

5.3 虛方法和密封類 128

5.4 介面的分發(Dispatch) 128

5.5 避免裝箱 129

5.6 for和foreach的對比 131

5.7 強制類型轉換 133

5.8 P/Invoke 134

5.9 委託 136

5.10 異常 137

5.11 dynamic 138

5.12 自行生成代碼 141

5.13 預處理 146

5.14 評估 146

5.14.1 ETW事件 146

5.14.2 查找裝箱指令 147

5.14.3 第一時間發現“異常” 149

5.15 小結 150



第6章 使用.NET Framework 151

6.1 全面瞭解所用API 151

6.2 多個API殊途同歸 152

6.3 集合類 152

6.3.1 泛型集合類 153

6.3.2 可併發訪問的集合類 154

6.3.3 其他集合類 156

6.3.4 創建自訂集合類型 156

6.4 字串 157

6.4.1 字串比較 157

6.4.2 ToLower和ToUpper 158

6.4.3 字串拼接 158

6.4.4 字串格式化 158

6.4.5 ToString 159

6.4.6 避免字串解析 159

6.5 應避免使用正常情況下也會拋出

“異常”的API 159

6.6 避免使用會在LOH分配記憶體的

API 159

6.7 使用延遲初始化 160

6.8 枚舉的驚人開銷 161

6.9 對時間的跟蹤記錄 162

6.10 規則運算式 164

6.11 LINQ 164

6.12 讀取文件 165

6.13 優化HTTP參數及網路

通訊 166

6.14 反射 167

6.15 評估 168

6.16 效能計數器 168

6.17 小結 169



第7章 效能計數器 170

7.1 使用已有的計數器 170

7.2 創建自訂計數器 171

7.2.1 Averages 172

7.2.2 Instantaneous 173

7.2.3 Deltas 173

7.2.4 Percentages 173

7.3 小結 174



第8章 ETW事件 175

8.1 定義事件 175

8.2 在PerfView中使用自訂

事件 178

8.3 創建自訂ETW事件

Listener 179

8.4 獲取EventSource的詳細

信息 184

8.5 自訂PerfView分析外掛程式 186

8.6 小結 189



第9章 Windows Phone 190

9.1 評估工具 190

9.2 垃圾回收和記憶體 191

9.3 JIT 191

9.4 非同步程式設計和記憶體模式 192

9.5 其他問題 193

9.6 小結 193



第10章 代碼安全性 194

10.1 充分理解底層的作業系統、API

和硬體 194

10.2 把API調用限制在一定範圍的

代碼內 194

10.3 把性能要求很高、難度很大的

代碼集中起來並加以抽象 199

10.4 把非託管代碼和不安全代碼

隔離出來 200

10.5 除非有證據證明,不然代碼清晰

度比性能更重要 200

10.6 小結 200



第11章 建立追求性能的開發團隊 201

11.1 瞭解最影響性能的關鍵

區域 201

11.2 有效的測試 201

11.3 性能測試平臺和自動化 202

11.4 只認數據 203

11.5 有效的代碼複查 203

11.6 訓練 204

11.7 小結 205

附錄A 儘快啟動對應用程式的性能

討論 206

定義指標 206

分析CPU佔用情況 206

分析記憶體佔用情況 206

分析JIT 207



分析非同步執行性能 207

附錄B 大O標記法 209

常見演算法及其複雜度 211

排序演算法 211

圖論演算法 211

查找演算法 212

特殊案例 212



附錄C 參考文獻 213

參考書籍 213

相關人士及博客 213
序: