Matlab:内存映射概述
什么是内存映射?
内存映射是将磁盘上某文件的一部分或整个文件映射到应用程序地址空间内某个地址范围的一种机制。然后,应用程序可采用与访问动态内存相同的方法访问磁盘上的文件。与使用 fread 和 fwrite 等函数相比,这会加快文件的读取和写入速度。
内存映射的优势
内存映射的主要优势体现在效率、更快的文件访问速度、能够在应用程序之间共享内存,以及更高效的编码。
更快的文件访问速度
通过内存映射访问文件的速度比使用 fread 和 fwrite 等 I/O 函数访问文件更快。系统使用操作系统内置的虚拟内存功能读取和写入数据,而不必分配数据缓冲区,将数据复制到数据缓冲区,然后取消分配进程所拥有的数据缓冲区。
在先行构造了映射的情况下,MATLAB® 不会从磁盘访问数据。它仅在内存映射的指定部分被访问时才会读取或写入磁盘上的文件,之后便仅读取该特定部分。这可以提高对映射数据的随机访问速度。
效率
将文件映射到内存后,访问文件中的数据时就如同该数据已被读入到应用程序地址空间中的数组。最初,MATLAB 仅为该数组分配地址空间;在您访问映射的区域之前,它不会从文件中实际读取数据。因此,利用内存映射的文件所提供的机制,应用程序无需先将整个文件读入内存,便可访问超