研究LARGE文件的排序方法

时间:2017-06-07 21:22:40

标签: java multithreading sorting unix

作为副项目,我决定尝试为大文件编写排序方法。不幸的是,我现在只有4核心笔记本电脑可供研究使用。对于数据,我只使用每个记录的字符。典型的记录如下:

AAAAM_EL,QMOIXYGB,LAD_HNTU,BYFKKHWY,AVVCIXMC,KWVGCIUB,YWD_LQNU,HDTKUFK_,W_E_LT_M,MW_HEQKE,VHEDHK_U,SAIUAVGH,DQTSMK_L,RNUBFKUX,OXEVMHNR,EMEEJHJB,BKYQWYAP,MKMWKAAT,MIAEDTDY,RANAGVOM

所有字段都是随机生成的。但是,我只使用完整记录作为关键字进行排序。包含100万条记录的文件等于181Million字节。我在笔记本电脑上注意到以下内容:

  1. 使用unix shell并对文件执行unix sort命令,将文件排序并将文件作为另一个文件写回磁盘大约需要15到22秒。
  2. 我尝试使用带有parallel = cores选项的unix sort命令,但这在我的widows-bash中不起作用。
  3. 使用我在java中实现的快速排序算法:将文件读入内存需要3秒钟,对其进行排序并将其写回新文件。
  4. 使用我实现的实验性多线程java应用程序只需" unix sort"命令。
  5. 有没有人有一些可靠的近似时间来排序这么大的文件?一旦我研究了我目前实现的多线程方法,我计划对更大的文件进行排序。我相信它需要很多改进。但是我需要一些好的目标时间来尝试实现。有谁知道这样的目标时间。网上的任何例子,或任何分类研究论文,会给我一个关于应该花多少时间的提示。

0 个答案:

没有答案