0

数据包含数十亿个 ID 分数对等信息。为了快速访问这些配对信息,我计划使用哈希表容器,因为它的搜索时间复杂度是 O(1)。考虑到原始数据在 80G 左右,我不想每次需要运行搜索应用程序时都将数据加载到 RAM 中。我想要做的是生成一次哈希表,然后将其存储在 RAM 中,并具有文件系统生命周期的持久性(RAM 的费用不是标准),并用不同的应用程序搜索它。

根据我有限的理解,我可以使用“内存映射文件”(增强 C++ 库)。但我有问题:

1)将哈希表数据结构写入映射文件时是否可以保留它?2) 将现有文件映射到 RAM 需要多少时间?

任何答案/评论/建议都是最受欢迎的!

谢谢,

4

1 回答 1

0

1) 是的。该文件只是字节,就像内存一样。

2)创建映射将是有效的即时。除非在 64 位操作系统上,否则您将无法一次连续映射所有节点。当然,如果文件缓存不能保存您正在使用的地图部分,则必须从磁盘读取。

身份证有多大?对有多大?你有多少参考地点?(是否有大量使用的对和轻度使用的对?)您多久会搜索一次不存在的对?数据是否以读取为主?可能有更好的方法来做到这一点。我强烈建议从一个更广泛的问题开始,以确保您不会陷入次优路径。

于 2012-06-28T03:44:25.270 回答