bashでは
if [ $a -eq 0 ] ...
と書く代わりに
if [[ $a -eq 0 ]] ...
と書ける。test([,])は外部コマンドだから評価のときに毎回forkして遅いような気がする。一方[[,]]は内部コマンドだからforkしなくて速いのではないかと思ったのでベンチマークを取ってみた。
ベンチマーク
for a in $(seq 1 100000) ; do [ 0 -eq 100 ] ; done
for a in $(seq 1 100000) ; do [[ 0 -eq 100 ]] ; done
結果
real 0m0.535s user 0m0.517s sys 0m0.017s real 0m0.353s user 0m0.347s sys 0m0.007s
予想通り[[,]]の方がまあまあ速かった。因みに[[,]]の方では正規表現マッチなど機能が追加されている。互換性を追求するなどの理由がない限り[[,]]を使った方が良さそう。
0 件のコメント:
コメントを投稿