局部性通常有兩種不同的形式:時(shí)間局部性和空間局部性采缚。
時(shí)間局部性
在一個(gè)具有良好的時(shí)間局部性的程序中外遇,被訪問過一次的存儲(chǔ)器位置很可能在不遠(yuǎn)的將來會(huì)被再次訪問榴都。
空間局部性
在一個(gè)具有良好空間局部性的程序中,如果一個(gè)存儲(chǔ)器位置被訪問了一次湖员,那么程序很可能在不遠(yuǎn)的將來訪問附近的一個(gè)存儲(chǔ)器位置贫悄。
局部性原理的應(yīng)用
局部性原理對(duì)硬件和軟件的設(shè)計(jì)都有著極大的影響,從硬件到操作系統(tǒng)娘摔、再到應(yīng)用程序窄坦,它們的設(shè)計(jì)都用到了局部性原理。
正是由于局部性原理的存在凳寺,在硬件層通過引入高速緩存存儲(chǔ)器能夠在很大程度上提升程序運(yùn)行的速度鸭津。操作系統(tǒng)的虛擬地址空間的技術(shù),以及緩存磁盤文件系統(tǒng)中最近被使用的磁盤塊等都用到了局部性原理肠缨。在應(yīng)用程序設(shè)計(jì)中應(yīng)用到的緩存思想逆趋。
局部性的簡(jiǎn)單原則
- 重復(fù)引用同一個(gè)變量的程序有良好的時(shí)間局部性。
- 做順序訪問的程序具有良好的空間局部性晒奕。
- 循環(huán)結(jié)構(gòu)具有良好的空間局部性和時(shí)間局部性闻书。循環(huán)體越小名斟,循環(huán)迭代次數(shù)越多,局部性越好魄眉。