程式設計技巧 節省空間

2022-05-02 22:00:18 字數 1473 閱讀 2772

資料空間技術

----如何減少程式所需要資料的儲存空間的技術

1,不儲存,重新計算。

如果我們在需要某乙個給定物件的任何時候,都對其進行重新計算而不儲存,就可以減少該物件所需的空間。該方法用計算時間換空間,只使用於需要儲存的物件可以根據其描述重新計算得到的情況。

2,稀疏資料結構

例1:稀疏矩陣的的儲存(很多個0,或其他相同的項)。

例2:使用指標來共享大型物件可以消除儲存同一物件的眾多副本所需要的開銷(陣列引數的傳遞),程式設計師在修改共享物件時必須小心謹慎地確保該物件的所有擁有者都希望修改。

例3:儲存1970-2070之間的日曆,並不需要儲存每一年不同的日曆。而只需要給出14個標準日曆(對任意一年,1月1日星期幾隻有7種可能,閏年還是非閏年只有兩種可能)以及乙個為1970-2023年每一年提供日曆編號的表。

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,翻譯成機器語言

將源語言轉換成機器語言。

將關鍵部分用彙編實現。

乙個節省空間的小技巧

我們往往習慣將運算過程的臨時結果儲存起來,這樣的思想比較容易理解也是慣性的思維,然而往往大多數情況下我們不需要儲存中間過程的變數。這裡舉乙個例子,杭電oj的1003題maxsum,雖然同時採用暴力求解,但是中間的sum結果不採用二維陣列儲存而只是簡單的通過每次置0後重新計算這樣就可以節省空間。雖然超...

聯合 節省空間的類

聯合 union 是一種特殊的類。乙個union物件可以有多個資料成員,但在任何時候,只有乙個成員可以有值。當將乙個值賦給union物件的乙個成員的時候,其它所有成員都變為未定義的。每個union物件的分配得到的空間大小在編譯時是固定的,至少與union的最大資料成員一樣大。像任何類一樣,union...

移動設計空間節省之道

設計 於生活。最近在裝修自己的房間,翻閱了一些相關的家居設計資料,發現互動設計和家居設計有很多相似的地方。小戶型空間有限,手機螢幕也只有巴掌大小,在兩種小空間上進行設計一定很多共通之道。攜程ued的同學也是心有靈犀,很早就為我們奉獻了一回精彩的分析 對於這麼有意思的主題,還是想多嘮叨幾句。1.聚 即...