on main help sign in
Show tree for debug
396eb06Vladislav Zavialov
benchmark/Main.hs+3−2
@@ -8,11 +8,12 @@ import Prelude hiding (lookup)
8import Data.Proxy (Proxy (..))
8import Data.Proxy (Proxy (..))
9import Data.Typeable (Typeable)
9import Data.Typeable (Typeable)
10
10
11−import Data.TypeRep.Map (TypeRepMap, empty, insert, lookup, size)
11+import Data.TypeRep.Map (TypeRepMap, empty, insert, lookup, size, dbgShowTree)
12
12
13main :: IO ()
13main :: IO ()
14main = do
14main = do
15 putStrLn $ "size: " ++ (show $ size bigMap)
15 putStrLn $ "size: " ++ (show $ size bigMap)
16+ putStrLn $ "tree:\n" ++ (dbgShowTree bigMap)
16 defaultMain
17 defaultMain
17 [ bench "lookup" $ whnf (lookup :: TypeRepMap -> Maybe Char) bigMap
18 [ bench "lookup" $ whnf (lookup :: TypeRepMap -> Maybe Char) bigMap
18 , bench "insert new" $ whnf (\x -> insert x bigMap) (111 :: Int)
19 , bench "insert new" $ whnf (\x -> insert x bigMap) (111 :: Int)
@@ -21,7 +22,7 @@ main = do
21
22
22-- TypeRepMap of 10000 elements
23-- TypeRepMap of 10000 elements
23bigMap :: TypeRepMap
24bigMap :: TypeRepMap
24−bigMap = buildBigMap 10000 (Proxy :: Proxy Z) empty
25+bigMap = buildBigMap 15 (Proxy :: Proxy Z) empty
25
26
26data Z
27data Z
27data S a
28data S a
src/Data/TypeRep/Map.hs+4
@@ -7,6 +7,7 @@ module Data.TypeRep.Map
7 , insert
7 , insert
8 , lookup
8 , lookup
9 , size
9 , size
10+ , dbgShowTree
10 ) where
11 ) where
11
12
12import Prelude hiding (lookup)
13import Prelude hiding (lookup)
@@ -42,3 +43,6 @@ lookup = fmap unsafeCoerce . LMap.lookup (typeRep (Proxy :: Proxy a)) . unMap
42
43
43size :: TypeRepMap -> Int
44size :: TypeRepMap -> Int
44size = LMap.size . unMap
45size = LMap.size . unMap
46+
47+dbgShowTree :: TypeRepMap -> String
48+dbgShowTree = LMap.showTreeWith (\k _ -> show k) False True . unMap