的CPU时间,我需要测量功能的CPU时间就像如下:哈斯克尔,测量功能
t <- getCPUTime
res <- callTheFunction input
t' <- getCPUTime
print $ t' - t
的问题来自于哈斯克尔的懒惰。 callTheFunction必须严格评估。我搜索了很多,并尝试使用seq和$!但没有成功。我认为这应该是一个相当普遍的任务。无论如何,我需要一些帮助。谢谢。
更新: 感谢您的所有帮助,特别是@FUZxxl。它让我想起了WHNF(弱首标准形式)和正常形式之间的区别。 Haskell/Laziness 有助于理解Haskell的懒惰评估。
我需要的是一个更多的步骤评估。无论如何$!或评估两部作品,只要只需要RES WHNF:
t <- getCPUTime
res <- callTheFunction input
evaluate res OR return $! res
t' <- getCPUTime
print $ t' - t
这并没有解决你的严格性问题(使用评估),但对于快速和脏时间(即比标准更简单),你可以使用timeIt包:http://hackage.haskell。 org/package/timeit – sclv 2011-03-21 18:22:49