![性能優(yōu)化指南2018年1月1日可_第1頁](http://file4.renrendoc.com/view/48183a81d5948ab5b5a98f35380c8432/48183a81d5948ab5b5a98f35380c84321.gif)
![性能優(yōu)化指南2018年1月1日可_第2頁](http://file4.renrendoc.com/view/48183a81d5948ab5b5a98f35380c8432/48183a81d5948ab5b5a98f35380c84322.gif)
![性能優(yōu)化指南2018年1月1日可_第3頁](http://file4.renrendoc.com/view/48183a81d5948ab5b5a98f35380c8432/48183a81d5948ab5b5a98f35380c84323.gif)
![性能優(yōu)化指南2018年1月1日可_第4頁](http://file4.renrendoc.com/view/48183a81d5948ab5b5a98f35380c8432/48183a81d5948ab5b5a98f35380c84324.gif)
![性能優(yōu)化指南2018年1月1日可_第5頁](http://file4.renrendoc.com/view/48183a81d5948ab5b5a98f35380c8432/48183a81d5948ab5b5a98f35380c84325.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
半年左右就會有PDF極個別的書出PDF時間要長一些 本人己經(jīng)幫助了上萬人找到了他們需要的PDF,其實網(wǎng)上有很多 因 16備用 PDF而己。O'ReillyMediaInc.介紹為本代碼致歉1章2章內(nèi) 3章90/104章5章6章變量的 免7章用switch替代if- 8章9章std::lowerboundstd::unorderedmap10章std::vectorstd::forwardstd::forwardliststd::forwardstd::mapstd::setstd::unorderedstd::unordered11章 12章promise鎖不要等13章 ?2016byO'ReillyMedia, Edition,jointlypublishedbyO'ReillyMedia,Inc.andPosts& Press,2018.AuthorizedtranslationoftheEnglishedition,2018O'ReillyMedia,Inc.,theownerofallrightstopublishandselltheAllrights includingtherightsofreproductioninwholeorinpartinanyform.英文原版由O'ReillyMedia,Inc.2016 O'ReillyMedia,Inc.的 和銷售得到權和銷售權的所有者——O'ReillyMedia,Inc.的 O'ReillyMediaIncO'ReillyMedia通過、、服務、研究和會議等方式傳社區(qū)中活躍的參與者,O'Reilly的發(fā)展充滿了對創(chuàng)新的倡導、創(chuàng)造和發(fā) 此命名;創(chuàng)立了Make,從而成為DIY 既往地通過多種形式締結信息與人的紐帶。O'Reilly的會議和集聚了眾多超級極客和高瞻遠矚的商業(yè),共同描繪出開創(chuàng)新產(chǎn)業(yè)的性思想。作為技術獲取信息的選擇,O'Reilly現(xiàn)在還將先鋒專家的知識傳遞給普通的計算機用戶。無論是通過、服務或者面授課程,每一項O'Reilly的產(chǎn)品都反映了公司不可動搖的理念——信息“O'ReillyRadar博客有口皆碑?!癘'Reilly憑借一系列(真希望當初我也想到了)非凡想法建立了數(shù)百萬的業(yè)務?!薄狟usiness“O'ReillyConference是關鍵思想的絕對典范?!耙槐綩'Reilly的書就代表一個有用、有前途、需要學習的。——Irish“Tim是位特立獨行的商人,他不光放眼于最長遠、最廣闊的視野,并且切實地按照YogiBerra的建議去做了:‘如果你在遇到岔路口,走小路(岔路)?!仡欉^去,Tim似乎每一次都選擇了小路,而且有——Linux每一本書在時,作者都會感謝其伴侶。我知道這種方式平淡無奇,但我還是要感謝我的妻子ReneeOstler,是她讓本書得以。她為她不太了解C++性能優(yōu)化,但她會一直陪伴我到很晚,問我關于這方 我編寫軟件已經(jīng)超過35年了。我從未就職于微軟、谷歌、 智的開發(fā)人員討論C++。所以我有資格寫一本關于優(yōu)化C++代碼的文章()等。有時令我吃驚的是,我共巨人的肩上了,特別是閱讀過他們的著作:有優(yōu)雅的小書,如BrianKernighanDennisRitchie合著的《C程序設計語言》;有充滿智慧且ScottMeyersEffectiveC系列;有充滿挑戰(zhàn)又能擴展思維的書籍,如AndreiAlexandrescu的《C++設計新思BjarneStroustrupMargaretEllisTheAnnotatedCReferenceManual。在我職業(yè)生涯的大部在21世紀初期,C++曾一度受到詬病。C語言的支持者C++程序噓它們自己的面向?qū)ο笳Z言,宣稱C++語言難以使用,而它們的工具才是未來。各大高校也決定教授Java語言,因為它有一套免費的工具鏈。由于以上種種原因,大公司投資大筆金錢使用Java、C#或是PHP來編寫和操作系統(tǒng)。C++看起來正在逐漸 。對于任何相信C++ 但是工作負荷在持續(xù)加大。于是,那些大公司又開始重新雇用C++程序員去解決它們的擴容問題。用C++從頭開始重新編寫代碼的成本變++C++2016年年初那些高市場份額的編程語言1相比非常突出的一點1可以從 /tiobe-index/查詢各編程語言的市場份額?!g者DavidMayhew精心著,不過現(xiàn)在看來有些過時的《提高C++性C性能的編程技術》開始。另外,ScottMeyers等人也廣泛 人遺憾的是,每一部史詩般的軟件詩篇(如Stepanov的標準模板為本代碼致C20年了,但是本書中所出現(xiàn)的大本書中展示的代碼則是我在Windows上編寫的。因此,,本W(wǎng)indowsWindows操作系統(tǒng)中的VisualStudio講解的優(yōu)化C++代碼的技術,同樣也適用于Linux、MacOSX或者其他C++環(huán)境。不過,不同優(yōu)化方式的正確使我知道在不同的編譯器之間、Unix系統(tǒng)和嵌入式系統(tǒng)之間存在的兼容ifif{} 本書是要幫你完成工作的,所以示例代碼通??梢灾苯幽萌ビ迷谀愕某绦蚧蛭臋n中。除非你使用了很大一部分代碼,否則無需們獲得。比如,用本書的幾個代碼片段寫一個程序就無需獲得,銷售或分發(fā)O'Reilly的示例光盤則需要獲得;本示例代碼回答問題無需獲得,將書中大量的代碼放到你的產(chǎn)品文檔中則需要獲得。我們很希望但并不強制要求你在本書內(nèi)容時加上說明。說明一般包括書名、作者、和ISBN,比如“OptimizedC++byKurtGuntheroth(O'Reilly).Copyright2016KurtGuntheroth,978-1-491-92206- 等寬字體(constant1碼是運行于手表、、平板電腦、工作站、超級計算機上,抑或是數(shù)對C++程序進行優(yōu)化。一些優(yōu)化技術也適用于其他編程語言,本書關注的是如何對體現(xiàn)C++設計最佳實踐的正確代碼進行優(yōu)化,使之不僅可以體現(xiàn)出優(yōu)秀的C++設計,而且還可以在絕大多數(shù)計算機上更快速、更低耗地運行。許多優(yōu)化機會的出現(xiàn)源于某些C++特性被誤識,或是沒有仔細考慮各種C++對象構建方式的性能開銷而編寫出的。可進行優(yōu)化的另外一個原因是,C++提供了對內(nèi)存管理和的精新的可以同時分發(fā)多少個指令。確實有一些開發(fā)人員會為某個單一平臺(Xbox1就是一個很好的例子)工作數(shù)年,他們不僅有充足的開發(fā)人員還是會為、平板電腦或PC等含有各種不同微處理器1Xbox是由微軟公司開發(fā)的家用電視游戲機?!g者本書也不會教授如何以最快的獨立于操作系統(tǒng)的方式在Windows、Linux、OSX以及所有的嵌入式操作系統(tǒng)上進行操作。本書會告訴你能C++(C標準庫)C進行優(yōu)化可能會讓他法接受,這個問題的嚴重程度不亞于出現(xiàn)bug和未實現(xiàn)的特性。bug修復與性能優(yōu)化之間的一個重要區(qū)別是,性能是續(xù)變量。特性要么是實現(xiàn)了,要么是沒有實現(xiàn);bug要么存在,要么不存在。但是為作出可測試的推測,再進行實驗得出。這些要么驗證推測,要么推測。經(jīng)驗豐富的開發(fā)人員常常相信他們對于最優(yōu)代碼具有足夠的經(jīng)驗和。但是除非他們頻繁地測試自己的,否則出現(xiàn)與我的相悖的情況。實驗,而非,才是貫穿本書的。在時間充裕的情況下編寫出的代碼,運行速度通常也可以提高30%至310倍的情況。不過,通過10多倍幾乎是不可能的。但是選擇一——2,StructuredProgrammingwithgotoSurveys36(4),December1974,p268.CiteSeerX4:(TEXMETAFONT字體系統(tǒng)的發(fā)明人,因諸多成就以及大量富于3ACMComputingSurveys是計算機的期?!g者4CiteSeerX是NEC在自動引文索引(AutonomousCitationIndexing,ACI)機制的基礎 ?5曾:5?是著名的計算機科學家,因在編程語言以及編譯器上的成就而聞名。他曾是弗吉尼亞大學的教授和AT&T的教授。——譯者注集——ACaseAgainsttheGOTO,第25屆ACM會議集CPU周期、用戶滿意度下降,會浪費大量時間重寫那些本要。這些慣用法對C++程序很有幫助。使用這些技巧也不會讓你被同調(diào)用(而實際上C++編譯器可能已經(jīng)將函數(shù)內(nèi)聯(lián)展開了),這是不行CC是否真的不快時,僅僅因為“C更快”CC3章中我將介紹“90/10規(guī)則”。這條規(guī)則程序中只有10%的代碼的有必要,也不會有作用。既然只有10%的代碼會對程序的性能產(chǎn)生顯3章會講解如何使用一些工具幫助大家定位代碼中的“熱點”。節(jié)中關于大O符號和時間開銷的簡單回顧)。這條非常有價值,O(n2插入排序(insertionsort)算法是最排序(radixsort)6O(nlogrn)(r是基數(shù)或用下,它的時間復雜度是O(n2)7。曾經(jīng)誤認為“女人的牙齒比 1500年,直到有人非常好奇,數(shù)了幾張嘴中的牙齒7快速排序算法的時間復雜度最優(yōu)為O(nlogn),為O(n2)?!g者識一樣,這種想法完全錯誤。在20世紀80年代和90年代,這種想法發(fā)領域,而且單核處理器的處理速度每18個月就翻一倍。雖然總的看 分指令,這可是每10-9秒??!這很容易讓人誤以為當計算機的性積速度也會越快。如果一個程序所執(zhí)行的指令中50%都是不必要的,之,性能對那些必須爭奪極其有限的計算資源(內(nèi)存、電源、CPU周會決定到底是需要100臺服務器或云實例,還是需要5001000C++——?雷諾上尉(?飾演),《卡》,1942C的混合特性為我們提供了多種實現(xiàn)方式,一方面可以實現(xiàn)性能管理擇方式,使得優(yōu)化C++程序以滿足性能需求成為可能。環(huán)。下面是一份改善C++程序性能的方法的總結,也是本書的大綱。C++編譯器是非常復雜的軟件構件。每種編譯器為C++語句生成的機CC++11的編譯器。C++11實現(xiàn)了右值(rvaluereference)和移動語義(movesemantics),可以省去許多在以前的C++版本中無法避免的操作00什在開++在新時獲的操冊一樣你完可不看作WdsLx6將CCC爾++費10有0天免試salxpesixC選擇一個最優(yōu)算法對性能優(yōu)化的效果最大。各種優(yōu)化都能改善程PCPC一樣,大部分優(yōu)化只能使程序性能呈線性提升。許多優(yōu)化可以將程序性能提30100%。如果足夠幸運,也許你可以將性能提升至三倍。但是優(yōu)化故大約27小時才能將一天的數(shù)據(jù)排序完畢,很明顯,這讓人無法接諸于“壯舉”。他使用逆向工程了計算機,通過文檔上沒有 (MergeSort)。歸并排序位于最優(yōu)比較排序算法之列。那么他對他卻用MergeSort兩個單詞描述出插入算法。程,這個例程只需要45分鐘就可以完成他的數(shù)據(jù)排序。的討論了這個。開發(fā)人員在職業(yè)生涯中都應該不斷學習這些知識。很遺憾,在本書中我只能對優(yōu)化算法淺談輒止。 putation,將計算從運行時移動至、編譯或是設計時)、延遲計算(lazycomputation,如果通常計算結果不會被使用,那么將計的計算)。第7章會使用很多示例來實踐這些技巧。C++編譯器提供的標準C++模板庫和運行時庫必須是可的、全面對進行性能優(yōu)化的開發(fā)人員來說,掌握標準C++模板庫是必需的技能。本書對查找和排序算法(9章)、容器類的最優(yōu)慣用法(10BoostProject()和 I/O、窗口、處理字符串(4.3.3節(jié))和并發(fā)(12.5某些方式的函數(shù)調(diào)用的開銷非常大(請參見7.2.1節(jié))。優(yōu)秀的函數(shù)庫API所提供的函數(shù)反映了這些API的慣用法,使得用戶可以無需頻get_char函數(shù),那么用戶在獲取每個字符時都需要進行一次函數(shù)調(diào)用。而如果這個API同時提供一個get_buffer(函數(shù),就可以避減少對內(nèi)存管理器的調(diào)用是一種非常有效的優(yōu)化,以至于開發(fā)人員由于字符串是許多C++程序中非常重要(和性能開銷大)的部分,我既減少動態(tài)內(nèi)存分配的性能開銷又不放棄實用的C++編程慣用法,比對緩存函數(shù)的一次調(diào)用也可能消耗數(shù)千個CPU周期。因此,很明顯減少是一種提高代碼運行速度的優(yōu)化方式。大量的發(fā)生都與個。除了內(nèi)存分配和函數(shù)調(diào)用外,單條C++語句的性能開銷通常都很小。以性能優(yōu)化為的文獻介紹了許多高效地使用單獨的C++語句的技8由?在影業(yè)工作時所設計的循環(huán)展開方法。——譯者10C標準庫提供基于簡單矢量和C數(shù)組的表數(shù)據(jù)結構。成。它們必須等待文件從硬盤上等待這些被暫停,而沒有利用這些時間進行其他處理,都是一種浪12章探討了如何高效地控C運行時庫中的一部分,管理著動態(tài)內(nèi)存分配。它C程序中都會被頻繁地執(zhí)行。C確實為內(nèi)存管理提供了豐減少2——?,“的衰朽”,《意圖集》,1891手冊了。本章簡單地了解處理器的體系結構,從中獲得性能優(yōu)化所有這些被廣泛使用的計算機都會執(zhí)行在內(nèi)存中的指令。指令所操作的數(shù)據(jù)也是在內(nèi)存中的。內(nèi)存被分為許多小的字(word),這些書,那么執(zhí)行地址(executionaddress)就相當于指向要閱讀的下一個單詞的手指。執(zhí)行單元(executionunit,也被稱為處理器、、 C++所相信
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球鹽酸毛果蕓香堿行業(yè)調(diào)研及趨勢分析報告
- 2025服務器托管合同書模板
- 綠色供應鏈一體化管理合同
- 2025關于醫(yī)藥采購合同
- 品牌服務協(xié)議書合同范本
- 濱海新區(qū)應急管理局
- 房屋租賃權轉讓合同范文
- 建筑材料居間合同
- 藥品購銷標準合同
- 企業(yè)間借款擔保合同
- 2025年潞安化工集團招聘筆試參考題庫含答案解析
- 幼兒園一日生活安全課件
- 《認罪認罰案件被追訴人反悔應對機制研究》
- 多旋翼無人飛行器嵌入式飛控開發(fā)實戰(zhàn)-基于STM32系列微控制器的代碼實現(xiàn)
- 國家開放大學護理社會實踐報告
- 投資項目評估管理制度
- 《工程地質(zhì)》試題及答案四
- 工程項目歸檔資料目錄范本
- 氦離子化色譜法測試電氣設備油中溶解氣體的技術規(guī)范
- 地 理探究與實踐 保護世界文化遺產(chǎn)課件 2024-2025學年地理湘教版七年級上冊
- 內(nèi)燃機車鉗工(中級)職業(yè)鑒定理論考試題及答案
評論
0/150
提交評論