Size: a a a

2020 March 27

СИ

Сергей Иванов in ErlangRus
у меня дежавю. год назад обсуждали тоже самое. агрументировали также само
источник

СИ

Сергей Иванов in ErlangRus
Andrey Velikiy, [02.12.19 11:55]
[In reply to Petr Kozorezov]
Lua довольно продуманный язык. Реализация может хромать, но описание языка краткое и понятное, возможности расширения предусмотрены, LuaJIT при всех своих недостатках многие проблемы решает
источник

V

V in ErlangRus
> Обратите внимание — условие if NULL интерпретируется истинно (в отличие от if nil), несмотря на NULL == nil.

Это вообще за гранью.
источник

AV

Andrey Velikiy in ErlangRus
Сергей Иванов
у меня дежавю. год назад обсуждали тоже самое. агрументировали также само
три месяца ж... где тут год.
источник

AA

Anton Alferov in ErlangRus
на эрланге месяц за 4
источник

PG

Pïg Grëënëst in ErlangRus
Anton Alferov
на эрланге месяц за 4
тайна изучения эрланга за две недели раскрыта
источник
2020 March 28

DK

Denis Ko in ErlangRus
Неделя занила у меня на вкатывания ерланг 😜
источник

DK

Denis Ko in ErlangRus
Зашёл хорошо, уот прям рад что познакомился. А кот эликсир как-то не идёт. Даже книжку купил, пылится
источник
2020 March 30

SL

Sergey Loguntsov in ErlangRus
добрый вечер .

[www@server ~]$ epmd -names
epmd: up and running on port 4369 with data:
name r at port 12148
name royfis at port 12066

я правильно тут понял, что порты 12180 и 12066 используются нодами чтобы слушать входящие интерконнекты ?
источник

ML

Maksim Lapshin in ErlangRus
да
источник

SL

Sergey Loguntsov in ErlangRus
ок спасибо
источник

PK

Petr Kozorezov in ErlangRus
Всем привет!
Я тут по быстрому набросал максимально простой тест сравнения скорости работы с мапами и рекордами, и результат немного печалит: матчинг мап на порядок медленнее матчинга рекордов.
Я отлично понимаю, что тест супер синтетический, но не на порядок же разница-то должна быть.
Может кто разбирался с этим ворпосом? Я что-то неправильно делаю, или это действительно так?

1> L = lists:seq(1, 10000).
2> M = #{key1 => value1, key2 => value2}.
3> R = {foo, value, 1,2,3,4,5,6}.

4> timer:tc(fun() -> lists:foreach(fun(_) -> {foo, _, _, _, _, _, _, _} = R end, L) end).
{6866,ok}
5> timer:tc(fun() -> lists:foreach(fun(_) -> {foo, _, _, _, _, _, _, _} = R end, L) end).
{7383,ok}
6> timer:tc(fun() -> lists:foreach(fun(_) ->  element(2, R) end, L) end).
{8597,ok}
7> timer:tc(fun() -> lists:foreach(fun(_) ->  element(2, R) end, L) end).
{6669,ok}

