2010年4月11日

[mew-dist 29200] Re: GHC 6.12.1

北口です。

GHC 6.10でもコンパイルできるようにして下さっている
ことに気付いたので、ちょっといじってみました。
これで一応、Windowsでもcmew.exeとsmew.exeがコンパイルできます。

cmew -fをRuby版と比べてみると、57000メッセージほどで

kernel time : 25(sec) -> 23(sec)
user time : 190(sec) -> 100(sec)
elapsed : 410(sec) -> 390〜560(sec)

とuser時間はかなり縮まりますが、実時間はあまり変わりませんでした。
# I/Oが支配的だからでしょうね。
# あと、Haskellの方が揺らぎが大きいのは謎です。

ちなみに、Ruby版だと

Registered: 56981, deleted: 0

で、Haskell版だと

Registered: 56874, deleted: 0

なのですが、なぜかまでは追い切れていません。


--
Shuichi KITAGUCHI // kit@xxxxx / ki@xxxxx


diff --git a/bin/hs/Mail.hs b/bin/hs/Mail.hs
index 9a20b75..3b6d28f 100644
--- a/bin/hs/Mail.hs
+++ b/bin/hs/Mail.hs
@@ -23,11 +23,13 @@ getValue key fs = concat . foldedLines <$> lookup key fs
----------------------------------------------------------------

fileMsg :: FilePath -> String -> IO (Maybe Msg)
+#if __GLASGOW_HASKELL__ < 611
+fileMsg file folder = makeMsg folder . header <$> readFile file
+#else
fileMsg file folder = makeMsg folder . header <$> readFileU8 file
where
readFileU8 fl = do
h <- openFile fl ReadMode
-#if __GLASGOW_HASKELL__ >= 611
hSetEncoding h latin1
hGetContents h
#endif
diff --git a/bin/hs/Param.hs b/bin/hs/Param.hs
index 80db355..b48bf6f 100644
--- a/bin/hs/Param.hs
+++ b/bin/hs/Param.hs
@@ -1,3 +1,7 @@
+{-# LANGUAGE CPP #-}
+
+#include "config.h"
+
module Param where

defaultDB :: String
@@ -10,7 +14,11 @@ defaultIgnoreRegex :: String
defaultIgnoreRegex = "/casket$"

defaultMessageRegex :: String
+#ifdef HAVE_WINDOWS_H
+defaultMessageRegex = "\\\\[0-9]+(\\.mew)?$"
+#else
defaultMessageRegex = "/[0-9]+(\\.mew)?$"
+#endif

defaultDirModFile :: String
defaultDirModFile = ".mew-mtime"

投稿者 xml-rpc : 2010年4月11日 20:40
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/94981
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。