@@ -20,6 +20,7 @@ import Data.Traversable (class Traversable, sequenceDefault, traverse, sequence,
2020import Data.TraversableWithIndex (class TraversableWithIndex , traverseWithIndex )
2121import Effect (Effect , foreachE )
2222import Effect.Console (log )
23+ import Performance.Minibench (benchWith )
2324import Test.Assert (assert , assert' )
2425import Unsafe.Coerce (unsafeCoerce )
2526
@@ -58,26 +59,38 @@ main = do
5859 assert $ foldMapDefaultL (\x -> [x]) [1 , 2 ] == [1 , 2 ]
5960
6061 log " Test foldableArray instance is stack safe"
61- testFoldableArrayWith 20000
62+ testFoldableArrayWith 20_000
6263
6364 log " Test foldMapDefaultL"
6465 testFoldableFoldMapDefaultL 20
6566
67+ log " Test foldMapDefaultL is stack safe"
68+ testFoldableFoldMapDefaultL 20_000
69+
6670 log " Test foldMapDefaultR"
6771 testFoldableFoldMapDefaultR 20
6872
73+ log " Test foldMapDefaultR is stack safe"
74+ testFoldableFoldMapDefaultR 20_000
75+
6976 log " Test foldlDefault"
7077 testFoldableFoldlDefault 20
7178
79+ log " Test foldlDefault is stack safe"
80+ testFoldableFoldlDefault 20_000
81+
7282 log " Test foldrDefault"
7383 testFoldableFoldrDefault 20
7484
85+ log " Test foldrDefault is stack safe"
86+ testFoldableFoldrDefault 20_000
87+
7588 foreachE [1 ,2 ,3 ,4 ,5 ,10 ,20 ] \i -> do
7689 log $ " Test traversableArray instance with an array of size: " <> show i
7790 testTraversableArrayWith i
7891
7992 log " Test traversableArray instance is stack safe"
80- testTraversableArrayWith 20000
93+ testTraversableArrayWith 20_000
8194
8295 log " Test traverseDefault"
8396 testTraverseDefault 20
@@ -89,7 +102,7 @@ main = do
89102 testFoldableWithIndexArrayWith 20
90103
91104 log " Test foldableWithIndexArray instance is stack safe"
92- testFoldableWithIndexArrayWith 20000
105+ testFoldableWithIndexArrayWith 20_000
93106
94107 log " Test FoldableWithIndex laws for array instance"
95108 testFoldableWithIndexLawsOn
@@ -561,3 +574,22 @@ instance bitraversableBTD :: Bitraversable BitraverseDefault where
561574instance bitraversableBSD :: Bitraversable BisequenceDefault where
562575 bitraverse f g (BSD m) = map BSD (bitraverse f g m)
563576 bisequence m = bisequenceDefault m
577+
578+
579+ benchmarkDefaultFolds :: Effect Unit
580+ benchmarkDefaultFolds = do
581+ let
582+ sm = arrayFrom1UpTo 1_000
583+ m = arrayFrom1UpTo 10_000
584+ lg = arrayFrom1UpTo 100_000
585+ xl = arrayFrom1UpTo 1_000_000
586+
587+ log " \n benching 1,000"
588+ benchWith 1000 $ \_ -> foldrDefault (+) 0 sm
589+ log " \n benching 10,000"
590+ benchWith 1000 $ \_ -> foldrDefault (+) 0 m
591+ log " \n benching 100,000"
592+ benchWith 100 $ \_ -> foldrDefault (+) 0 lg
593+ log " \n benching 1,000,000"
594+ benchWith 50 $ \_ -> foldrDefault (+) 0 xl
595+
0 commit comments