on master help sign in
Merge branch 'efficient-uuid'
commit60ed38040a5d9b62f25b518d8a2006bea2de5fb3 authorMichael Xavier <michael@michaelxavier.net> dateTue 17 Mar 2015, 10:27 (12 years ago) parente0993f22afebab
3 files changed+59−14
katip-elasticsearch/bench/Main.hs+41 katip-elasticsearch/katip-elasticsearch.cabal+18−7 katip-elasticsearch/src/Katip/Scribes/ElasticSearch.hs−7
katip-elasticsearch/bench/Main.hsnew file+41
@@ -0,0 +1,41 @@
1+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
2+{-# LANGUAGE StandaloneDeriving #-}
3+module Main
4+ ( main
5+ ) where
6+
7+-------------------------------------------------------------------------------
8+import Control.Applicative
9+import Control.DeepSeq
10+import Control.Monad
11+import Criterion.Main
12+import Data.RNG
13+import Database.Bloodhound.Types
14+import Numeric
15+-------------------------------------------------------------------------------
16+import Katip.Scribes.ElasticSearch
17+-------------------------------------------------------------------------------
18+
19+main :: IO ()
20+main = do
21+ rng <- mkRNG
22+ defaultMain [mkDocIdBenchmark rng]
23+
24+-------------------------------------------------------------------------------
25+mkDocIdBenchmark :: RNG -> Benchmark
26+mkDocIdBenchmark rng = bgroup "mkDocId"
27+ [ bench "mkDocId (randomIO)" $ nfIO mkDocId
28+ , bench "mkDocId' (shared )" $ nfIO $ mkDocId' rng
29+ ]
30+
31+
32+mkDocId' :: RNG -> IO DocId
33+mkDocId' rng = do
34+ is <- withRNG rng $ \gen -> replicateM len $ mk gen
35+ return . DocId . concatMap (flip showHex "") $ is
36+ where
37+ len = 32
38+ mk :: GenIO -> IO Int
39+ mk = uniformR (0,15)
40+
41+deriving instance NFData DocId
katip-elasticsearch/katip-elasticsearch.cabal+18−7
@@ -1,7 +1,5 @@
11name: katip-elasticsearch
22version: 0.1.0.0
3−-- synopsis:
4−-- description:
53license: BSD3
64license-file: LICENSE
75author: Ozgun Ataman
@@ -12,15 +10,28 @@ build-type: Simple
1210cabal-version: >=1.10
1311
1412library
15− exposed-modules:
13+ exposed-modules:
1614 Katip.Scribes.ElasticSearch
17− -- other-modules:
18− -- other-extensions:
19− build-depends:
15+ build-depends:
2016 base >=4.6 && <4.7
2117 , katip
2218 , bloodhound >= 0.5 && < 0.6
2319 , random >= 1.0 && < 1.2
2420 , uuid >= 1.3 && < 1.4
2521 hs-source-dirs: src
26− default-language: Haskell2010
22+ default-language: Haskell2010
23+
24+benchmark bench
25+ type: exitcode-stdio-1.0
26+ main-is: Main.hs
27+ hs-source-dirs: bench
28+ default-language: Haskell2010
29+ ghc-options: -O2
30+ build-depends:
31+ base
32+ , katip-elasticsearch
33+ , bloodhound
34+ , deepseq
35+ , criterion >= 0.8 && < 1.0
36+ , rng-utils
37+ , uuid
katip-elasticsearch/src/Katip/Scribes/ElasticSearch.hs−7
@@ -28,10 +28,3 @@ mkEsScribe server ix mapping sev verb = return $ Scribe $ \ i -> do
2828-------------------------------------------------------------------------------
2929mkDocId :: IO DocId
3030mkDocId = (DocId . toString) `fmap` randomIO
31−
32−
33−
34−
35−
36−
37−