在 Linux 中读取文件的最快方式
Fastest way of reading a file in Linux?
在Linux上,将文件读取到字节数组/处理字节的最快方法是什么?这可以包括内存映射、系统调用等。我不熟悉许多特定于Linux的功能。
过去我使用过提升内存映射,但我需要更快的 Linux 特定性能,而不是可移植性。
如果文件足够大,mmap
应该是访问文件内容的最快方法。设置内存映射会产生初始成本,但无需将数据从页面缓存复制到用户空间,从而抵消了该成本。如果您想要文件的所有内容,则为程序分配内存的成本应或多或少与mmap
的成本相同。
与往常一样,您最好的选择是进行测试和基准测试。
不要让自己被像内存映射这样懒惰的东西所迷惑。 而是专注于你真正需要的东西。 你真的需要把整个文件读入内存吗? 然后,打开、循环读取块和关闭文件的直接方式将尽可能快地完成。
但通常你并不真正想要这样。 相反,您可能想要读取特定部分,此处的块,那里的块,跳过文件,读取特定位置的块等。
然后仍然fseek
出这些位置,fread
块不会有值得一提的开销。 但是使用内存映射让操作系统或库处理内存分配等内容可能更方便。 但是,它不会更快地完成工作。
相关文章:
- 复制部分文件的C++/增强方式
- 文件追加的方式是,它在每次保存C++后结束行
- 以编程方式防止重命名或删除文件,但仍使其可写
- 是否可以在C++中以间接方式包含头文件
- 为Catch2中的外部文本文件指定路径的最佳方式
- 复制文件的最佳方式是什么,以便我可以在复制过程中轻松取消复制?
- 我需要帮助以连续的方式将对象的字段正确写入文件
- 使用 C++ 显示 (.lnk) 快捷方式文件的真实路径
- 如何以可移植方式删除名称为 wchar_t 类型的文件C++
- 在Visual C ++中与Stockfish(外部可执行文件)通信的最佳方式
- Newline更改了C 中打印从文件读取的字符串的方式
- QDIR入口列表可以使用文件夹快捷方式透明地工作
- 二进制文件中的某些数据如图所示,并以奇怪的方式显示OS
- 模板类静态在最终二进制文件中跨共享库以不同方式实例化是否一致
- 打开文件的正确模式是什么,以便 seekp() 的工作方式与在默认模式下打开的文件相同
- 了解文件页在技术级别的工作方式
- 是否可以以编程方式创建迷你转储文件而不会崩溃?
- 如何以编程方式查找从 html 引用的所有文件
- 更改输出文件外观(C )的方式 - 需要先阅读,然后以不同的格式写入
- 在Linux中寻找正确的方式,将C 应用程序从C 应用程序编写加密文本到加密的GPG文件