相关疑难解决方法(0)

快速的基于磁盘的哈希表?

我有一组哈希(MD5的前64位,所以它们是非常随机分布的)我希望能够看到一个新的哈希是否在一个集合中,并将它添加到一个集合中.

集合不是太大,最大的将是数百万个元素,但是有数百个集合,所以我无法将它们全部保存在内存中.

到目前为止我有一些想法:

  • 我试着将它全部保存在sqlite表中,但是一旦它无法适应内存中的所有内容,它就变得非常慢.
  • 布隆过滤器听起来像是会有很高的错误率.我不介意微小的错误率(64位散列已经在4G元素集上发生了1次冲突),但错误率如1%则太高了.
  • 保持文件中具有间隙的哈希的排序列表,并在没有足够的间隙时调整大小.哈希是均匀分布的,所以即使非常简单的方案也应该有效.

我错过了一些非常明显的东西吗 任何提示如何实现良好的基于​​磁盘的哈希表?

hashtable

21
推荐指数
3
解决办法
1万
查看次数

Java:对巨大磁盘文件进行随机读取的最快方法

我有一个中等大小的数据集,大约800 MB左右,这基本上是一个很大的预计算表,我需要将一些计算加速几个数量级(创建该文件需要几个mutlicores计算机天来使用优化生成和多线程算法......我真的需要那个文件).

现在已经计算了一次,那么800MB的数据是只读的.

我无法忍受它在记忆中.

截至目前,它是一个巨大的800MB文件,但如果可以提供帮助,拆分成较小的文件不是问题.

我需要在该文件中读取大约32位数据的大量时间.我不知道在哪里我需要读取这些数据:读取是均匀分布的.

在这样的文件或文件中随机读取Java的最快方法是什么?理想情况下,我应该从几个不相关的线程进行这些读取(但如果需要,我可以在单个线程中对读取进行排队).

Java NIO是可行的吗?

我不熟悉'内存映射文件':我想我不想在内存中映射800 MB.

我想要的只是访问这些800MB基于磁盘的数据的最快随机读取.

顺便说一下,如果人们想知道这与我不久前提出的问题完全不同:

Java:基于磁盘的快速哈希集

java nio

6
推荐指数
2
解决办法
7038
查看次数

标签 统计

hashtable ×1

java ×1

nio ×1