1
A
回答
3
CPU中的大多數緩存都熟悉的回寫,即寫入不傳播到存儲器層次結構的下一層,直到有爭用高速緩存空間,東西已經被刷新。如果您只進行一次隨機寫入,則不太可能看到任何性能影響,但如果持續進行隨機寫入,則會發現其性能將顯着低於順序寫入。
製作一個隨機寫入很可能需要一個高速緩存行的分配,因爲這很可能是該內存段訪問的唯一的事情。一旦寫足夠了,你就會用數據緩存填充數據緩存,每行包含一個有效的單詞,並且其中一行必須被刷新。因爲途中存儲器被組織和存取,即沖洗不會比沖洗整行快得多,使得該隨機寫入爲約順序寫入的相同的速度的32字節(典型的線路尺寸)。
我會建議編寫自己的程序來測試這個。分配比您的最後一級緩存大得多的內存,並分配相同數量的隨機和順序32位寫入。我敢打賭,你會發現隨機寫入速度在1/8和1/4之間,與順序寫入速度一樣快。
的另一個因素,因爲你是隨機寫入到不訪問內存等計算的相對平衡。如果它們很罕見,是的,它們會在後臺被沖刷得很多。只有當它們成爲瓶頸時,纔會注意到性能影響。連續寫入也會發生同樣的問題,但並不嚴重。
相關問題
- 1. 使jQuery Datatable適合內容區域
- 2. Ruby的CSV.open緩衝區是否可以一次寫入內存?
- 3. 檢查映射內存是否支持寫入組合
- 4. IDN域名是否區分大小寫?
- 5. GAC是內存區域還是硬盤區域?
- 6. 這是OpenCL內核的合適內存?
- 7. 是否可以在區域內創建區域?
- 8. 在Orchard CMS的區域內是否可以有區域?
- 9. 檢查座標是否在區域內
- 10. 區域內的Numpy聚合
- 11. 如何檢查內存區域是否映射到文件?
- 12. Cassandra是否適合存儲文件?
- 13. Hashtable是否適合存儲資產?
- 14. C#中的緩存是否適合我?
- 15. 如何檢查jpeg是否適合內存?
- 16. Hibernate是否適合批處理?內存使用情況如何?
- 17. 如何確定mysql索引是否完全適合內存
- 18. UIPopoverController。嵌入tableViewController是否合適?
- 19. 檢查用戶輸入是否適合
- 20. BarChart不適合圖表區域
- 21. 使圖像適合打印區域
- 22. .bss將不適合區域ram
- 23. 在Vertica中加入失敗,並顯示「內部分區不適合內存」
- 24. 使HTML內容區域適合視口高度?
- 25. HTML文本區域適合內容(在頁面加載)
- 26. 高速緩存行刷新是否將整行寫入內存?
- 27. 列表「冷」內存區域
- 28. 全局寫入內存合併
- 29. 是否需要刷新由程序員明確寫入組合內存?
- 30. 寫入std :: string是否合法?