git.iko.soy/distributed-process
on master help sign in
Benchmark that should show improvement in connect
commitd488ed2f9242406000fe7d1bdc7c3c9b56324abe authorEdsko de Vries <edsko@edsko.net> dateMon 17 Sep 2012, 14:24 (14 years ago) parentf46269a
2 files changed+52
distributed-process/benchmarks/Channels.hs+39 distributed-process/distributed-process.cabal+13
distributed-process/benchmarks/Channels.hsnew file+39
@@ -0,0 +1,39 @@
1+-- | Like Latency, but creating lots of channels
2+import System.Environment
3+import Control.Monad
4+import Control.Applicative
5+import Control.Distributed.Process
6+import Control.Distributed.Process.Node
7+import Network.Transport.TCP (createTransport, defaultTCPParameters)
8+import Data.Binary (encode, decode)
9+import qualified Data.ByteString.Lazy as BSL
10+
11+pingServer :: Process ()
12+pingServer = forever $ do
13+ them <- expect
14+ sendChan them ()
15+
16+pingClient :: Int -> ProcessId -> Process ()
17+pingClient n them = do
18+ replicateM_ n $ do
19+ (sc, rc) <- newChan :: Process (SendPort (), ReceivePort ())
20+ send them sc
21+ receiveChan rc
22+ liftIO . putStrLn $ "Did " ++ show n ++ " pings"
23+
24+initialProcess :: String -> Process ()
25+initialProcess "SERVER" = do
26+ us <- getSelfPid
27+ liftIO $ BSL.writeFile "pingServer.pid" (encode us)
28+ pingServer
29+initialProcess "CLIENT" = do
30+ n <- liftIO $ getLine
31+ them <- liftIO $ decode <$> BSL.readFile "pingServer.pid"
32+ pingClient (read n) them
33+
34+main :: IO ()
35+main = do
36+ [role, host, port] <- getArgs
37+ Right transport <- createTransport host port defaultTCPParameters
38+ node <- newLocalNode transport initRemoteTable
39+ runProcess node $ initialProcess role
distributed-process/distributed-process.cabal+13
@@ -143,3 +143,16 @@ Executable distributed-process-latency
143143 Main-Is: benchmarks/Latency.hs
144144 ghc-options: -Wall
145145 Extensions: BangPatterns
146+
147+Executable distributed-process-channels
148+ if flag(benchmarks)
149+ Build-Depends: base >= 4.4 && < 5,
150+ distributed-process >= 0.3 && < 0.4,
151+ network-transport-tcp >= 0.3 && < 0.4,
152+ bytestring >= 0.9 && < 0.11,
153+ binary >= 0.5 && < 0.6
154+ else
155+ buildable: False
156+ Main-Is: benchmarks/Channels.hs
157+ ghc-options: -Wall
158+ Extensions: BangPatterns