據說遍歷一個向量(就像讀取它的所有元素一樣)比迭代遍歷列表要快,因爲優化了緩存。std :: list vs std :: vector迭代
網絡上是否有任何資源可以量化它對性能的影響?
此外,使用自定義鏈接列表會更好嗎,哪些元素將被預先定位以便它們在內存中連續?
背後的想法是,我想存儲元素的順序不會改變。我仍然需要能夠在運行時迅速插入midle,但其中大部分仍然是連續的,因爲順序不會改變。
請問這些元素是否連續的事實對緩存有影響,還是因爲我仍然會調用list_element->next
而不是++list_element
它不會改善任何內容?
「另外,使用自定義鏈接列表會更好嗎,哪些元素將被預先定位,以便它們在內存中連續?」你的意思是一個向量? – 2012-04-26 11:49:55
@LuchianGrigore它不會成爲一個向量,因爲如果你想在中間插入一個元素,你所要做的就是改變一些指針。 – 2012-04-26 11:53:17
'std :: list'的主要要求是從列表中的任何位置插入和移除單個元素的時間是恆定的。這與內存中連續的元素不兼容。 – juanchopanza 2012-04-26 11:54:12