速さ比べ(awk vs ruby)
10000行のテキストファイルから2番目のフィールドを抜き出してみた。
$ head -n2 aa.txt
abcd efgh hijk lmno pqrs tuvw xyz
abcd efgh hijk lmno pqrs tuvw xyz$ wc aa.txt
10000 70000 350000 aa.txt
$ time awk '{print $2}' < aa.txt > bb.txtreal 0m0.249s
user 0m0.140s
sys 0m0.030s
$ time ruby -anF -e "print $F[1]" < aa.txt > bb.txtreal 0m0.469s
user 0m0.020s
sys 0m0.010s
rubyの処理時間はawkの約1.9倍。書きやすさもawkの勝ちかな。
と思ったら、
uまたはuserの表示:a.outの実行に要した時間(ユーザ時間)
sまたはsysの表示:システムのオーバヘッドに費された時間(システム時間)
realの表示:実行開始から実際に経過した時間(実時間)
もちろんプログラムの実行にかけた真の時間はuまたはuserとかかれている時間(単位:秒)です.
ということなので、処理速度ではrubyの勝ち!
それにしても実時間でRubyが遅くなるのは何でだろう。
Cygwin上で普通のWindowsアプリであるActiveRubyの実行時間を計測したためにtimeコマンドでとらえきれないオーバーヘッドが生じたとか?