パイプ処理は並列処理で行われるためアクセスログなどの膨大なデータの解析にはもってこい。 むしろfor文とかで回すのはごもっとも。
一番下の数字が処理時間。 accesslogは小さいログファイルで、accesslog2は大きいログファイル。 どれもアクセスログの日毎のユーザ数を解析している。
# ./for_access.sh accesslog 17/Apr/2015 : 6555 user 18/Apr/2015 : 860 user Total : 7415 user 4 # ./parallel_access.sh accesslog 17/Apr/2015 : 6553 users 18/Apr/2015 : 858 users Total : 7411 4 # ./for_access.sh accesslog2 04/Feb/2018 : 3567 user 05/Feb/2018 : 4630 user 06/Feb/2018 : 4450 user 07/Feb/2018 : 4623 user 08/Feb/2018 : 4673 user 09/Feb/2018 : 4686 user 10/Feb/2018 : 4850 user 11/Feb/2018 : 587 user Total : 32066 user 51 # ./parallel_access.sh accesslog2 04/Feb/2018 : 3566 users 05/Feb/2018 : 4629 users 06/Feb/2018 : 4449 users 07/Feb/2018 : 4620 users 08/Feb/2018 : 4668 users 09/Feb/2018 : 4679 users 10/Feb/2018 : 4849 users 11/Feb/2018 : 586 users Total : 32046 22
小さいログではあまり関係ないが、大きくなると倍以上違ってくる。 さらに大きいログファイルだと、より並列処理の方が有利なので、何倍も速く処理することが出来る。