ghci内で実行時間を知る
追記 2010/09/13
読んでなかった orz
2.8.1. GHCiオプション
GHCiオプションは、:setで有効化、 :unsetで無効化できる。
利用できるGHCiオプションは以下のものである。
(中略)
- s
一つ式を評価するごとに、経過時間や確保されたバイト数などの統計情報を表示する。注意: 確保されたバイト数はGC毎に計算されるので、これは記憶領域管理器の確保領域の大きさ程度の正確さしかない。そういうわけで、GCが起こらなかった場合、値として0が表示されるかもしれない。
追記 2010/09/13 ここまで
haskellで実行時間をしりたかった。
どうやって計測するかというとData.Time内のgetCurrentTimeで時間を得ておいてその後にdiffUTCTimeで差分を取る
import Data.Time main = do x <- getCurrentTime -- 本体 print $ length $ takeWhile (<200000) primes -- 本体ここまで y <- getCurrentTime print $ diffUTCTime y x primes=2:filter isPrime [3,5..] isPrime x=all ((/=0).(x`mod`)) $ takeWhile ((x>=).(^2)) primes
変数yがいまいちダサイのだが getCurrentTime がIOモナドなのでやむを得ない。
バインドで書き直してみると
import Data.Time main = do startTime <- getCurrentTime -- 本体ここから print $ length $ takeWhile (<200000) primes -- 本体ここまで getCurrentTime >>= return.(`diffUTCTime` startTime) >>= print primes=2:filter isPrime [3,5..] isPrime x=all ((/=0).(x`mod`)) $ takeWhile ((x>=).(^2)) primes
どっちもどっちだな。