在 Linux 中读取文件的最快方式

Fastest way of reading a file in Linux?

本文关键字:方式 文件 Linux 读取      更新时间:2023-10-16

在Linux上,将文件读取到字节数组/处理字节的最快方法是什么?这可以包括内存映射、系统调用等。我不熟悉许多特定于Linux的功能。

过去我使用过提升内存映射,但我需要更快的 Linux 特定性能,而不是可移植性。

如果文件足够大,mmap应该是访问文件内容的最快方法。设置内存映射会产生初始成本,但无需将数据从页面缓存复制到用户空间,从而抵消了该成本。如果您想要文件的所有内容,则为程序分配内存的成本应或多或少与mmap的成本相同。

与往常一样,您最好的选择是进行测试和基准测试。

不要让自己被像内存映射这样懒惰的东西所迷惑。 而是专注于你真正需要的东西。 你真的需要把整个文件读入内存吗? 然后,打开、循环读取块和关闭文件的直接方式将尽可能快地完成。

但通常你并不真正想要这样。 相反,您可能想要读取特定部分,此处的块,那里的块,跳过文件,读取特定位置的块等。

然后仍然fseek出这些位置,fread块不会有值得一提的开销。 但是使用内存映射让操作系统或库处理内存分配等内容可能更方便。 但是,它不会更快地完成工作。