/var/log/messages

May 14, 2019 - 1 minute read - Comments - programming

プログラミング Elixir (28)

週末確認したドキュメントでは OTP と k8s はいくつかの懸念があるけれど、統合する方向に進んでいるとのこと。これは楽しみ。

とりあえず、14 とか 15 のあたりはつまみ食いですすめます。

14.2 プロセスのオーバーヘッド

以下をでっちあげてみたのですが色々意味がわかっておらず。

defmodule Chain do
  def counter(next_pid) do
    receive do
      n ->
        send next_pid, n + 1
    end
  end

  def create_processes(n) do
    last = Enum.reduce 1..n, self(),
             fn (_, send_to) ->
               spawn(Chain, :counter, [send_to])
             end
    send last, 0
    
    receive do
      final_answer when is_integer(final_answer) ->
        "Result is #{inspect(final_answer)}"
    end
  end

  def run(n) do
    IO.puts inspect :timer.tc(Chain, :create_processes, [n])
  end
end

実行は以下。

$ elixir --erl "+P 1000000" -r chain.ex -e "Chain.run(400_000)"
{6278884, "Result is 400000"}

成績はあまりよろしくないです。

つうか

リハビリ必要? これより前の部分、もう少し確認が必要なのかどうか。

プログラミング Elixir (27) プログラミング Elixir (29)

comments powered by Disqus