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

Commit ab72859

Browse files
committed
benchmark foldr
Reveals that it is very, very un-stack-safe
1 parent 269c0a5 commit ab72859

File tree

1 file changed

+19
-1
lines changed

1 file changed

+19
-1
lines changed

bench/Bench/Data/Map.purs

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import Prelude
44

55
import Control.Monad.Eff (Eff)
66
import Control.Monad.Eff.Console (CONSOLE, log)
7-
import Data.Foldable (foldl)
7+
import Data.Foldable (foldl, foldr)
88
import Data.List (zipWith)
99
import Data.List as L
1010
import Data.Map as M
@@ -29,6 +29,10 @@ benchMap = do
2929
log "------------"
3030
benchFoldl
3131

32+
log "foldr"
33+
log "------------"
34+
benchFoldr
35+
3236
where
3337

3438
nats = L.range 0 999999
@@ -78,3 +82,17 @@ benchMap = do
7882
log $ "foldl: big map (" <> show (M.size bigMap) <> ")"
7983
benchWith 10 \_ -> sum bigMap
8084

85+
benchFoldr = do
86+
let sum = foldr (+) 0
87+
88+
log "foldr: singleton map"
89+
bench \_ -> sum singletonMap
90+
91+
log $ "foldr: small map (" <> show (M.size smallMap) <> ")"
92+
bench \_ -> sum smallMap
93+
94+
log $ "foldr: midsize map (" <> show (M.size midMap) <> ")"
95+
benchWith 100 \_ -> sum midMap
96+
97+
log $ "foldr: big map (" <> show (M.size bigMap) <> ")"
98+
benchWith 10 \_ -> sum bigMap

0 commit comments

Comments
 (0)