在分布式计算设置中,我想向许多节点发送unordered_set。我知道C ++中的序列化,例如使用boost::serialization
。我对序列化的看法是,我在收到序列化数据后面临在每个节点上重建unordered_set
数据结构的成本。
我的想法是为unordered_set编写一个自定义分配器,它分配一个固定大小的连续内存,并在分配后返回起始内存地址。然后我想获取unordered_set
的字节表示,通过线路发送它,并告诉接收节点这个内存块是unordered_set
。
那会有用吗?你们有没有其他想法如何解决我的问题?或者你有任何相关的指针,例如写这样的分配器?任何反馈都表示赞赏。
谢谢!
答案 0 :(得分:5)
由于以下几个原因,这可能是一个坏主意:
我只会发送一个键/值对列表。将它们插入到接收端构建的哈希表中。
另外,请记住,通过线路发送内容时,与带宽成本相比,处理能力成本通常很小。散列表空间效率低 - 它们需要大量空桶才能保持近O(1)性能。因此,即使您可以实现一种方法来按原样发送哈希表,整体性能也可能会更差。