@proelixir

Страница 921 из 1045
Александр
28.03.2018
15:33:56
defmodule Test do def badfib(0) do 0 end def badfib(1) do 1 end def badfib(n) do badfib(n-1) + badfib(n-2) end def fib(a, _, 0 ) do a end def fib(a, b, n) do fib(b, a+b, n-1) end def foo({a, b}) do foo(a + b) end def foo({i}) do if i > 1_000_000 do i else foo({i + 1, i + 1}) end end end

берём чудо фаел

Dmitry
28.03.2018
15:34:07
Я думаю, что в BEAM есть стек на каждый процесс

Какой то

Google
Александр
28.03.2018
15:34:23
классную ссылку №1 https://medium.com/learn-elixir/disassemble-elixir-code-1bca5fe15dd1

полезную ссылку №2 http://beam-wisdoms.clau.se/en/latest/indepth-beam-instructions.html

всё это дизассемблируем

http://joxi.ru/GrqYyzxSNL8jkr?d=1

http://joxi.ru/RmzYzeNSWBdzdr?d=1

TCO работает

да здравствуют инженеры разрабатывающие BEAM!!!

???

Evgeny
28.03.2018
15:36:37
call_only - это ТСО?

Александр
28.03.2018
15:37:40
да

в ссылке №2 это написано

http://joxi.ru/p27RoOvt0aDJ3m?d=1

Evgeny
28.03.2018
15:38:55
ага, прикольно, спасибо

Google
Vasily
28.03.2018
15:38:57
кул! познавательно

Evgeny
28.03.2018
15:39:04
впрочем люди тут пишут https://pragtob.wordpress.com/2016/06/16/tail-call-optimization-in-elixir-erlang-not-as-efficient-and-important-as-you-probably-think/

Александр
28.03.2018
15:48:17
впрочем люди тут пишут https://pragtob.wordpress.com/2016/06/16/tail-call-optimization-in-elixir-erlang-not-as-efficient-and-important-as-you-probably-think/
что-то его реализации без TCO с TCO судя по дизассемблированию что я выше выдал

Evgeny
28.03.2018
15:49:06
кек :)

чувак лоханулся?

Александр
28.03.2018
15:49:20
сейчас померяю в принципе

мало ли что

там статья то 2016 года

уже несколько версий эрланга обновились

Evgeny
28.03.2018
15:50:01
что сильно оптимизатор поменяли?

Александр
28.03.2018
15:58:06
немного иначе выглядит, но всё же похоже Operating System: macOS CPU Information: Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz Number of Available Cores: 8 Available memory: 16 GB Elixir 1.6.3 Erlang 20.2.4 Benchmark suite executing with the following configuration: warmup: 10 s time: 10 s parallel: 1 inputs: none specified Estimated total run time: 2 min Benchmarking map TCO no reverse... Benchmarking map simple without TCO... Benchmarking map tail-recursive with ++... Benchmarking map with TCO new arg order... Benchmarking map with TCO reverse... Benchmarking stdlib map... Name ips average deviation median 99th % stdlib map 4.21 K 237.66 μs ±25.05% 225 μs 446 μs map simple without TCO 4.19 K 238.44 μs ±22.57% 224 μs 446 μs map TCO no reverse 4.08 K 244.88 μs ±23.99% 230 μs 463 μs map with TCO new arg order 3.66 K 273.10 μs ±26.68% 267 μs 497 μs map with TCO reverse 3.55 K 281.35 μs ±23.60% 275 μs 488 μs map tail-recursive with ++ 0.00514 K 194500.02 μs ±9.37% 195196 μs 243578 μs Comparison: stdlib map 4.21 K map simple without TCO 4.19 K - 1.00x slower map TCO no reverse 4.08 K - 1.03x slower map with TCO new arg order 3.66 K - 1.15x slower map with TCO reverse 3.55 K - 1.18x slower map tail-recursive with ++ 0.00514 K - 818.40x slower

Evgeny
28.03.2018
16:08:04
ну так если в реальности то, что он выдает за бади-рекурсию, на самом деле хвостовая рекурсия, то все что там меряется трактуется, мягко говоря, неверно

Александр
28.03.2018
16:19:01
http://joxi.ru/823L5bEC6vXVyA?d=1

нет, там без хвостовой рекурсии

я заинтригован

по сути проблема в реверсе списка

на больших объёмах другие цифры

Operating System: macOS CPU Information: Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz Number of Available Cores: 8 Available memory: 16 GB Elixir 1.6.4 Erlang 20.3.2 Benchmark suite executing with the following configuration: warmup: 10 s time: 10 s parallel: 1 inputs: none specified Estimated total run time: 1.67 min Benchmarking map TCO no reverse... Benchmarking map simple without TCO... Benchmarking map with TCO new arg order... Benchmarking map with TCO reverse... Benchmarking stdlib map... Name ips average deviation median 99th % map TCO no reverse 34.33 29.13 ms ±14.14% 27.75 ms 51.39 ms map with TCO new arg order 24.68 40.51 ms ±24.06% 39.72 ms 67.47 ms map with TCO reverse 23.31 42.89 ms ±23.17% 42.05 ms 74.63 ms map simple without TCO 22.55 44.34 ms ±6.51% 43.49 ms 58.46 ms stdlib map 22.45 44.55 ms ±6.68% 43.66 ms 59.57 ms Comparison: map TCO no reverse 34.33 map with TCO new arg order 24.68 - 1.39x slower map with TCO reverse 23.31 - 1.47x slower map simple without TCO 22.55 - 1.52x slower stdlib map 22.45 - 1.53x slower

