packages feed

NoSlow-0.1: NoSlow/Main.hs

{-# 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)