krの日記: Haskellで速いwcを書いてみよう(1)
日記 by
kr
このコメントで言及されているページを見て、
Haskellのパフォーマンスチューニングというのは実際に難しいのかどうか、自分でも試してみることにしました。
お題は﹁Haskellで速いwcコマンドを書く﹂です。上記tanakh氏のページに倣い、ここで書くwcコマンドは、
●いつも標準入力からのみ読む。(ファイル名の指定とかは省略)
●行数、単語数、文字数を表示する。
●文字はCのchar相当。(Unicodeとか複雑なことは考えない)
●単語は空白区切りで数える。(punctuation等も(空白でないので)単語内の文字とする)
●行数は改行文字の数を数える。(各行の最後は必ず改行で終わると仮定する)
という仕様にしておきます。
なお、実行時間の測定は以下の環境で行ないました(dmesgより)。
OS:
FreeBSD 6.2-STABLE
CPU:
Intel(R) Pentium(R) M processor 1.10GHz (1097.26-MHz 686-class CPU)
real memory =
1324679168 (1263 MB)
avail memory =
1288232960 (1228 MB)
実行時間測定方法は、安直にtcsh組み込みのtime(1)で5回ほど測定してみるということで。
長くなりそうなので、適宜エントリを分けながら続きます。
関連エントリの全目次
- はじめに (このエントリ)
- まずは先人の足跡を辿る
- 先人の到達点その1
- 先人の到達点その2
- C++版とC版の実行時間
- とりあえず第1版 (ここからチューニングを始めます)
- 最初の改良 (C++版の背中が見えたかな?)
- 第2の改良 (C++版より速くなりました)
- ちょっと一休み (メモリ使用量を大雑把に確認)
- とりあえず完成 (C版より速くなりました)
Haskellで速いwcを書いてみよう(1) More ログイン