在haskell中执行定时命令

时间:2012-09-05 16:01:25

标签: haskell io timing

我有一段看起来像这样的代码:

start <- getCPUTime
(_, _, _, ph) <- createProcess (shell shellCmd) 
end <- (waitForProcess ph >> getCPUTime)
print start
print end

如您所见,代码应该在执行之前和之后运行命令shellCmd并打印getCPUTime值。但是,它的工作原理不正确:时差始终为零或15625000000(0.015秒)。据我所知,原因是懒惰,但无法解决它。我在互联网上找到了一些例子(其中一个在上面),但没有一个能为我工作。

这样做的正确方法是什么?为什么?

1 个答案:

答案 0 :(得分:5)

我的第一个想法是你的shell命令非常快 - 甚至可能无效。然后我阅读了getCPUTime的文档:

Computation getCPUTime returns the number of picoseconds
CPU time used by the current program

因此,您分叉的过程不会计入您的CPU时间。也许您想通过getCurrentTime来自Data.Time的挂钟时间?