summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Truzjan <pxqr.sta@gmail.com>2013-12-25 00:47:43 +0400
committerSam Truzjan <pxqr.sta@gmail.com>2013-12-25 00:47:43 +0400
commitd5bae29716f894f4f9c2623455db38260664ae16 (patch)
treeaa3d2cfda9ca3dde994f2eae388f42085dd8e38b
parent46b6ba10202b73ba413d18bd21a284e3897c12b0 (diff)
Update benchmarks
-rw-r--r--bench/Main.hs45
-rw-r--r--bench/Server.hs13
-rw-r--r--krpc.cabal37
-rw-r--r--src/Network/KRPC.hs4
4 files changed, 37 insertions, 62 deletions
diff --git a/bench/Main.hs b/bench/Main.hs
index 024d4d93..97f97425 100644
--- a/bench/Main.hs
+++ b/bench/Main.hs
@@ -1,33 +1,32 @@
1{-# LANGUAGE OverloadedStrings #-} 1{-# LANGUAGE OverloadedStrings #-}
2{-# LANGUAGE MultiParamTypeClasses #-}
3{-# OPTIONS_GHC -fno-warn-orphans #-}
2module Main (main) where 4module Main (main) where
3
4import Control.Monad 5import Control.Monad
5import Data.ByteString (ByteString) 6import Control.Monad.Reader
6import qualified Data.ByteString as B
7import Criterion.Main 7import Criterion.Main
8import Data.ByteString as BS
8import Network.KRPC 9import Network.KRPC
9import Network.Socket
10 10
11instance KRPC ByteString ByteString where
12 method = "echo"
11 13
12addr :: RemoteAddr 14echo :: Handler IO
13addr = SockAddrInet 6000 0 15echo = handler $ \ _ bs -> return (bs :: ByteString)
14 16
15echo :: Method ByteString ByteString 17addr :: SockAddr
16echo = method "echo" ["x"] ["x"] 18addr = SockAddrInet 6000 (256 * 256 * 256 + 127)
17 19
18main :: IO () 20main :: IO ()
19main = withRemote $ \remote -> do { 21main = withManager addr [echo] $ \ m -> (`runReaderT` m) $ do
20 ; let sizes = [10, 100, 1000, 10000, 16 * 1024] 22 listen
21 ; let repetitions = [1, 10, 100, 1000] 23 liftIO $ defaultMain (benchmarks m)
22 ; let params = [(r, s) | r <- repetitions, s <- sizes]
23 ; let benchmarks = map (uncurry (mkbench_ remote)) params
24 ; defaultMain benchmarks
25 }
26 where 24 where
27 mkbench_ re r n = bench (show r ++ "/" ++ show n) $ nfIO $ 25 sizes = [10, 100, 1000, 10000, 16 * 1024]
28 replicateM r $ call_ re addr echo (B.replicate n 0) 26 repetitions = [1, 10, 100, 1000]
29 27 benchmarks m = [mkbench m r s | r <- repetitions, s <- sizes]
30{- 28 where
31 forM_ [1..] $ const $ do 29 mkbench m r n =
32 async addr myconcat (replicate 100 [1..10]) 30 bench (show r ++ "times" ++ "/" ++ show n ++ "bytes") $ nfIO $
33-} 31 replicateM r $
32 runReaderT (query addr (BS.replicate n 0)) m
diff --git a/bench/Server.hs b/bench/Server.hs
deleted file mode 100644
index ef20c08a..00000000
--- a/bench/Server.hs
+++ /dev/null
@@ -1,13 +0,0 @@
1{-# LANGUAGE OverloadedStrings #-}
2module Main (main) where
3
4import Data.ByteString (ByteString)
5import Network.KRPC
6import Network.Socket
7
8
9echo :: Method ByteString ByteString
10echo = method "echo" ["x"] ["x"]
11
12main :: IO ()
13main = server (SockAddrInet 6000 0) [ echo ==> return ]
diff --git a/krpc.cabal b/krpc.cabal
index c4c0ae10..ffd23298 100644
--- a/krpc.cabal
+++ b/krpc.cabal
@@ -43,7 +43,6 @@ library
43 Network.KRPC.Message 43 Network.KRPC.Message
44 Network.KRPC.Method 44 Network.KRPC.Method
45 Network.KRPC.Manager 45 Network.KRPC.Manager
46
47 build-depends: base == 4.* 46 build-depends: base == 4.*
48 , bytestring >= 0.10 47 , bytestring >= 0.10
49 , lifted-base >= 0.1.1 48 , lifted-base >= 0.1.1
@@ -53,10 +52,8 @@ library
53 , bencoding >= 0.4.3 52 , bencoding >= 0.4.3
54 , network >= 2.3 53 , network >= 2.3
55 , containers 54 , containers
56
57 if impl(ghc < 7.6) 55 if impl(ghc < 7.6)
58 build-depends: ghc-prim 56 build-depends: ghc-prim
59
60 ghc-options: -Wall 57 ghc-options: -Wall
61 58
62test-suite spec 59test-suite spec
@@ -71,32 +68,20 @@ test-suite spec
71 , bytestring 68 , bytestring
72 , network 69 , network
73 , mtl 70 , mtl
74
75 , hspec 71 , hspec
76 , QuickCheck 72 , QuickCheck
77 , quickcheck-instances 73 , quickcheck-instances
78
79 , bencoding 74 , bencoding
80 , krpc 75 , krpc
81 76
82--executable bench-server 77benchmark bench
83-- default-language: Haskell2010 78 type: exitcode-stdio-1.0
84-- hs-source-dirs: bench 79 default-language: Haskell2010
85-- main-is: Server.hs 80 hs-source-dirs: bench
86-- build-depends: base == 4.* 81 main-is: Main.hs
87-- , bytestring 82 build-depends: base == 4.*
88-- , krpc 83 , bytestring
89-- , network 84 , mtl
90-- ghc-options: -fforce-recomp 85 , criterion
91 86 , krpc
92--benchmark bench-client 87 ghc-options: -O2 -fforce-recomp \ No newline at end of file
93-- type: exitcode-stdio-1.0
94-- default-language: Haskell2010
95-- hs-source-dirs: bench
96-- main-is: Main.hs
97-- build-depends: base == 4.*
98-- , bytestring
99-- , criterion
100-- , krpc
101-- , network
102-- ghc-options: -O2 -fforce-recomp \ No newline at end of file
diff --git a/src/Network/KRPC.hs b/src/Network/KRPC.hs
index 10d2eb55..286c063e 100644
--- a/src/Network/KRPC.hs
+++ b/src/Network/KRPC.hs
@@ -107,8 +107,12 @@ module Network.KRPC
107 -- * Exceptions 107 -- * Exceptions
108 , KError (..) 108 , KError (..)
109 , ErrorCode (..) 109 , ErrorCode (..)
110
111 -- * Re-export
112 , SockAddr (..)
110 ) where 113 ) where
111 114
112import Network.KRPC.Message 115import Network.KRPC.Message
113import Network.KRPC.Method 116import Network.KRPC.Method
114import Network.KRPC.Manager 117import Network.KRPC.Manager
118import Network.Socket (SockAddr (..)) \ No newline at end of file