【发布时间】:2025-11-30 15:15:02
【问题描述】:
给定两个不同的大地图,定义如下
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,见here)
谢谢
【问题讨论】: