packages feed

timeseries-0.1.0: benchmark/Benchmarks.hs

import Criterion.Main
import Data.Time (UTCTime)
import Data.Time.Clock.POSIX (posixSecondsToUTCTime)
import qualified Data.TimeSeries as TS


seriesSize :: Integer
seriesSize = 10^6

index :: Integer -> UTCTime
index n = posixSecondsToUTCTime (fromIntegral n)

lastIndex :: UTCTime
lastIndex = index (seriesSize - 1)

bigSeries :: TS.Series
bigSeries = TS.tsSeries [1..seriesSize] [1..]


main :: IO ()
main = defaultMain
    [ bgroup "Big series"
        [ bench "size"  $ nf TS.size bigSeries
        , bench "valueAt"  $ nf (\xs -> TS.valueAt xs lastIndex) bigSeries
        , bench "slice"  $ nf (\xs -> TS.valueAt (TS.slice xs (index 2) lastIndex) (index 1)) bigSeries
        ]
    ]