パイプ処理による解析時間の短縮

パイプ処理は並列処理で行われるためアクセスログなどの膨大なデータの解析にはもってこい。 むしろ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

小さいログではあまり関係ないが、大きくなると倍以上違ってくる。 さらに大きいログファイルだと、より並列処理の方が有利なので、何倍も速く処理することが出来る。