вторник, 23 апреля 2013 г.

Еще один довод чего erlang крут

     Совсем недавно была проблема заключающаяся примерно в том, что erlang -нода отжирала постепенно до 6 гиг памяти, но при этом работала
принимала запросы, что-то делал...Примерно понимал в чем может быть проблема...в итоге все решилось следующим образом я подключился
к ноде...и выполнил команду

erl>ets:info(some,size).
90000000
erl>length(erlang:processes()).
100000
 То есть где-то я набочинил....ets то я убью...а вот где застряли процессы

erl>ni().
<дальше следует список процессов  в котором я сразу же обнаружил
много раз повторяющийся один процесс>
Вздохнув, что набочинил я, а не разработчики Erlang-а(верояность маленькая но всегда стоит помнить)...исправил баг

среда, 20 февраля 2013 г.

Не хватает порой функции zip_n

Коротко есть фунлция lists:zip, которая принимает в качестве аргументов
два списка и возвращает список пар значений списков...функция реализована для двух и трех списков, очень мне хотелось иметь zip для n
списков....
в итоге  my_zip_n принимает список списков, возвращает соответственно
свернутых списков


пятница, 21 декабря 2012 г.

среда, 28 ноября 2012 г.

Сердце Erlang


        Нет мы будем говорить не об ядре, а об одной опции машины Erlang-а.  Если вы хотите, что бы нода работала даже если вдруг у нее закончилась память, все из-за какой-то ошибке засвопилось,  или хм или вы достигли чего-то типа max_restart_frequency у супервизора, то разработчики Erlang-a придумали прекрасную опцию.  Они назвали ее -heart, то бишь сердце.
Возьмем скрипт для старта.

пятница, 14 сентября 2012 г.

Еще одна заметка о производительности

В догонку статьям о производительности erlang
http://www.erlang.com.ua/2012/09/erlang.html
http://www.erlang.com.ua/2012/09/erlang-a.html
http://www.erlang.com.ua/2012/03/blog-post.html

Мы выяснили что компилятор преобразует функции на лету, оптимизируя их выполнение...Стал резонный вопрос, а что будет работать быстрее
tail-рекурсия или функции типа lists:map  и подобные им..

воскресенье, 2 сентября 2012 г.

Функции , несколько советов от разработчиков erlang


Pattern matching

Pattern matching в  прототипе функции, case и  recieve оптимизируется компилятором. За редким исключением, вы ничего не добьетесь перестановкой этих операторов.


Восемь мифов о производительности Erlang-a


   Некоторые истины о производительности этого языка программирования, кажется, пережили свой срок   годности, может быть, потому, что "информация" распространяется быстрее, от человека к человеку, чем если бы в одном  релизе отметили ,что  например  эта штука стала быстрее.