C程式性能最佳化

C程式性能最佳化

《C程式性能最佳化》是人民郵電出版社於2013-1出版的圖書,作者是片山善夫。

內容介紹

《C程式性能最佳化:20個實驗與達人技巧》從CPU與編譯器的運行機制講起,帶領讀者一步步了解程式的執行成本、編譯器的最佳化選項等,總結出許多C程式性能最佳化的技巧,並以實驗的方式進行了講解,簡明易懂,使人印象深刻。書中帶有大量的代碼實例,使讀者不僅能夠了解代碼最佳化的原理,還能夠輕鬆地在實踐中套用。《C程式性能最佳化:20個實驗與達人技巧》適合有一定基礎的C語言編程人員閱讀。

作者介紹

片山善夫

具有近二十年的C語言編譯器和解釋器開發經驗。現從事對SPARC、VisionChip等體系結構的研究。

作品目錄

第1 章  CPU 與編譯器概論
1.1  高速路與人行道 002
1.2  編譯器是如何運作的 003
編譯後的彙編語言程式 004
添加最佳化選項後的結果 007
1.3  CPU 是如何運作的 008
指令集架構與微架構 008
如何執行指令 009
指令流水線 011
高速快取 012
深入探討高速快取 013
快取塊的替換算法 015
超標量指令執行 015
第1 章  是不是偏離了主題 017
第2 章  執行成本
2.1  兩程式的執行成本 020
2.2  計·測·謀 020
書中的探討 020
2.3  防止基準測試程式被最佳化 023
防止操作“歸併” 023
防止變數在初始化時被最佳化 024
防止重複單一指令被最佳化 025
本書中的基準測試程式 026
2.4  驗證——哪一步操作導致執行速度緩慢 029
2.5 基礎加法與賦值運算 031
單一的賦值操作(暫存器間的傳送) 032
單一的賦值操作(數據相互關聯的情況) 032
常量賦值 033
變數間的加法運算 033
變數與常量相加 034
2.6  耗時的乘法運算 036
變數間的乘法運算 037
變數與常量相乘 037
2.7  更為耗時的除法運算 040
變數的除法(暫存器間的計算) 040
除數為2、4 的除法運算 042
除數不是2 的乘方的除法運算 042
無符號整數除法運算 042
除數為2 的乘方時除法運算使用低成本移位指令 043
2.8  記憶體讀取  045
小數組的讀取(小範圍內的記憶體操作) 045
大數組的讀取( 大範圍內的記憶體操作) 047
與台式機的CPU進行比較 049
2.9  造成執行時間差別的判斷語句 051
無else節點的if 語句 051
帶else節點的if 語句 053
2.10  32/64 位環境中不同的函式調用 053
2.11  實驗總結 055
若想被愛則先愛 055
第3 章  尋找性能瓶頸
3.1 使用gprof 命令進行分析 058
gprof的使用方法 058
3.2  哪個環節在消耗時間 058
獲取庫函式的評測信息 060
耗時的函式 062
顯示庫函式的調用次數 063
3.3  函式的調用關係 063
3.4  進行數據分析的原理 066
3.5  其他性能分析器 067
培養高水平人才的教育系統 068
第4 章 達人方法論
4.1  達人的關注點 072
硬體篇 072
編譯器/ 中間件篇 074
算法篇 075
4.2  【硬體篇】數組和快取的有效利用 076
矩陣的乘法運算  076
調整數組操作的順序  077
展開循環的方式  078
矩陣的分塊  079
4.3  【庫函式篇】緩慢函式的迂迴戰術  080
strcmp 函式為何緩慢  080
最佳化的陷阱  081
4.4  【硬體篇】 使用SIMD 進行字元串對比 083
4.5  【庫函式篇】對比各種輸入輸出方法 085
行輸入函式的對比 085
輸出方法 089
管道輸入輸出的特殊案例 091
管道輸入輸出與檔案輸入輸出 092
4.6  【 算法篇】二分法查找與平衡二叉樹 092
海量數據的分類 093
真要做到如此地步? 097
第5 章  進一步研究編譯器
5.1  不同級別的最佳化選項 100
GCC 的最佳化選項 100
“零最佳化”對調試有效 100
以不出現未定義行為為前提的2 級以上最佳化選項 101
5.2  最佳化·暫存器·外部變數 102
5.3  刪除公共子表達式為程式瘦身 104
5.4  指針與複雜運算簡化 105
5.5  將用戶函式進行內聯展開 106
和別人拉開差距! 108
第6 章  給辦公系統的一些啟示
6.1  排序與字元串操作 112
6.2  小數點數的計算與字元串/ 數字的換算 112
塊數據輸入輸出和欄位分割 113
統計帶小數部分的數 113
整數轉換成字元串 115
性能最佳化的效果 116
6.3  半角字元轉換為全形字元 117
判定字元的位元組數 118
ASCII字元與半角片假名字元的判定 119
ASCII字元轉換為全形字元 123
半角字元轉換為全形字元 124
性能最佳化的效果 127
判定字元位元組數的其他方法 127
有關UTF-8 130
6.4  探索具有某種數據特性的數組 132
數據的特性 133
二分法查找與線性查找相結合 135
性能最佳化的效果 138
後記 139

相關詞條

相關搜尋

熱門詞條

聯絡我們