gpt4 book ai didi

c - 使用类 SLAB 技术优化 C 程序

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

我有一个高度密集使用 malloc/free 函数的编程项目。它具有三种类型的结构,具有非常高的动态和大数量。通过这种方式,malloc 和 free 被大量使用,每秒调用数千次。用用户空间版本的 SLAB 替换标准内存分配可以解决这个问题吗?是否有此类算法的实现?

附言

  1. 系统是面向 Linux 的。
  2. 结构的大小小于 100 字节。
  3. 最后,我更喜欢使用现成的实现,因为内存管理是一个非常难的话题。

最佳答案

如果您只有三个不同的,那么您将通过使用池分配器(定制的或类似 boost::pool 的东西,但对于 C)获得很大的 yield 。 Doug Lea's binning based malloc将作为池分配器的一个很好的基础(它在 glibc 中使用)。

但是,您还需要考虑其他因素,例如多线程和内存重用(对象是分配、释放然后重新分配还是分配然后释放?)。从这个角度可以查到tcmalloc (专为极端分配、数量和内存使用而设计),nedmalloc或囤积。所有这些分配器都是开源的,因此可以很容易地进行更改以适应您分配的对象的大小。

关于c - 使用类 SLAB 技术优化 C 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9485641/

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