Почему функциональщина считается не эффективной?
От: varenikAA https://www.youtube.com/playlist?list=PLtrvASfI1KW7VOYRKjglcagQzWLoxlncl
Дата: 27.02.21 03:44
Оценка: -2 :)
Вроде бы даже не так уж и не эффективна:

https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/fsharpcore-csharpcore.html
Re: Почему функциональщина считается не эффективной?
От: LaptevVV Россия  
Дата: 27.02.21 06:08
Оценка: +2
AA>Вроде бы даже не так уж и не эффективна:
AA>https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/fsharpcore-csharpcore.html
Под капотом — одна и та же виртуальная машина.
Поэтому сравнение не очень информативно.
Если б сравнили хаскел с додиезом
Или хаскел с фадиезом
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: Почему функциональщина считается не эффективной?
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 27.02.21 07:43
Оценка: +2
Здравствуйте, varenikAA, Вы писали:

AA>Вроде бы даже не так уж и не эффективна:


AA>https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/fsharpcore-csharpcore.html


Потому что большинство алгоритмов подразумевают изменение данных на месте. Так же большинство программистов в основном умеют оперировать алгоритмами изменяющими данные, а не работающие с неизменяемыми структурами. Совокупность этих факторов делает программы на функциональных языках относительно медленными. Но, с другой стороны, кода на Хаскеле ощутимо быстрее Питона, так что
Отредактировано 27.02.2021 7:44 kaa.python . Предыдущая версия .
Re: Почему функциональщина считается не эффективной?
От: Poopy Joe Бельгия  
Дата: 27.02.21 08:07
Оценка: +4 :)
Здравствуйте, varenikAA, Вы писали:

AA>Вроде бы даже не так уж и не эффективна:


AA>https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/fsharpcore-csharpcore.html


Это смотря как эту эффективность измерять. Если программа на f# в три раза короче, в десять раз меньше ошибок и при этом теряет 1% производительности в сравнении с c#, то и хрен с ней. Лучше взять комп побыстрее.
Re: Почему функциональщина считается не эффективной?
От: Ночной Смотрящий Россия  
Дата: 27.02.21 10:04
Оценка: +5
Здравствуйте, varenikAA, Вы писали:

AA>Вроде бы даже не так уж и не эффективна:


Потому что железо работает с изменяющимся стейтом. И если на отдельных бенчмарках это не так критично, то в среднем по больнице ситуация далека от радужной.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re: Почему функциональщина считается не эффективной?
От: Jack128  
Дата: 27.02.21 11:07
Оценка: 1 (1) +4
Здравствуйте, varenikAA, Вы писали:

AA>Вроде бы даже не так уж и не эффективна:


Открываю исходники первого же теста и вижу как функциональщина из всех щелей прёт:

            let mutable total = ps.[0]
            for i = 1 to ps.Length-1 do
                total <- total + ps.[i]
                ps.[i] <- total


AA>https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/fsharpcore-csharpcore.html
Re[2]: Почему функциональщина считается не эффективной?
От: omgOnoz  
Дата: 27.02.21 11:11
Оценка: +1
Здравствуйте, Jack128, Вы писали:

J>Открываю исходники первого же теста и вижу как функциональщина из всех щелей прёт:


J>
J>            let mutable total = ps.[0]
J>            for i = 1 to ps.Length-1 do
J>                total <- total + ps.[i]
J>                ps.[i] <- total
J>


Это печалька, оно хоть какое-то ревью проходит перед публикацией?
Re: Почему функциональщина считается не эффективной?
От: AeroSun  
Дата: 27.02.21 11:23
Оценка:
Здравствуйте, varenikAA, Вы писали:

AA>Почему функциональщина считается не эффективной?


А почему должно быть иначе?
Re[2]: Почему функциональщина считается не эффективной?
От: wl. Россия  
Дата: 27.02.21 11:35
Оценка: 2 (1)
Здравствуйте, LaptevVV, Вы писали:

LVV>Под капотом — одна и та же виртуальная машина.

...
LVV>Или хаскел с фадиезом

