nanomsg-haskell-0.1.0: benchmarks/SendMessages.hs
module Main where
import Nanomsg
import Criterion.Main
import qualified Data.ByteString.Char8 as C
import Control.Monad (replicateM_)
pair :: Int -> Int -> IO ()
pair size count = do
sender <- socket Pair
_ <- bind sender "inproc://pairtest"
recipient <- socket Pair
_ <- connect recipient "inproc://pairtest"
let msg = C.pack $ replicate size 'a'
replicateM_ count (send sender msg >> recv recipient)
close sender
close recipient
return ()
main :: IO ()
main = defaultMain
[ bench "40 bytes x 10k messages" $ nfIO $ pair 40 10000
, bench "20k bytes x 20 messages" $ nfIO $ pair 20000 20
]