我正在研究一个玩具/实验,该实验需要像DNS这样的服务来获取本地网络上特定节点的位置/地址信息。它还将存储其他信息,例如节点类型,套接字类型(enet-udp或tcp)以及其他一些特定的数据位。大部分(或全部)数字类型。每个条目将通过客户端ID与特定的客户端关联,每个客户端在节点内都有自己的线程。
我的问题是哪个boost软件包将通过数字ID提供绝对最快的访问?尽管可能永远无法实现,但其想法是该服务可能会增长到未知数量,从而在跨多个节点的线程内为数千个客户端管理IPC。
换句话说,容器将必须快速并且能够增长。如果增长的能力导致比设置大小的容器大得多的访问时间成本,那么可变大小是理想的。插入时间既不重要,也不影响容器内部结构中数据的顺序。
对于这种类型的容器/结构,将其放错位置了吗?这是我第一次必须对Boost甚至C++中的结构非常挑剔,因此期待学习新的东西。
谢谢
最佳答案
首先,请花一点时间确保此查找实际上将成为应用程序的瓶颈之一(如果您正在执行I / O,则任何内部查找都可能是无关紧要的)。
如果您能够在数字ID上设置上限(最大值),并且对不以绝对最快的速度增长感到满意,那么您将获得一个预先保留的 vector 。
否则,最有可能的候选对象将是哈希(C++ 11或boost的unordered_map
)。哈希将具有恒定的时间查找,但要注意负载因数及其增长时间。
关于c++ - Boost中最快的容器是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17625768/