Linux 合併排序比完整排序「慢」?

Linux 合併排序比完整排序「慢」?

我正在使用 Linux 合併排序 (sort -m) 對一大組預先排序的檔案進行排序。我假設合併排序比對未排序資料進行完整排序要快得多,但這不是我所看到的。例如,如果我對包含 10000 行未排序資料的 1000 個檔案進行完全排序:

/bin/time -o ./full_sort.time -v sort --parallel 8 -k1,1g ./data/unsorted/f* > /dev/null

我看到以下時間:

User time (seconds): 104.70
System time (seconds): 0.71
Percent of CPU this job got: 440%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:23.90

現在,如果我對資料進行預先排序並在呼叫 -m 選項時執行完全相同的排序:

/bin/time -o ./merge_sort.time -v sort --parallel 8 -k1,1g -m ./data/presorted/f* > /dev/null

我看到這些時間:

User time (seconds): 59.34
System time (seconds): 2.15
Percent of CPU this job got: 99%
Elapsed (wall clock) time (h:mm:ss or m:ss): 1:01.60

合併排序的牆時間其實是慢點比全排序!同樣,我期望合併排序會快得多,因為資料集中的每個輸入檔案都經過預先排序,並且只需要完成合併步驟。一定有什麼東西我錯過了。有人可以澄清我做錯了什麼嗎?

謝謝,JCS

相關內容