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 ログイン