O% GNUsort
tem um sinalizador --parallel
:
sort --parallel=8 data.tsv | uniq -c | sort --parallel=8 -n
Isso usaria oito processos / threads simultâneos para executar cada uma das duas etapas de classificação. A parte uniq -c
ainda estará usando um único processo.
Como Stéphane Chazelas aponta nos comentários, a implementação GNU de sort
já está em paralelo (está usando threads POSIX), portanto, modificar o número de threads simultâneos só é necessário se você quiser usar mais ou menos threads do que o você tem núcleos.
Observe que o segundo sort
provavelmente receberá muito menos dados do que o primeiro, devido à uniq
, portanto, será muito mais rápido.
Você também pode (possivelmente) melhorar a velocidade de classificação brincando com --buffer-size=SIZE
e --batch-size=NMERGE
. Veja o manual sort
.
Para agilizar ainda mais a classificação, certifique-se de que sort
grave seus arquivos temporários em um sistema de arquivos rápido (se houver vários tipos de armazenamento anexados). Você pode fazer isso configurando a variável de ambiente TMPDIR
para o caminho do diretório gravável em tal ponto de montagem (ou use sort -T directory
).