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

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

日記 by kr

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

tanakh氏は、次に一部の処理を正則処理することで高速化を図ったようです。 ということで、前回のprog2の一部、foldFの定義を、「ここを速くしてみる」とある改良版のfoldFと置き換えました。 また、いくつか名前解決できなかったので、それらしいモジュールを探して追加しました。追加したのは以下のモジュールで、それ以外は氏のページにあるものをコピーしました。

import Data.Array.MArray
import Data.Array.Base
import Data.Array.IO
import Data.Word
import Control.Monad

ということでこれをprog3として測定してみると、

% time ./prog3 < /usr/share/doc/en/books/handbook/book.txt
72266 323341 3196121
3.653u 0.002s 0:03.78 96.5%     359+235k 0+0io 0pf+0w
3.653u 0.001s 0:03.81 95.8%     362+238k 0+0io 0pf+0w
3.629u 0.023s 0:03.78 96.2%     357+235k 0+0io 0pf+0w
3.651u 0.002s 0:03.78 96.5%     359+235k 0+0io 0pf+0w
3.638u 0.015s 0:03.79 96.0%     361+237k 0+0io 0pf+0w

という結果がでました。実時間の平均は3.79秒くらいでしょうか。改良前のprog2が約4.81秒でしたので、確かに少し速くなっています。

氏はここでHaskell版の改良を止めて(少なくともリンク先のページに有る限りは)、次にC++とCを試しています。その結果も再現してみましょう。

続きます。

typodupeerror

最初のバージョンは常に打ち捨てられる。

読み込み中...