pred-trie-0.0.2: bench/SimpleVShort.hs
module Main where
import Data.Trie.Pred.FastUnified
import qualified Data.Trie.Pred.FastUnified as FU
import Data.Trie.Pred.NormUnified
import qualified Data.Trie.Pred.NormUnified as NU
import Criterion.Main
import Data.List.NonEmpty
import qualified Data.List.NonEmpty as NE
tdFU = FUMore "foo" Nothing $ NE.fromList
[ FURest ("bar":|["baz","qux"]) 1
, FUMore "tro" (Just 2) $ NE.fromList
[ FUMore "zja" (Just 3) $ NE.fromList
[ FURest ("hda":|["jes","kuq"]) 4 ]
, FURest ("end":|["orp","vag"]) 5
]
, FURest ("dic":|["but","gea"]) 6
]
tdNU = NUMore "foo" Nothing
[ NUMore "bar" Nothing
[ NUMore "baz" Nothing
[ NUMore "qux" (Just 1) []
]
]
, NUMore "tro" (Just 2)
[ NUMore "zja" (Just 3)
[ NUMore "hda" Nothing
[ NUMore "jes" Nothing
[ NUMore "kuq" (Just 4) []
]
]
]
, NUMore "end" Nothing
[ NUMore "orp" Nothing
[ NUMore "vag" (Just 5) []
]
]
]
, NUMore "dic" Nothing
[ NUMore "but" Nothing
[ NUMore "gea" (Just 6) []
]
]
]
main = defaultMain
[ bgroup "Fast" [ bench "foobarbaz" $ whnf (FU.lookup $ "foo":|["bar","baz"]) tdFU
, bench "footrozjahdajes" $ whnf (FU.lookup $ "foo":|["tro","zja","hda","jes"]) tdFU
, bench "footroendorpvag" $ whnf (FU.lookup $ "foo":|["tro","end","orp","vag"]) tdFU
, bench "foodicbutgea" $ whnf (FU.lookup $ "foo":|["dic","but","gea"]) tdFU
]
, bgroup "Norm" [ bench "foobarbaz" $ whnf (NU.lookup $ "foo":|["bar","baz"]) tdNU
, bench "footrozjahdajes" $ whnf (NU.lookup $ "foo":|["tro","zja","hda","jes"]) tdNU
, bench "footroendorpvag" $ whnf (NU.lookup $ "foo":|["tro","end","orp","vag"]) tdNU
, bench "foodicbutgea" $ whnf (NU.lookup $ "foo":|["dic","but","gea"]) tdNU
]
]