C程序性能優(yōu)化

出版時間:2013-1  出版社:人民郵電出版社  作者:片山善夫  頁數(shù):139  字數(shù):181000  譯者:何本華 居福國,居福國  
Tag標簽:無  

內容概要

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

作者簡介

  片山善夫:具有近二十年的C語言編譯器和解釋器開發(fā)經驗?,F(xiàn)從事對SPARC、VisionChip等體系結構的研究。譯者介紹:何本華,日語專業(yè)翻譯,擅長IT類、工程技術類、新聞稿件類翻譯,曾擔任奧特曼之父中田幸和的口譯。居福國,畢業(yè)于復旦大學計算機科學與技術專業(yè),精通C語言和Java,具有豐富的編程經驗。

書籍目錄

第1章 CPU與編譯器概論
1.1 高速路與人行道 
1.2 編譯器是如何運作的 
編譯后的匯編語言程序 
添加優(yōu)化選項后的結果 
1.3 CPU是如何運作的 
指令集架構與微架構 
如何執(zhí)行指令 
指令流水線 
高速緩存 
深入探討高速緩存 
緩存塊的替換算法 
超標量指令執(zhí)行 
第1章 是不是偏離了主題 
第2章 執(zhí)行成本
2.1 兩程序的執(zhí)行成本
2.2 計·測·謀 
書中的探討 
2.3 防止基準測試程序被優(yōu)化 
防止操作“歸并” 
防止變量在初始化時被優(yōu)化 
防止重復單一指令被優(yōu)化 
本書中的基準測試程序 
2.4 驗證——哪一步操作導致執(zhí)行速度緩慢 
2.5 基礎加法與賦值運算 
單一的賦值操作(寄存器間的傳送) 
單一的賦值操作(數(shù)據(jù)相互關聯(lián)的情況) 
常量賦值 
變量間的加法運算 
變量與常量相加 
2.6 耗時的乘法運算 
變量間的乘法運算 
變量與常量相乘 
2.7 更為耗時的除法運算 
變量的除法(寄存器間的計算) 
除數(shù)為2、4的除法運算 
除數(shù)不是2的乘方的除法運算 
無符號整數(shù)除法運算 
除數(shù)為2的乘方時除法運算使用低成本移位指令 
2.8 內存讀取 
小數(shù)組的讀?。ㄐ》秶鷥鹊膬却娌僮鳎?br />大數(shù)組的讀?。ù蠓秶鷥鹊膬却娌僮鳎?br />與臺式機的CPU進行比較 
2.9 造成執(zhí)行時間差別的判斷語句 
無else節(jié)點的if語句 
帶else節(jié)點的if語句 
2.10 32/64位環(huán)境中不同的函數(shù)調用 
2.11 實驗總結 
若想被愛則先愛 
第3章 尋找性能瓶頸
3.1 使用gprof命令進行分析 
gprof的使用方法 
3.2 哪個環(huán)節(jié)在消耗時間 
獲取庫函數(shù)的評測信息 
耗時的函數(shù) 
顯示庫函數(shù)的調用次數(shù) 
3.3 函數(shù)的調用關系 
3.4 進行數(shù)據(jù)分析的原理 
3.5 其他性能分析器 
培養(yǎng)高水平人才的教育系統(tǒng) 
第4章 達人方法論
4.1 達人的關注點 
硬件篇 
編譯器/中間件篇 
算法篇 
4.2 【硬件篇】數(shù)組和緩存的有效利用 
矩陣的乘法運算 
調整數(shù)組操作的順序 
展開循環(huán)的方式 
矩陣的分塊 
4.3 【庫函數(shù)篇】緩慢函數(shù)的迂回戰(zhàn)術 
strcmp函數(shù)為何緩慢 
優(yōu)化的陷阱 
4.4 【硬件篇】使用SIMD進行字符串對比 
4.5 【庫函數(shù)篇】對比各種輸入輸出方法 
行輸入函數(shù)的對比 
輸出方法 
管道輸入輸出的特殊案例 
管道輸入輸出與文件輸入輸出 
4.6 【算法篇】二分法查找與平衡二叉樹 
海量數(shù)據(jù)的分類 
真要做到如此地步? 
第5章 進一步研究編譯器
5.1 不同級別的優(yōu)化選項 
GCC的優(yōu)化選項 
“零優(yōu)化”對調試有效 
以不出現(xiàn)未定義行為為前提的2級以上優(yōu)化選項 
5.2 優(yōu)化·寄存器·外部變量 
5.3 刪除公共子表達式為程序瘦身 
5.4 指針與復雜運算簡化 
5.5 將用戶函數(shù)進行內聯(lián)展開 
和別人拉開差距! 
第6章 給辦公系統(tǒng)的一些啟示
6.1 排序與字符串操作 
6.2 小數(shù)點數(shù)的計算與字符串/數(shù)字的換算 
塊數(shù)據(jù)輸入輸出和字段分割 
統(tǒng)計帶小數(shù)部分的數(shù) 
整數(shù)轉換成字符串 
性能優(yōu)化的效果 
6.3 半角字符轉換為全角字符 
判定字符的字節(jié)數(shù) 
ASCII字符與半角片假名字符的判定 
ASCII字符轉換為全角字符 
半角字符轉換為全角字符 
性能優(yōu)化的效果 
判定字符字節(jié)數(shù)的其他方法 
有關UTF-8 
6.4 探索具有某種數(shù)據(jù)特性的數(shù)組 
數(shù)據(jù)的特性 
二分法查找與線性查找相結合 
性能優(yōu)化的效果 
后記

