Skip to content

Commit

Permalink
Group all HashMap benchmarks
Browse files Browse the repository at this point in the history
  • Loading branch information
tibbe committed Oct 18, 2012
1 parent df6c50e commit d878802
Showing 1 changed file with 83 additions and 81 deletions.
164 changes: 83 additions & 81 deletions benchmarks/Benchmarks.hs
Original file line number Diff line number Diff line change
Expand Up @@ -92,98 +92,100 @@ main = do
, bench "fromList" $ whnf IM.fromList elemsI
]

-- * Basic interface
, bgroup "lookup"
[ bench "String" $ whnf (lookup keys) hm
, bench "ByteString" $ whnf (lookup keysBS) hmbs
, bench "Int" $ whnf (lookup keysI) hmi
]
, bgroup "lookup-miss"
[ bench "String" $ whnf (lookup keys') hm
, bench "ByteString" $ whnf (lookup keysBS') hmbs
, bench "Int" $ whnf (lookup keysI') hmi
]
, bgroup "insert"
[ bench "String" $ whnf (insert elems) HM.empty
, bench "ByteString" $ whnf (insert elemsBS) HM.empty
, bench "Int" $ whnf (insert elemsI) HM.empty
]
, bgroup "insert-dup"
[ bench "String" $ whnf (insert elems) hm
, bench "ByteString" $ whnf (insert elemsBS) hmbs
, bench "Int" $ whnf (insert elemsI) hmi
]
, bgroup "delete"
[ bench "String" $ whnf (delete keys) hm
, bench "ByteString" $ whnf (delete keysBS) hmbs
, bench "Int" $ whnf (delete keysI) hmi
]
, bgroup "delete-miss"
[ bench "String" $ whnf (delete keys') hm
, bench "ByteString" $ whnf (delete keysBS') hmbs
, bench "Int" $ whnf (delete keysI') hmi
]
, bgroup "HashMap"
[ -- * Basic interface
bgroup "lookup"
[ bench "String" $ whnf (lookup keys) hm
, bench "ByteString" $ whnf (lookup keysBS) hmbs
, bench "Int" $ whnf (lookup keysI) hmi
]
, bgroup "lookup-miss"
[ bench "String" $ whnf (lookup keys') hm
, bench "ByteString" $ whnf (lookup keysBS') hmbs
, bench "Int" $ whnf (lookup keysI') hmi
]
, bgroup "insert"
[ bench "String" $ whnf (insert elems) HM.empty
, bench "ByteString" $ whnf (insert elemsBS) HM.empty
, bench "Int" $ whnf (insert elemsI) HM.empty
]
, bgroup "insert-dup"
[ bench "String" $ whnf (insert elems) hm
, bench "ByteString" $ whnf (insert elemsBS) hmbs
, bench "Int" $ whnf (insert elemsI) hmi
]
, bgroup "delete"
[ bench "String" $ whnf (delete keys) hm
, bench "ByteString" $ whnf (delete keysBS) hmbs
, bench "Int" $ whnf (delete keysI) hmi
]
, bgroup "delete-miss"
[ bench "String" $ whnf (delete keys') hm
, bench "ByteString" $ whnf (delete keysBS') hmbs
, bench "Int" $ whnf (delete keysI') hmi
]

-- Combine
, bench "union" $ whnf (HM.union hmi) hmi2
-- Combine
, bench "union" $ whnf (HM.union hmi) hmi2

-- Transformations
, bench "map" $ whnf (HM.map (\ v -> v + 1)) hmi
-- Transformations
, bench "map" $ whnf (HM.map (\ v -> v + 1)) hmi

-- * Difference and intersection
, bench "difference" $ whnf (HM.difference hmi) hmi2
, bench "intersection" $ whnf (HM.intersection hmi) hmi2
-- * Difference and intersection
, bench "difference" $ whnf (HM.difference hmi) hmi2
, bench "intersection" $ whnf (HM.intersection hmi) hmi2

-- Folds
, bench "foldl'" $ whnf (HM.foldl' (+) 0) hmi
, bench "foldr" $ nf (HM.foldr (:) []) hmi
-- Folds
, bench "foldl'" $ whnf (HM.foldl' (+) 0) hmi
, bench "foldr" $ nf (HM.foldr (:) []) hmi

-- Filter
, bench "filter" $ whnf (HM.filter (\ v -> v .&. 1 == 0)) hmi
, bench "filterWithKey" $ whnf (HM.filterWithKey (\ k _ -> k .&. 1 == 0)) hmi
-- Filter
, bench "filter" $ whnf (HM.filter (\ v -> v .&. 1 == 0)) hmi
, bench "filterWithKey" $ whnf (HM.filterWithKey (\ k _ -> k .&. 1 == 0)) hmi

-- Size
, bgroup "size"
[ bench "String" $ whnf HM.size hm
, bench "ByteString" $ whnf HM.size hmbs
, bench "Int" $ whnf HM.size hmi
]
-- Size
, bgroup "size"
[ bench "String" $ whnf HM.size hm
, bench "ByteString" $ whnf HM.size hmbs
, bench "Int" $ whnf HM.size hmi
]

-- fromList
, bgroup "fromList"
[ bgroup name
[ bgroup "long"
[ bench "String" $ whnf fl1 elems
, bench "ByteString" $ whnf fl2 elemsBS
, bench "Int" $ whnf fl3 elemsI
]
, bgroup "short"
[ bench "String" $ whnf fl1 elemsDup
, bench "ByteString" $ whnf fl2 elemsDupBS
, bench "Int" $ whnf fl3 elemsDupI
-- fromList
, bgroup "fromList"
[ bgroup name
[ bgroup "long"
[ bench "String" $ whnf fl1 elems
, bench "ByteString" $ whnf fl2 elemsBS
, bench "Int" $ whnf fl3 elemsI
]
, bgroup "short"
[ bench "String" $ whnf fl1 elemsDup
, bench "ByteString" $ whnf fl2 elemsDupBS
, bench "Int" $ whnf fl3 elemsDupI
]
]
| (name,fl1,fl2,fl3)
<- [("Base",HM.fromList,HM.fromList,HM.fromList)
,("insert",fromList_insert,fromList_insert,fromList_insert)]
]
| (name,fl1,fl2,fl3)
<- [("Base",HM.fromList,HM.fromList,HM.fromList)
,("insert",fromList_insert,fromList_insert,fromList_insert)]
]
-- fromList
, bgroup "fromListWith"
[ bgroup name
[ bgroup "long"
[ bench "String" $ whnf (fl1 (+)) elems
, bench "ByteString" $ whnf (fl2 (+)) elemsBS
, bench "Int" $ whnf (fl3 (+)) elemsI
]
, bgroup "short"
[ bench "String" $ whnf (fl1 (+)) elemsDup
, bench "ByteString" $ whnf (fl2 (+)) elemsDupBS
, bench "Int" $ whnf (fl3 (+)) elemsDupI
-- fromList
, bgroup "fromListWith"
[ bgroup name
[ bgroup "long"
[ bench "String" $ whnf (fl1 (+)) elems
, bench "ByteString" $ whnf (fl2 (+)) elemsBS
, bench "Int" $ whnf (fl3 (+)) elemsI
]
, bgroup "short"
[ bench "String" $ whnf (fl1 (+)) elemsDup
, bench "ByteString" $ whnf (fl2 (+)) elemsDupBS
, bench "Int" $ whnf (fl3 (+)) elemsDupI
]
]
| (name,fl1,fl2,fl3)
<- [("Base",HM.fromListWith,HM.fromListWith,HM.fromListWith)
,("insert",fromListWith_insert,fromListWith_insert,fromListWith_insert)]
]
| (name,fl1,fl2,fl3)
<- [("Base",HM.fromListWith,HM.fromListWith,HM.fromListWith)
,("insert",fromListWith_insert,fromListWith_insert,fromListWith_insert)]
]
]
where
Expand Down

0 comments on commit d878802

Please sign in to comment.