空间换时间
与时间换空间的方法相反空间换时间则是尝试使用更多的内存或者磁盘空间换取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)
}
[] []