这个问题跟硬件水平有关系。
\n\n如果按顺序处理文件则没有任何优势。如果通过映射处理文件,则与顺序处理相比,将内存分配给其他一些函数(变量等)会产生额外的内存浪费。\n内存管理的作用是通过称为以下原则来完成的:
\n\n局部性原理
\n\n\n\n\n程序倾向于重用彼此接近或最近使用过的数据和指令
\n
时间局部性
\n\n空间局部性
\n\n让我举一个例子,
\n\nsum = 0;\nint array[] = new int[10];\nfor (int i = 0; i < array.length; i++){\n sum += array[i];\n}\nRun Code Online (Sandbox Code Playgroud)\n\n数据
\n\n指示
\n\n回到问题,由于文件中的数据以有序的方式写入内存(如数组),因此映射没有优势,因为这是以我之前描述的空间局部性方式进行的。
\n