如何使用 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 中发现的小对象分配器是不是已被弃用以支持更新的实现?
如何使用 Promtail / Loki - AlertManager 为我的日志中的每个错误发送警报?