小编use*_*556的帖子

函数调用在Haskell中有多少开销?

我是Haskell的新手,我对函数调用的成本感到困惑,这对我来说似乎是完全不合理的,并且让我觉得我做的事情从根本上是错误的.

考虑以下Haskell代码:

module Main where
logistic x = 4.0*x*(1.0-x)

lg :: Double -> Int -> Double
lg !x 0 = x
lg !x !n = lg (logistic x) (n-1)

main = putStrLn $ show $ lg 0.7861 100000000
Run Code Online (Sandbox Code Playgroud)

用命令编译它

 ghc -O3 -XBangPatterns -o tsths tst.hs
Run Code Online (Sandbox Code Playgroud)

并运行它,我得到:

real    0m15.904s
user    0m15.853s
sys     0m0.016s
Run Code Online (Sandbox Code Playgroud)

如果不是调用函数,logistic而是计算内联表达式:

module Main where

lg :: Double -> Int -> Double
lg !x 0 = x
lg !x !n = lg (4.0*x*(1.0-x)) (n-1)

main = putStrLn …
Run Code Online (Sandbox Code Playgroud)

performance haskell

17
推荐指数
3
解决办法
1471
查看次数

标签 统计

haskell ×1

performance ×1