我有一堆(相当大,即> 100MB)逗号分隔的文件,需要使用SunOS 5.10在4处理器盒上进行sorting
sorting似乎运行相当慢(分钟)
我想知道是否有任何方法可以加快速度,例如使用多个处理器/内核,或者只使用一些巧妙的sorting选项?
PS:我正在使用整个行作为一个关键,所以只是sort filename > filename.sorted
请参阅: 需要高性能/ bin / sort; 有什么build议么?
这是我为此写的剧本。 在4处理器的机器上,它的分类性能提高了100%! (感谢Bash的提示!)
#! /bin/ksh MAX_LINES_PER_CHUNK=1000000 ORIGINAL_FILE=$1 SORTED_FILE=$2 CHUNK_FILE_PREFIX=$ORIGINAL_FILE.split. SORTED_CHUNK_FILES=$CHUNK_FILE_PREFIX*.sorted usage () { echo Parallel sort echo usage: psort file1 file2 echo Sorts text file file1 and stores the output in file2 echo Note: file1 will be split in chunks up to $MAX_LINES_PER_CHUNK lines echo and each chunk will be sorted in parallel } # test if we have two arguments on the command line if [ $# != 2 ] then usage exit fi #Cleanup any lefover files rm -f $SORTED_CHUNK_FILES > /dev/null rm -f $CHUNK_FILE_PREFIX* > /dev/null rm -f $SORTED_FILE #Splitting $ORIGINAL_FILE into chunks ... split -l $MAX_LINES_PER_CHUNK $ORIGINAL_FILE $CHUNK_FILE_PREFIX for file in $CHUNK_FILE_PREFIX* do sort $file > $file.sorted & done wait #Merging chunks to $SORTED_FILE ... sort -m $SORTED_CHUNK_FILES > $SORTED_FILE #Cleanup any lefover files rm -f $SORTED_CHUNK_FILES > /dev/null rm -f $CHUNK_FILE_PREFIX* > /dev/null
前一段时间我发现了这个脚本: distsort.sh
我不记得我用过它或者它是否有效,所以让我知道它是否适合你。