C 效率提高

2021-05-21 13:50:07 字數 671 閱讀 9108

最近作了個解析log的小工具。做出來後,速度有點慢。就優化了一下,經驗總結如下。

(編譯環境是 vs2003)

1,把類的成員函式內的函式作用域變數(object) 變成 類的成員變數。

函式內的變數,其生存週期是函式體。因此,函式每次被呼叫時,都要為其分配記憶體空間,結束時**記憶體空間。

在這次開發中,類物件被生成一次後,其成員函式被呼叫了數百萬次。所以把函式體內的臨時變數提公升 成 類的成員變數後,

分配空間和**空間的代價沒了,速度提高了10%左右。

注1:把函式體內的類物件變數(cstring之類的) 提出去是有效果的。但基本型(dword之類的)卻沒有效果。

大牛說:函式使用的是棧空間。生成基本型別時的操作是把棧頂指標上移,然後把value存進去。

生成類物件時,先在記憶體中開闢一空間放物件,然後把物件指標壓入棧。

入棧的操作並不花時間,花時間是因為呼叫了建構函式和析構函式。

注2: 把函式體內的臨時變數只是為了運算一時之需,提公升 成類的成員變數後,結構豈不是很亂。

2,把普通的成員函式 改為 靜態函式 不能提公升速度。我的理解是:

靜態函式 是在程式初期化期間駐入記憶體的,之後所有的呼叫都指向同一塊記憶體空間。

普通的成員函式 是在第乙個內物件生成時,駐入記憶體的。之後所有的呼叫(包括該類的再次生成的物件)也是指向同一塊記憶體空間。

如何提高C 效率

分類 c c 2012 02 25 16 43 1023人閱讀收藏 舉報c 編譯器function overloading語言c 自從七十年代c語言誕生以來,一直以其靈活性 高效率和可移植性為軟體開發人員所鍾愛,成為系統軟體開發的首選工具。而c 作為c語言的繼承和發展,不僅保留了c語言的高度靈活 高...

常用提高C 效率的方法

自從七十年代c語言誕生以來,一直以其靈活性 高效率和可移植性為軟體開發人員所鍾愛,成為系統軟體開發的首選工具。而c 作為c語言的繼承和發展,不僅保留了c語言的高度靈活 高效率和易於理解等諸多優點,還包含了幾乎所有物件導向的特徵,成為新一代軟體系統構建的利器。相對來說,c語言是一種簡潔的語言,所涉及的...

提高SQL效率

下面就某些sql 語句的 where 子句編寫中需要注意的問題作詳細介紹。在這些 where 子句中,即使某些列存在索引,但是由於編寫了劣質的 sql 系統在執行該 sql 語句時也不能使用該索引,而同樣使用全表掃瞄,這就造成了響應速度的極大降低。1.is null 與 is not null 不能...