gpt4 book ai didi

c - 高效的堆管理器,用于大量流失、微小的分配?

转载 作者:太空狗 更新时间:2023-10-29 17:00:14 28 4
gpt4 key购买 nike

我正在寻找堆管理器的想法来处理非常具体的情况:很多很多非常小的分配,每个分配从 12 到 64 字节不等。任何更大的东西,我都会传递给常规的堆管理器,所以只需要照顾小块。只需要 4 字节对齐。

我主要担心的是

  1. 开销。常规 libc 堆通常会将分配舍入为 16 字节的倍数,然后添加另一个 16 字节的 header - 这意味着 20 字节分配的开销超过 50%,这很糟糕。
  2. 表现

一个有用的方面是 Lua(它是这个堆的用户)会在调用 free() 时告诉您它正在释放的 block 的大小 - 这可能会启用某些优化。

我将发布我目前的方法,它工作正常,但如果可能的话我想改进它。有什么想法吗?

最佳答案

可以构建一个堆管理器,它对所有相同大小的对象都非常有效。您可以为所需的每种大小的对象创建这些堆之一,或者如果您不介意使用一点空间,则为 16 字节对象创建一个堆,为 32 字节对象创建一个堆,为 64 字节对象创建一个堆。最大开销为31 字节用于 33 字节分配(这将在 64 block 大小的堆上进行)。

关于c - 高效的堆管理器,用于大量流失、微小的分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/228081/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com