C++程式設計中提高程式執行效率的方式(不斷更新)
在實際的工作中,利用程式實現同樣的功能會有很多種方式,但是考慮到程式的執行時間時,很多方式並不可取。不斷提高程式的執行效率,而又不影響程式功能是程式設計師的不竭追求!
以下是我在工作中總結的提高程式程式碼效率的方式:
1.整型執行速度快於浮點型,所以能用整型的地方儘量不要用浮點型計算,尤其是除法!移位運算的效率比一般的乘除法效率高!
2.儘量少呼叫簡單函式,例如一個數的平方,直接 a*a,而不要用pow(a,2),pow( )函式的效率很低!
3.容器函式不適合進行資料的插入、刪除,但出入棧的效率高;節點函式不適合進行資料的定點訪問,但是資料的插入、刪除效率高。
4.直接複製的效率高於間接賦值,例如int a(12)高於int a=12(也高於int a;a=12)。
5.雙重迴圈中,最好將大迴圈放在內層,記憶體的申請最好放在外面,避免多次重複開闢!重點:多次重複操作是效率低下最為直接的表現!
6.程式碼儘量簡潔(滿足功能),結構越複雜效率越低!
7.資料操作最好直接使用記憶體資料操作(直接操作buffer)。
8.直接使用現有的封裝函式很方便,但是效率不是最好的,簡單的功能實現,最好還是自己寫原始碼。
9.記憶體需要用多少就開闢多少,冗餘資料會降低效率,也不便於管控記憶體!
10.儘量避免不同資料型別相互操作,減少資料的型別強轉!
11.處理不同事件,需要顯著提高效率,可以開啟多執行緒(非常直觀有效)!
12.資料在記憶體上操作的效率是非常高的!儘量避免資料在硬碟上操作,例如,沒有特殊要求,不要將記憶體的資料每次都儲存到本地硬碟。
---優化程式碼,一定要懂資料結構和演算法分析!
13.程式碼前後的防呆很重要!但是過多不必要的防呆(明顯不出現的判別式!)會嚴重降低程式的判定效率。
14.要有良好的“單元測試”習慣,不斷優化細小“單元”,提高小模組的效率。
15.熟練使用VS自帶的效能分析模組,分析程式中不同程式碼段的時間分配情況。
16.對於if判斷語句,預判為“真”的概率高的語句放在前面,其它根據概率依次放在後面,減少判定的次數。
17.能不用靜態變數的,儘量不要用靜態變數!可以的話,使用區域性變數,也不提倡沒有必要的靜態區域性變數!
18.影象資料的計算,避免直接用OpenCV的資料型別,而使用buffer資料(將mat型轉化為unsigned char型)。
19.空間換時間。目前電腦的記憶體都很大,可以考慮多開闢記憶體空間,將大模組分散並列計算,最好不要在迴圈體內重複開闢。
20.