軟體優化技術

陳虎湯德佑//黃敏

  • 出版商: 機械工業
  • 出版日期: 2024-02-01
  • 定價: $414
  • 售價: 8.5$352
  • 語言: 簡體中文
  • 頁數: 224
  • 裝訂: 平裝
  • ISBN: 7111742451
  • ISBN-13: 9787111742456
  • 相關分類: Object-oriented程式語言軟體工程
  • 下單後立即進貨 (約4週~6週)

買這商品的人也買了...

商品描述

本書融合了底層技術和軟體優化技術兩個層面的內容,以程式設計實踐為核心,提供了較多的程式設計習題,旨在提升讀者的程式設計能力。
全書分為七章,第1章介紹了軟體效能工程、延遲、吞吐率、加速比等基本概念與效能測試方法。
後續章節圍繞著CPU、SIMD指令系統、多執行緒、GPU、物件導向程式設計語言(C++與Java)、磁碟與網路等專題。
每章的內容既相對獨立,又相互有連結。

目錄大綱

前言
第1章引言
1.1 軟體最佳化概述
1.1.1 軟體最佳化的主要方法
1.1.2 軟體效能工程
1.1.3 關於軟體最佳化的一些觀點
1.2 評估軟體效能的指標與方法
1.2.1 延遲與吞吐率
1.2.2加速比與效率
1.2.3 Amdahl定理
1.​​2.4 M/M/k模型
1.3 常用軟體工具與時間測量方法
1.3.1 常用軟體工具
1.3.2 時間測量
1.4 一個程式效能分析的實例
1.5 延伸閱讀
1.6 習題
1.7實驗題
參考文獻
第2章CPU上的基本最佳化方法
2.1 電腦體系結構基礎
2.1.1 指令集體系結構
2.1.2 指令鐵律
2.1.3 管線及其相關性
2.1.4 超標量與亂序執行
2.1. 5 典型微處理器的微結構
2.2 針對算術邏輯指令的最佳化
2.2.1 現代微處理器的算術邏輯指令延遲與吞吐率
2.2.2 選擇合適的資料類型
2.2.3 使用簡單指令代替複雜指令
2.2.4使用特殊指令
2.2.5 查表法
2.3 針對條件分支指令的最佳化
2.3.1 分支預測
2.3.2 消除分支
2.3.3 組合多個分支以提高分支預測的準確度
2.3.4 使用條件執行指令
2.3.5合理使用switch語句
2.4 針對Cache的最佳化
2.4.1 現代微處理器的Cache
2.4.2 資料對齊
2.4.3 SoA的結構組織方式
2.4.4 資料分塊以提升Cache命中率
2.4.5 Cache預取
2.5 針對循環結構的最佳化
2.5.1 消除循環
2.5.2 循環展開
2.6 綜合實例
2.6.1 Linux核心中的ECC計算
2.6.2 Hash表的建構
2.7 擴展閱讀
2.8 習題
2.9 實驗題
參考文獻
第3章基於SIMD指令系統的最佳化方法
3.1 SIMD指令系統簡介
3.1.1 SIMD指令系統概況
3.1.2 軟體系統使用SIMD指令的方法
3.2 SIMD內嵌原語
3.2.1 內嵌原語的資料型別
3.2.2 向量設定操作
3.2.3計算操作
3.2.4 比較操作
3.2.5 訪問操作
3.2.6 資料排列操作
3.3 基於內嵌原語的SIMD程式設計
3.3.1 資料對齊與資料寬度
3.3.2 SoA結構
3.3.3 資料比較
3.3.4特殊指令
3.3.5 暫存器數量
3.4 SIMD程式實例
3.4.1 使用SSE指令去除空格
3.4.2 基於SIMD指令的雙調排序和歸併排序
3.4.3 fftw的可移植設計
3.5 擴展閱讀
3.6 習題
3.7 實驗題
參考文獻
第4章基於多執行緒的最佳化方法
4.1 多核心處理器架構
4.1.1 多執行緒處理器
4.1.2 多核心處理器系統
4.1.3 Cache一致性協定
4.2 作業系統層級執行緒呼叫
4.2.1 執行緒4.2.2
執行緒基本API
4.2.3 Linux的執行緒同步與互斥
4.2.4 Windows的執行緒同步與互斥
4.3 OpenMP
4.3.1 for編譯導引語句
4.3.2 共享變數與私有變數
4.3.3 歸約子句
4.3.4 nowait子句
4.3.5 single導引指令
4.3.6 critical子句
4.3.7 barrier子句
4.3.8 其他子句
4.4 多執行緒程式的一些問題
4.4.1 臨界區
4.4.2 Cache偽共享
4.4.3 多執行緒的平行化設計方法
4.5 多執行緒並行化實例
4.5.1 Horner演算法的平行化
4.5.2 建構Hash表
4.5.3 歸併排序
4.6 擴展閱讀
4.7 習題
4.8 實驗題
參考文獻
第5章GPU的最佳化方法
5.1 GPU體系結構
5.1.1 面向吞吐率最佳化的異質運算
5.1.2 GPU整體結構
5.1.3 SIMT機制
5.1.4 記憶體結構
5.2 GPU基本程式設計方法
5.2.1 執行緒的組織結構
5.2.2 GPU函數說明
5.2.3 記憶體管理以及與主機的資料交換
5.2. 4 GPU上執行緒之間的同步
5.2.5 OpenCL的程式物件與核心物件
5.2.6 程式執行 個體
5.3 GPU程式最佳化方法
5.3.1 指令吞吐速率
5.3.2 資源利用率
5.3.3 共用記憶體
5.3.4 全域記憶體
5.3.5 掩蓋主機與GPU之間的資料傳輸延遲
5.3.6 動態平行機制
5.4 GPU程式實例
5.4.1 矩陣乘法
5.4.2 LU分解
5.5 擴展閱讀
5.6 習題
5.7 實驗題
參考文獻
第6章物件導向程式設計語言的最佳化方法
6.1 C++的效能最佳化
6.1.1 C++實作簡介
6.1.2 STL
6.2 Java的效能最佳化
6.2.1 Java虛擬機簡介
6.2.2 Java字節碼的執行機制
6.2.3 Java本機介面
6.2.4 Java的多執行緒機制
6.3 垃圾回收
6.3.1 垃圾回收基本技術
6.3.2 HotSpotJVM中的垃圾回收
6.4 擴充閱讀
6.5 習題
6.6 實驗題
參考文獻
第7章系統層級軟體最佳化
7.1 硬碟系統與檔案系統的效能最佳化
7.1 .1 硬碟系統
7.1.2 檔案系統
7.1.3 效能最佳化方法
7.1.4 實例:外排序
7.2 網路連線的效能最佳化
7.2.1 網路連線硬體
7.2.2 網路