h--*_*--n 9 haskell lazy-evaluation
我需要测量一个函数的CPU时间,如下所示:
t <- getCPUTime
res <- callTheFunction input
t' <- getCPUTime
print $ t' - t
Run Code Online (Sandbox Code Playgroud)
问题来自Haskell的懒惰.必须严格评估callTheFunction.我搜索了很多,并尝试使用seq和$!但没有成功.我认为这应该是一项非常普遍的任务.无论如何,我需要一些帮助.谢谢.
更新: 感谢您的所有帮助,尤其是@FUZxxl.它让我想起WHNF(弱头标准形式)和标准形式之间的区别. Haskell/Laziness 有助于理解Haskell的惰性评估.
我需要的是再做一步评估.无论如何$!只要只需要WHNF,就可以评估两种工作:
t <- getCPUTime
res <- callTheFunction input
evaluate res OR return $! res
t' <- getCPUTime
print $ t' - t
Run Code Online (Sandbox Code Playgroud)
使用evaluate :: a -> IO a
来自的功能Control.Exception
.当执行相应的IO动作时,它会评估其对WHNF的参数.你必须确保WHNF足以满足你的功能.
归档时间: |
|
查看次数: |
2551 次 |
最近记录: |