我们正在对一个包含 37 个字段的 5GB 文件进行排序,并使用 5 个键对其进行排序。大文件由 1000 个每个 5MB 的文件组成。
190 分钟后,它仍然没有完成。
我想知道是否还有其他方法可以加快排序速度。我们选择unix排序是因为我们不希望它耗尽所有内存,所以任何基于内存的方法都是不行的。
对每个文件独立排序,然后使用 -m 选项进行合并排序有什么好处?
最佳答案
使用-S
将其缓冲在内存中。例如,要使用(最多)50% 的内存作为排序缓冲区,请执行以下操作:
sort -S 50% file
请注意,现代 Unix sort
可以并行排序。我的经验是它会自动使用尽可能多的核心。您可以直接使用--parallel
进行设置。使用 4 个线程排序:
sort --parallel=4 file
总而言之,您应该将所有内容放入一个文件中并执行如下操作:
sort -S 50% --parallel=4 file
关于unix - 我们如何使用 unix sort 更快地排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7074430/