如何减少标准基准测试时间?

时间:2019-01-12 21:35:08

标签: haskell criterion

我正在尝试使用标准库进行一些基准测试。

我尝试了一个简单的例子:

module Main where

import Criterion.Types
import Criterion.Main

myConfig :: Config
myConfig = defaultConfig {
              resamples = 1
           }

main :: IO ()
main = do
  let f = (\x -> bench (show x)  $ whnf xyz x)
  defaultMainWith myConfig [
    bgroup "fib" [ 
                  env (pure 5) f
                ]
    ]

xyz :: Int -> [Double]
xyz 0 = []
xyz x = case x of
  100 -> [sin $ fromIntegral x] ++ (xyz (x - 1))
  _ -> [sin $ fromIntegral (2 * x)] ++ (xyz (x - 1))

但这似乎需要几秒钟才能完成,我认为它的完成速度要快得多?

为什么要花这么长时间?我该如何减少工期(即使以不准确性为代价)?

1 个答案:

答案 0 :(得分:0)

设置Config的{​​{3}}字段。例如:

myConfig :: Config
myConfig = defaultConfig {
              resamples = 1, timeLimit = 1
           }