我需要将大约 10 3 个稀疏双数组写入磁盘(一次一个)并稍后在程序中单独读取它们。
编辑:很抱歉没有更早地明确提出这个问题。具体来说,我希望尽可能多地存储在内存中,并将当前未使用的变量保存在磁盘上。我正在研究Linux。
最快的方法是缓冲 I/O。您首先将尽可能多的复制到缓冲区,而不是单独写入每个数组。一旦该缓冲区已满,您将把整个缓冲区写入磁盘,清除缓冲区,然后重复。这最大限度地减少了磁盘的写入量,并提高了 I/O 效率。
如果您打算稍后按顺序读取数组,我建议您还缓冲读取,以便读取更多所需的内容,并且您可以在缓冲区外工作。
您可以更进一步并使用异步读/写操作,以便您的程序可以在等待磁盘时处理其他任务。
如果您担心它将消耗的磁盘大小,您可以添加另一个层,该层将在您写入/读取磁盘时压缩/解压缩数据流。
HDF5 数据格式旨在高效地将大量数据写入磁盘。这种格式被 NASA 和大量科学应用使用: