hosc-utils-0.12: benchmarks/benchmark.hs
import Criterion.Main
import qualified Data.ByteString.Lazy as B
import Sound.OpenSoundControl
import Sound.OpenSoundControl.NFData ()
import qualified Sound.OpenSoundControl.Coding.Decode.Binary as Binary
import qualified Sound.OpenSoundControl.Coding.Encode.Builder as Builder
import qualified Sound.OpenSoundControl.Coding.Decode.Base as Decode
import qualified Sound.OpenSoundControl.Coding.Encode.Base as Encode
type EncodingFunc = Bundle -> B.ByteString
type DecodingFunc = B.ByteString -> Packet
main :: IO ()
main =
defaultMain [
bgroup "encodeOSC" [
bench "Encode" (nf (Encode.encodeBundle :: EncodingFunc) b)
, bench "Builder" (nf (Builder.encodeBundle :: EncodingFunc) b)
]
, bgroup "decodeOSC" [
bench "Decode" (nf (Decode.decodePacket :: DecodingFunc) p)
, bench "Binary" (nf (Binary.decodePacket :: DecodingFunc) p)
]
]
where
m = Message "/fooblah" [Float 42
,Int 16
,String "yeah"
,Blob (B.pack [0..128])]
b = Bundle (NTPr pi) (replicate 12 m)
p = Encode.encodeBundle b