【问题标题】:Simple custom allocator for block memory? [closed]块内存的简单自定义分配器? [关闭]
【发布时间】:2013-10-03 21:24:29
【问题描述】:

首先我不确定是否有更简单的方法来做到这一点(请参阅我的消息末尾)......

我想编写一个自定义分配器,以确保我的堆分配对象存储在连续内存中。例如,在堆上分配 1GB,然后为每个对象分配(先到先得)1000 个字节,这有多简单?

我认为更简单的方法可能是声明一个数组(连续内存)并将对象存储在其中。哪种技术性能更好?

(我正在考虑加载一个充满对象的缓存行并尝试最大程度地减少缓存未命中)

【问题讨论】:

  • 为什么不把你所有的对象都放进去,例如std::vector ?
  • 这些对我来说听起来像是相同的技术,只是装扮不同。数组与由数组支持的自定义分配器。
  • @StephanvandenHeuvel 如果两者不同,哪一个性能最好,如果它是自定义分配器,您将如何实现?
  • @user997112 如果你分配一个带有新字符[1GB]的数组;或使用全局 char [1GB] ,差别不大。性能将取决于您找到的算法并从这些数组中分配内存。您还应该注意的是为您使用该内存的任何内容分配合适的对齐内存
  • 为什么要“对象存储在连续内存中”?

标签: c++ performance optimization memory-management allocation


【解决方案1】:

您正在描述pool allocator。 您可以使用free list 来实现。

【讨论】:

    猜你喜欢
    • 2012-05-29
    • 2012-02-22
    • 2012-07-08
    • 1970-01-01
    • 1970-01-01
    • 2019-08-11
    • 1970-01-01
    • 2020-08-22
    • 2018-06-28
    相关资源
    最近更新 更多