对文本文件进行排序,记录超过100,000,000条

Cha*_*iga 8 sorting algorithm

我有一个5gig的文本文件需要按字母顺序排序什么是最好的算法?

限制:

速度 - 尽可能快

内存 - 运行Windows XP的1 Gig Ram的Pc

Set*_*eth 11

我通常使用sortlinux命令对文本文件> 2GB进行排序.通常需要15 - 30秒,具体取决于服务器负载.

只要这样做,它就不会像你想的那么长.

更新由于您使用的是Windows XP,因此可以在UnxUtils中获取sort命令.我使用的那个可能比linux版本更多,而且速度同样快.

巨大文件的瓶颈真的是磁盘速度..我的服务器上面有一个快速的sata raid.如果您的计算机是台式机(或笔记本电脑),则7200 RPM(或5400)RPM IDE驱动器将为作业添加几分钟.


Zoo*_*ork 5

对于文本文件,sort至少Linux和其他版本中的GNU Coreutils版本的工作速度惊人.

看看在--buffer-size功能和相关选项,并设置--temporary-directory如果你的/tmp目录太小.

或者,如果您真的担心可能需要多长时间,可以将文件拆分为较小的块,然后单独排序,然后将它们合并在一起(带sort --merge).对每个块进行排序可以在不同的系统上并行完成.

  • 确实.评论的重点是可以在多台机器上并行执行. (2认同)