Sort

‘| 的多核等效項排序 |唯一的-c |排序 -n’ 命令

  • August 14, 2018

我想問一下’| 是否有開箱即用的多核等效項 排序 | 唯一的-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

但是味道有點重口味。

GNUsort有一個--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)上可寫目錄的路徑來執行此操作。

引用自:https://unix.stackexchange.com/questions/452569