我正在编写一个基于事件的模拟器,其中每个事件都调用一个可以生成新事件的处理函数(节点),依此类推。时间戳与每个事件相关联,它们需要按时间增加的顺序进行处理(但事件不一定按该顺序创建)。为此,我使用了一个简单的priority_queue<Event*>
,其中 Event 是一个类,其中包含指向必须调用的处理节点的指针和时间戳。
所以,一切正常,但我每秒分配和释放数百万个事件,这显然是限制我的模拟器速度的原因(大约 30% 的执行时间由 Event 对象的内存分配和释放占用)。
我发现了这个问题:
对象池与动态分配,似乎我可以从对象池中受益匪浅。虽然我已经看到 Boost 提供了一些方法来做到这一点,但我不确定这对于在priority_queue
. 当谈到自定义内存分配时,我真的很迷茫。
所以我的问题是:为 my 使用对象池是否实用/有益priority_queue
,如果是,是否有一种简单的方法可以做到这一点,可能有一些代码示例(或至少一个起点),最好不要立即依赖第一次使用Boost?
实际上,也欢迎一些参考来了解池分配的工作原理!
谢谢。