bind-marshal-0.1: test/verify_seraction_static_fixed_buffer_perf.hs
-- Copyright : (C) 2009 Corey O'Connor
-- License : BSD-style (see the file LICENSE)
import Bind.Marshal.Prelude
import Bind.Marshal.Verify
import Bind.Marshal.Action.Base
import Bind.Marshal.SerAction.Base
import Bind.Marshal.SerAction.Static
import Bind.Marshal.StdLib.Ser
import FLVHeader.Data
import FLVHeader.Ser
import Control.DeepSeq
import "monads-tf" Control.Monad.Trans
import Foreign.Marshal.Alloc
import Foreign.Marshal.Array ( pokeArray, peekArray )
import Foreign.Ptr
import Foreign.Storable
import System.IO
import System.Random ( newStdGen, split )
import Test.QuickCheck.Gen ( Gen(..) )
{-# NOINLINE bench_ser #-}
bench_ser buffer flv_header = do
let !b = BufferRegion buffer 9
() <- apply_ser_to_fixed_buffer_unsafe_ (ser_flv_header flv_header) b
returnM () :: IO ()
{-# NOINLINE bench_storable #-}
bench_storable buffer flv_header = do
() <- poke (castPtr buffer) flv_header
returnM () :: IO ()
main = run_test $ do
buffer <- liftIO $ mallocBytes (50001 * 9 * 2) :: Test ( Ptr Word8 )
verify_faster "SerAction.Static versus storable" perf_config
( bench_ser buffer )
( bench_storable buffer )
liftIO $ free buffer :: Test()
returnM () :: Test ()