時空權衡
電腦科學中的時空權衡(英語:space–time trade off,又叫空間換時間)是指一個演算法或程式用增加空間使用量來換取時間減少的情況。這裏,空間指的是執行一個給定任務所消耗的數據儲存(主記憶體、硬碟等),而時間指的是執行一個給定任務所消耗的時間(計算時間或反應時間)。
歷史
編輯在動物行為的早期階段,可以看到時空權衡的生物學用途。使用儲存的知識或將刺激反應編碼為DNA中的「本能」,可以避免在時間緊迫的情況下進行「計算」的需要。更具體到電腦,尋找表從最早期的作業系統開始就已經實現了。
權衡的類型
編輯查詢表 vs 重新計算
編輯一個常見的情況是涉及尋找表的演算法:一個實現可以包含整個表,這減少了計算時間,但增加了所需的主記憶體量;或者它可以根據需要計算表項,增加計算時間,但減少主記憶體需求。
壓縮數據 vs 不壓縮數據
編輯時空權衡可以應用於數據儲存的問題。如果數據未經壓縮就被儲存,它需要更多的空間,但訪問所需的時間要比數據被壓縮後儲存所需的時間少(因為壓縮數據減少了它所佔用的空間,但執行解壓縮演算法需要時間)。根據問題的具體實例,兩種方式都是實用的。也有一些罕見的情況是可以直接使用壓縮數據的,比如在壓縮點陣圖索引的情況下,使用壓縮的方式比不使用壓縮的方式更快。
重新渲染 vs 儲存圖像
編輯只儲存向量圖的SVG原始碼,並在每次請求頁面時將其渲染為點陣圖圖像,這是以時間換空間;使用更多的時間,但空間更少。在改變頁面時渲染圖像並儲存渲染後的圖像是以空間換取時間;使用更多的空間,但減少時間。這種技術更普遍地被稱為快取。
代碼量少 vs 迴圈展開
編輯在應用迴圈展開時,較大的代碼量可以換來較快的程式速度。這種技術使迴圈的每一次迭代的代碼變長,但卻節省了在每一次迭代結束時跳回迴圈起點所需的計算時間。
其他例子
編輯同樣利用時空權衡的演算法有:
參見
編輯參考文獻
編輯- ^ Hellman, Martin. A Cryptanalytic Time-Memory Tradeoff. IEEE Transactions on Information Theory. July 1980, 26 (4): 401–406. CiteSeerX 10.1.1.120.2463 . doi:10.1109/tit.1980.1056220.