Учитывая две большие и разные карты, определенные следующим образом:
Interactive Elixir (1.9.4) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> m1 = Map.new(1..1_000_000 |> Enum.map(&{&1, &1})); :ok
:ok
iex(2)> m2 = Map.new(2..1_000_000 |> Enum.map(&{&1, &1})); :ok
:ok
требуется значительная разница во времени при сравнении их с использованием ==/2
и Map.equal?/2
iex(3)> :timer.tc(fn -> m1 == m2 end)
{21, false}
iex(4)> :timer.tc(fn -> Map.equal?(m1, m2) end)
{20487, false}
Что такое причина этой разницы во времени между ==/2
и Map.equal?/2
, и что использовать?
Эквивалентно, что использовать между ==/2
и ===/2
? (потому что Map.equal?/2
звонит на ===/2
, см. здесь )
Спасибо