我有一段看起来像这样的代码:
start <- getCPUTime
(_, _, _, ph) <- createProcess (shell shellCmd)
end <- (waitForProcess ph >> getCPUTime)
print start
print end
如您所见,代码应该在执行之前和之后运行命令shellCmd
并打印getCPUTime
值。但是,它的工作原理不正确:时差始终为零或15625000000
(0.015秒)。据我所知,原因是懒惰,但无法解决它。我在互联网上找到了一些例子(其中一个在上面),但没有一个能为我工作。
这样做的正确方法是什么?为什么?
答案 0 :(得分:5)
我的第一个想法是你的shell命令非常快 - 甚至可能无效。然后我阅读了getCPUTime
的文档:
Computation getCPUTime returns the number of picoseconds
CPU time used by the current program
因此,您分叉的过程不会计入您的CPU时间。也许您想通过getCurrentTime
来自Data.Time
的挂钟时间?