packages feed

vector-binary-instances 0.2.3.1 → 0.2.3.2

raw patch · 2 files changed

+22/−14 lines, 2 files

Files

benchmarks/Benchmarks.hs view
@@ -1,11 +1,16 @@ import Criterion.Main import Data.Binary import Data.Binary.Get+import Data.Binary.Put  import qualified Data.ByteString.Lazy     as BS import qualified Data.Vector.Unboxed as U import Data.Vector.Binary +-- We take care to avoid using the @Binary@ instances here to avoid issues with+-- overlapping instances as the install plan will involve two different versions+-- of k@vector-binary-instances@ (as @Criterion@ transitively depends upon+-- @vector-binary-instances@). See #7 for details.  vec1,vec2,vec3,vec4,vec5 :: U.Vector Int vec1 = U.enumFromN 0 3@@ -15,11 +20,11 @@ vec5 = U.enumFromN 0 300000  bs1,bs2,bs3,bs4,bs5 :: BS.ByteString-bs1 = encode vec1-bs2 = encode vec2-bs3 = encode vec3-bs4 = encode vec4-bs5 = encode vec5+bs1 = encodeVector vec1+bs2 = encodeVector vec2+bs3 = encodeVector vec3+bs4 = encodeVector vec4+bs5 = encodeVector vec5  naiveGet :: (Binary a, U.Unbox a) => Get (U.Vector a) naiveGet = do@@ -36,20 +41,23 @@  type V = BS.ByteString -> U.Vector Int +encodeVector :: U.Vector Int -> BS.ByteString+encodeVector = runPut . genericPutVector+ benchGetSize :: String -> BS.ByteString -> Benchmark benchGetSize name bs = bgroup name-    [ bench "U.Vector Int"                 $ nf (decode :: V) bs-    , bench "naive U.Vector Int"           $ nf (runGet naiveGet :: V) bs-    , bench "noinline naive U.Vector Int"  $ nf (runGet naiveGet' :: V) bs+    [ bench "U.Vector Int"                 $ nf (runGet genericGetVector :: V) bs+    , bench "naive U.Vector Int"           $ nf (runGet naiveGet         :: V) bs+    , bench "noinline naive U.Vector Int"  $ nf (runGet naiveGet'        :: V) bs     ]  main = defaultMain   [ bgroup "encode"-    [ bench "U.Vector Int 3"      $ nf encode vec1-    , bench "U.Vector Int 30"     $ nf encode vec2-    , bench "U.Vector Int 300"    $ nf encode vec3-    , bench "U.Vector Int 30000"  $ nf encode vec4-    , bench "U.Vector Int 300000" $ nf encode vec5+    [ bench "U.Vector Int 3"      $ nf encodeVector vec1+    , bench "U.Vector Int 30"     $ nf encodeVector vec2+    , bench "U.Vector Int 300"    $ nf encodeVector vec3+    , bench "U.Vector Int 30000"  $ nf encodeVector vec4+    , bench "U.Vector Int 300000" $ nf encodeVector vec5     ]   , bgroup "decode"     [ benchGetSize "size=3" bs1
vector-binary-instances.cabal view
@@ -1,5 +1,5 @@ Name:                vector-binary-instances-Version:             0.2.3.1+Version:             0.2.3.2 Synopsis:            Instances of Data.Binary and Data.Serialize for vector Description:    Instances for Binary for the types defined in the vector package,