fibon-0.2.0: lib/Fibon/Result.hs
{-# LANGUAGE DeriveDataTypeable #-}
module Fibon.Result (
FibonResult(..)
, RunData(..)
, BuildData(..)
, RunSummary(..)
, RunDetail(..)
, ExtraStats
)
where
import Data.ByteString(ByteString)
import Data.Serialize
import Data.Generics
data FibonResult = FibonResult {
benchName :: String
, buildData :: BuildData
, runData :: RunData
} deriving(Read, Show, Data, Typeable)
data BuildData = BuildData {
buildTime :: Double -- ^ Time to build the program
, buildSize :: String -- ^ Size of the program
}
deriving(Read, Show, Data, Typeable)
data RunData = RunData {
summary :: RunSummary
, details :: [RunDetail]
} deriving(Read, Show, Data, Typeable)
data RunSummary = RunSummary {
meanTime :: Double
, stdDevTime :: Double
, statsSummary :: ExtraStats
}
deriving (Read, Show, Data, Typeable)
data RunDetail = RunDetail {runTime :: Double, runStats :: ExtraStats}
deriving (Read, Show, Data, Typeable)
--type ExtraStats = [(String, String)]
type ExtraStats = ByteString
--
-- Binary Instances
--
instance Serialize Fibon.Result.FibonResult where
put (FibonResult a b c) = put a >> put b >> put c
get = get >>= \a -> get >>= \b -> get >>= \c -> return (FibonResult a b c)
instance Serialize Fibon.Result.BuildData where
put (BuildData a b) = put a >> put b
get = get >>= \a -> get >>= \b -> return (BuildData a b)
instance Serialize Fibon.Result.RunData where
put (RunData a b) = put a >> put b
get = get >>= \a -> get >>= \b -> return (RunData a b)
instance Serialize Fibon.Result.RunDetail where
put (RunDetail a b) = put a >> put b
get = get >>= \a -> get >>= \b -> return (RunDetail a b)
instance Serialize Fibon.Result.RunSummary where
put (RunSummary a b c) = put a >> put b >> put c
get = get >>= \a -> get >>= \b -> get >>= \c -> return (RunSummary a b c)