首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >哈斯克尔:不能使用getCPUTime

哈斯克尔:不能使用getCPUTime
EN

Stack Overflow用户
提问于 2010-10-20 23:01:56
回答 5查看 988关注 0票数 4

我有:

代码语言:javascript
运行
复制
main :: IO ()
main = do
     iniciofibonaccimap <- getCPUTime
     let fibonaccimap = map fib listaVintesete
     fimfibonaccimap <- getCPUTime
     let difffibonaccimap = (fromIntegral (fimfibonaccimap - iniciofibonaccimap)) / (10^12)
     printf "Computation time fibonaccimap: %0.3f sec\n" (difffibonaccimap :: Double)

listaVintesete :: [Integer]
listaVintesete = replicate 100 27

fib :: Integer -> Integer
fib 0 = 0
fib 1 = 1
fib n = fib (n-1) + fib (n-2)

代码语言:javascript
运行
复制
*Main> main
Computation time fibonaccimap: 0.000 sec

我不明白为什么会发生这种情况。帮帮我-谢谢。

EN

Stack Overflow用户

发布于 2010-10-20 23:25:54

哈斯克尔很懒。您在行中请求的计算

代码语言:javascript
运行
复制
let fibonaccimap = map fib listaVintesete

直到你以某种方式使用了fibonaccimap的值,它才会真正发生。因此,为了测量所用的时间,您需要引入一些强制程序执行实际计算的东西。

ETA:我最初建议打印最后一个元素来强制求值。正如TomMD指出的,这远远不够好--我强烈建议阅读他在这里的回复,以获得处理这段特定代码的实际有效方法。

票数 7
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3979265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档