gzip *.txt と gzip test.txt & gzip test2.txt &

gzip *.txt と gzip test.txt & gzip test2.txt &

gzipプロセスをスピードアップしたいです。 (サーバーはAIX 7.1です。)

具体的には、現在の実装をgzip *.txt完了するのに最大1時間かかります。 (抽出されたファイルは大容量、合計10個のファイルです)

Q:ランニングがより効率的ですか?

pids=""
gzip file1.txt &
pids+=" $!"
gzip file2.txt &
pids+=" $!"
wait $pids

比較する

gzip *.txt 

並列性、CPU消費などの面でgzip *txtバックグラウンド(&)でgzipと同じように動作しますか、それとも他のオプションがより効率的ですか?

ベストアンサー1

ホイールを再発明しないでください。を使用できpigz、並列実装は配布gzipリポジトリに配置する必要があります。そうでない場合は、次のように開始できます。ここ

インストールされたら、pigz次のように使用しますgzip

pigz *txt

以下を使用して生成された5つの30Mファイルに対してこれをテストしましたfor i in {1..5}; do head -c 50M /dev/urandom > file"$i".txt; done

## Non-parallel gzip
$ time gzip *txt
real    0m8.853s
user    0m8.607s
sys     0m0.243s

## Shell parallelization (same idea as yours, just simplified)
$ time ( for i in *txt; do gzip $i & done; wait)

real    0m2.214s
user    0m10.230s
sys     0m0.250s

## pigz
$ time pigz *txt

real    0m1.689s
user    0m11.580s
sys     0m0.317s

おすすめ記事