常用優化六、時間換空間和空間換時間

時間換空間

由於系統資源是有限的,爲了在有限的資源內,達成某些特定的性能目標,時間換空間或者空間換時間的方法。
時間換空間通常用於嵌入式設備,或者內存、硬盤空間不足的情況,通過使用犧牲CPU的方式,獲得原本需要更多內存或者硬盤空間才能完成的工作。
下面是一個非常簡單的時間換空間的算法,實現了a,b兩個變量值的交換。交換兩個變量的方法是使用一箇中間變量,而引入額外的變量,而引入額外的變量意味着要使用更多的空間。採用下面的方法,則可以免去中間變量,而達到變量交換的目的,其代價是引用更多的CPU運算。

public class Demo {
	public static void main(String[] args) throws Exception {
		int a=3;
		int b=2;
		b=a+b;
		a=b-a;
		b=b-a;
		System.out.print(a+"----"+b);
	}
}
結果:
2----3

性能優化的關鍵在於掌握各部分組件的性能平衡點,如果系統CPU資源有空閒,但是內存使用緊張,便可以使用用時間換空間的策略,達到整體的性能改良,反之,CPU資源緊張,內存資源有空閒,則可以使用空間換時間的策略,提升整體性能。

空間換時間

與時間換空間的方法相反,空間換時間則是嘗試使用更多的內存或者磁盤空間換取CPU資源或者網絡資源等,通過增加系統的內存消耗,來加快程序的運行速度。
這種方法的典型應用就是緩存,緩存是一塊額外的系統內存區,如果沒有緩存,程序依然可以正常工作,但是在一般情況下,緩存中總是保存那些來之不易的數據,重新取得這些數據會花費大量的資源和時間,而通過緩存這塊額外的內存,避免了頻繁的資源消耗,加快了程序的運行速度。
除了緩存外,一些算法中也可以使用這樣的技術。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章