list_for_each() 內使用prefetch()的好處? - Linux

Table of Contents

#define list_for_each(pos, head) \\

for (pos = (head)->next, prefetch(pos->next); pos != (head); \\

pos = pos->next, prefetch(pos->next))

這邊他有使用prefetch(),
不過就算他不使用,在for迴圈內若使用到pos->next,
不是也一樣會被cache住嗎? (只是晚了一點)

如此先做prefetch()的好處為呢?

還請高手解答一下

謝謝!!

--

All Comments

Zenobia avatarZenobia2011-04-20
提早讀進來還是有可能快很多,雖然我覺得 prefetch
要 trial and error 的成分居多... :P
Elvira avatarElvira2011-04-22
(打錯了,沒有error XD)
Noah avatarNoah2011-04-27
不過要用到的時候,若不在cache就會讀進來阿 這是我的疑問
Tom avatarTom2011-04-30
是沒錯啊,但這樣的話用之前來要等他抓,就比較慢了
手動 prefetch 的目的是減少 cache miss
Eden avatarEden2011-05-03
*還要
Kyle avatarKyle2011-05-07
謝謝!