在c中将大量稀疏数组读/写到磁盘的有效方法

在c中将大量稀疏数组读/写到磁盘的有效方法,c,io,C,Io,我需要将大约103个稀疏双数组写入磁盘(一次一个),然后在程序中单独读取它们 编辑:为没有在前面清楚地阐述问题而道歉。具体来说,我希望在内存中存储尽可能多的变量,并将当前未使用的变量保存在磁盘上。我正在linux上工作。最快的方法是缓冲I/O。与其单独写入每个数组,不如先将尽可能多的数组复制到缓冲区。一旦缓冲区已满,您将把整个缓冲区写入磁盘,清除缓冲区,然后重复。这将最大限度地减少磁盘的写入量,并将提高I/O效率 如果您计划以后按顺序读取阵列,我建议您也对读取进行缓冲,以便它读取更多需要的内容,

我需要将大约103个稀疏双数组写入磁盘(一次一个),然后在程序中单独读取它们


编辑:为没有在前面清楚地阐述问题而道歉。具体来说,我希望在内存中存储尽可能多的变量,并将当前未使用的变量保存在磁盘上。我正在linux上工作。

最快的方法是缓冲I/O。与其单独写入每个数组,不如先将尽可能多的数组复制到缓冲区。一旦缓冲区已满,您将把整个缓冲区写入磁盘,清除缓冲区,然后重复。这将最大限度地减少磁盘的写入量,并将提高I/O效率

如果您计划以后按顺序读取阵列,我建议您也对读取进行缓冲,以便它读取更多需要的内容,并且您可以使用缓冲区

您可以更进一步,使用异步读/写操作,以便您的程序可以在等待磁盘时处理其他任务


如果您担心它将消耗磁盘上的大小,您可以添加另一层,在您写入/读取磁盘时压缩/解压数据流。

HDF5数据格式旨在高效地将大量数据写入磁盘。 NASA和许多科学应用程序都使用这种格式:


@Banthar数组非常小,实际上每个数组只有2个元素。您是否提前知道需要附加多少个数组?还有,你在哪个平台上工作?(例如Linux vs.Windows vs.其他)