【发布时间】:2013-02-28 02:36:12
【问题描述】:
我写了一个 rb-tree 实现。使用 malloc 分配节点。在开始时分配一个大表并使用该空间来分配节点并在每次表即将溢出时将大小加倍是否是一个好主意。假设分配的时间很重要(我不确定),这将使插入操作更快一些。
【问题讨论】:
标签: memory-management insert red-black-tree
我写了一个 rb-tree 实现。使用 malloc 分配节点。在开始时分配一个大表并使用该空间来分配节点并在每次表即将溢出时将大小加倍是否是一个好主意。假设分配的时间很重要(我不确定),这将使插入操作更快一些。
【问题讨论】:
标签: memory-management insert red-black-tree
分配一个大块(并自行拆分)与分配许多小项目是否更好的问题适用于许多情况。并且没有一个万能的答案。不过,总的来说,分配大块可能会快一点。但是加速(如果有的话)可能不会很大。以我的经验,在大量使用动态分配的高并发系统中,进行单个大型分配通常值得付出努力和复杂性。如果您有一个单线程应用程序,我的猜测是每个节点的分配构成了插入操作的非常小的成本。
一些一般的想法/cmets:
最终,您需要对其进行测试并衡量差异。您可以做的一件简单的事情就是编写一个简单的“一次性”测试,分配您希望处理的节点数量以及需要多长时间(然后也可能是释放它们的时间)。这可能会给你某种分配成本的大致估计。
【讨论】: