file - 当我只有 2GB RAM 时是否可以加载或处理 10GB 文件?

标签 file sorting large-files

给定一个 10GB 的满是名字的文件,任务是对文件进行排序处理,而系统只有 2GB 的 RAM。你会怎么做?

是否可以使用 2GB RAM 加载或处理 10GB 文件?

最佳答案

解决方案是将文件分成适合内存的部分,将这些部分单独排序并写入临时文件,然后合并临时文件。

有关更详细的描述,请参阅关于 Merge Sort 的维基百科文章.


郑重声明,使用虚拟内存的解决方案不会扩展。除非您非常仔细地设计您的排序算法,否则您会将系统推向灾难性的虚拟内存抖动。

对压缩文件进行排序也不起作用。


Is it possible to load a 10GB file with 2GB RAM ?

将其解释为一般性问题,答案是否定的。如果您遇到的问题需要(明显)比您拥有的更多 RAM,那么您需要采用一种算法将问题分成更小的问题。如果您找不到以这种方式工作的算法,您将陷入困境。

Is it possible to process a 10GB file with 2GB RAM ?

是的...前提是您的处理不需要同时将整个 10GB 文件保存在内存中。

关于file - 当我只有 2GB RAM 时是否可以加载或处理 10GB 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29340780/

相关文章:

javascript - 如何在内存中创建文件供用户下载,而不是通过服务器?

android - 使用 FileProvider 发送带有附件的电子邮件

c# - 在C#中对由整数组成的多维[,]数组进行排序

python - 如何在 Python 中解析大于 100GB 的文件?

vim - 如何使用vim滚动到大文件?

python - 使用 Python 多重处理读取大文件

Java - 在 .jar 中使用 .txt 文件时出错

c++ - 缓冲区如何知道在刷新操作期间要从外部文件传输多少个字符?

c - 在 float 变量中排序后数组值发生变化

基于另一个部分列表的排序对列表进行排序的算法