Suponha que eu queira encontrar todas as correspondências no arquivo de texto compactado:
$ gzcat file.txt.gz | pv --rate -i 5 | grep some-pattern
pv --rateusado aqui para medir a produtividade do tubo. Na minha máquina, são cerca de 420 Mb / s (após a descompressão).
Agora estou tentando fazer grep paralelo usando o GNU paralelo.
$ gzcat documents.json.gz | pv --rate -i 5 | parallel --pipe -j4 --round-robin grep some-pattern
Agora, a taxa de transferência caiu para ~ 260Mb / s. E o que é o parallelprocesso mais interessante em si é usar muita CPU. Mais que grepprocessos (mas menos que gzcat).
Edição 1 : Eu tentei diferentes tamanhos de bloco ( --block), bem como diferentes valores para -N/ -Loptions. Nada me ajuda neste momento.
O que estou fazendo errado?
--pipeser ineficiente? Quero dizer, é algum tipo de problema fundamental ou mais específico da implementação.