c - 快速读取大于c中内存的文件

标签 c file file-io

我想从多个文件中读取行,而不是逐行读取。 这些文件不适合内存,所以我必须从磁盘读取。 在 C 中以最佳性能从多个文件中读取特定行的最佳方法是什么?

例子:

  • 文件 4 的第 1 行
  • 文件 2 第 5 行
  • 文件 4 第 5 行 ......

最佳答案

在 Linux 上,您可以使用 mmap(2) 以数兆字节的 block 读取和内存映射文件。系统调用,可能带有 madvise(2)也许(在另一个线程中)readhahead(2)系统调用。

但瓶颈可能是您的硬件。考虑使用 SSD 或非常快的磁盘。

如果您对行边界感兴趣,您应该显式地管理它们(并内存它们),也许记住一些换行符的一些偏移量。

关于c - 快速读取大于c中内存的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12231798/

相关文章:

c - 在一条语句中实现输出

c++ - 如何在 C++ 中使用 fstream get() 获取 int

c++ - 在 C++ 中将字符与字符串的组成部分进行比较时出现错误

java - 数字格式中的空字符串

java - 创建一个目录,然后在其中创建文件

c# - 为什么带有 UNC 路径的 .NET 的 File.Open 会产生过多的 SMB 调用?

C - 将十进制数转换为压缩 BCD

c - 在哪里可以找到 PDF 格式的 C89/C90 标准?

c - 如何修复 .txt 中的 &localtime - C

选择文件后的 html 输入文件操作