天天看點

計算機中 空間局限性(Spatial Locality)與時間局限性(Temporal Locality)

空間和時間局部性描述了程式如何通路資料(或指令)的兩個不同特征。

定義:

  • 如果在時間上被引用的事物在空間上也接近(相鄰的存儲器位址,磁盤上的鄰近扇區等),則引用序列被認為具有空間局部性(Spatial Locality)。
  • 如果對同一事物的通路在時間上聚集在一起,則該序列被稱為具有時間局部性(Temporal Locality)。

通俗而言:

  • 時間局部性就是被引用過一次的存儲器位置在未來會被多次引用(通常在循環中)
  • 空間局部性就是如果一個存儲器的位置被引用,那麼将來他附近的位置也會被引用。

舉例

Example of computing the sum of an array:

計算機中 空間局限性(Spatial Locality)與時間局限性(Temporal Locality)

在上述代碼中,

  1. sum為時間局限性Temporal Locality,因為sum被引用了多次。
  2. 數組元素為空間局限性spatial Locality,因為如果a[i]被使用,則a[i+1],a[i-1]…很可能被引用。

練習

時間局限性和空間局部性的意義分别為( )。

A.最近被通路的單元,很可能在不久的将來還要被通路

B.最近被通路的單元,很可能它附近的單元也即将被通路

C.結構化程式設計,很少出現轉移語句

D.程式中循環語句的執行一般時間很長

答案:

A是時間局域性,B是空間局域性。C、D有可能正确,但并不是時空局域性的根本定義,或者說,C和D是造成時空局域性的原因,而不是時空局域性的意義。

繼續閱讀