Movatterモバイル変換


[0]ホーム

URL:


カメニッキ

カメとインコと釣りの人です

この広告は、90日以上更新していないブログに表示しています。

シェルスクリプトで巨大な文字列とのマッチング処理をするとき、変数格納よりもファイル参照したほうが速かった

この前必要があってお粗末なスクリプトを書いた時、速度に大きな差があったので気になった。

なんとなく変数に持ったほうが、試行回数が増えるほど早くなるのかとおもってた

宣伝

tapira.hatenablog.com

今回の環境

KagoyaVPS 最小構成CentOS6.5日毎課金なので特にこだわりなければ安くあがっておすすめです。ちょっと触ってすぐ削除するような使い方

[root@v8794 work]# cat /proc/cpuinfo |grep processorprocessor   :0processor   :1processor   :2[root@v8794 work]# cat /etc/redhat-releaseCentOS release 6.5(Final)[root@v8794 work]# free             total       used       free     shared    buffers     cachedMem:2097152445288165186400424992-/+ buffers/cache:202962076856Swap:419430421420417288

使用するファイル

# ファイルに対してgrep[root@v8794 work]# cat file.sh#! /bin/shcat<< EOF | while read txt`cat /dev/urandom| tr -dc'a-zA-Z0-9'| fold -w16| head -n$2|sort| uniq`EOFdogrep${txt}$1if [$?-eq0];thenecho"true"elseecho"false"fidone# 変数に格納したあとgrep[root@v8794 work]# cat val.sh#! /bin/shtesttxt=`cat$1`cat<< EOF | while read txt`cat /dev/urandom| tr -dc'a-zA-Z0-9'| fold -w16| head -n$2|sort| uniq`EOFdoecho$testtxt|grep${txt}if [$?-eq0];thenecho"true"elseecho"false"fidone

ファイル観たほうが速い

[root@v8794 work]#time ./file.sh test.txt10falsefalsefalsefalsefalsefalsefalsefalsefalsefalsereal    0m0.179suser    0m0.087ssys 0m0.085s[root@v8794 work]#time ./val.sh test.txt10falsefalsefalsefalsefalsefalsefalsefalsefalsefalsereal    0m51.921suser    0m45.767ssys 0m7.232s

ちなみに、小さいファイルにしたら逆転するのかと思ったら、そんなことなかった

[root@v8794 work]# ll test2.txt-rw-r--r--1 root root1700012320:482016 test2.txt[root@v8794 work]#time ./file.sh test2.txt10falsefalsefalsefalsefalsefalsefalsefalsefalsefalsereal    0m0.019suser    0m0.002ssys 0m0.007s[root@v8794 work]#time ./val.sh test2.txt10falsefalsefalsefalsefalsefalsefalsefalsefalsefalsereal    0m0.049suser    0m0.032ssys 0m0.008s[root@v8794 work]

あれ?これって当たり前の話???もしかして恥ずかしい疑問なのかもしれない

検索

引用をストックしました

引用するにはまずログインしてください

引用をストックできませんでした。再度お試しください

限定公開記事のため引用できません。

読者です読者をやめる読者になる読者になる

[8]ページ先頭

©2009-2025 Movatter.jp