官术网_书友最值得收藏!

第1章 導讀

人們常說:“性能為王。”十年前如此,當然現在也未改變。根據文獻(Dom,2017),2017年全球每天都在制造250億億[1]字節的數據,而根據文獻(Sta,2018)的預測,這個數字每年還要增大25%。在日益以數據為中心的世界中,信息交換需求的增長促進了對更快的硬件和軟件的需求。公平地講,數據的增長不但對算力也對網絡和存儲系統提出了要求。

在PC時代[2],開發者通常在操作系統上直接編程,可能用到介于應用程序和操作系統之間的一些庫函數。而在云計算時代,軟件棧層次變得更深、更復雜,大部分開發者接觸的軟件棧頂層離硬件層更為遙遠。棧的中間層把底層硬件做了抽象,這樣當新的計算負荷出現時可以采用新型的計算加速單元。然而,這種演進的負面影響是現代應用程序開發者對運行他們軟件的實際硬件不甚了解。

得益于摩爾定律,過去幾十年軟件開發者一直在“搭便車”。一些軟件供應商更愿意等待新一代的硬件平臺來提升應用程序的執行速度,而不是花費人力來優化代碼。在圖1中,我們可以看到單線程性能[3]的增長速度正在放緩。

圖1 微處理器40年趨勢數據(?圖片來自K.Rupp的karlrupp.net網站)

圖中到2010年的原始數據由M.Horowitz、F.Labonte、O.Shacham、K.Olukotun、L.Hammond和C.Batten收集和繪制,圖中2010年到2015年的數據由K.Rupp收集

當每代的新硬件不再顯著提升性能(Leiserson et al.,2020)時,我們就必須更加關注代碼的運行速度。在尋找性能提升的方法時,開發者不應該依賴硬件,而是應該優化應用程序的代碼。

“當今的軟件效率非常低,因此再次成為軟件程序員構建真正優化技能的黃金時代。”

—Marc Andreessen,美國企業家和投資人(a16z Podcast,2020)

個人經驗 在Intel工作時,我經常聽到這樣的故事:當客戶遇到應用程序執行慢的問題時,他們會立刻下意識地抱怨Intel的CPU太慢了。但Intel派出性能專家并跟客戶一起調優應用程序后,應用程序的執行速度提升5倍甚至10倍的案例并不少見。

獲得高水平性能的過程充滿了挑戰,通常需要付出大量的努力,希望本書提供的一系列工具能幫助你實現較高的性能。

主站蜘蛛池模板: 即墨市| 玛多县| 正安县| 正安县| 松阳县| 汶川县| 轮台县| 如皋市| 怀宁县| 京山县| 南昌县| 岑溪市| 德保县| 平昌县| 林周县| 江津市| 剑川县| 改则县| 神池县| 正镶白旗| 平阴县| 闽清县| 肥西县| 冀州市| 泾阳县| 桐柏县| 遂平县| 保德县| 高陵县| 东阿县| 本溪| 黄骅市| 韩城市| 嵊泗县| 碌曲县| 大竹县| 东台市| 成都市| 三江| 广宗县| 贵港市|