From 48d94fee6d255a8a348edf9f8208cb6018485b7b Mon Sep 17 00:00:00 2001 From: "Yann Esposito (Yogsototh)" Date: Thu, 13 Sep 2018 12:55:27 +0200 Subject: [PATCH] benchmarks --- .dir-locals.el | 5 +++++ human-friendly-id-gen.cabal | 3 ++- package.yaml | 1 + src-benchmark/Main.hs | 26 +++++++++++++++++++++----- 4 files changed, 29 insertions(+), 6 deletions(-) create mode 100644 .dir-locals.el diff --git a/.dir-locals.el b/.dir-locals.el new file mode 100644 index 0000000..df128f4 --- /dev/null +++ b/.dir-locals.el @@ -0,0 +1,5 @@ +;;; Directory Local Variables +;;; For more information see (info "(emacs) Directory Variables") + +((haskell-mode + (intero-targets "human-friendly-id-gen:lib" "human-friendly-id-gen:exe:hfig" "human-friendly-id-gen:test:human-friendly-id-gen-doctest" "human-friendly-id-gen:test:human-friendly-id-gen-test" "human-friendly-id-gen:bench:human-friendly-id-gen-benchmark"))) diff --git a/human-friendly-id-gen.cabal b/human-friendly-id-gen.cabal index 54834df..979627c 100644 --- a/human-friendly-id-gen.cabal +++ b/human-friendly-id-gen.cabal @@ -2,7 +2,7 @@ -- -- see: https://github.com/sol/hpack -- --- hash: 0e683ac9d8dfb5f4d7ce10cbfd8e10b825fae281ba0c99bb21798b3482443854 +-- hash: 5be2664cdea2186d72a0e88938c79a9c59698ad4464b107909e4add64ff85b0c name: human-friendly-id-gen version: 0.1.0.0 @@ -113,4 +113,5 @@ benchmark human-friendly-id-gen-benchmark , criterion >=1.1 , human-friendly-id-gen , protolude + , vector default-language: Haskell2010 diff --git a/package.yaml b/package.yaml index d35a4de..5db021a 100644 --- a/package.yaml +++ b/package.yaml @@ -82,5 +82,6 @@ benchmarks: - -with-rtsopts=-N dependencies: - criterion >=1.1 + - vector - human-friendly-id-gen stability: alpha (experimental) diff --git a/src-benchmark/Main.hs b/src-benchmark/Main.hs index 7741a36..ad7f1f6 100644 --- a/src-benchmark/Main.hs +++ b/src-benchmark/Main.hs @@ -1,9 +1,25 @@ -import Protolude +import Protolude -import Criterion -import Criterion.Main +import Criterion +import Criterion.Main +import qualified Data.Vector as V -import Lib (inc) +import qualified HFIG.Dictionary as Dict +import qualified HFIG.Lovecraftian as Lov +import qualified HFIG.Short as Short main :: IO () -main = defaultMain [bench "inc 41" (whnf inc (41 :: Int))] +main = do + englishDict <- Dict.dictionaryFromFile "dictionaries/english.txt" + putText $ "loaded english Dict: " <> (show (V.length englishDict) :: Text) + genericDict <- Dict.dictionaryFromFile "dictionaries/generic.txt" + putText $ "loaded generic Dict: " <> (show (V.length genericDict) :: Text) + defaultMain [ bench "short idgen (10)" (nfIO (Short.idgen 10)) + , bench "short idgen (100)" (nfIO (Short.idgen 100)) + , bench "lovecraftian idgen (1)" (nfIO (Lov.idgen 1)) + , bench "lovecraftian idgen (10)" (nfIO (Lov.idgen 10)) + , bench "dictionary idgen (english 3)" + (nfIO (Dict.idgen englishDict 3)) + , bench "dictionary idgen (generic 3)" + (nfIO (Dict.idgen genericDict 3)) + ]