{-# LANGUAGE TemplateHaskell, CPP #-} module Main where import NoSlow.Main.TH import NoSlow.Main.Tree import NoSlow.Main.Util ( (>++<) ) import Criterion.Main import Criterion.Config import qualified NoSlow.Micro.List import qualified NoSlow.Micro.List.Double #ifdef USE_DPH_PRIM_SEQ import qualified NoSlow.Micro.DPH.Prim.Seq import qualified NoSlow.Micro.DPH.Prim.Seq.Double #endif #ifdef USE_VECTOR import qualified NoSlow.Micro.Vector.Primitive import qualified NoSlow.Micro.Vector.Primitive.Double import qualified NoSlow.Micro.Vector.Storable import qualified NoSlow.Micro.Vector.Storable.Double import qualified NoSlow.Micro.Vector.Boxed import qualified NoSlow.Micro.Vector.Boxed.Double #endif #ifdef USE_UVECTOR import qualified NoSlow.Micro.Uvector import qualified NoSlow.Micro.Uvector.Double #endif #ifdef USE_STORABLEVECTOR import qualified NoSlow.Micro.StorableVector import qualified NoSlow.Micro.StorableVector.Double #endif all_kernels = $(benchtrees Poly [t|Double|] kernel_tree) >++< $(benchtrees Mono [t|Double|] kernel_tree) main = defaultMainWith (defaultConfig { cfgPerformGC = ljust True }) (all_kernels 10000)