Elixir中的所有不可变数据结构都是持久的吗?如果不是,哪一个是哪个,哪个不是?另外,它们如何与Clojure中的持久数据结构进行比较?
基于哈希表的字典/映射结构提供O(1)查找时间.然而,我一直看到在Elixir中的含义,找到匹配的函数头比在地图中查找某些东西更快.
例如,Elixir String.Unicode 将一个unicode字符列表编译成许多函数头,因此通过找到函数head得到upcase"é" 来回答"é的最佳版本是什么".
我不知道为什么这比upcase在地图中查找"é" 的单个功能头更快或更高的内存效率.
同样,在展示如何在"Metaprogramming Elixir"中构建I18n库时,Chris McCord为每个翻译键提供了自己的功能头,并说:
"通过为每个转换映射生成函数头,我们再次让虚拟机接管以进行快速查找."
Elixir中的地图不提供O(1)查找吗?找到匹配的函数头O(1)?为什么选择将静态列表编译为多个函数头而不是仅将其存储在映射中?