Skip to content
This repository was archived by the owner on Oct 4, 2020. It is now read-only.

Commit ee9a47b

Browse files
committed
benchmark foldl
1 parent 2f4a2fc commit ee9a47b

File tree

1 file changed

+34
-9
lines changed

1 file changed

+34
-9
lines changed

bench/Bench/Data/Map.purs

+34-9
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
module Bench.Data.Map where
22

33
import Prelude
4+
45
import Control.Monad.Eff (Eff)
56
import Control.Monad.Eff.Console (CONSOLE, log)
6-
import Performance.Minibench (bench, benchWith)
7-
8-
import Data.Tuple (Tuple(..))
7+
import Data.Foldable (foldl)
8+
import Data.List (zipWith)
99
import Data.List as L
1010
import Data.Map as M
11+
import Data.Tuple (Tuple(..))
12+
import Performance.Minibench (bench, benchWith)
1113

1214
benchMap :: Eff (console :: CONSOLE) Unit
1315
benchMap = do
@@ -21,15 +23,22 @@ benchMap = do
2123
log "------------"
2224
benchFromFoldable
2325

26+
log ""
27+
28+
log "foldl"
29+
log "------------"
30+
benchFoldl
31+
2432
where
2533

34+
nats = L.range 0 999999
35+
natPairs = zipWith Tuple nats nats
36+
singletonMap = M.singleton 0 0
37+
smallMap = M.fromFoldable $ L.take 100 natPairs
38+
midMap = M.fromFoldable $ L.take 10000 natPairs
39+
bigMap = M.fromFoldable $ natPairs
40+
2641
benchSize = do
27-
let nats = L.range 0 999999
28-
natPairs = (flip Tuple) unit <$> nats
29-
singletonMap = M.singleton 0 unit
30-
smallMap = M.fromFoldable $ L.take 100 natPairs
31-
midMap = M.fromFoldable $ L.take 10000 natPairs
32-
bigMap = M.fromFoldable $ natPairs
3342

3443
log "size: singleton map"
3544
bench \_ -> M.size singletonMap
@@ -53,3 +62,19 @@ benchMap = do
5362

5463
log $ "fromFoldable (" <> show (L.length natPairs) <> ")"
5564
benchWith 10 \_ -> M.fromFoldable natPairs
65+
66+
benchFoldl = do
67+
let sum = foldl (+) 0
68+
69+
log "foldl: singleton map"
70+
bench \_ -> sum singletonMap
71+
72+
log $ "foldl: small map (" <> show (M.size smallMap) <> ")"
73+
bench \_ -> sum smallMap
74+
75+
log $ "foldl: midsize map (" <> show (M.size midMap) <> ")"
76+
benchWith 100 \_ -> sum midMap
77+
78+
log $ "foldl: big map (" <> show (M.size bigMap) <> ")"
79+
benchWith 10 \_ -> sum bigMap
80+

0 commit comments

Comments
 (0)