Size: a a a

2019 October 04

SP

Sergey Prokhorov in ErlangRus
Evgeny M.
и вот кстати мне очень не понравилось то, что в erlang 22 стали добавлять новые функции и модули в минорных версиях. Тянуть старые версии теперь опасно.
источник

SP

Sergey Prokhorov in ErlangRus
Gleb Kolokolov
а как от него избавиться? например клиент раббита его использует
если библиотека его уже использует, то хз. Форкать и патчить. Но в целом есть такая штука https://github.com/tolbrino/hut, я стараюст везде использовать
источник

TH

Taras Halturin in ErlangRus
Maksim Lapshin
Перечитать исходники, задаться вопросами:
1) оно умеет само ротировать файлы?
2) как оно ведет себя, если запись тормозит
3) как оно себя ведет, когда в лог уходит обьект на гигабайт?
Если в лог уходит объект размером с гигабайт, то тут не проблема логера, тут проблема с головой разраба, соответственно не логер править, а разраба лечить нужно (и то, это если есть шансы вылечить) 😄
источник

В

Вертолетчик in ErlangRus
Мужики, а кто-нибудь может сказать, ЧТО эффективнее гонять между процессами (НЕ в сокет): большой binary или большой iolist?
Ну то есть:
Pid ! «BigBinary»
или
Pid ! [LargeNestedIOList]

С учетом того, что:
iolist_size(«BigBinary») = iolist_size([LargeNestedIOList])
источник

В

Вертолетчик in ErlangRus
Гугл не помогает в этом плане чё-то
источник

AF

Andrey Fadeev in ErlangRus
Вертолетчик
Мужики, а кто-нибудь может сказать, ЧТО эффективнее гонять между процессами (НЕ в сокет): большой binary или большой iolist?
Ну то есть:
Pid ! «BigBinary»
или
Pid ! [LargeNestedIOList]

С учетом того, что:
iolist_size(«BigBinary») = iolist_size([LargeNestedIOList])
http://erlang.org/doc/efficiency_guide/processes.html#process-messages

> All data in messages between Erlang processes is copied, except for refc binaries on the same Erlang node.

Т.е. в зависимости от того, что из себя представляет LargeNestedIOList будет или большая разница, или небольшая. Если LargeNestedIOList = [«BigBinary»], то разницы не будет. А в другом вырожденном случае LargeNestedIOList = [1, 2, 3, … , 100500], список будет скопирован полностью, а «BigBinary» нет.
источник

В

Вертолетчик in ErlangRus
Andrey Fadeev
http://erlang.org/doc/efficiency_guide/processes.html#process-messages

> All data in messages between Erlang processes is copied, except for refc binaries on the same Erlang node.

Т.е. в зависимости от того, что из себя представляет LargeNestedIOList будет или большая разница, или небольшая. Если LargeNestedIOList = [«BigBinary»], то разницы не будет. А в другом вырожденном случае LargeNestedIOList = [1, 2, 3, … , 100500], список будет скопирован полностью, а «BigBinary» нет.
Спасибо. Я, собссно, этим вопросом задался, когда один авторитетный ковбоец выпустил версию 2.0. По сравнению с первой версией у него как раз такой оверхед получается (пересылка больших HTML между процессами) из-за его реализации http/2 в ковбое. Не всё так однозначно, судя по его ответам, которые вообще говоря пространственные. Судите сами:
источник

В

Вертолетчик in ErlangRus
источник

В

Вертолетчик in ErlangRus
В общем, типа переделывать ни фига не будет. Обычный опенсорный подход конечно )))
источник

SP

Sergey Prokhorov in ErlangRus
Ну если нельзя избавиться от пересылки (как я понял, в http2 нельзя из за мултиплексирования) то тут ничем не помочь
источник

AF

Andrey Fadeev in ErlangRus
Вертолетчик
Спасибо. Я, собссно, этим вопросом задался, когда один авторитетный ковбоец выпустил версию 2.0. По сравнению с первой версией у него как раз такой оверхед получается (пересылка больших HTML между процессами) из-за его реализации http/2 в ковбое. Не всё так однозначно, судя по его ответам, которые вообще говоря пространственные. Судите сами:
Ну вопрос выше был про эффективноть пересылки. В PR возражают, что всё остальное там, кроме пересылки, лучше работает с iolist. Не вижу противоречия. Особенно если учесть, что едва ли там на практике ходят списки интов, где разница была бы сильнее всего заметна.
источник

В

Вертолетчик in ErlangRus
Sergey Prokhorov
Ну если нельзя избавиться от пересылки (как я понял, в http2 нельзя из за мултиплексирования) то тут ничем не помочь
Это понятно, но мне не нужен http2... между ковбоем и нгинксом в этом нет никакого смысла кроме лишнего оверхеда в ковбое. Поэтому мне нужно тупо слать данные сразу в сокет, он отказался от такой опции.
источник

В

Вертолетчик in ErlangRus
Сейчас посмотрел, как Phoenix рендерит хтмл-шаблоны. Оказывается в иолисты.
источник

В

Вертолетчик in ErlangRus
источник

EM

Evgeny M. in ErlangRus
Вертолетчик
Это понятно, но мне не нужен http2... между ковбоем и нгинксом в этом нет никакого смысла кроме лишнего оверхеда в ковбое. Поэтому мне нужно тупо слать данные сразу в сокет, он отказался от такой опции.
да практически все что уходит в i/o имеет смысл делать на iolist. erlydtl кстати тоже рендерит в iolist
источник

В

Вертолетчик in ErlangRus
Evgeny M.
да практически все что уходит в i/o имеет смысл делать на iolist. erlydtl кстати тоже рендерит в iolist
Поэтому я никогда не пользовался фреймворками
источник

EM

Evgeny M. in ErlangRus
Вертолетчик
Поэтому я никогда не пользовался фреймворками
у меня есть подозрение что елси постоянно делать конкатенацию то памяти в целом сожрется больше чем пересылка iolist между процессами. А рендеринг он в общем весь про вставку и конкатенацию строк
источник

EM

Evgeny M. in ErlangRus
iolist насколько я понял специально для этого и придуман - чтобы упростить подготовку данных для вывода
источник

ŹR

Źmićer Rubinštejn in ErlangRus
iolist вроде как один к одному в системный вывод компилируется, и нету оверхеда при подготовке бинаря, выделения памяти и тыды
источник

EM

Evgeny M. in ErlangRus
ага
источник