Size: a a a

2021 March 24

MG

Max Gorin in pro.elixir
думаю, ничего не будет параллельно без того, чтобы ты об этом совершенно точно знал :)
источник

V

V in pro.elixir
И по каким признаком я это узнаю?
источник

V

V in pro.elixir
Какие ещё есть средства параллелизации кроме Task.async/Task.await_many ?
источник

V

V in pro.elixir
Если Enum.map под капотом не параллелен, тогда я немного не понимаю, а как это и почему это так? Ведь actor model из коробки же. И map параллелится by-design.
источник

Е

Евгений in pro.elixir
Этож не хацкель
источник

V

V in pro.elixir
Что "эрланг" != "хацкель" не секрет. Можно раскрыть мысль, что из этого следует? Что он не ленивый, и вообще не для этого спроектирован?
источник

Е

Евгений in pro.elixir
У эликсира функции зачастую грязные.
источник

V

V in pro.elixir
Что он до известной степени императивный?
источник

V

V in pro.elixir
Евгений
У эликсира функции зачастую грязные.
ну, часть функций, да. IO можно дёрнуть отовсюду. а глобальных переменных нет
источник

Е

Евгений in pro.elixir
Не только IO. NIFы и просто сообщения между процессами.
Поэтому никакого неявного распараллеливания.
источник

V

V in pro.elixir
Ага, так понятнее, спасибо
источник

V

V in pro.elixir
Т.е. Enum.map по сути эквивалентен for
источник

V

V in pro.elixir
А какие явные признаки параллелизации кроме Task.async/Task.await_many?
источник

AN

Alexey Novoselov in pro.elixir
V
А какие явные признаки параллелизации кроме Task.async/Task.await_many?
Использование GenStage, Flow или Broadway в коде намекает на параллелизацию вычислений
источник

AN

Alexey Novoselov in pro.elixir
А вообще эрланг спроектирован для обработки тысяч и миллинов соединений, но каждое соединение чаще всего обслуживается последовательным кодом. Даже GenServer.call() - последовательная опрерация и весит вызывающий и вызываемый процессы, пока не вернет ответ
источник

A ß in pro.elixir
V
Т.е. Enum.map по сути эквивалентен for
зависит от того, как ты его используешь, может в reduce раскрыться
источник

VS

Vladimir Sekisov in pro.elixir
Alexey Novoselov
А вообще эрланг спроектирован для обработки тысяч и миллинов соединений, но каждое соединение чаще всего обслуживается последовательным кодом. Даже GenServer.call() - последовательная опрерация и весит вызывающий и вызываемый процессы, пока не вернет ответ
noreply и запускайте таск, который вернёт ответ клиенту.
источник

AN

Alexey Novoselov in pro.elixir
Vladimir Sekisov
noreply и запускайте таск, который вернёт ответ клиенту.
Да, так оно. Я к тому, что искаробки ничего не параллельно, пока ты явно не распараллелишь руками
источник

IA

Ivan Ananev in pro.elixir
V
А какие явные признаки параллелизации кроме Task.async/Task.await_many?
источник

АО

Алексей Овчинников... in pro.elixir
Alexey Novoselov
Да, так оно. Я к тому, что искаробки ничего не параллельно, пока ты явно не распараллелишь руками
изкаропки параллельно работают процессы. Немного другой слой абстракции. Обработка массивов данных из коробки последовательная внутри одного процесса. Чтобы распараллелить надо запустить несколько процессов. Как говорили выше - смотри Stream, Broadway, Flow. Параллелить всё и вся тоже не правильно, это надо делать с умом и пониманием для чего и как мы параллелим
источник