2011-01-26 30 views
0

我正在编写一个类似于Python 2.6+程序的网络调度,其中我有一个复杂的队列要求:队列应该存储数据包,应该通过时间戳或O(1)中的数据包ID进行检索,应该能够检索所有低于某个阈值的数据包,按优先级对数据包进行排序等。它应该以合理的复杂度插入和删除。需要关于自定义数据结构与使用内存数据库的建议?

现在我有两个选择:

  1. 结合一些数据结构和它们正确地同步,以实现自己的要求。
  2. 使用一些内存数据库,以便我可以轻松执行各种操作。

有什么建议吗?

+0

排队有多少物品,它们会多大? – 2011-01-26 09:30:58

+0

我实际上是在为高质量的视频聊天提供视频内容。该队列被用作缓冲区,并且可以显着增长。然而,就目前使用字典的实现而言,我并没有耗尽内存。 – sharjeel 2011-01-26 09:39:13

回答

0

数据库只是一些索引和花哨的算法包裹在一个单一的数据结构 - 表。你对引擎盖下发生的事情没有太多的控制。

我想尝试使用内置的Python数据结构。

0

一个Fibonacci Heap可能是有益的,因为(从文章引述):

操作插入,找到最小,减小键,和合并(工会)在不断的分期时间的工作。操作删除并删除O(log n)摊销时间中的最小工作量。这意味着从一个空的数据结构开始,第一组中的操作序列和第二组中的操作序列将花费O(a + b log n)时间。在二项堆中,这样的一系列操作将花费O((a + b)log(n))时间。因此,当b渐近地小于a时,Fibonacci堆比二项堆更好。

相关问题