Enum.into 和 Map.new 是否在内存中创建新对象?

Does Enum.into and Map.new create new objects in memory?

weekdays = [:monday, :tuesday, :wednesday, :thursday, :friday, :saturday, :sunday] 
|> Enum.with_index 

Map.new(weekdays)
Enum.into(weekdays, %{})

Map.new/1Enum.into/2 在这里做的事情完全一样吗? 执行以下代码后,内存中将有多少个对象: weekdays |> Map.new |> Map.newweekdays |> Enum.into(%{}) |> Enum.into(%{})?

我没有分析出差异,但是 Enum.into 依赖于 Collectable protocol, which for maps calls Map.put for each element. However, Map.new uses Erlang's :maps.from_list, which is implemented in C

所以我怀疑 Map.new 会更高效。