c++語言特性效能分析
c++語言特性引起效能方面的問題主要有
1、缺頁 涉及記憶體分配
2、從堆中動態申請和釋放記憶體
3、複雜物件的建立和銷毀
4、函式呼叫開銷
動態例子:
object *obj = new object;
delete obj;
//繼續使用
指標obj是乙個區域性變數,在棧中分配。delete會呼叫所指物件的析構函式。
繼續使用處會主要有三種危險:
1、已無任何物件,記憶體返回給系統,會引起 訪問為例 導致程序崩潰。
2、有其他物件且**後未分配,取得的值是無意義的,不會引起程序崩潰,但針對指標後續操作時不可**的;
3、有其他物件申請,可能會對該物件做修改。
下面是一些主要注意的問題:
一。建構函式
建立乙個物件分兩個步驟,取得所需記憶體然後執行建構函式,之後執行初始化構造列表,執行那個建構函式體。
1.初始化列表的順序盡量與宣告順序保持一致、
2.物件做引數傳遞盡量使用引用。
注:物件在初始化列表中正確初始化變數比在建構函式內初始化,效能有明顯差異!
二、繼承與虛函式
虛函式優勢:大大提公升可擴充套件性及可維護性 **重用
劣勢: 一般來說無法利用內斂函式的速度優勢。
動態繫結的解析:
當通過基類的指標或引用呼叫某個虛函式時,系統首先定位在這個指標真正對應的物件所隱含的虛函式指標,虛函式指標然後根據這個虛函式的名稱
對這個虛函式指標所指向的虛函式進行乙個偏移定位 再呼叫這個偏移定位處的函式指標所對應的函式。
三、臨時物件
產生原因:
1、實際呼叫函式時傳入的引數與定義處宣告的變數型別不符、
2、當函式返回乙個物件時、
如果過載operator+ 則最好也過載operator+=、
盡量使用前者++/--。
注:當乙個臨時物件初始化乙個常量引用時,會持續到這個引用被銷毀。const string & c = a + b;
四、內聯函式
inline 僅僅給編譯器乙個建議,編譯器完全可以根據實際情況忽略、
動態陣列:
優點:1.可分配空間較大
2.使用靈活,根據實際需要
缺點:1、空間分配效率低
2、容易造成記憶體洩露
C 語言特性中的效能分析
這是一本關於c 效能優化的書,比較不錯,叫 c 應用程式效能優化 第2版 c 語言特性中的效能分析 大多數開發人員通常都有這個觀點,即組合語言和c語言適合用來編寫對效能要求非常高的程式。而c 語言的主要應用範圍是編寫複雜度非常高,但是對 效能要求不是那麼嚴格的程式。因為在大多數人看來,c 語言相對前...
C 語言特性 1 影響效能的因素
大多數開發人員通常都有這個觀點,即組合語言和 c 語言適合用來編寫對效能要求非常高的程式。而 c 語言的主要應用範圍是編寫複雜度非常高的程式,但是對效能要求不是那麼嚴格的程式。但是事實往往並非如此,很多時候,乙個程式的速度在框架設計完成時大致已經確定了,而並非是因為採用了c 語言才使其速度沒有達到預...
針對C 語言特性的效能優化checklist
系列文章導航 新的職業目標,以及c 效能優化 針對c 語言特性的效能優化checklist 1 盡量使用棧記憶體,較少使用堆記憶體。2 將堆記憶體池化。3 函式引數使用const 或 傳遞類物件。4 短小的函式巨集化或inline化。5 將類成員變數的初始化放在初始化列表中。尤其是類中含有的物件的初...