我有一个Vector,它用作基于元素索引的查找表。它真的很庞大(3000多万元素)。我想将它存储在文件系统上,每次启动我的应用程序时,都要将其读入某个对象。 我目前在这里看到三个选项:
这里最好的方法是什么?
答案 0 :(得分:1)
写一个完整的文件,然后在内存映射文件周围使用包装器来读取它。
class MMappedIntVector (mmap: java.nio.MappedByteBuffer) {
def getInt (idx: Int): Int = mmap.getInt (idx * 4)
}
object MMappedIntVector {
def load (path: String): MMappedIntVector = {
// mmap here
}
}
当然,缺点是文件格式最终会被锁定到CPU的字节序。