コードはこれ
defmodule Hoge do
def create_list(num \\ 10), do: 1..num |> Enum.to_list
def perf1_loop(num \\ 1000) do
¦ list = create_list(10)
¦ t1 = :erlang.timestamp()
¦ Enum.reduce(1..num, list, fn(_i, acc) ->
¦ ¦ perf1(acc)
¦ end)
¦ t2 = :erlang.timestamp()
¦ IO.puts :timer.now_diff(t2, t1)
end
def perf1(list) do
¦ [head|tail] = list
¦ (tail ++ [head])
end
def perf2_loop(num \\ 1000) do
¦ list = create_list(10)
¦ t1 = :erlang.timestamp()
¦ Enum.reduce(1..num, list, fn(_i, acc) ->
¦ ¦ perf2(acc)
¦ end)
¦ t2 = :erlang.timestamp()
¦ IO.puts :timer.now_diff(t2, t1)
end
def perf2(list) do
¦ [head|tail] = Enum.reverse(list)
¦ ([head] ++ Enum.reverse(tail))
end
end
実行結果
iex(2)> Hoge.perf1_loop(100000)
9734
:ok
iex(3)> Hoge.perf2_loop(100000)
17839
:ok
iex(4)> Hoge.perf1_loop(1000000)
93887
:ok
iex(5)> Hoge.perf2_loop(1000000)
177239
:ok