2
Q
循環跨步和緩存行
A
回答
3
在該示例中的長度是恆定的,所以步幅較大的 - 你去通過更少的元件。
有趣的現象是它不適用於緩存行下面,這是因爲你不能帶一部分行。因此,如果低於16,您將爲獲取所有緩存行支付相同的罰款。 16歲以上,你開始跳過一些行。例如32位以上(128B),你可以每隔一行取一行 - 因此+/-一半的時間(假設你的執行時間由內存延遲所支配)
相關問題
- 1. Java緩存和空循環檢測
- 2. 運行跨多組循環
- 3. R和跨列循環
- 4. ES6緩存循環錯誤..?
- 5. 跨月循環
- 6. 緩存不友好的循環超過緩存友好循環的2d陣列
- 7. Javascript循環和步驟
- 8. javascript中的同步和異步循環
- 9. 同步生產者和消費者與循環緩衝
- 10. 動態行跨度PHP while循環
- 11. 無限循環和跨線程
- 12. RiotJS:如何在循環中緩存值?
- 13. 未緩存for循環的值
- 14. 是否值得緩存foreach循環?
- 15. 如何將$(this)緩存在循環中?
- 16. 通過ASP.NET緩存對象鍵循環
- 17. JavaScript異步循環
- 18. JavaScript異步循環
- 19. C++異步循環
- 20. 異步循環iOS
- 21. For循環異步
- 22. Node.js同步循環
- 23. Python循環同步
- 24. 如何編寫具有更好緩存行爲的循環?
- 25. 並行化大循環並改進高速緩存訪問
- 26. VB.NET 2003中的緩慢循環執行
- 27. Cassandra和行緩存
- 28. 運行摩卡測試循環同步
- 29. 內部爬行for循環不同步
- 30. 異步foreach循環進行API調用
所以,當你說「低於16時,你支付同樣的罰金緩存行「是否意味着整個數組(全部元素)被加載到緩存中,並且當超過16個數組的部分被加載到緩存中時?我的印象是,加載的元素數量取決於步幅 – zer0c00l
緩存是以64字節的粒度完成的。如果你訪問一個緩存行的一個元素,你仍然需要獲取整行。但是,如果您的步幅是兩條緩存線寬,則不必在中間獲取線條。如果你繪製它,你會發現任何超過64B的步驟都會允許跳過,而且步幅越長,跳過的次數越多 – Leeor