在 Linux 上,将文件读入字节数组/处理字节的最快方法是什么?这可能包括内存映射、系统调用等。我不熟悉许多 Linux 特定的功能。
过去我使用过 boost 内存映射,但我需要更快的 Linux 特定性能而不是可移植性。
在 Linux 上,将文件读入字节数组/处理字节的最快方法是什么?这可能包括内存映射、系统调用等。我不熟悉许多 Linux 特定的功能。
过去我使用过 boost 内存映射,但我需要更快的 Linux 特定性能而不是可移植性。
mmap
如果文件足够大,应该是访问文件内容的最快方法。设置内存映射有一个初始成本,但由于不需要将数据从页面缓存复制到用户空间而抵消了这一成本。如果你想要文件的所有内容,分配内存给你的程序的成本应该和mmap
.
一如既往,您最好的选择是进行测试和基准测试。
不要让自己被内存映射之类的懒惰的东西所迷惑。而是专注于你真正需要的东西。您真的需要将整个文件读入内存吗?然后打开、循环读取块和关闭文件的直接方式将尽可能快地完成。
但通常你并不真正想要那样。相反,您可能想要读取特定部分,此处的块,那里的块,跳转文件,读取特定位置的块等。
然后仍然fseek
ing 出那些位置并fread
ing 块不会有值得一提的开销。但是使用内存映射让操作系统或库处理诸如内存分配等事情会更方便。但是,它不会更快地完成工作。