速さ比べ(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.txt

real 0m0.249s
user 0m0.140s
sys 0m0.030s


$ time ruby -anF -e "print $F[1]" < aa.txt > bb.txt

real 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コマンドでとらえきれないオーバーヘッドが生じたとか?