1
我寫了一個rb-tree實現。節點使用malloc進行分配。在開始時分配一個大表並使用該空間分配節點並在每次表溢出時將其大小加倍,這是一個好主意。假設分配的時間很長,我不確定這會使插入操作更快一些。改進我的redblack樹實現
我寫了一個rb-tree實現。節點使用malloc進行分配。在開始時分配一個大表並使用該空間分配節點並在每次表溢出時將其大小加倍,這是一個好主意。假設分配的時間很長,我不確定這會使插入操作更快一些。改進我的redblack樹實現
分配一個大塊(並自行分配)與分配大量小項目是否更好的問題適用於許多情況。並沒有一個適合所有人的答案。但總的來說,可能是分配大塊的速度要快一點。但是加速(如果有的話)可能不會很大。根據我的經驗,在大量使用動態分配的高度併發系統中,執行單一大型分配通常值得付出努力和複雜性。如果您有單線程應用程序,我的猜測是每個節點的分配佔用插入操作的成本非常低。
一些一般想法/評論:
最終,您需要測試它並測量差異。你可以做的一件簡單的事情就是寫一個簡單的「扔掉」測試,分配你希望處理的節點數量,以及分配時間需要多長時間(然後可能還有時間釋放它們)。這可能會給你一些分配成本的估計。