Как я могу сократить время тестирования критериев? - PullRequest
0 голосов
/ 13 января 2019

Я пытаюсь использовать библиотеку критериев для проведения сравнительного анализа.

Я пробовал простой пример:

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 голосов
/ 13 января 2019

Установите поле timeLimit в Config. Например:

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