там есть такая вкладка
https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/fsharpcore-ghc.html
Re[2]: Почему функциональщина считается не эффективной?
От: varenikAA https://www.youtube.com/playlist?list=PLtrvASfI1KW7VOYRKjglcagQzWLoxlncl
Дата: 27.02.21 11:41
Оценка:
Здравствуйте, AeroSun, Вы писали:

AS>Здравствуйте, varenikAA, Вы писали:


AA>>Почему функциональщина считается не эффективной?


AS>А почему должно быть иначе?


Пуркуа па, почему бы и нет?
Хотя углубившись по ссылке был сильно удивлен что все императивно довольно в фарше.
но ведь по большинству тестов обошел шарпик. хм.
Re: Почему функциональщина считается не эффективной?
От: Pavel Dvorkin Россия  
Дата: 27.02.21 12:13
Оценка: -1
Здравствуйте, varenikAA, Вы писали:

AA>Вроде бы даже не так уж и не эффективна:


AA>https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/fsharpcore-csharpcore.html


Потому что на ней можно вот такое получить.

http://rsdn.org/forum/flame.comp/4098976.1
Автор: Pavel Dvorkin
Дата: 29.12.10
With best regards
Pavel Dvorkin
Re[3]: Почему функциональщина считается не эффективной?
От: LaptevVV Россия  
Дата: 27.02.21 13:08
Оценка: +1
wl.>там есть такая вкладка
wl.>https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/fsharpcore-ghc.html
Да, что-то у меня с глазами...
По цифрам на некоторых задачах хаскел вполне фадиез уделывает.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: Почему функциональщина считается не эффективной?
От: HFTMan  
Дата: 27.02.21 13:39
Оценка:
Здравствуйте, varenikAA, Вы писали:

AA>Вроде бы даже не так уж и не эффективна:


AA>https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/fsharpcore-csharpcore.html

А ты код смотрел? Там функционального одно название языка F#, а сам код-сплошная императивщина же, которую на шарпе удобнее писать.
Re[2]: Почему функциональщина считается не эффективной?
От: varenikAA https://www.youtube.com/playlist?list=PLtrvASfI1KW7VOYRKjglcagQzWLoxlncl
Дата: 27.02.21 13:55
Оценка: :)
Здравствуйте, HFTMan, Вы писали:

HFT>Здравствуйте, varenikAA, Вы писали:


AA>>Вроде бы даже не так уж и не эффективна:


AA>>https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/fsharpcore-csharpcore.html

HFT>А ты код смотрел? Там функционального одно название языка F#, а сам код-сплошная императивщина же, которую на шарпе удобнее писать.

сам удивляюсь, но все же синтаксис фш ближе к мат записи, по-моему читать его не сложнее чем си,
правда с индексатором массива некрасиво получилось. потому мой фан ближе к лиспу, он как си только без кучи непонятных стрелочек и звездочек, хотя да эффективность мала,
вопрос открыт. эффективность выполнения, производительность труда или корректность логики.
Re[2]: Почему функциональщина считается не эффективной?
От: σ  
Дата: 27.02.21 13:56
Оценка:
AA>>Вроде бы даже не так уж и не эффективна:
AA>>https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/fsharpcore-csharpcore.html
LVV>Под капотом — одна и та же виртуальная машина.
LVV>Поэтому сравнение не очень информативно.
А сравнение, скажем, C++ с OCaml информативно? Под капотом один и тот же x86.
Re[3]: Почему функциональщина считается не эффективной?
От: LaptevVV Россия  
Дата: 27.02.21 14:03
Оценка: +1
AA>>>Вроде бы даже не так уж и не эффективна:
AA>>>https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/fsharpcore-csharpcore.html
LVV>>Под капотом — одна и та же виртуальная машина.
LVV>>Поэтому сравнение не очень информативно.
σ>А сравнение, скажем, C++ с OCaml информативно? Под капотом один и тот же x86.
Фадиез и Додиез делались в одной фирме.
С++ и Окамл — разные и по семантике, и по разработчикам.
Если бы делали одни и те же разработчики, то можно было бы говорить о разнице в скоростях.
А так фактически сравнивается квалификация разных команд (помимо разнице в семантике).
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[3]: Почему функциональщина считается не эффективной?
От: HFTMan  
Дата: 27.02.21 14:14
Оценка: +1
Здравствуйте, varenikAA, Вы писали:

