空間換時間
與時間換空間的方法相反空間換時間則是嘗試使用更多的內存或者磁盤空間換取CPU資源或者網絡資源等通過增加系統的內存消耗來加快程序的運行速度
這種方法的典型應用就是緩存緩存是一塊額外的系統內存區如果沒有緩存程序依然可以正常工作但是在一般情況下緩存中總是保存那些來之不易的數據重新取得這些數據會花費大量的資源和時間而通過緩存這塊額外的內存避免了頻繁的資源消耗加快了程序的運行速度
空間換時間是一種軟件設計思路除了緩存外在一些算法中也可以使用這樣的技術以下代碼是典型的空間換時間排序方法
public class SpaceSort {
public static int arrayLen = ;
public static void main(String[] args) {
int[] a = new int[arrayLen];
int[] old = new int[arrayLen];
Map<Integer Object> map = new HashMap<Integer Object>()
int count = ;
while (count < alength) { //初始化數組數據
int value = (int) (Mathrandom() * arrayLen * ) + ;
if (mapget(value) == null) {
mapput(value value)
a[count] = value;
count++;
}
}
Systemarraycopy(a old alength) //這裡只是為了保存原有數組
long start = SystemcurrentTimeMillis()
Arrayssort(a)
Systemoutprintln(Arrayssort spend:+ (SystemcurrentTimeMillis() start) + ms)
Systemarraycopy(old a oldlength) //恢復原有數據
start = SystemcurrentTimeMillis()
spaceToTime(a)
Systemoutprintln(spaceToTime spend:+ (SystemcurrentTimeMillis()
start) + ms)
}
[] []
From:http://tw.wingwit.com/Article/program/Java/gj/201311/27786.html