8> timer:tc(fun() -> lists:foreach(fun(_) ->  #{key1 := _} = M end, L) end).
{69632,ok}
9> timer:tc(fun() -> lists:foreach(fun(_) ->  #{key1 := _} = M end, L) end).
{70139,ok}
10> timer:tc(fun() -> lists:foreach(fun(_) ->  maps:get(key1, M, undefined) end, L) end).
{13613,ok}
11> timer:tc(fun() -> lists:foreach(fun(_) ->  maps:get(key1, M, undefined) end, L) end).
{16758,ok}

12> timer:tc(fun() -> lists:foreach(fun(_) -> ok end, L) end).
{2108,ok}
13> timer:tc(fun() -> lists:foreach(fun(_) -> ok end, L) end).
{2963,ok}
источник

LL

Lama Lover in ErlangRus
Petr Kozorezov
Всем привет!
Я тут по быстрому набросал максимально простой тест сравнения скорости работы с мапами и рекордами, и результат немного печалит: матчинг мап на порядок медленнее матчинга рекордов.
Я отлично понимаю, что тест супер синтетический, но не на порядок же разница-то должна быть.
Может кто разбирался с этим ворпосом? Я что-то неправильно делаю, или это действительно так?

1> L = lists:seq(1, 10000).
2> M = #{key1 => value1, key2 => value2}.
3> R = {foo, value, 1,2,3,4,5,6}.

4> timer:tc(fun() -> lists:foreach(fun(_) -> {foo, _, _, _, _, _, _, _} = R end, L) end).
{6866,ok}
5> timer:tc(fun() -> lists:foreach(fun(_) -> {foo, _, _, _, _, _, _, _} = R end, L) end).
{7383,ok}
6> timer:tc(fun() -> lists:foreach(fun(_) ->  element(2, R) end, L) end).
{8597,ok}
7> timer:tc(fun() -> lists:foreach(fun(_) ->  element(2, R) end, L) end).
{6669,ok}

8> timer:tc(fun() -> lists:foreach(fun(_) ->  #{key1 := _} = M end, L) end).
{69632,ok}
9> timer:tc(fun() -> lists:foreach(fun(_) ->  #{key1 := _} = M end, L) end).
{70139,ok}
10> timer:tc(fun() -> lists:foreach(fun(_) ->  maps:get(key1, M, undefined) end, L) end).
{13613,ok}
11> timer:tc(fun() -> lists:foreach(fun(_) ->  maps:get(key1, M, undefined) end, L) end).
{16758,ok}

12> timer:tc(fun() -> lists:foreach(fun(_) -> ok end, L) end).
{2108,ok}
13> timer:tc(fun() -> lists:foreach(fun(_) -> ok end, L) end).
{2963,ok}
Разница должна быть на порядок. Рекорды - это туплы (читай массивы) с доступом по индексу, а мапы - это ассоциативные массивы реализованные на хэшмапе.
Отсюда и разница. Или я не понял вопрос?
источник

LL

Lama Lover in ErlangRus
Petr Kozorezov
Всем привет!
Я тут по быстрому набросал максимально простой тест сравнения скорости работы с мапами и рекордами, и результат немного печалит: матчинг мап на порядок медленнее матчинга рекордов.
Я отлично понимаю, что тест супер синтетический, но не на порядок же разница-то должна быть.
Может кто разбирался с этим ворпосом? Я что-то неправильно делаю, или это действительно так?

1> L = lists:seq(1, 10000).
2> M = #{key1 => value1, key2 => value2}.
3> R = {foo, value, 1,2,3,4,5,6}.

4> timer:tc(fun() -> lists:foreach(fun(_) -> {foo, _, _, _, _, _, _, _} = R end, L) end).
{6866,ok}
5> timer:tc(fun() -> lists:foreach(fun(_) -> {foo, _, _, _, _, _, _, _} = R end, L) end).
{7383,ok}
6> timer:tc(fun() -> lists:foreach(fun(_) ->  element(2, R) end, L) end).
{8597,ok}
7> timer:tc(fun() -> lists:foreach(fun(_) ->  element(2, R) end, L) end).
{6669,ok}

8> timer:tc(fun() -> lists:foreach(fun(_) ->  #{key1 := _} = M end, L) end).
{69632,ok}
9> timer:tc(fun() -> lists:foreach(fun(_) ->  #{key1 := _} = M end, L) end).
{70139,ok}
10> timer:tc(fun() -> lists:foreach(fun(_) ->  maps:get(key1, M, undefined) end, L) end).
{13613,ok}
11> timer:tc(fun() -> lists:foreach(fun(_) ->  maps:get(key1, M, undefined) end, L) end).
{16758,ok}

12> timer:tc(fun() -> lists:foreach(fun(_) -> ok end, L) end).
{2108,ok}
13> timer:tc(fun() -> lists:foreach(fun(_) -> ok end, L) end).
{2963,ok}
Вот, например, в elixir помимо рекордов есть ещё и struct, которые выглядят %Structure{key: value}. Вот они реализованы на мапах
источник

PK

Petr Kozorezov in ErlangRus
Мапа - это более сложная штука, там внутри несколько реализаций в зависимости от размера, в самом простом виде — это key lists если не ошибаюсь.
источник

PK

Petr Kozorezov in ErlangRus
И при доступе к мапе через maps:get все сильно быстрее. Поэтому вопрос не к мапе, а матчингу
источник

LL

Lama Lover in ErlangRus
Petr Kozorezov
Мапа - это более сложная штука, там внутри несколько реализаций в зависимости от размера, в самом простом виде — это key lists если не ошибаюсь.
Даже если key lists, это дольше чем одна ассемблерная операция
источник

СИ

Сергей Иванов in ErlangRus
Petr Kozorezov
И при доступе к мапе через maps:get все сильно быстрее. Поэтому вопрос не к мапе, а матчингу
Да, неприятно. Матчинг на мапах эргономичнее
источник

В

Вертолетчик in ErlangRus
Petr Kozorezov
И при доступе к мапе через maps:get все сильно быстрее. Поэтому вопрос не к мапе, а матчингу
А вот я где-то в гистах видел бенчмарк, где maps:get медленнее матчинга в заголовке функции. Проверил, подтвердилось
источник

PK

Petr Kozorezov in ErlangRus
Вертолетчик
А вот я где-то в гистах видел бенчмарк, где maps:get медленнее матчинга в заголовке функции. Проверил, подтвердилось
а у тебя не осталось ссылки?
источник