Size: a a a

2020 January 18

RS

Roman Suleymanov in pro.elixir
по коду reduce видно, что каждый раз просто новый объект создается (мап/тапл/лист и т д), но в самом бим вроде как есть оптимизации, в зависимости от типа обьекта(в листах и таплах по крайней мере при дописывании головы), поэтому собственно все рекурсии с листами при дописывании головы не раздуваются по памяти
источник

IK

Ilya Kaznacheev in pro.elixir
Ну с листами все ок, это понятно, ссылками как угодно вертеть можно
источник

IK

Ilya Kaznacheev in pro.elixir
А вот тупл при раздувании получается что разбросан по хипу?
источник

RS

Roman Suleymanov in pro.elixir
с мапами скорее всего тоже, там же просто ссылки на ключи новые
источник

IK

Ilya Kaznacheev in pro.elixir
Или реадлокация происходит и перемещение?
источник

IK

Ilya Kaznacheev in pro.elixir
Мапа тоже должна ссылки на бакеты хранить
источник

IK

Ilya Kaznacheev in pro.elixir
И хеши
источник

RS

Roman Suleymanov in pro.elixir
мне кажется просто создается новый объект и ссылка заменяется, старое удаляется
источник

RS

Roman Suleymanov in pro.elixir
но это не точно
источник

IK

Ilya Kaznacheev in pro.elixir
Обычно при разрастании они перемещаются в новое место (так в го, по крайней мере)
источник

RS

Roman Suleymanov in pro.elixir
это надо beam ковырять сам, чтобы точно понять
источник

IK

Ilya Kaznacheev in pro.elixir
Тут узкое место в том, что при итерации по n элементам такая операция произойдет условно ln(n) раз
источник

IK

Ilya Kaznacheev in pro.elixir
Поэтому в го, например, принято сразу выделить память под n элементов
источник

IK

Ilya Kaznacheev in pro.elixir
Интересно, как с этим в биме, в примере как выше
источник

RS

Roman Suleymanov in pro.elixir
ну в C/C++ и т д тоже
источник

IK

Ilya Kaznacheev in pro.elixir
Roman Suleymanov
ну в C/C++ и т д тоже
Само собой
источник

RS

Roman Suleymanov in pro.elixir
я думаю нет смысла гадать, надо лезть в код бим или найти материалы какие-то по этому поводу
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Ilya Kaznacheev
А вот тупл при раздувании получается что разбросан по хипу?
Как можно раздуть тупл?
источник

IK

Ilya Kaznacheev in pro.elixir
Źmićer Rubinštejn
Как можно раздуть тупл?
Ну... Добавлять элементы
источник

IK

Ilya Kaznacheev in pro.elixir
Понято, что это будет новый тупл
источник