Sort
‘| 的多核等效項排序 |唯一的-c |排序 -n’ 命令
我想問一下’| 是否有開箱即用的多核等效項 排序 | 唯一的-c | 排序 -n’ 命令?
我知道我可以使用以下程序
split -l5000000 data.tsv '_tmp'; ls -1 _tmp* | while read FILE; do sort $FILE -o $FILE & done; sort -m _tmp* -o data.tsv.sorted
但是味道有點重口味。
GNU
sort
有一個--parallel
標誌:sort --parallel=8 data.tsv | uniq -c | sort --parallel=8 -n
這將使用八個並發程序/執行緒來執行兩個排序步驟中的每一個。該
uniq -c
部分仍將使用單個程序。正如 Stéphane Chazelas 在評論中指出的那樣,GNU 的實現
sort
已經並行化(它使用 POSIX 執行緒),因此只有在您希望它使用比您擁有的核心更多或更少的執行緒時才需要修改並發執行緒的數量。請注意
sort
,由於該步驟,第二個可能會比第一個獲得更少的數據uniq
,因此它會更快。
--buffer-size=SIZE
您還可以(可能)通過使用和來提高排序速度--batch-size=NMERGE
。請參閱sort
手冊。為了進一步加快排序速度,請確保
sort
將其臨時文件寫入快速文件系統(如果您連接了多種類型的儲存)。您可以通過將TMPDIR
環境變數設置為此類掛載點(或使用sort -T directory
)上可寫目錄的路徑來執行此操作。