From d5bae29716f894f4f9c2623455db38260664ae16 Mon Sep 17 00:00:00 2001 From: Sam Truzjan Date: Wed, 25 Dec 2013 00:47:43 +0400 Subject: Update benchmarks --- bench/Main.hs | 45 ++++++++++++++++++++++----------------------- bench/Server.hs | 13 ------------- krpc.cabal | 37 +++++++++++-------------------------- src/Network/KRPC.hs | 4 ++++ 4 files changed, 37 insertions(+), 62 deletions(-) delete mode 100644 bench/Server.hs 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 @@ -{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE MultiParamTypeClasses #-} +{-# OPTIONS_GHC -fno-warn-orphans #-} module Main (main) where - import Control.Monad -import Data.ByteString (ByteString) -import qualified Data.ByteString as B +import Control.Monad.Reader import Criterion.Main +import Data.ByteString as BS import Network.KRPC -import Network.Socket +instance KRPC ByteString ByteString where + method = "echo" -addr :: RemoteAddr -addr = SockAddrInet 6000 0 +echo :: Handler IO +echo = handler $ \ _ bs -> return (bs :: ByteString) -echo :: Method ByteString ByteString -echo = method "echo" ["x"] ["x"] +addr :: SockAddr +addr = SockAddrInet 6000 (256 * 256 * 256 + 127) main :: IO () -main = withRemote $ \remote -> do { - ; let sizes = [10, 100, 1000, 10000, 16 * 1024] - ; let repetitions = [1, 10, 100, 1000] - ; let params = [(r, s) | r <- repetitions, s <- sizes] - ; let benchmarks = map (uncurry (mkbench_ remote)) params - ; defaultMain benchmarks - } +main = withManager addr [echo] $ \ m -> (`runReaderT` m) $ do + listen + liftIO $ defaultMain (benchmarks m) where - mkbench_ re r n = bench (show r ++ "/" ++ show n) $ nfIO $ - replicateM r $ call_ re addr echo (B.replicate n 0) - -{- - forM_ [1..] $ const $ do - async addr myconcat (replicate 100 [1..10]) --} + sizes = [10, 100, 1000, 10000, 16 * 1024] + repetitions = [1, 10, 100, 1000] + benchmarks m = [mkbench m r s | r <- repetitions, s <- sizes] + where + mkbench m r n = + bench (show r ++ "times" ++ "/" ++ show n ++ "bytes") $ nfIO $ + replicateM r $ + 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 @@ -{-# LANGUAGE OverloadedStrings #-} -module Main (main) where - -import Data.ByteString (ByteString) -import Network.KRPC -import Network.Socket - - -echo :: Method ByteString ByteString -echo = method "echo" ["x"] ["x"] - -main :: IO () -main = 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 Network.KRPC.Message Network.KRPC.Method Network.KRPC.Manager - build-depends: base == 4.* , bytestring >= 0.10 , lifted-base >= 0.1.1 @@ -53,10 +52,8 @@ library , bencoding >= 0.4.3 , network >= 2.3 , containers - if impl(ghc < 7.6) build-depends: ghc-prim - ghc-options: -Wall test-suite spec @@ -71,32 +68,20 @@ test-suite spec , bytestring , network , mtl - , hspec , QuickCheck , quickcheck-instances - , bencoding , krpc ---executable bench-server --- default-language: Haskell2010 --- hs-source-dirs: bench --- main-is: Server.hs --- build-depends: base == 4.* --- , bytestring --- , krpc --- , network --- ghc-options: -fforce-recomp - ---benchmark bench-client --- type: exitcode-stdio-1.0 --- default-language: Haskell2010 --- hs-source-dirs: bench --- main-is: Main.hs --- build-depends: base == 4.* --- , bytestring --- , criterion --- , krpc --- , network --- ghc-options: -O2 -fforce-recomp \ No newline at end of file +benchmark bench + type: exitcode-stdio-1.0 + default-language: Haskell2010 + hs-source-dirs: bench + main-is: Main.hs + build-depends: base == 4.* + , bytestring + , mtl + , criterion + , krpc + 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 -- * Exceptions , KError (..) , ErrorCode (..) + + -- * Re-export + , SockAddr (..) ) where import Network.KRPC.Message import Network.KRPC.Method import Network.KRPC.Manager +import Network.Socket (SockAddr (..)) \ No newline at end of file -- cgit v1.2.3