File: Integer.hs

package info (click to toggle)
haskell-serialise 0.2.6.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 564 kB
  • sloc: haskell: 6,809; makefile: 6
file content (41 lines) | stat: -rw-r--r-- 1,673 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
{-# LANGUAGE ScopedTypeVariables #-}

module Instances.Integer
  ( benchmarks -- :: [Benchmark]
  ) where

import           Criterion.Main
import qualified Data.ByteString.Lazy   as BS
import qualified Data.Vector            as Vector

import           Codec.Serialise

benchmarks :: [Benchmark]
benchmarks =
  [ bgroup "serialise"
    [ bench "small positive" (nf goSerialise integerDataSmallPos)
    , bench "small negative" (nf goSerialise integerDataSmallNeg)
    , bench "large positive" (nf goSerialise integerDataLargePos)
    , bench "large negative" (nf goSerialise integerDataLargeNeg)
    ]
  , bgroup "deserialise"
    [ bench "small positive" (nf goDeserialise integerDataSerialisedSmallPos)
    , bench "small negative" (nf goDeserialise integerDataSerialisedSmallNeg)
    , bench "large positive" (nf goDeserialise integerDataSerialisedLargePos)
    , bench "large negative" (nf goDeserialise integerDataSerialisedLargeNeg)
    ]
  ]
  where
    goSerialise = BS.length . serialise
    goDeserialise :: BS.ByteString -> Vector.Vector Integer
    goDeserialise = deserialise
    integerDataSmallPos = Vector.replicate (100 :: Int) (10 :: Integer)
    integerDataSmallNeg = Vector.replicate (100 :: Int) (-10 :: Integer)
    integerDataLargePos = Vector.replicate (100 :: Int) (two^(two * 100))
    integerDataLargeNeg = Vector.replicate (100 :: Int) (-(two^(two * 100)))
    integerDataSerialisedSmallPos = serialise integerDataSmallPos
    integerDataSerialisedSmallNeg = serialise integerDataSmallNeg
    integerDataSerialisedLargePos = serialise integerDataLargePos
    integerDataSerialisedLargeNeg = serialise integerDataLargeNeg
    two = 2 :: Integer