c – 在1GB RAM的机器上排序1TB文件

c – 在1GB RAM的机器上排序1TB文件,第1张

概述这个问题似乎很简单,但是我无法理解背后的真正工作. 我知道人们会说,分解成512 Megs块,并将它们排序为使用合并排序使用地图缩小. 所以这里是我的实际问题: 假设我将文件分解成512兆字节块,然后发送到不同的主机进行排序. 假设这些机器使用合并排序. 现在说,我有2000台机器,每个排序2000,512兆的块.现在,当我把它们合并回来的时候,这个工作怎么样?尺寸不会再增加吗?例如,合并两个51 这个问题似乎很简单,但是我无法理解背后的真正工作.
我知道人们会说,分解成512 Megs块,并将它们排序为使用合并排序使用地图缩小.

所以这里是我的实际问题:

假设我将文件分解成512兆字节块,然后发送到不同的主机进行排序.
假设这些机器使用合并排序.
现在说,我有2000台机器,每个排序2000,512兆的块.现在,当我把它们合并回来的时候,这个工作怎么样?尺寸不会再增加吗?例如,合并两个512兆字节将使1024Megs是我的RAM的大小,所以这将如何工作?任何机器都无法将一块超过512个的块与另一个块合并,因为尺寸> 1 GB.

如果合并结束,我将能够将两块0.5 TB的块与另外的0.5 TB块合并.虚拟内存的概念在这里发挥作用?

我在这里澄清我的基础,我希望我正确地问这个非常重要的问题(正确).此外,谁应该这样做合并(排序后)?我的机器还是那几台2000机器?

解决方法 这是一个应该有效的理论方法.假设你有你的2000 512MB文件,准备创建一个1TB文件.

如果你只是循环遍历每个文件,找到哪一个具有最低的FirsT值,然后将其移动到你的目的地文件中,然后再重复一遍,你会得到一切顺序. RAM的使用应该很小,因为你永远不需要一次打开多行.

显然,你应该可以优化这一点 – 在RAM中保留每一个文件的第一行,而且应该会更快些.

总结

以上是内存溢出为你收集整理的c – 在1GB RAM的机器上排序1TB文件全部内容,希望文章能够帮你解决c – 在1GB RAM的机器上排序1TB文件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1250624.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存