是否有一种普遍接受的最快技术用于在 C++ 中将文件读入内存?
我只会阅读文件。
我已经看到 boost 有一个实现,我在这里看到了其他几个实现,但我想知道什么被认为是最快的?
先感谢您
万一这很重要,我正在考虑最大 1GB 的文件,这适用于 Windows。
如果内存映射文件不足以满足您的应用程序,并且文件 I/O 是您的瓶颈,那么使用I/O 完成端口来处理文件上的异步 I/O 将是您在 Windows 上获得的最快速度。
I/O 完成端口为在多处理器系统上处理多个异步 I/O 请求提供了一个高效的线程模型。当一个进程创建一个 I/O 完成端口时,系统会为请求创建一个关联的队列对象,这些请求的唯一目的是为这些请求提供服务。处理许多并发异步 I/O 请求的进程可以通过将 I/O 完成端口与预先分配的线程池结合使用,而不是通过在接收 I/O 请求时创建线程来更快、更有效地完成此操作。
一般来说,mmap就是这样。但是在 Windows 中,他们发明了自己的方法,请参阅“文件映射”。Boost 具有Memory-Mapped Files库,可将两种方式都包装在可移植的代码堆中。
此外,如果您想要快速,则必须针对您的用例进行优化。仅仅将文件内容映射到内存是不够的。例如,您确实可能不需要内存映射文件,最好使用异步文件 I/O。许多问题有许多解决方案。