|
-- 會員 / 註冊 --
|
|
|
|
.NET性能優化 ( 簡體 字) |
作者:[美]薩沙·戈德斯汀(Sasha Goldshtein) 迪馬·祖巴列夫(Dima Zurbalev) 伊多·弗萊托(Ido Flatow) | 類別:1. -> 程式設計 -> .NET |
譯者: |
出版社:人民郵電出版社 | 3dWoo書號: 49666 詢問書籍請說出此書號!【有庫存】 NT售價: 345 元 |
出版日:8/1/2018 |
頁數:283 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787115485861 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言: |
內容簡介:本書詳細解釋了影響應用程序性能的Windows、CLR和物理硬件的內部結構,并為讀者提供了衡量代碼如何獨立于外部因素執行操作的知識和工具。書中提供了大量的C#代碼示例和技巧,將幫助讀者zui大限度地提高算法和應用程序的性能,提高個人競爭優勢,使用更低的成本獲取更多的用戶。 本書共11章,D1章和D2章關注性能的度量指標及性能評測;第3章和第4章則深入CLR內部,專注于類型與CLR垃圾回收的內部實現;第5~8章及D11章討論.NET框架中的幾個特定的方面,以及CLR提供的幾種可用來進行性能優化的手段;第9章對復雜度理論和算法進行了簡單的嘗試;D10章則包含了一些獨立話題,包括啟動時間優化、異常及.NET反射等。 本書適合已經擁有一定C#語言和.NET框架的編程基礎,對相關概念較為熟悉的中gao級程序員閱讀學習。 |
目錄:第 1章 性能指標 1 1.1 性能目標 1 1.2 性能指標 3 1.3 小結 4 第 2章 性能度量 5 2.1 性能度量方式 5 2.2 Windows內置工具 5 2.2.1 性能計數器 6 2.2.2 Windows事件追蹤 10 2.3 時間分析器 20 2.3.1 Visual Studio采樣分析器 20 2.3.2 Visual Studio檢測分析器 24 2.3.3 時間分析器的gao級用法 25 2.4 內存分配分析器 27 2.4.1 Visual Studio內存分配 分析器 27 2.4.2 CLR分析器 29 2.5 內存分析器 34 2.5.1 ANTS Memory Profiler 34 2.5.2 SciTech .NET Memory Profiler 36 2.6 其他分析器 38 2.6.1 數據庫和數據訪問 分析工具 38 2.6.2 并發分析工具 38 2.6.3 I/O分析工具 40 2.7 微基準測試 41 2.7.1 設計不佳的微基準測試 示例 41 2.7.2 微基準測試指南 44 2.8 小結 45 第3章 類型揭秘 47 3.1 示例 47 3.2 引用類型和值類型在語義上的 區別 48 3.3 存儲、分配和銷毀 48 3.4 引用類型揭秘 50 3.4.1 方法表 51 3.4.2 調用引用類型實例的方法 55 3.4.3 非虛方法的分發 56 3.4.4 靜態方法和接口方法的 分發 58 3.4.5 同步塊索引和lock 關鍵字 59 3.5 值類型揭秘 63 3.6 值類型的虛方法 65 3.7 裝箱 65 3.7.1 避免在調用值類型的Equals 方法時產生裝箱 67 3.7.2 GetHashCode方法 70 3.8 使用值類型的zui佳實踐 72 3.9 小結 72 第4章 垃圾回收 73 4.1 為什么需要垃圾回收 73 4.1.1 空閑列表管理 73 4.1.2 引用計數垃圾回收 74 4.2 追蹤垃圾回收 75 4.2.1 標記階段 76 4.2.2 清理與壓縮階段 80 4.2.3 固定 82 4.3 垃圾回收器的特征 83 4.3.1 垃圾回收時暫停線程 83 4.3.2 在垃圾回收時掛起線程 83 4.3.3 工作站垃圾回收 85 4.3.4 服務器垃圾回收 86 4.3.5 切換垃圾回收特征 87 4.4 代 89 4.4.1 “代”模型的假設 89 4.4.2 .NET中“代”的實現 90 4.4.3 大對象堆 93 4.4.4 跨代引用 94 4.4.5 后臺垃圾回收 96 4.5 垃圾回收段和虛擬內存 97 4.6 終結化 100 4.6.1 手動確定性終結化 100 4.6.2 自動的非確定性終結化 100 4.6.3 非確定性終結的缺點 102 4.6.4 Dispose模式 104 4.7 弱引用 106 4.8 使用垃圾回收器 108 4.8.1 System.GC類 108 4.8.2 使用CLR宿主與垃圾 回收器進行交互 111 4.8.3 垃圾回收觸發器 111 4.9 垃圾回收性能zui佳實踐 112 4.9.1 “代”模型 112 4.9.2 固定 113 4.9.3 終結化 114 4.9.4 其他建議與zui佳實踐 114 4.10 小結 117 第5章 集合和泛型 119 5.1 泛型 119 5.1.1 .NET泛型 121 5.1.2 泛型約束 122 5.1.3 CLR泛型的實現 125 5.2 集合 131 5.2.1 并發集合 132 5.2.2 緩存 133 5.3 自定義集合 137 5.3.1 分離集(并查集) 137 5.3.2 跳躍表 138 5.3.3 一次性集合 139 5.4 小結 141 第6章 并發和并行 142 6.1 挑戰與所得 142 6.2 從線程到線程池,再到任務 143 6.2.1 任務并行 148 6.2.2 數據并行 153 6.2.3 C# 5異步方法 156 6.2.4 TPL中的gao級模式 159 6.3 同步 160 6.3.1 無鎖代碼 161 6.3.2 Windows同步機制 165 6.3.3 緩存 167 6.4 通用的GPU計算 168 6.4.1 C++ AMP簡介 169 6.4.2 矩陣相乘 171 6.4.3 多體仿真 171 6.4.4 tile和共享內存 172 6.5 小結 175 第7章 網絡、I/O和序列化 176 7.1 I/O基本概念 176 7.1.1 同步與異步I/O 176 7.1.2 I/O完成端口 177 7.1.3 .NET線程池 181 7.1.4 內存復制 181 7.2 分散-聚集I/O 182 7.3 文件I/O 182 7.3.1 緩存提示 183 7.3.2 非緩存I/O 183 7.4 網絡I/O 184 7.4.1 網絡協議 184 7.4.2 網絡套接字 185 7.5 數據序列化與反序列化 186 7.5.1 序列化基準測試 187 7.5.2 數據集(DataSet) 序列化 189 7.6 Windows通信基礎類庫 189 7.6.1 限流 189 7.6.2 處理模型 190 7.6.3 緩存 191 7.6.4 異步WCF客戶端與 服務器 191 7.6.5 綁定 192 7.7 小結 193 第8章 不安全的代碼以及互操作 194 8.1 不安全的代碼 194 8.1.1 對象固定與垃圾回收 句柄 195 8.1.2 生存期管理 196 8.1.3 分配非托管內存 196 8.1.4 內存池 197 8.2 平臺調用 198 8.2.1 PInvoke.net與P/Invoke Interop Assistant軟件 199 8.2.2 綁定 200 8.2.3 列集器存根程序 201 8.2.4 原生同構類型 204 8.2.5 列集方向、值類型和引用 類型的列集 205 8.2.6 代碼訪問安全性 206 8.3 COM互操作性 206 8.3.1 生存期管理 207 8.3.2 單元列集 208 8.3.3 TLB導入與代碼訪問 安全性 209 8.3.4 無主互操作程序集 (NoPIA) 209 8.3.5 異常 210 8.4 C++/CLI語言擴展 211 8.4.1 marshal_as輔助庫 213 8.4.2 IL代碼與原生代碼 214 8.5 Windows 8 WinRT互操作 214 8.6 互操作的zui佳實踐 215 8.7 小結 215 第9章 算法優化 216 9.1 復雜度的維度 216 9.1.1 大O復雜度 216 9.1.2 主定理 217 9.1.3 圖靈機與復雜度分類 218 9.1.4 停機問題 219 9.1.5 NP完全問題 221 9.1.6 記憶與動態規劃 221 9.1.7 編輯距離 222 9.1.8 每對頂點間的zui短路徑 224 9.2 近似算法 226 9.2.1 旅行商問題 226 9.2.2 zui大割 227 9.3 概率算法 227 9.3.1 概率zui大割 227 9.3.2 費馬質數測試 228 9.4 索引與壓縮 228 9.4.1 變量的長度編碼 228 9.4.2 壓縮索引 229 9.5 小結 230 第 10章 性能模式 232 10.1 JIT編譯器優化 232 10.1.1 標準的優化方法 232 10.1.2 方法內聯 233 10.1.3 消除邊界檢查 234 10.1.4 尾調用 236 10.1.5 啟動性能 238 10.1.6 使用NGen進行JIT預 編譯 239 10.1.7 多核后臺JIT編譯 241 10.2 關于啟動性能的其他技巧 243 10.2.1 將強命名程序集置于 GAC中 243 10.2.2 防止本機鏡像發生地址 重排 243 10.2.3 減少程序集數目 244 10.3 處理器相關的優化 245 10.3.1 單指令多數據流 (SIMD) 245 10.3.2 指令級別并行 247 10.4 異常 250 10.5 反射 250 10.6 代碼生成 251 10.6.1 直接用源代碼生成 代碼 251 10.6.2 用動態輕量級代碼生成技 術(LCG)生成代碼 253 10.7 小結 257 第 11章 Web應用性能 258 11.1 測試Web應用的性能 258 11.1.1 Visual Studio Web性能 測試和壓力測試 259 11.1.2 HTTP監控工具 260 11.1.3 分析工具 260 11.2 提高Web服務器的性能 261 11.2.1 緩存公用對象 261 11.2.2 使用異步頁面、模塊和 控制器 262 11.2.3 創建異步頁面 263 11.2.4 創建異步控制器 265 11.3 ASP.NET環境調優 265 11.3.1 關閉ASP.NET跟蹤和調試 266 11.3.2 關閉視圖狀態 267 11.3.3 服務端輸出緩存 268 11.3.4 對ASP.NET應用程序進行預編譯 269 11.3.5 ASP.NET進程模型調優 270 11.4 配置IIS 271 11.4.1 輸出緩存 271 11.4.2 應用程序池配置 273 11.5 網絡優化 274 11.5.1 使用HTTP緩存頭 274 11.5.2 啟用IIS壓縮 277 11.5.3 精簡與合并 279 11.5.4 使用內容發布網絡 (CDN) 280 11.6 對ASP.NET應用程序進行擴容(scaling) 281 11.6.1 向外擴容 281 11.6.2 ASP.NET擴容機制 282 11.6.3 向外擴容的隱患 282 11.7 小結 283 |
序: |
|