繁体   English   中英

提升circular_buffer或堆排序性能

[英]boost circular_buffer or heap sorting performance

我需要在处理它们之前对到达进程X的对象进行排序。
对象被分类为时间戳 - 64位数。
当对象超时(几毫安)并排序时,进程X开始查看它们。
大多数情况下,对象到达排序,在3%到5%之间,对象出现故障。

所以我需要一个允许我的结构:
- 快速插入元素
- 快速删除超时元素

在绩效方面,应该最好对它们进行排序?
我开始用boost :: circular_buffer实现。
如果boost :: heap对此更好,我应该使用boost :: heap吗? 因为有一些(斐波那契,二项式,优先队列......)
我正在使用boost 1_49,但我也可以使用更新的版本。

使用循环缓冲区,我将大部分元素插入缓冲区的开头。 但在某些情况下它可能是O(n)。
但要超时元素是O(1)

你需要测量但是我猜想std::priority_queue<T>有一个公平的机会来提高效率。 使用任何其他堆对您没有多大好处,因为您不需要额外的操作(更改元素的优先级),但能够使用这些操作会显着增加开销。

特别是当T的大小稍大但即使它只是一个int ,你可能想要使用d -heap与d == 8 :虽然这会导致更多的比较,但它会减少对象被移动的次数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM