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 +21/−13
- vector-binary-instances.cabal +1/−1
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,