c - 读取大型二进制文件每 30 个字节的最快方法?

标签 c io binaryfiles fseek

读取大型二进制文件 (2-3 GB) 每 30 个字节的最快方法是什么?我读过 fseek 由于 I/O 缓冲区而存在性能问题,但我不想在抓取每 30 个字节之前将 2-3 GB 的数据读入内存。

最佳答案

我建议您创建一个几千字节的缓冲区,从中读取每 30 个字节,用接下来的几千字节重新加载缓冲区,然后继续直到到达 eof。这样读入内存的数据量是有限的,你也不必经常从文件中读取。您会发现创建的缓冲区越大,速度就越快。

编辑:实际上,正如下面所建议的,您可能希望将缓冲区设为几百 kb,而不是几千字节(就像我说的 - 更大的缓冲区 = 更快的文件读取)。

关于c - 读取大型二进制文件每 30 个字节的最快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2394479/

相关文章:

c++ - qt C++ 命令行代码中的段错误(核心转储)

c - 将字符串的地址传递给 fscanf() 会阻止不相关的代码块运行

java - 为什么 JDK 中没有简单的 IO 工具来将整个文件读取到字符串中?

使用 BinarySearch 算法的 C++ 函数(.bin 文件)

c++ - 将二进制文件读取到 unsigned char 数组并将其写入另一个

python - 为什么我不能从Windows上的pip下载我的软件包的最新版本?

c - 在 gcc 命令中添加 linux 头文件

c - Memsetting 指向数组的指针

c - c 中的 x -> y 是否与 c#/java 中的 x.y 相同?