Size: a a a

2021 March 24

LL

Lama Lover in pro.elixir
V
Котаны, кто знает, Enum.map под капотом выполняется параллельно?
Если сделать его параллельным, получится очень жирно
Пустые процессы в эрланге весят около 350 байт, запускаются шедулером, и работают в изолированной памяти, так что на весь Enum.map получится около 2N копирований данных и ещё около 350 * N аллокаций памяти, что очень жирно

Для параллельной обработки данных лучше завести что-нибудь ленивое (чтобы уменьшить количество копирований), и при вычислении разделить задачи на уже созданный пулл процессов
источник

P

Pavel in pro.elixir
Stream же не паралельный он lazy хочешь параллельно тебе Stream + Task.async_stream
источник

P

Pavel in pro.elixir
Lama Lover
Если сделать его параллельным, получится очень жирно
Пустые процессы в эрланге весят около 350 байт, запускаются шедулером, и работают в изолированной памяти, так что на весь Enum.map получится около 2N копирований данных и ещё около 350 * N аллокаций памяти, что очень жирно

Для параллельной обработки данных лучше завести что-нибудь ленивое (чтобы уменьшить количество копирований), и при вычислении разделить задачи на уже созданный пулл процессов
Вот люто плюсую это, если мы мы хотим в мапе умножить каждое четное на 100, то делать это параллельно - это адъ и израилъ. А вот если тебе надо сходить предположим что-то где-то посчитать/обновить/еще что, вот тут ты сам делаешь уровень параллельности который тебе нужен.
источник

V

V in pro.elixir
Понял, спасибо всем
источник

B

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

B

Bogdan in pro.elixir
источник

B

Bogdan in pro.elixir
Task.async_stream точнее…
источник

AD

Anastasiya Dyachenko in pro.elixir
Если там вычисления быстрые и список небольшой, то Enum все равно быстрее будет
источник

АО

Алексей Овчинников... in pro.elixir
V
Понял, спасибо всем
На самом деле конкретную задачу обозначь, может подскажем что путное
источник

V

V in pro.elixir
нет задачи, просто разбираюсь
источник

АО

Алексей Овчинников... in pro.elixir
дело хорошее ))
источник

JK

Jojo Kaba in pro.elixir
Продам годную тему, возможно дальнейшее сотрудничество. Доведу до первой цифры
источник

P

Pavel in pro.elixir
Перепродам годную тему, доведу до второй цифры.
источник

A

AmiK in pro.elixir
Подгоню вашу тему к 3 цифре чтобы научрук не спалил
источник

Е

Евгений in pro.elixir
Народ, как сматчить MapSet, чтобы диалайзер не ругался?
def foo(a = %MapSet{}, b = %MapSet{}) do
   ...
   MapSet.intersection(a, b) # Function call without opaqueness type mismatch.
end

Все потому что MapSet.t() - непрозрачный тип, а каких-то специальных гвардов я не нашел. Что делать-то?
источник

DT

Dmitry Trager in pro.elixir
Ладно научрук, годную тему ещё обнон может спалить
источник

Е

Евгений in pro.elixir
Ну или подскажите как отключить диалайзер для конкретной функции? Не вижу другого выхода.
источник

Е

Евгений in pro.elixir
Все, сам нашел.
источник

AF

Artem F in pro.elixir
Всем привет! Скажите, пожалуйста, удобно ли с помощью Phoenix делать API-сервер? Или этот фреймворк больше предназначен для MVC?
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Artem F
Всем привет! Скажите, пожалуйста, удобно ли с помощью Phoenix делать API-сервер? Или этот фреймворк больше предназначен для MVC?
Удобно
источник