章節(jié)摘錄

版權頁:   插圖:   6.1 排序與字符串操作 在辦公系統(tǒng)中經常會進行數(shù)據(jù)規(guī)范化處理,以及排序、分類、統(tǒng)計、數(shù)據(jù)的變形等。但隨著數(shù)據(jù)量的不斷增加,數(shù)據(jù)處理速度難免逐漸降低。每晚花費幾個小時來批量處理數(shù)據(jù)也不能按時完成,給第二天的工作帶來不便,這樣的例子在現(xiàn)實生活中比比皆是。為了減輕服務器的負擔,大家都希望能將服務器程序的執(zhí)行時間縮短。 一般來說,辦公程序中多半的數(shù)據(jù)排序和字符串操作都比較耗時,所以高效的優(yōu)化策略就成了解決問題的焦點所在。在這一章中,我們會從USP研究所使用辦公系統(tǒng)工具群“Unieage Command”的優(yōu)化案例中甄選幾個來進行講解。雖然形式上有些不同,但都是些常用的邏輯,想必對讀者朋友來說還是能起到一定作用的。 當程序在處理數(shù)據(jù)時,如果數(shù)據(jù)結構較合理,那也就意味著會有了好的處理方法(算法)。相反,處理結構不合理的數(shù)據(jù)就會拉長執(zhí)行時間。也是基于這樣的出發(fā)點,本書在最后選取了處理數(shù)據(jù)性質的案例。 6.2小數(shù)點數(shù)的計算與字符串/數(shù)字的換算 本章所使用的程序sm2先輸入由空格來分隔開的數(shù)據(jù)行,然后按類別統(tǒng)計各字段的總和。表示分類類別的字段和作為被統(tǒng)計對象的字段將在程序執(zhí)行時進行分配。 這是個通用版的程序,如果有具體案例的話就能更好地把握其要點。截圖6—1中的數(shù)據(jù)是連鎖店上傳的銷售額。將這些數(shù)據(jù)的第4至第7個字段按相同的分店名合并起來,并以第一個字段按順序輸出,其結果請看截圖6—2。 該程序在編寫好之后實施了幾次性能優(yōu)化,最終改善后的速度是起初的6.38倍。有關改善的方法后面會進行說明。 塊數(shù)據(jù)輸入輸出和字段分割 sm2程序需要進行海量數(shù)據(jù)的輸入輸出,如果能對輸入輸出環(huán)節(jié)進行優(yōu)化那就再好不過了。因此我們在操作時不使用庫函數(shù)getline,而是在自定義大小的輸入輸出函數(shù)中定義4MB的輸入緩沖區(qū),然后將數(shù)據(jù)直接讀入緩沖區(qū),需要時從中取出一行的數(shù)據(jù)就可以了。 另外,原本我們在用字段分解輸入行的過程中使用的是strtok函數(shù),如果能將strspn函數(shù)和strcspn函數(shù)結合起來使用,效率將會得到提升。

編輯推薦

作者精通高效編程,其開發(fā)的C編譯器,不僅適用于16位及32位系統(tǒng),還能在GPU中對視頻數(shù)據(jù)進行實時編譯。作者將C高效編程的心得濃縮于20個技巧,并將這些技巧通過實驗的方式進行講解,簡明易懂,使人印象深刻。書中帶有大量的代碼實例,使讀者不僅能夠從理論上得以提高,而且還能夠輕松地在實踐中應用。

圖書封面

圖書標簽Tags

評論、評分、閱讀與下載


    C程序性能優(yōu)化 PDF格式下載


