Size: a a a

2021 April 08

MP

Misha Puzanov in Haskell
кстати тогда вопрос вот такой
defaultConfig 
               & #talDirectory .~ tald
               & #tmpDirectory .~ tmpd
               & #cacheDirectory .~ cached
               & #parallelism .~ Parallelism cpuParallelism ioParallelism
               & #rsyncConf . #rsyncRoot .~ rsyncd    
               -- и еще десяток похожих

каковы шансы что это соптимизируется в однократнрое создание структуры?
источник

MP

Misha Puzanov in Haskell
не то, чтобы это было важно (она создается один раз все равно), но любопытно
источник

JS

Jerzy Syrowiecki in Haskell
корку почитать, наверно
источник

ЖК

Жук Короед in Haskell
Почему такой код (`par` из пакета `parallel`):
foldChunks :: (b -> b -> b) -> ([a] -> b) -> [[a]] -> b
foldChunks g f xs =
   case xs of
   []       -> f []
   (xs:xss) ->
       let rest = foldChunks g f xss
       in  rest `par` (f xs `g` rest)
выполняется так же долго как и
foldChunksPlain :: (b -> b -> b) -> ([a] -> b) -> [[a]] -> b
foldChunksPlain g f = foldr (g . f) (f [])
если вызвать как foldChunks (<>) (Sum . sum) xs или foldChunksPlain (<>) (Sum . sum) xs
а такой - в разы быстрее:
foldChunksMon :: Monoid b => ([a] -> b) -> [[a]] -> b
foldChunksMon f xs =
   case xs of
   []       -> f []
   (xs:xss) ->
       let rest = foldChunksMon f xss
       in  rest `par` (f xs <> rest)
Казалось бы, всего лишь поменял <> на g, а параллелизм судя по всему исчез 👀
источник

ЮБ

Юрий Богомолов... in Haskell
Напишите в https://t.me/haskell_cv, а отсюда и из Haskell Start лучше убрать — тут обсуждаются вопросы по языку/архитектуре/etc, а не коммерческие предложения.
источник

AA

Andrey Amelin in Haskell
Понял-принял:)
источник

L

Lierdakil in Haskell
Вчера обсуждали задачку на среднее от списка за один проход и O(1) по пространству. Возник спор на тему можно ли полагаться на оптимизатор. Я тут погонял тестов и конечно возможно что я в ленивость совсем не въехал, но у меня получается что нельзя не полагаться на оптимизатор. Вот код: https://gist.github.com/lierdakil/00124ea78234cab82543dd122ccbcf56. По результатам профилирования, без оптимизаций все варианты avg имеют пространственную сложность O(n). С оптимизациями O(n) только у avg5, что ожидаемо. GHC 8.10.4. В avg2, avg3 санкам взяться вроде неоткуда, всё обмазано бангами. В корку смотрел. Объясните где я не прав.
источник

GP

Grigory Petrov in Haskell
>но у меня получается что нельзя не полагаться на оптимизатор
дак вчера про это и говорили
источник

L

Lierdakil in Haskell
Я может что-то упустил, читал по дороге с телефона, но по-моему разговор тот закончился ничем.
источник

L

Lierdakil in Haskell
В смысле каждый остался при своём мнении касательно роли оптимизатора в этой задаче
источник

[

[BRM]White Rabbit in Haskell
самый большой мозг чата a.k.a. @A64m_qb0 с самого начала утверждал, что надо полагаться на оптимизатор. а не обмазываться бангами
источник

[

[BRM]White Rabbit in Haskell
а он за счёт своего стажа заслуживает как минимум большего доверия
источник

VD

Velvet Darkness in Haskell
Как же полагаться на оптимизатор, если он сегодня оптимизирует, а завтра не оптимизирует?
источник

VD

Velvet Darkness in Haskell
Как в этой истории с mtl и какой-то либой алгебраических эффектов получилось.
источник

MK

Maxim Koltsov in Haskell
Переходим на строгие языки без гц
источник

[

[BRM]White Rabbit in Haskell
врубил оптимизацию -o4
источник

[

[BRM]White Rabbit in Haskell
оптимизатор стёр мой код
источник

JS

Jerzy Syrowiecki in Haskell
а как вы измеряли пространство?
источник

VD

Velvet Darkness in Haskell
Не включай -o5, а то еще и по лицу даст :D
источник

[

[BRM]White Rabbit in Haskell
за столь неоптимизированный код?
источник