パスワードを忘れた? アカウント作成
481260 journal

krの日記: Haskellで速いwcを書いてみよう(5)

日記 by kr

前のエントリの続きです。

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を書く」のは、ここからが本題です。

続きます。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

皆さんもソースを読むときに、行と行の間を読むような気持ちで見てほしい -- あるハッカー

読み込み中...