資料空間技術
----如何減少程式所需要資料的儲存空間的技術
1,不儲存,重新計算。 如果我們在需要某一個給定對象的任何時候,都對其進行重新計算而不儲存,就可以減少該對象所需的空間。該方法用計算時間換空間,只使用於需要儲存的對象可以根據其描述重新計算得到的情況。
2,稀疏資料結構
例1:疏鬆陣列的的儲存(很多個0,或其他相同的項)。
例2:使用指標來共用大型物件可以消除儲存同一對象的眾多副本所需要的開銷(數組參數的傳遞),程式員在修改共用對象時必須小心謹慎地確保該對象的所有擁有者都希望修改。
例3:儲存1970-2070之間的日曆,並不需要儲存每一年不同的日曆。而只需要給出14個標準日曆(對任意一年,1月1日星期幾隻有7種可能,閏年還是非閏年只有兩種可能)以及一個為1970-2070年每一年提供日曆編號的表。
3,資料壓縮 通過壓縮的方式對對象進行編碼,以減少儲存空間。
例1:使用標準的壓縮演算法
例2:根據特定的應用環境,如10進位數字串的處理,可將兩個10進位數壓縮到一個位元組儲存。 編碼:c = a * 10 + b; 解碼:a = c / 10; b = c % 10;
4, 分配策略 動態按需分配,按照需求量來請求資料空間,而不是預先分配。
5,記憶體回收 對廢棄的儲存空間進行回收再利用,從而那些不用的位就可以重新使用了。
例1:對某些欄位沒有使用的位進行再利用。如linux基樹實現中利用整型地址值(能被4整除)的低兩位。
資料空間技術
----如何減少程式碼所佔的儲存空間
1,函數定義
通過用函數替換代碼中的常見模式,減少了空間需求,並增加了清晰性。
微虛刪除了很少使用的函數,將它的整個windows壓縮為更加緊湊的Windows CE,使其在具有更小記憶體的“移動計算平台”上運行。
2,解釋程式 在圖形程式中,使用4個位元組的解釋程式替換一長行的程式文本。 使用“格式信函編程的”的解釋程式。
3,翻譯成機器語言 將源語言轉換成機器語言。 將關鍵區段用彙編實現。