1. 程式人生 > 實用技巧 >c語言記憶體操作優化

c語言記憶體操作優化

1. 使用乘法代替除法。如果不需要較高的精度,使用float代替double。

2. 如果一個函式內部會頻繁地使用全域性變數,可以使用區域性變數作為全域性變數的拷貝。

3. 棧總是保持對齊在4位元組邊界(32位CPU),區域性變數定義為char或short並不能帶來儲存空間上的節省,且會降低變數訪問速度。因此,在不修改對齊方式的情況下,儘量將區域性變數定義為32位。

4. 需要使用結構體作為函式引數時,使用指標代替。

5. 需要時,使用 for( i = 10; i--; ) { ... } 代替 for( i = 0; i < 10; i++) { ... }

6. 能夠使用暫存器傳遞的函式引數個數是有限制的。例如,4個以內的函式引數可能被保持在暫存器中,多餘的引數會被壓入棧。

7. 儘量安排經常被呼叫的函式成為葉子函式。葉子函式是指不再呼叫其他函式的函式,包括C語言庫函式。
8. 提高檔案訪問速度的主要辦法有兩個:一是採用記憶體對映檔案,二是使用記憶體緩衝。
使用記憶體緩衝區方法的好處主要是便於移植,佔用記憶體少,便於硬體實現等。下面是讀取檔案的C偽碼:

int Len;
BYTE buffer[8192];
ASSERT(buffer==NULL);
If buffer is empty{
Len=read(File,buffer,8192);
If(len==0) No data and exit;
}

如果要使用記憶體對映檔案,必須:
1).處理的檔案比較的小,
2).處理的檔案很大,但是執行環境記憶體也很大,並且一般在執行該程式的時候不執行其他消耗記憶體大
的程式,同時使用者對速度有特別的要求,而且對記憶體佔用沒有什麼要求。
如果以上兩個條件不滿足的時候,建議使用記憶體緩衝區的辦法。

參考引用:

C程式優化之路--I/O篇
http://blog.chinaunix.net/uid-21765995-id-1815641.html
C語言常用記憶體優化總結
https://blog.csdn.net/u010383519/article/details/89883650