C 語言特性效能分析

2021-05-22 23:10:43 字數 1170 閱讀 2393

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 將類成員變數的初始化放在初始化列表中。尤其是類中含有的物件的初...