C 效能優化指南

2021-08-30 09:03:27 字數 1170 閱讀 5373

1、用好的編譯器並用好編譯器(支援c++11的編譯器,intelc++(速度最快)、gnu的c++編譯器gcc/g++(非常符合標準),visual c++(效能折中),clang(最年輕mac os x))。

2、使用更好的演算法。

3、使用更好的資料結構(不同的資料結構在使用記憶體管理器的方式也有所不同)。

4、使用更好的庫(熟悉和掌握標準c++模板庫對於進行效能優化的開發員是必須的技能,boost project 和 google code 公開了很多有用的庫)。

5、減少記憶體分配和複製(減少對記憶體管理器的呼叫是一種非常有效的優化手段)。

6、優化記憶體管理(記憶體管理器的排程,豐富的api)。

7、移除計算(對於單條的c++語句進行優化)。

8、提高併發性(多個處理核心執行指令)。

1、計算機的物理組成本身對計算機效能的限制。

2、計算機的主記憶體是比較慢的(通往主記憶體的介面是限制執行速度的瓶頸(馮*諾伊曼瓶頸),(摩爾定理)每年處理器的核心的數量都會增加,但是計算機的效能未必會提高,因為這些核心只是等待訪問記憶體的機會(記憶體牆memory wall))。

3、計算機記憶體的訪問方式(並非以位元組為單位),某些記憶體訪問會比其他的更慢(分為一級快取記憶體(cache memory)、二級快取記憶體、**快取記憶體、主記憶體、磁碟上的虛擬記憶體頁)。

4、記憶體的容量是有限的,每個程式都會與其他程式競爭計算機資源,計算比做決定快。

5、在處理器中,訪問記憶體的效能開銷遠比其他操作的效能開銷大,非對齊訪問所需要的時間是所有位元組都在同一位元組中的兩倍。

6、訪問頻繁使用的記憶體位址的速度比訪問非頻繁使用的位址快,訪問相鄰位址的記憶體的速度比訪問相互遠隔的位址的記憶體塊。

7、訪問執行緒間共享的資料比訪問非共享的資料資源慢很多。當併發執行緒共享資料時,同步**降低了併發量。

8、有些語句隱藏了大量的計算,從語句的外表上看不出語句的效能開銷會有多大。

1、90/10規則:乙個程式會花費90%的執行時去執行10%的**。

2、只有正確且精確的測量才是準確的測量。

3、解析度不是準確性。

4、在windows上,clock()函式提供了可靠的毫秒級的時鐘計時功能。在windows8和之後的版本中,getsystemtimepreciseasfiletime()提供了亞微秒的計時功能。

5、計算一條c++語句對記憶體的讀寫次數,可以估算出一句c++ 語句的效能開銷

C 效能優化指南

優化是一項編碼活動。在傳統的軟體開發過程中,直到編碼完成,專案進入了整合與測試階段,能夠觀察到程式整體的效能時,才會進行優化。而在敏捷開發方式中,當乙個帶有效能指標的特性編碼完成後或是需要實現特定的效能目標時,就會分配乙個或多個衝刺 sprint 進行優化。效能優化的目的是通過改善正確程式的行為使其...

jQuery效能優化指南

這個話題也是老生常談的了,jquery倒是沒少用,卻很少考慮它的效能!隨著cpu的嗷嗷上揚,覺得應該好好考慮這個問題!最近讀到e文 jquery performance rules 拿來跟大家分享,粗略的翻譯了一下!1 always descend from an id 總是從id選擇器開始繼承 2...

Elasticsearch 效能優化指南

本場 chat 將從 4 個層面 系統 集群 索引 api 介紹 elasticsearch.優化方案,分別包括寫入的優化和查詢的優化。共包含優化細項 50 餘項。總結了與多位大咖的交流經驗,在此分享給大家。我會針對優化原理做一些簡單的解釋,以及利弊權衡。方便讀者針對實際的業務場景進行針對性優化。本...