用戶評論 (總計35條)

 
 

  •   首先這本書,是我買日本翻譯科技書中,紙張最不好的,
    其次,非常薄,感覺有點貴.
    內在,這本書大部分是介紹性東西,向作者展示遇到的問題,怎么解決,怎么檢測,最后分析得到的圖表數(shù)據(jù)
    我對這本書理解是,向一本關于C的科普小讀物.挺容易理解的.看完確實有點收獲.要想深入優(yōu)化C,估計需要
    每個人努力幾年.書中C是在Linux上采用GCC編譯的.對于書原作者,感覺他對編譯器優(yōu)化,CPU,緩存偏嵌入式
    研究的很透.對C的一些代碼層次編寫一般.
    總的來說,很不錯,開闊視野.畢竟純C的書不多.
    下面是我看完這本書:遇到的一些問題,和不解
    1.書062頁
    作者說:要實現(xiàn)高效編程,一是優(yōu)化自己的程序,二是將庫函數(shù)重寫為效率更高的函數(shù),三十減少庫函數(shù)的使用頻率
    我感覺上面說的不嚴謹,也不連貫.
    一是優(yōu)化自己的程序,二才是減少庫函數(shù)的使用頻率,三是將程序用到的庫函數(shù)重寫為效率更高的函數(shù).
    2.書086頁下面到書087頁上面
    我是沒有讀懂他在說什么,語句和程序代碼沒有因果關系,這里估計是因為這本書是翻譯的,翻譯的書都有點翻譯的問題.
  •   有關C語言的性能優(yōu)化測試方法
  •   目前在當當上能買到的C語言優(yōu)化方面的比較好的書
  •   學習了優(yōu)化方面的知識,對工作很有用
  •   第一本性能優(yōu)化的書籍,只不過有些薄
  •   書不錯,印刷也好!就是感覺簡單了些,說得還是通俗易懂的!
  •   日本作家寫的都很淺顯易懂
  •   日本人寫書真精簡啊,超貴。不過內容不錯。
  •   部分章節(jié)講的不錯。只是本書每一章節(jié)都顯得很幼稚
  •   書真的不錯,薄薄一本要看很多遍才會有所收獲
  •   書是很好的書哦
  •   5分純粹是因為送貨快,書還沒看.
  •   此書值得一看的,對于底層C設計人員。
  •   東西有些基本了
  •   好薄啊。。。。,不過思想還是不錯的
  •   就是貴了點。。。。挺薄的一本
  •   哎呀媽呀!這次當當腫么了,我不就在雙12趁打折買兩本書嗎!至于只用個塑料袋子包裝下就送來!簡單倒無所謂了,可是竟然給壓皺了,而且還很嚴重,讓我情何以堪。讓我怎么能相信這竟然是當當送來的書呢!太郁悶了。能不能搞好點,能不能讓人放心呢?
  •   這本書本來是我期待的,到手才發(fā)現(xiàn),原來不是我想像的那么好,也不是我想要的
  •   嗯一般,日本人也整不出來啥好書
  •   初步入門,值得推薦,好好看看
  •   不過書太薄了,還可以吧,可買可不買
  •   看完后你就覺得:你這達人也太容易當了。
  •   非常好,就是都開過封了
  •   各種經驗 講得非常獨到,從各個角度入手優(yōu)化代碼啊,對于現(xiàn)在封裝算法的我來說 剛好可以用
  •   這本書比較好,但前提是你要有一點基礎!
  •   是一本小冊子的感覺換工作面試之前快速讀了一遍,對于C的優(yōu)化有個相對系統(tǒng)的了解,其實有些細節(jié)在工作中也有所體會但是技術進階往往更多是思路和眼光方面的提升,看了這個書有個大體思路,面試的時候可以結合具體經驗來談,效果不錯... 閱讀更多
  •   寫的真的很不錯,剛學完C語言后,看看能很快再有提高
  •   太坑人了,剛買完,第三天看,降價降了好多。書很小很薄很袖珍,內容還沒仔細看,但愿不會太差吧。
  •   有點深奧,不過書是正版,質量不錯
  •   雖然包含了點藝術成分,不過匪夷所思的單薄,跟別人七八塊錢的小冊子差不多一樣小日本人寫的書翻譯過來,確實比英譯的書,價格提高了一個檔次啊!
  •   真的很小很薄啊
  •   C語言性能優(yōu)化是一門藝術
  •   本次購物的總體滿意度很好
  •   怒贊圖靈日語書系列
  •   確實一般!
 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網(wǎng) 手機版

京ICP備13047387號-7