Le "problème" pour benchmarker du Haskell, c'est que l'évaluation paresseuse peut tromper, c'est pour ça que bench() dans benchpress n'accepte que des actions IO en paramètre. Le code suivant prend une fonction pure et son paramètre et essaie de la benchmarker, mais je te conseille fortement de te méfier des résultat, fait varier le nombre de benchs et vérifie la consistence des résultats, par ailleurs, évite les optimisations quand tu compiles le module suivant (-O0) :
1 2 3 4 5 6 7 8 9 10
| module BenchPure (benchIt) where
import Control.Exception
import Test.BenchPress
import Control.Parallel.Strategies
{-# NOINLINE benchIt #-}
benchIt :: (NFData b) => Int -> (a -> b) -> a -> IO ()
benchIt n f a = bench n $ do
a' <- return a
evaluate (f a' `using` rnf) |
EDIT : Si ton problème c'est d'installer benchpress, installe la plateforme Haskell puis exécute la commande suivante en ligne de commande (Invites de commandes) :
cabal update && cabal install benchpress
--
Jedaï
Partager