我想實現的malloc()用C類的,我不能決定一個塊是否應該被添加到空閒列表的末尾或空閒鏈表的頭。哪個更好,爲什麼?我使用的列表是一個雙向鏈表,並且(現在)是無序的。是保持釋放的塊列表中動態內存分配時,最好使用LIFO順序或先進先出的順序?
0
A
回答
0
兩者之間的差異不應該很明顯(如果存在的話):塊的分配和釋放順序取決於用戶(使用malloc的程序員),因此您可以將其視爲隨機。
製造至少一種有序列表的大小。
看看一些其他技術,如果你真的想要的東西快,例如,實現buddy system。
+0
感謝您的幫助。另外,我的教科書提到,在分配器使用第一個擬合算法時,按地址順序維護列表的內存利用率優於LIFO順序中的列表,但這並不能解釋原因。它是否更容易合併塊,或者是否有其他原因? – David
3
沒有運行的基準測試中,最可能的選擇產生最佳性能FIFO,自由表頭即放釋放的塊。
這是因爲FIFO最有可能提供temporal locality of reference,因爲剛釋放的塊更可能駐留在CPU緩存中,而不是先前釋放的塊並且不會在較長時間段內使用。
相關問題
- 1. 釋放先前分配的內存後程序中止
- 2. 按照最近或最近的日期先後順序獲取排序列表
- 3. Java優先順序
- 4. CSS優先順序
- 5. CSS優先順序
- 6. JavaScript中a = b == c的順序優先順序是什麼?
- 7. PyYAML - 是保存列表的順序嗎?
- 8. 如何顛倒ng表中列的排序順序(先升序)?
- 9. 數組或列表中的項目是否保持其順序?
- 10. Spark的RDD.combineByKey()是否保留先前排序的DataFrame的順序?
- 11. 保證線程執行順序是先到先服務
- 12. 建築內核或世界的先後順序是否重要?
- 13. 即使奇數排序,首先按出現順序保持賠率Java
- 14. 打印樣式表的優先順序
- 15. 解釋執行java代碼的順序或優先級?
- 16. 保持列表的順序node.js
- 17. 在進行順序計算時保持操作順序
- 18. 使用變更時Java正則表達式的優先順序
- 19. 路由優先級順序
- 20. 一元++優先順序
- 21. 在HTML中排列表列的優先順序
- 22. 釋放動態分配的內存
- 23. 休眠註釋:映射一個保持順序的列表
- 24. WCF服務中的優先順序
- 25. Seq.groupBy是否在組內保持順序?
- 26. MySQL按優先順序排列
- 27. 優先級隊列錯誤順序
- 28. 保存列表框的順序mvc2
- 29. 按先進先出順序固定容量的線程安全收集
- 30. 4先進先出和序列化
都去嘗試一下,並運行一些性能/使用測試? (這應該回答至少兩個問題......) – 2011-10-16 04:06:49
@pst:他應該運行什麼樣的測試? – Gabe