我需要将大约 103 个稀疏 double 组写入磁盘(一次一个),稍后在程序中单独读取它们。
编辑: 很抱歉没有更早地明确提出问题。具体来说,我希望尽可能多地存储在内存中,并将当前未使用的变量保存在磁盘上。我在 Linux 上工作。
最佳答案
最快的方法是缓冲 I/O。与其单独编写每个数组,不如先将尽可能多的数组复制到缓冲区。一旦该缓冲区已满,您会将整个缓冲区写入磁盘,清除缓冲区,然后重复。这最大限度地减少了对磁盘的写入量,并将提高 I/O 效率。
如果您计划稍后按顺序读取数组,我建议您也对读取进行缓冲,以便它读取更多它需要的内容,并且您可以使用缓冲区。
您可以更进一步,使用异步读/写操作,这样您的程序就可以在等待磁盘的同时处理其他任务。
如果您担心它将消耗的磁盘大小,您可以添加另一层,在您向磁盘写入数据或从磁盘读取数据时压缩/解压缩数据流。
关于c - 在 c 中将大量稀疏数组读/写到磁盘的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11446452/