Ist Mergesort unter Linux *langsamer* als Fullsort?

Ist Mergesort unter Linux *langsamer* als Fullsort?

Ich verwende Mergesort (sort -m) unter Linux, um eine große Gruppe vorsortierter Dateien zu sortieren. Ich ging davon aus, dass Mergesort wesentlich schneller wäre als eine vollständige Sortierung der unsortierten Daten, aber das ist nicht das, was ich sehe. Wenn ich beispielsweise eine vollständige Sortierung von 1000 Dateien mit 10.000 Zeilen unsortierter Daten durchführe:

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

Ich sehe folgende Zeiten:

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

Wenn ich die Daten jetzt vorsortiere und genau dieselbe Sortierung ausführe, während ich die Option -m aufrufe:

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

Ich sehe diese Zeiten:

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

Die Mergesort-Wandzeit beträgt tatsächlichLangsamerals die vollständige Sortierung! Auch hier hatte ich erwartet, dass die Zusammenführungssortierung erheblich schneller ist, da jede Eingabedatei im Datensatz vorsortiert ist und nur noch der Zusammenführungsschritt ausgeführt werden muss. Es muss etwas geben, das ich übersehe. Kann mir bitte jemand erklären, was ich falsch mache?

Danke, JCS

verwandte Informationen