Я пытаюсь использовать библиотеку критериев для проведения сравнительного анализа.
Я пробовал простой пример:
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))
Тем не менее, кажется, что это займет несколько секунд, я бы предположил, что это завершится значительно быстрее?
Почему это так долго? Как я могу сократить продолжительность (даже за счет неточностей)?