packages feed

dns-patterns-0.2.3: benchmark/Bench.hs

{-# LANGUAGE OverloadedStrings #-}

import Criterion
import Criterion.Main
import Criterion.Types


import Network.DNS
import Network.DNS.Pattern
import Network.DNS.Pattern.Internal

unsafeRight :: Either l r -> r
unsafeRight e = case e of
  Right r -> r
  Left l  -> error "unsafeRight: left!"

{-# NOINLINE d1 #-}
d1 :: Domain
d1 = unsafeRight (parseAbsDomain "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.4.1.0.0.1.0.0.0.1.8.5.0.1.0.a.2.ip6.arpa.")

{-# NOINLINE d2 #-}
d2 :: Domain
d2 = unsafeRight (parseAbsDomain "0.1.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a.e.c.5.a.b.c.1.2.b.b.d.f.ip6.arpa.")

{-# NOINLINE d3 #-}
d3 :: Domain
d3 = unsafeRight (parseAbsDomain "0.1.124.10.in-addr.arpa.")

{-# NOINLINE d4 #-}
d4 :: Domain
d4 = unsafeRight (parseAbsDomain "ihvs0317.as9136.net.")


main = defaultMainWith cfg
        [ bgroup "pprDomain_" [ bench "text prim: d1" $ whnf pprDomain_ d1
                              , bench "text prim: d2" $ whnf pprDomain_ d2
                              , bench "text prim: d3" $ whnf pprDomain_ d3
                              , bench "text prim: d4" $ whnf pprDomain_ d4 ]

        , bgroup "pprDomain" [ bench "dlist+builder: d1" $ whnf pprDomain d1
                             , bench "dlist+builder: d2" $ whnf pprDomain d2
                             , bench "dlist+builder: d3" $ whnf pprDomain d3
                             , bench "dlist+builder: d4" $ whnf pprDomain d4 ]
        ]

  where
    cfg = defaultConfig
      { reportFile = Just "/home/dminuoso/criterion.report"
      , rawDataFile = Just "/home/dminuoso/criterion.raw"
      , verbosity = Verbose
      }