X
cabal new-install
ставил? Через stack
ещё попробуй. Или через родной пакетный менеджер дистрибутива.Size: a a a
A
A
MK
IO
ContT withNecropostMode
foldl'
с бангом куда удачнееreplaceWithMinimumFoldl' :: [Int] -> [Int]N = 10000, default rtsopts:
replaceWithMinimumFoldl' l = fl
where
(!fm, fl) = foldl' (\(cm, cl) x -> (cm `min` x, fm:cl)) (head l, []) l
benchmarking foldl' by @aadaa_fgtaa 78.47 μs (77.92 μs .. 78.95 μs)Ну и кончено при больших N, когда новый лист в nursery не лезет, наивные версии будут куда быстрее, тк они список лениво строят, а однопроходные строят сразу весь и грузят гц. Так что для списков это наверное такая себе идея. Может быть для векторов лучше будет, хотя с анбоксед не работает, так что все равно наверное быстрее просто дважды пройтись.
benchmarking recursive strict by @kana_sama 135.9 μs (134.2 μs .. 138.0 μs)
benchmarking fix strict by @lierdakil 149.5 μs (148.2 μs .. 151.3 μs)
benchmarking naiveReplace 140.5 μs (139.4 μs .. 142.0 μs)
benchmarking naiveReplicate 146.8 μs (141.2 μs .. 154.3 μs)
benchmarking foldl' by @aadaa_fgtaa 62.76 ms (59.64 ms .. 65.79 ms)N = 1000000, -A128M
benchmarking recursive strict by @kana_sama 85.19 ms (82.22 ms .. 88.49 ms)
benchmarking fix strict by @lierdakil 98.12 ms (91.22 ms .. 105.8 ms)
benchmarking naiveReplace 16.05 ms (15.92 ms .. 16.20 ms)
benchmarking naiveReplicate 14.77 ms (14.64 ms .. 14.93 ms)
benchmarking foldl' by @aadaa_fgtaa 12.44 ms (12.08 ms .. 12.89 ms)А вот почему наивные версии с большем хипом медленнее работают для меня тоже загадка
benchmarking recursive strict by @kana_sama 21.47 ms (21.23 ms .. 21.75 ms)
benchmarking fix strict by @lierdakil 24.00 ms (23.39 ms .. 24.67 ms)
benchmarking naiveReplace 20.97 ms (20.74 ms .. 21.24 ms)
benchmarking naiveReplicate 18.54 ms (17.52 ms .. 19.52 ms)