《编程珠玑》 读书笔记
《編程珠璣》
讀書筆記
婁雨禛 PB16060356
準(zhǔn)確的問題描述
很多時(shí)候,我們總是過度關(guān)注了解決問題所用的巧妙算法,而將問題本身的重要性忽視。當(dāng)我們拿到一個(gè)問題時(shí),應(yīng)當(dāng)反復(fù)研讀問題的每一個(gè)細(xì)節(jié),因?yàn)檎沁@些細(xì)節(jié)的細(xì)微偏差導(dǎo)致了我們?cè)诮鉀Q問題時(shí)方案與技巧的重大不同。
如果我們只花很少的時(shí)間研讀問題本身,而過度專注于問題的解決時(shí),極有可能在百般忙碌之后,發(fā)現(xiàn)自己走了一大段彎路。所謂“舍本逐末”,或許說的就是這個(gè)道理吧。
數(shù)據(jù)決定程序結(jié)構(gòu)
程序語言是給人閱讀的,程序的執(zhí)行效率是由數(shù)據(jù)流的高效與否體現(xiàn)的。而橫跨這兩者之間的,便是程序結(jié)構(gòu)。事實(shí)上,良好的程序結(jié)構(gòu)能夠非常好地同時(shí)達(dá)成上述兩個(gè)目標(biāo),而基本的方法,就是讓我們尊崇這么一個(gè)原則:數(shù)據(jù)決定程序結(jié)構(gòu)。
這里有一些值得記錄的注意點(diǎn)。
出錯(cuò)信息
混亂系統(tǒng)的數(shù)百個(gè)出錯(cuò)信息散布在出錯(cuò)代碼中。同時(shí),這些出錯(cuò)信息又和其他語句混雜在一起。而清晰系統(tǒng)則通過一個(gè)專用函數(shù)來訪問這些出錯(cuò)信息。
單詞分析
很多計(jì)算機(jī)問題都是由英文單詞的分析引起的。拼寫檢查器會(huì)使用“后綴去除”來精簡詞典,這是所有編程人員應(yīng)當(dāng)注意的。
結(jié)構(gòu)化數(shù)據(jù)
最初,結(jié)構(gòu)化數(shù)據(jù)就意味著選擇恰當(dāng)?shù)淖兞棵:髞?#xff0c;在程序員使用“平行數(shù)組”或寄存器偏移量的地方,編程語言加入了記錄或結(jié)構(gòu)以及指向它們的指針。指針的引入極大地優(yōu)化了數(shù)據(jù)的傳遞和表達(dá)。我們?cè)诰幊踢^程中也要盡量發(fā)揮指針操作的優(yōu)越性。
代碼調(diào)優(yōu)法則
代碼調(diào)優(yōu)大致有以下六條法則。
空間換時(shí)間法則
空間換時(shí)間在很多地方都見得到。比如,求斐波那契數(shù)列時(shí),我們?yōu)榱朔乐惯f歸所產(chǎn)生的龐大計(jì)算量拖慢運(yùn)行速度,往往將之前步驟的數(shù)據(jù)存儲(chǔ)起來,以便后次調(diào)用。空間換時(shí)間的思想在今天尤為適用。隨著儲(chǔ)存空間的大幅增加,我們更追求速度的提升。
時(shí)間換空間法則
密集儲(chǔ)存表可以通過增加儲(chǔ)存和檢索數(shù)據(jù)所需的時(shí)間來減小存儲(chǔ)開銷。
循環(huán)法則
將代碼移出循環(huán) 與其在循環(huán)的每一次迭代中都執(zhí)行一次某種運(yùn)算,不如將其移到循環(huán)體外,只計(jì)算一次。
循環(huán)展開 通過將循環(huán)展開,可以減少修改循環(huán)下標(biāo)的開銷,從而有效避免管道延遲,增加指令的并行性。
刪除賦值 如果內(nèi)循環(huán)中很多開銷來自普通的賦值,通常可以通過重復(fù)代碼并修改變量的使用來刪除這些賦值。
消除無條件分支
循環(huán)合并
邏輯法則
利用等價(jià)的代數(shù)表達(dá)式。如果邏輯表達(dá)式的求值開銷太大,就將其替換為開銷較小的等價(jià)代數(shù)表達(dá)式。
過程法則
打破函數(shù)層次。對(duì)于調(diào)用自身的函數(shù),通常可以將其改寫為內(nèi)聯(lián)版本并固定傳入的變量來縮短其運(yùn)行時(shí)間。
表達(dá)式法則
消除公共子表達(dá)式。如果兩次對(duì)同一個(gè)表達(dá)式求值時(shí),其所有變量都沒有任何改動(dòng),那么,就應(yīng)當(dāng)儲(chǔ)存第一次的變量值以取代第二次的求值。
轉(zhuǎn)載于:https://www.cnblogs.com/RainLou/p/8623760.html
總結(jié)
以上是生活随笔為你收集整理的《编程珠玑》 读书笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 183. Customers Who N
- 下一篇: nginx 重写 隐藏index.php