{-# 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 }