Nor*_*löw 1 benchmarking haskell package ghc haskell-criterion
以下代码命名 fib.hs
import Criterion.Main (defaultMain)
fibZ = 1:1:zipWith (+) fibZ (tail fibZ)
main = defaultMain [
bench "fibZ 10" $ \n -> fibZ (10+n-n)
]
Run Code Online (Sandbox Code Playgroud)
错误
fib.hs:45:10: Not in scope: `bench'
Run Code Online (Sandbox Code Playgroud)
怎么了?我从这里借了这个例子.
使用
import Criterion.Main
Run Code Online (Sandbox Code Playgroud)
代替
import Criterion.Main (defaultMain)
Run Code Online (Sandbox Code Playgroud)
函数benchfrom Criterion.Main不在范围内,因为您只是导入defaultMain.使用bgroup没有必要.
这是一个完整的工作示例:
import Criterion.Main
fib :: Int -> Int
fib 0 = 0
fib 1 = 1
fib n = fib (n-1) + fib (n-2)
main = defaultMain [
bench "fib 10" $ nf fib 10
, bench "fib 30" $ nf fib 30
, bench "fib 35" $ nf fib 35
]
Run Code Online (Sandbox Code Playgroud)
如果您想知道这些nf内容是什么,请查看文档的这一部分.