天天看點

《程式設計珠玑(續)(修訂版)》—第1章1.7節深入閱讀

本節書摘來自異步社群《程式設計珠玑(續)(修訂版)》一書中的第1章,第1.7節深入閱讀,作者【美】jon bentley,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

1.7 深入閱讀

don knuth的“empirical study of fortran programs”發表在1971年software——practice and experience 第一卷上(第105~133頁)。關于“動态統計”的第3節讨論了行計數和過程時間計數,以及用這兩種計數搜集的統計資料。第4節調優了17個關鍵的内循環,獲得了從1.5~13.1倍的加速。在過去的十幾年中,我每年至少要讀一遍這篇經典論文,越讀越覺得好,是以我強烈推薦這篇論文。

①brian kernighan(1942—),著名計算機科學家,現為普林斯頓大學教授。他與人合作創造了awk和ampl程式設計語言,對unix和c語言的設計也有很大貢獻。他還與人合寫了多部計算機名著,包括與ritchie合著的_the c programming language_。——編者注

②don knuth(1938—),中文名高德納,著名計算機科學家,斯坦福大學榮休教授。因對算法分析和程式設計語言設計領域的貢獻獲1974年圖靈獎。他是名著《計算機程式設計藝術》的作者,設計了tex排版系統。——編者注

③這7個過濾程式執行下列任務:(1) 連接配接所有輸入檔案;(2) 讓每行包含一個單詞,辦法是把字母表以外的符号(<code>-c</code>)翻譯成新行(ascii八進制12),去掉重複的空行(<code>-s</code>);(3) 把大寫翻譯成小寫;(4) 排序,以便把相同的單詞歸并在一起;(5) 把連續的相同單詞換成一個代表單詞及其計數(<code>-c</code>);(6) 按照數值(<code>-n</code>)遞減(<code>-r</code>)順序來排序;(7) 經過一個流編輯器,在列印25行後退出(<code>q</code>)。本書10.5節用圖檔描述了上述第(4)、(5)、(6)步中的<code>sort</code> ¦ <code>uniq –c</code> ¦ <code>sort</code>組合。

④第二次排序花了第一次排序25%的時間,卻隻處理了輸入行數的8%——數值(<code>-n</code>)标記很費時間。當我們在單列輸入上監視這個管道的性能時,第二次排序幾乎與第一次排序花一樣的時間。這個性能監視的結果對輸入資料很敏感。

⑤peter weinberger,著名計算機科學家,現在谷歌任職。他是awk語言的設計者之一(awk中的w),曾任貝爾實驗室計算機科學研究部主任。——編者注

⑥rob pike(1956—),著名計算機科學家,現任職于谷歌。他參與了unix作業系統的開發,并上司了分布式作業系統plan 9和inferno以及limbo語言的設計。他與kernighan合撰了名著《程式設計實戰》。——編者注

本文僅用于學習和交流目的,不代表異步社群觀點。非商業轉載請注明作譯者、出處,并保留本文的原始連結。

繼續閱讀