mirror of
https://github.com/commercialhaskell/stackage.git
synced 2026-01-12 23:38:29 +01:00
172 lines
5.6 KiB
Diff
172 lines
5.6 KiB
Diff
diff -ru orig/Criterion/Analysis/Types.hs new/Criterion/Analysis/Types.hs
|
|
--- orig/Criterion/Analysis/Types.hs 2014-04-10 08:02:35.383848688 +0300
|
|
+++ new/Criterion/Analysis/Types.hs 2014-04-10 08:02:34.000000000 +0300
|
|
@@ -19,10 +19,12 @@
|
|
, SampleAnalysis(..)
|
|
) where
|
|
|
|
+import Control.Applicative ((<$>), (<*>))
|
|
import Control.DeepSeq (NFData(rnf))
|
|
-import Data.Binary (Binary)
|
|
+import Data.Binary (Binary, put, get)
|
|
import Data.Data (Data, Typeable)
|
|
import Data.Int (Int64)
|
|
+import Data.Word (Word8)
|
|
import Data.Monoid (Monoid(..))
|
|
import GHC.Generics (Generic)
|
|
import qualified Statistics.Resampling.Bootstrap as B
|
|
@@ -42,7 +44,14 @@
|
|
-- ^ More than 3 times the IQR above the third quartile.
|
|
} deriving (Eq, Read, Show, Typeable, Data, Generic)
|
|
|
|
-instance Binary Outliers
|
|
+instance Binary Outliers where
|
|
+ put (Outliers a b c d e) = do
|
|
+ put a
|
|
+ put b
|
|
+ put c
|
|
+ put d
|
|
+ put e
|
|
+ get = Outliers <$> get <*> get <*> get <*> get <*> get
|
|
instance NFData Outliers
|
|
|
|
-- | A description of the extent to which outliers in the sample data
|
|
@@ -54,7 +63,19 @@
|
|
-- are useless).
|
|
deriving (Eq, Ord, Read, Show, Typeable, Data, Generic)
|
|
|
|
-instance Binary OutlierEffect
|
|
+instance Binary OutlierEffect where
|
|
+ put Unaffected = put (0 :: Word8)
|
|
+ put Slight = put (1 :: Word8)
|
|
+ put Moderate = put (2 :: Word8)
|
|
+ put Severe = put (3 :: Word8)
|
|
+ get = do
|
|
+ w <- get
|
|
+ case w :: Word8 of
|
|
+ 0 -> return Unaffected
|
|
+ 1 -> return Slight
|
|
+ 2 -> return Moderate
|
|
+ 3 -> return Severe
|
|
+ _ -> error "Binary.get for OutlierEffect failed"
|
|
instance NFData OutlierEffect
|
|
|
|
instance Monoid Outliers where
|
|
@@ -77,7 +98,9 @@
|
|
-- ^ Quantitative description of effect (a fraction between 0 and 1).
|
|
} deriving (Eq, Read, Show, Typeable, Data, Generic)
|
|
|
|
-instance Binary OutlierVariance
|
|
+instance Binary OutlierVariance where
|
|
+ put (OutlierVariance a b c) = put a >> put b >> put c
|
|
+ get = OutlierVariance <$> get <*> get <*> get
|
|
|
|
instance NFData OutlierVariance where
|
|
rnf OutlierVariance{..} = rnf ovEffect `seq` rnf ovDesc `seq` rnf ovFraction
|
|
@@ -89,7 +112,9 @@
|
|
, anOutlierVar :: OutlierVariance
|
|
} deriving (Eq, Read, Show, Typeable, Data, Generic)
|
|
|
|
-instance Binary SampleAnalysis
|
|
+instance Binary SampleAnalysis where
|
|
+ put (SampleAnalysis a b c) = put a >> put b >> put c
|
|
+ get = SampleAnalysis <$> get <*> get <*> get
|
|
|
|
instance NFData SampleAnalysis where
|
|
rnf SampleAnalysis{..} =
|
|
diff -ru orig/Criterion/IO.hs new/Criterion/IO.hs
|
|
--- orig/Criterion/IO.hs 2014-04-10 08:02:35.383848688 +0300
|
|
+++ new/Criterion/IO.hs 2014-04-10 08:02:34.000000000 +0300
|
|
@@ -1,3 +1,4 @@
|
|
+{-# LANGUAGE CPP #-}
|
|
{-# LANGUAGE OverloadedStrings #-}
|
|
-- |
|
|
-- Module : Criterion.IO
|
|
@@ -21,7 +22,11 @@
|
|
|
|
import Criterion.Types (ResultForest, ResultTree(..))
|
|
import Data.Binary (Binary(..), encode)
|
|
+#if MIN_VERSION_binary(0,6,3)
|
|
import Data.Binary.Get (runGetOrFail)
|
|
+#else
|
|
+import Data.Binary.Get (runGetState)
|
|
+#endif
|
|
import Data.Binary.Put (putByteString, putWord16be, runPut)
|
|
import Data.ByteString.Char8 ()
|
|
import Data.Version (Version(..))
|
|
@@ -58,6 +63,7 @@
|
|
writeResults path rs = withFile path WriteMode (flip hPutResults rs)
|
|
|
|
readAll :: Binary a => Handle -> IO [a]
|
|
+#if MIN_VERSION_binary(0,6,3)
|
|
readAll handle = do
|
|
let go bs
|
|
| L.null bs = return []
|
|
@@ -65,3 +71,12 @@
|
|
Left (_, _, err) -> fail err
|
|
Right (bs', _, a) -> (a:) `fmap` go bs'
|
|
go =<< L.hGetContents handle
|
|
+#else
|
|
+readAll handle = do
|
|
+ let go i bs
|
|
+ | L.null bs = return []
|
|
+ | otherwise =
|
|
+ let (a, bs', i') = runGetState get bs i
|
|
+ in (a:) `fmap` go i' bs'
|
|
+ go 0 =<< L.hGetContents handle
|
|
+#endif
|
|
diff -ru orig/Criterion/Types.hs new/Criterion/Types.hs
|
|
--- orig/Criterion/Types.hs 2014-04-10 08:02:35.383848688 +0300
|
|
+++ new/Criterion/Types.hs 2014-04-10 08:02:34.000000000 +0300
|
|
@@ -45,11 +45,13 @@
|
|
, ResultTree(..)
|
|
) where
|
|
|
|
+import Control.Applicative ((<$>), (<*>))
|
|
import Control.DeepSeq (NFData, rnf)
|
|
import Control.Exception (evaluate)
|
|
import Criterion.Analysis.Types (Outliers(..), SampleAnalysis(..))
|
|
-import Data.Binary (Binary)
|
|
+import Data.Binary (Binary (get, put))
|
|
import Data.Data (Data, Typeable)
|
|
+import Data.Word (Word8)
|
|
import GHC.Generics (Generic)
|
|
import Statistics.Types (Sample)
|
|
|
|
@@ -161,11 +163,21 @@
|
|
, outliers :: Outliers
|
|
} deriving (Eq, Read, Show, Typeable, Data, Generic)
|
|
|
|
-instance Binary Result
|
|
+instance Binary Result where
|
|
+ put (Result a b c d) = put a >> put b >> put c >> put d
|
|
+ get = Result <$> get <*> get <*> get <*> get
|
|
|
|
type ResultForest = [ResultTree]
|
|
data ResultTree = Single Result
|
|
| Compare !Int ResultForest
|
|
deriving (Eq, Read, Show, Typeable, Data, Generic)
|
|
|
|
-instance Binary ResultTree
|
|
+instance Binary ResultTree where
|
|
+ put (Single x) = put (0 :: Word8) >> put x
|
|
+ put (Compare x y) = put (1 :: Word8) >> put x >> put y
|
|
+ get = do
|
|
+ w <- get
|
|
+ case w :: Word8 of
|
|
+ 0 -> Single <$> get
|
|
+ 1 -> Compare <$> get <*> get
|
|
+ _ -> error "Binary.get for ResultTree failed"
|
|
diff -ru orig/criterion.cabal new/criterion.cabal
|
|
--- orig/criterion.cabal 2014-04-10 08:02:35.387848687 +0300
|
|
+++ new/criterion.cabal 2014-04-10 08:02:34.000000000 +0300
|
|
@@ -58,7 +58,7 @@
|
|
build-depends:
|
|
aeson >= 0.3.2.12,
|
|
base < 5,
|
|
- binary >= 0.6.3.0,
|
|
+ binary >= 0.5.1,
|
|
bytestring >= 0.9 && < 1.0,
|
|
containers,
|
|
deepseq >= 1.1.0.0,
|