Estou usando o Linux merge sort (sort -m) para classificar um grande grupo de arquivos pré-classificados. Eu estava assumindo que a classificação por mesclagem seria consideravelmente mais rápida do que uma classificação completa nos dados não classificados, mas não é isso que estou vendo. Por exemplo, se eu fizer uma classificação completa em 1.000 arquivos contendo 10.000 linhas de dados não classificados:
/bin/time -o ./full_sort.time -v sort --parallel 8 -k1,1g ./data/unsorted/f* > /dev/null
Eu vejo os seguintes horários:
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
Agora, se eu pré-classificar os dados e executar exatamente a mesma classificação ao invocar a opção -m:
/bin/time -o ./merge_sort.time -v sort --parallel 8 -k1,1g -m ./data/presorted/f* > /dev/null
Eu vejo estes tempos:
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
O tempo de parede da classificação por mesclagem é na verdadeMais devagardo que o tipo completo! Novamente, eu esperava que a classificação por mesclagem fosse consideravelmente mais rápida, já que cada arquivo de entrada no conjunto de dados é pré-classificado e apenas a etapa de mesclagem ainda precisa ser executada. Deve haver algo que estou perdendo. Alguém pode esclarecer o que estou fazendo de errado?
Obrigado, JCS