Влияние точки на производительность -Свободный стиль

Я делаю первые -шаги в изучении функционального программирования с использованием F #и только что наткнулся на операторы Forward Pipe (|> )и Forward Composition (>> ).. Сначала я думал, что они просто сахар, а не влияют на окончательный работающий код (, хотя я знаю, что конвейер помогает при выводе типов ).

Однако я наткнулся на эту статью SO: Каковы преимущества и недостатки «бесточечного» стиля в функциональном программировании? У которого есть два интересных и информативных ответа (, которые вместо того, чтобы упростить для меня вещи, открыли целую банку червей, связанных с «точкой -бесплатно» или «бессмысленным» стилем )Мой вывод -домой из этих (и другое прочтение вокруг )заключается в том, что точка -свободна — это дискуссионная область. Как и lambas, свободный стиль point -может сделать код более понятным или намного сложнее, в зависимости от использования. Это может помочь осмысленно назвать вещи.

Но мой вопрос касается комментария к первому ответу :AshleyF размышляет в ответ:

“It seems to me that composition may reduce GC pressure by making it more obvious to the compiler that there is no need to produce intermediate values as in pipelining; helping make the so-called "deforestation" problem more tractable.”

Гаше отвечает:

“The part about improved compilation is not true at all. In most languages, point-free style will actually decrease performances. Haskell relies heavily on optimizations precisely because it's the only way to make the cost of these things bearable. At best, those combinators are inlined away and you get an equivalent pointful version”

Может ли кто-нибудь рассказать о последствиях для производительности? (В целом и конкретно для F #)я просто предположил, что это стиль письма -, и компилятор распутает обе идиомы в эквивалентный код.

17
задан Community 23 May 2017 в 11:52
поделиться