Evgeny
28.03.2018
17:02:16
то есть таки ТСО прямого отношения к тормозам не имеет?

потому что в упор не пойму, с чего бы ТСО должно быть медленнее.

Google
Александр
28.03.2018
18:47:13
я не до конца разобрался, попробую на днях добить этот вопрос

map_body чем хорош

тем что он сразу собирает список правильно (не надо переворачивать)

то есть на небольших объёмах сильно замедляет reverse

плюс он вызывается как внешняя функция

что тоже замедляет

Buckler
28.03.2018
20:03:38
Hello, Moi_nik! Please, calculate: 42+90=... If you don't answer - you'll get banned from the channel... Good luck!

Максим
29.03.2018
13:45:17
Всем привет! А никто не мониторил ноды эликсира через прометей?

чтобы знать какая из них жива/мертва

Le
29.03.2018
13:46:08
Прикручивали, а в чем вопрос?

Максим
29.03.2018
14:10:54
инструкцию бы где найти

Le
29.03.2018
14:12:05
инструкцию бы где найти
https://github.com/deadtrickster/prometheus.ex

если что, автор сидит в эликсировском слаке, в соответствующем канале

Максим
29.03.2018
14:12:58
благодарствую

посмотрю

а то развелся зоопарк ботов, надо следить, если вдруг что

Alex
29.03.2018
14:14:39
я не уверен, кстати, что в нем summary делают то, что нужно

да, я не вижу там вычисления квантилей в summary

если мои бывшие коллеги все же соберутся заопенсорсить наш сборщик метрик, оттуда можно будет утащить вычисление квантилей по Greenwald-Khanna

и тогда прометеус наконец станет для нас полезным

Google
Denis
30.03.2018
03:50:57
добрый день/вечер/ночь. есть база данных с данными. Хочу из феникс приложения получать данные из этой бызы. как это сделать? подскажите. В dex.ex вбиты username password и прочие данные базы к которой хочу подключиться. Спасибо

Roman
30.03.2018
05:29:29
экто?

Denis
30.03.2018
05:56:56
Evgeny
30.03.2018
06:19:15
экто сказал?

Dmitry
30.03.2018
06:42:53
Postgrex не то

Вдруг там на PostgreSQL база

Надо сперва понять какая, а потом - подсказывать

Denis
30.03.2018
06:43:46
postgresql

Dmitry
30.03.2018
06:44:28
Тогда Ecto

Postgrex подходит конечно, но смысла нету

https://hex.pm/packages/ecto

Denis
30.03.2018
06:50:03
а обязательно ли мне иметь схему?

базы

Dmitry
30.03.2018
06:59:34
Где иметь?

Vladimir
30.03.2018
07:03:57
А, вижу, уже ответили)

Максим
30.03.2018
07:04:56
смотрю сюда https://github.com/gmtprime/extatus и думаю, как собирать метрики с 10 нод?

каждую запустить с метрикой на своём порту?

но тогда к прометею постоянно надо даписывать новые

Google
Максим
30.03.2018
07:37:05
сделал все как в примере на сайте, нифига не заводится

** (Mix) Could not start application extatus: Extatus.start(:normal, []) returned an error: shutdown: failed to start child: Extatus.Server ** (EXIT) {{:shutdown, {:failed_to_start_child, :ranch_acceptors_sup, :badarg}}, {:child, :undefined, {:ranch_listener_sup, :http}, {:ranch_listener_sup, :start_link, [:http, 100, :ranch_tcp, [port: nil], :cowboy_protocol, [compress: true, env: [dispatch: [{:_, [], [{["metrics"], [], Extatus.Callback, []}]}]], name: Extatus.Server]]}, :permanent, :infinity, :supervisor, [:ranch_listener_sup]}}

Vladimir
30.03.2018
07:49:31
Чот не так с параметрами запуска

[port: nil] - может тут собака порылась?

Максим
30.03.2018
07:51:05
я тоже так думаю, но не могу понять где именно

config :extatus, timeout: 5000, port: 1340, # System.get_env("METRIC_PORT"), prometheus_registry: :default

конфиг прописал

фигня какая-то, перекомпилил все, и заработало...

Denis
30.03.2018
08:33:17
Где иметь?
в феникс приложении. Суть такая, есть приложение на рельсах. Хочу потихоньку начать переписывать на фениксe. но т.к. база данных уже есть хочу просто подключаться к уже имеющейся базе данных. Как оказалось необходима scheme в приложении на фениксе чтобы подключаться к нужной базе. Только пробую еликсир и феникс/ecto. и хочется делать на реальном проекте. Извиняюсь если не понятно выразил свои мысли.

Vladimir
30.03.2018
08:34:20
можно от экто отказаться, например, и сразу в базу ходить)

Vladimir
30.03.2018
08:35:10
а одно без другого не работает разве?

Dmitry
30.03.2018
08:35:13
Можно просто бахнуть эликсир приложение и наподключать всего всего и собрать франкенштейна

Dmitry
30.03.2018
08:35:22
Dmitry
30.03.2018
08:35:36
Ну по назначению вещи желательно использовать, имхо

Страница 921 из 1045