AA>сам удивляюсь, но все же синтаксис фш ближе к мат записи, по-моему читать его не сложнее чем си,

AA>правда с индексатором массива некрасиво получилось. потому мой фан ближе к лиспу, он как си только без кучи непонятных стрелочек и звездочек, хотя да эффективность мала,
AA>вопрос открыт. эффективность выполнения, производительность труда или корректность логики.
Писать лично мне код приятнее на F#, будь возможность-все на нем бы делал, причем в функциональном стиле.
Но есть нюанс, чисто функциональные подходы создают большой мемори траффик+интенсивную работу GC(если мы говорим конкретно о GC), что сильно ухудшает применимость функциональщины в задачах, где требуется latency.
Отредактировано 27.02.2021 14:15 HFTMan . Предыдущая версия .
Re[4]: Почему функциональщина считается не эффективной?
От: HFTMan  
Дата: 27.02.21 14:18
Оценка: 2 (1)
Здравствуйте, LaptevVV, Вы писали:

AA>>>>Вроде бы даже не так уж и не эффективна:

AA>>>>https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/fsharpcore-csharpcore.html
LVV>>>Под капотом — одна и та же виртуальная машина.
LVV>>>Поэтому сравнение не очень информативно.
σ>>А сравнение, скажем, C++ с OCaml информативно? Под капотом один и тот же x86.
LVV>Фадиез и Додиез делались в одной фирме.
LVV>С++ и Окамл — разные и по семантике, и по разработчикам.
F# и OCaml являются представителями одного семейства языков-ML.
По истории происхождения F# тут подробнее:
https://fsharp.org/history/hopl-draft-1.pdf
Re[2]: Почему функциональщина считается не эффективной?
От: HFTMan  
Дата: 27.02.21 14:23
Оценка:
Здравствуйте, Poopy Joe, Вы писали:

PJ>Здравствуйте, varenikAA, Вы писали:


AA>>Вроде бы даже не так уж и не эффективна:


AA>>https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/fsharpcore-csharpcore.html


PJ>Это смотря как эту эффективность измерять. Если программа на f# в три раза короче, в десять раз меньше ошибок и при этом теряет 1% производительности в сравнении с c#, то и хрен с ней. Лучше взять комп побыстрее.

Там, где код на F# идет в ноздрю по скорости с C#-это код как правило императивный, который проще всего писать тогда сразу на C#.
Re[2]: Почему функциональщина считается не эффективной?
От: varenikAA https://www.youtube.com/playlist?list=PLtrvASfI1KW7VOYRKjglcagQzWLoxlncl
Дата: 27.02.21 14:30
Оценка: +1
Здравствуйте, Pavel Dvorkin, Вы писали:


PD>Потому что на ней можно вот такое получить.


PD>http://rsdn.org/forum/flame.comp/4098976.1
Автор: Pavel Dvorkin
Дата: 29.12.10


Согласен, хотя не совсем често, т.к. в первом случае вы получили новую коллекцию, а во втором мутировали оригинал.
код по факту разный

  F#
open System.Diagnostics

let watch f = 
    let sw = Stopwatch()
    sw.Start()
    f()
    sw.Stop()
    sw.Elapsed

let size = 1000

let origin = Array.init<int> size (fun i -> i + 1)

let funway () = 
    origin 
    |> Array.mapi (fun i e -> if i = 0 then e else (e + origin.[ i - 1]))
    |> ignore

let impway1 () =
    let copy = Array.zeroCreate<int>(size)
    origin.CopyTo(copy, 0)
    for i = 1 to copy.Length - 1 do
        copy.[i] <- copy.[i] + copy.[i - 1]
    copy |> ignore

let impway2 () =
    for i = 1 to origin.Length - 1 do
        origin.[i] <- origin.[i] + origin.[i - 1]

funway |> watch  |> printfn "%A" //  => 00:00:00.0013835
impway1 |> watch  |> printfn "%A" // => 00:00:00.0004016
impway2 |> watch  |> printfn "%A" // => 00:00:00.0001720
Отредактировано 27.02.2021 14:43 vaa . Предыдущая версия .
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.