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

标签 c io

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

编辑: 很抱歉没有更早地明确提出问题。具体来说,我希望尽可能多地存储在内存中,并将当前未使用的变量保存在磁盘上。我在 Linux 上工作。

最佳答案

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

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

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

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

关于c - 在 c 中将大量稀疏数组读/写到磁盘的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11446452/

相关文章:

c - 什么时候允许类型转换指针?

C 程序显示的字符多于数组大小

c - 以编程方式确定变量的值是在编译时还是在运行时计算的

java - Java中RS232口通信

java - 类 I/O 的异常(exception)

C 在减法期间检查溢出

c++ - 相交三角形的面积

python - 无法在 Python 中删除文本文件空格

java.net.socket 实现

java - 我应该使用哪种 EOF 检查方法?