[問題] list_for_each() 內使用prefetch()的好處?

看板Linux作者 (Ted)時間14年前 (2011/04/19 23:20), 編輯推噓0(008)
留言8則, 2人參與, 最新討論串1/1
#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()的好處為呢? 還請高手解答一下 謝謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.138.165.75 tedhut:轉錄至看板 C_and_CPP 04/19 23:21

04/19 23:42, , 1F
提早讀進來還是有可能快很多,雖然我覺得 prefetch
04/19 23:42, 1F

04/19 23:42, , 2F
要 trial and error 的成分居多... :P
04/19 23:42, 2F

04/19 23:43, , 3F
(打錯了,沒有error XD)
04/19 23:43, 3F

04/19 23:52, , 4F
不過要用到的時候,若不在cache就會讀進來阿 這是我的疑問
04/19 23:52, 4F

04/20 00:01, , 5F
是沒錯啊,但這樣的話用之前來要等他抓,就比較慢了
04/20 00:01, 5F

04/20 00:01, , 6F
手動 prefetch 的目的是減少 cache miss
04/20 00:01, 6F

04/20 00:02, , 7F
*還要
04/20 00:02, 7F

04/20 23:08, , 8F
謝謝!
04/20 23:08, 8F
文章代碼(AID): #1DhQXBwh (Linux)