2015-05-16 28 views
2

我讀斯科特市長介紹,他mentiones這一行:代碼重複有效降低高速緩存大小

內聯的

一面:代碼重複有效降低高速緩存大小

我不是瞭解代碼複製與高效緩存大小之間的關係

+4

如果一個經常使用的函數沒有內聯,那麼它的代碼就存在於內存中的一個單獨的位置,這會頻繁地被擊中,因此大部分時間都可能在緩存中。另一方面,如果內聯,代碼的許多副本將存在於不同的位置,因此緩存不太有用。 –

+0

完美的感覺不知道我是如何錯過的。謝謝 – Kam

+0

@cicada應該回答沒有評論 – b4hand

回答

5

複製代碼意味着相同的指令在連續的內存地址上被複制,而不是在循環的主體中具有這些指令的單個副本。這意味着很多高速緩存行都被填充了相同的內容,而不僅僅是一些。由於這些指令經常被訪問(每循環運行一次),所以它們可能不會離開緩存,所以其他代碼(或緩存統一的數據)必須離開,如果填充緩存的頻繁訪問指令的數量較少條目。