krの日記: Haskellで速いwcを書いてみよう(5)
前のエントリの続きです。
tanakh氏は続いてC++とCのプログラムを示します。こちらでも同様に実行時間を測定してみましょう。ちなみにこちらで使ったのは、以下のようなコンパイラです。
% c++ --version
c++ (GCC) 3.4.6 [FreeBSD] 20060305
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
% cc --version
cc (GCC) 3.4.6 [FreeBSD] 20060305
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
最適化オプションは付けずに、defaultのままコンパイルしました。(ghcの方も同様です。)
C++版をprog4、C版をprog5として測定してみます。
% time ./prog4 < /usr/share/doc/en/books/handbook/book.txt
72266 323341 3196121
0.671u 0.015s 0:00.71 95.7% 5+185k 0+0io 0pf+0w
0.678u 0.008s 0:00.71 94.3% 5+177k 0+0io 0pf+0w
0.678u 0.007s 0:00.71 94.3% 5+181k 0+0io 0pf+0w
0.687u 0.000s 0:00.70 97.1% 5+183k 0+0io 0pf+0w
0.679u 0.007s 0:00.71 94.3% 5+185k 0+0io 0pf+0w
% time ./prog5 < /usr/share/doc/en/books/handbook/book.txt
72266 323341 3196121
0.180u 0.000s 0:00.18 100.0% 5+178k 0+0io 0pf+0w
0.180u 0.000s 0:00.18 100.0% 4+171k 0+0io 0pf+0w
0.180u 0.000s 0:00.18 100.0% 4+171k 0+0io 0pf+0w
0.180u 0.000s 0:00.18 100.0% 5+178k 0+0io 0pf+0w
0.157u 0.022s 0:00.18 94.4% 5+197k 0+0io 0pf+0w
ということで、C++版の平均実行実時間でおよそ0.71秒、C版でおよそ0.18秒となっています。 tanakh氏の「チューニングした」Haskell版がおよそ3.79秒でしたから、桁が違います。 さすがにCは速いですね。
ということで、「速いHaskell版のwcを書く」のは、ここからが本題です。
Haskellで速いwcを書いてみよう(5) More ログイン