有人可以幫助我理解以下關於低延遲編程的說明:使用列表的低延遲
儘量減少您擁有的對象數量。例如,喜歡ArrayList/ArrayDeque之類的基於數組的結構來處理像LinkedList這樣的基於指針的結構。
我知道一個數組列表可能在碎片堆中執行得更好;但從未意識到它涉及的對象較少。
相反,我知道ArrayList確實需要創建比實際需要更多的對象。
有人可以幫助我理解以下關於低延遲編程的說明:使用列表的低延遲
儘量減少您擁有的對象數量。例如,喜歡ArrayList/ArrayDeque之類的基於數組的結構來處理像LinkedList這樣的基於指針的結構。
我知道一個數組列表可能在碎片堆中執行得更好;但從未意識到它涉及的對象較少。
相反,我知道ArrayList確實需要創建比實際需要更多的對象。
A LinkedList
使用一個Node
對象來包裝添加到它的每個元素。因此,如果您將10個對象添加到LinkedList
,則實際上需要另外10個對象來保存它們。
儘管ArrayList
會根據添加和刪除不時重新生成其後備數組,但它只需要一個後備數組對象來存放您添加到其中的所有對象。
垃圾收集和對象創建並不總是可以忽略的。
不僅僅是添加一個'''Node'',這些節點不一定處於連續的內存中,所以''''''''''''''''''''''''可能是緩存未命中。 –
你能告訴我們你在哪裏閱讀過嗎? –
LinkedList中的節點通常每個元素使用24-32個字節的內存。 ArrayList通常每個元素使用4-8個字節。 –