如何使用 Loki 的小对象分配器?

Posted

技术标签:

【中文标题】如何使用 Loki 的小对象分配器?【英文标题】:How do I use Loki's small object allocator? 【发布时间】:2011-02-12 01:39:04 【问题描述】:

我需要使用 Loki 的小型对象分配器,但我对它的工作原理感到非常困惑。我已经阅读了文档和很多论坛,但这没有意义:其中一些人说使用 stl,其他人使用自定义分配器。我只需要能够通过分配和释放不同大小的对象来测试它的性能。有人可以提供一个如何使用它的小例子吗?

【问题讨论】:

你读过现代​​ C++ 设计吗?那里有一整章。 是的,第 4.9 节,但我不明白 smallobject 和 smallobjectallocator 如何组合在一起。我认为分配器应该删除新/删除运算符的使用,但我如何创建对象以传递给分配器? 【参考方案1】:

如果你访问 Loki 项目,你可能不想使用 SmallObject。它的运行速度比默认的 new 慢。我不知道为什么,但有些人在这里谈到: http://sourceforge.net/projects/loki-lib/forums/forum/93009/topic/3828398

【讨论】:

他的问题中没有任何内容表明他不应该将它用于他正在做的事情。对象池最重要的用途是防止内存碎片。 -1 这是误导。链接的讨论仅表明在特定(角落)情况下,Loki 速度较慢。 “它的运行速度比默认新的慢”至少应该改为“在某些情况下它的运行速度比默认的新慢”,尽管这通常适用于所有分配器。【参考方案2】:

好吧,我得到的最好的结果是让 Loki 的小对象分配器符合 STL。为此,我刚刚根据http://www.codeproject.com/kb/cpp/allocator.aspx?fid=16541&df=90&mpp=25&sort=Position&tid=1677312为 Loki 中的 SmallObjAllocator 类创建了一个包装类

【讨论】:

以上是关于如何使用 Loki 的小对象分配器?的主要内容,如果未能解决你的问题,请参考以下文章

在“现代 C++ 设计”/Loki 中发现的小对象分配器是不是已被弃用以支持更新的实现?

python为不同的对象如何分配内存的小知识

如何使用 Loki 的 Pimpl 实现?

如何使用 Promtail / Loki - AlertManager 为我的日志中的每个错误发送警报?

如何在 Grafana 上使用 LogQL 将 Loki 解析的字段绘制为数值?

如何分析loki存储空间?